{
  "id": "503f4783035a1b2f30b66b2c4defb8ac",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.6.12",
  "solcLongVersion": "0.6.12+commit.27d51765",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/adapters/BaseUniswapAdapter.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\n\nimport {PercentageMath} from '../protocol/libraries/math/PercentageMath.sol';\nimport {SafeMath} from '../dependencies/openzeppelin/contracts/SafeMath.sol';\nimport {IERC20} from '../dependencies/openzeppelin/contracts/IERC20.sol';\nimport {IERC20Detailed} from '../dependencies/openzeppelin/contracts/IERC20Detailed.sol';\nimport {SafeERC20} from '../dependencies/openzeppelin/contracts/SafeERC20.sol';\nimport {Ownable} from '../dependencies/openzeppelin/contracts/Ownable.sol';\nimport {ILendingPoolAddressesProvider} from '../interfaces/ILendingPoolAddressesProvider.sol';\nimport {DataTypes} from '../protocol/libraries/types/DataTypes.sol';\nimport {IUniswapV2Router02} from '../interfaces/IUniswapV2Router02.sol';\nimport {IPriceOracleGetter} from '../interfaces/IPriceOracleGetter.sol';\nimport {IERC20WithPermit} from '../interfaces/IERC20WithPermit.sol';\nimport {FlashLoanReceiverBase} from '../flashloan/base/FlashLoanReceiverBase.sol';\nimport {IBaseUniswapAdapter} from './interfaces/IBaseUniswapAdapter.sol';\n\n/**\n * @title BaseUniswapAdapter\n * @notice Implements the logic for performing assets swaps in Uniswap V2\n * @author Aave\n **/\nabstract contract BaseUniswapAdapter is FlashLoanReceiverBase, IBaseUniswapAdapter, Ownable {\n  using SafeMath for uint256;\n  using PercentageMath for uint256;\n  using SafeERC20 for IERC20;\n\n  // Max slippage percent allowed\n  uint256 public constant override MAX_SLIPPAGE_PERCENT = 3000; // 30%\n  // FLash Loan fee set in lending pool\n  uint256 public constant override FLASHLOAN_PREMIUM_TOTAL = 9;\n  // USD oracle asset address\n  address public constant override USD_ADDRESS = 0x10F7Fc1F91Ba351f9C629c5947AD69bD03C05b96;\n\n  address public immutable override WETH_ADDRESS;\n  IPriceOracleGetter public immutable override ORACLE;\n  IUniswapV2Router02 public immutable override UNISWAP_ROUTER;\n\n  constructor(\n    ILendingPoolAddressesProvider addressesProvider,\n    IUniswapV2Router02 uniswapRouter,\n    address wethAddress\n  ) public FlashLoanReceiverBase(addressesProvider) {\n    ORACLE = IPriceOracleGetter(addressesProvider.getPriceOracle());\n    UNISWAP_ROUTER = uniswapRouter;\n    WETH_ADDRESS = wethAddress;\n  }\n\n  /**\n   * @dev Given an input asset amount, returns the maximum output amount of the other asset and the prices\n   * @param amountIn Amount of reserveIn\n   * @param reserveIn Address of the asset to be swap from\n   * @param reserveOut Address of the asset to be swap to\n   * @return uint256 Amount out of the reserveOut\n   * @return uint256 The price of out amount denominated in the reserveIn currency (18 decimals)\n   * @return uint256 In amount of reserveIn value denominated in USD (8 decimals)\n   * @return uint256 Out amount of reserveOut value denominated in USD (8 decimals)\n   */\n  function getAmountsOut(\n    uint256 amountIn,\n    address reserveIn,\n    address reserveOut\n  )\n    external\n    view\n    override\n    returns (\n      uint256,\n      uint256,\n      uint256,\n      uint256,\n      address[] memory\n    )\n  {\n    AmountCalc memory results = _getAmountsOutData(reserveIn, reserveOut, amountIn);\n\n    return (\n      results.calculatedAmount,\n      results.relativePrice,\n      results.amountInUsd,\n      results.amountOutUsd,\n      results.path\n    );\n  }\n\n  /**\n   * @dev Returns the minimum input asset amount required to buy the given output asset amount and the prices\n   * @param amountOut Amount of reserveOut\n   * @param reserveIn Address of the asset to be swap from\n   * @param reserveOut Address of the asset to be swap to\n   * @return uint256 Amount in of the reserveIn\n   * @return uint256 The price of in amount denominated in the reserveOut currency (18 decimals)\n   * @return uint256 In amount of reserveIn value denominated in USD (8 decimals)\n   * @return uint256 Out amount of reserveOut value denominated in USD (8 decimals)\n   */\n  function getAmountsIn(\n    uint256 amountOut,\n    address reserveIn,\n    address reserveOut\n  )\n    external\n    view\n    override\n    returns (\n      uint256,\n      uint256,\n      uint256,\n      uint256,\n      address[] memory\n    )\n  {\n    AmountCalc memory results = _getAmountsInData(reserveIn, reserveOut, amountOut);\n\n    return (\n      results.calculatedAmount,\n      results.relativePrice,\n      results.amountInUsd,\n      results.amountOutUsd,\n      results.path\n    );\n  }\n\n  /**\n   * @dev Swaps an exact `amountToSwap` of an asset to another\n   * @param assetToSwapFrom Origin asset\n   * @param assetToSwapTo Destination asset\n   * @param amountToSwap Exact amount of `assetToSwapFrom` to be swapped\n   * @param minAmountOut the min amount of `assetToSwapTo` to be received from the swap\n   * @return the amount received from the swap\n   */\n  function _swapExactTokensForTokens(\n    address assetToSwapFrom,\n    address assetToSwapTo,\n    uint256 amountToSwap,\n    uint256 minAmountOut,\n    bool useEthPath\n  ) internal returns (uint256) {\n    uint256 fromAssetDecimals = _getDecimals(assetToSwapFrom);\n    uint256 toAssetDecimals = _getDecimals(assetToSwapTo);\n\n    uint256 fromAssetPrice = _getPrice(assetToSwapFrom);\n    uint256 toAssetPrice = _getPrice(assetToSwapTo);\n\n    uint256 expectedMinAmountOut =\n      amountToSwap\n        .mul(fromAssetPrice.mul(10**toAssetDecimals))\n        .div(toAssetPrice.mul(10**fromAssetDecimals))\n        .percentMul(PercentageMath.PERCENTAGE_FACTOR.sub(MAX_SLIPPAGE_PERCENT));\n\n    require(expectedMinAmountOut < minAmountOut, 'minAmountOut exceed max slippage');\n\n    // Approves the transfer for the swap. Approves for 0 first to comply with tokens that implement the anti frontrunning approval fix.\n    IERC20(assetToSwapFrom).safeApprove(address(UNISWAP_ROUTER), 0);\n    IERC20(assetToSwapFrom).safeApprove(address(UNISWAP_ROUTER), amountToSwap);\n\n    address[] memory path;\n    if (useEthPath) {\n      path = new address[](3);\n      path[0] = assetToSwapFrom;\n      path[1] = WETH_ADDRESS;\n      path[2] = assetToSwapTo;\n    } else {\n      path = new address[](2);\n      path[0] = assetToSwapFrom;\n      path[1] = assetToSwapTo;\n    }\n    uint256[] memory amounts =\n      UNISWAP_ROUTER.swapExactTokensForTokens(\n        amountToSwap,\n        minAmountOut,\n        path,\n        address(this),\n        block.timestamp\n      );\n\n    emit Swapped(assetToSwapFrom, assetToSwapTo, amounts[0], amounts[amounts.length - 1]);\n\n    return amounts[amounts.length - 1];\n  }\n\n  /**\n   * @dev Receive an exact amount `amountToReceive` of `assetToSwapTo` tokens for as few `assetToSwapFrom` tokens as\n   * possible.\n   * @param assetToSwapFrom Origin asset\n   * @param assetToSwapTo Destination asset\n   * @param maxAmountToSwap Max amount of `assetToSwapFrom` allowed to be swapped\n   * @param amountToReceive Exact amount of `assetToSwapTo` to receive\n   * @return the amount swapped\n   */\n  function _swapTokensForExactTokens(\n    address assetToSwapFrom,\n    address assetToSwapTo,\n    uint256 maxAmountToSwap,\n    uint256 amountToReceive,\n    bool useEthPath\n  ) internal returns (uint256) {\n    uint256 fromAssetDecimals = _getDecimals(assetToSwapFrom);\n    uint256 toAssetDecimals = _getDecimals(assetToSwapTo);\n\n    uint256 fromAssetPrice = _getPrice(assetToSwapFrom);\n    uint256 toAssetPrice = _getPrice(assetToSwapTo);\n\n    uint256 expectedMaxAmountToSwap =\n      amountToReceive\n        .mul(toAssetPrice.mul(10**fromAssetDecimals))\n        .div(fromAssetPrice.mul(10**toAssetDecimals))\n        .percentMul(PercentageMath.PERCENTAGE_FACTOR.add(MAX_SLIPPAGE_PERCENT));\n\n    require(maxAmountToSwap < expectedMaxAmountToSwap, 'maxAmountToSwap exceed max slippage');\n\n    // Approves the transfer for the swap. Approves for 0 first to comply with tokens that implement the anti frontrunning approval fix.\n    IERC20(assetToSwapFrom).safeApprove(address(UNISWAP_ROUTER), 0);\n    IERC20(assetToSwapFrom).safeApprove(address(UNISWAP_ROUTER), maxAmountToSwap);\n\n    address[] memory path;\n    if (useEthPath) {\n      path = new address[](3);\n      path[0] = assetToSwapFrom;\n      path[1] = WETH_ADDRESS;\n      path[2] = assetToSwapTo;\n    } else {\n      path = new address[](2);\n      path[0] = assetToSwapFrom;\n      path[1] = assetToSwapTo;\n    }\n\n    uint256[] memory amounts =\n      UNISWAP_ROUTER.swapTokensForExactTokens(\n        amountToReceive,\n        maxAmountToSwap,\n        path,\n        address(this),\n        block.timestamp\n      );\n\n    emit Swapped(assetToSwapFrom, assetToSwapTo, amounts[0], amounts[amounts.length - 1]);\n\n    return amounts[0];\n  }\n\n  /**\n   * @dev Get the price of the asset from the oracle denominated in eth\n   * @param asset address\n   * @return eth price for the asset\n   */\n  function _getPrice(address asset) internal view returns (uint256) {\n    return ORACLE.getAssetPrice(asset);\n  }\n\n  /**\n   * @dev Get the decimals of an asset\n   * @return number of decimals of the asset\n   */\n  function _getDecimals(address asset) internal view returns (uint256) {\n    return IERC20Detailed(asset).decimals();\n  }\n\n  /**\n   * @dev Get the aToken associated to the asset\n   * @return address of the aToken\n   */\n  function _getReserveData(address asset) internal view returns (DataTypes.ReserveData memory) {\n    return LENDING_POOL.getReserveData(asset);\n  }\n\n  /**\n   * @dev Pull the ATokens from the user\n   * @param reserve address of the asset\n   * @param reserveAToken address of the aToken of the reserve\n   * @param user address\n   * @param amount of tokens to be transferred to the contract\n   * @param permitSignature struct containing the permit signature\n   */\n  function _pullAToken(\n    address reserve,\n    address reserveAToken,\n    address user,\n    uint256 amount,\n    PermitSignature memory permitSignature\n  ) internal {\n    if (_usePermit(permitSignature)) {\n      IERC20WithPermit(reserveAToken).permit(\n        user,\n        address(this),\n        permitSignature.amount,\n        permitSignature.deadline,\n        permitSignature.v,\n        permitSignature.r,\n        permitSignature.s\n      );\n    }\n\n    // transfer from user to adapter\n    IERC20(reserveAToken).safeTransferFrom(user, address(this), amount);\n\n    // withdraw reserve\n    LENDING_POOL.withdraw(reserve, amount, address(this));\n  }\n\n  /**\n   * @dev Tells if the permit method should be called by inspecting if there is a valid signature.\n   * If signature params are set to 0, then permit won't be called.\n   * @param signature struct containing the permit signature\n   * @return whether or not permit should be called\n   */\n  function _usePermit(PermitSignature memory signature) internal pure returns (bool) {\n    return\n      !(uint256(signature.deadline) == uint256(signature.v) && uint256(signature.deadline) == 0);\n  }\n\n  /**\n   * @dev Calculates the value denominated in USD\n   * @param reserve Address of the reserve\n   * @param amount Amount of the reserve\n   * @param decimals Decimals of the reserve\n   * @return whether or not permit should be called\n   */\n  function _calcUsdValue(\n    address reserve,\n    uint256 amount,\n    uint256 decimals\n  ) internal view returns (uint256) {\n    uint256 ethUsdPrice = _getPrice(USD_ADDRESS);\n    uint256 reservePrice = _getPrice(reserve);\n\n    return amount.mul(reservePrice).div(10**decimals).mul(ethUsdPrice).div(10**18);\n  }\n\n  /**\n   * @dev Given an input asset amount, returns the maximum output amount of the other asset\n   * @param reserveIn Address of the asset to be swap from\n   * @param reserveOut Address of the asset to be swap to\n   * @param amountIn Amount of reserveIn\n   * @return Struct containing the following information:\n   *   uint256 Amount out of the reserveOut\n   *   uint256 The price of out amount denominated in the reserveIn currency (18 decimals)\n   *   uint256 In amount of reserveIn value denominated in USD (8 decimals)\n   *   uint256 Out amount of reserveOut value denominated in USD (8 decimals)\n   */\n  function _getAmountsOutData(\n    address reserveIn,\n    address reserveOut,\n    uint256 amountIn\n  ) internal view returns (AmountCalc memory) {\n    // Subtract flash loan fee\n    uint256 finalAmountIn = amountIn.sub(amountIn.mul(FLASHLOAN_PREMIUM_TOTAL).div(10000));\n\n    if (reserveIn == reserveOut) {\n      uint256 reserveDecimals = _getDecimals(reserveIn);\n      address[] memory path = new address[](1);\n      path[0] = reserveIn;\n\n      return\n        AmountCalc(\n          finalAmountIn,\n          finalAmountIn.mul(10**18).div(amountIn),\n          _calcUsdValue(reserveIn, amountIn, reserveDecimals),\n          _calcUsdValue(reserveIn, finalAmountIn, reserveDecimals),\n          path\n        );\n    }\n\n    address[] memory simplePath = new address[](2);\n    simplePath[0] = reserveIn;\n    simplePath[1] = reserveOut;\n\n    uint256[] memory amountsWithoutWeth;\n    uint256[] memory amountsWithWeth;\n\n    address[] memory pathWithWeth = new address[](3);\n    if (reserveIn != WETH_ADDRESS && reserveOut != WETH_ADDRESS) {\n      pathWithWeth[0] = reserveIn;\n      pathWithWeth[1] = WETH_ADDRESS;\n      pathWithWeth[2] = reserveOut;\n\n      try UNISWAP_ROUTER.getAmountsOut(finalAmountIn, pathWithWeth) returns (\n        uint256[] memory resultsWithWeth\n      ) {\n        amountsWithWeth = resultsWithWeth;\n      } catch {\n        amountsWithWeth = new uint256[](3);\n      }\n    } else {\n      amountsWithWeth = new uint256[](3);\n    }\n\n    uint256 bestAmountOut;\n    try UNISWAP_ROUTER.getAmountsOut(finalAmountIn, simplePath) returns (\n      uint256[] memory resultAmounts\n    ) {\n      amountsWithoutWeth = resultAmounts;\n\n      bestAmountOut = (amountsWithWeth[2] > amountsWithoutWeth[1])\n        ? amountsWithWeth[2]\n        : amountsWithoutWeth[1];\n    } catch {\n      amountsWithoutWeth = new uint256[](2);\n      bestAmountOut = amountsWithWeth[2];\n    }\n\n    uint256 reserveInDecimals = _getDecimals(reserveIn);\n    uint256 reserveOutDecimals = _getDecimals(reserveOut);\n\n    uint256 outPerInPrice =\n      finalAmountIn.mul(10**18).mul(10**reserveOutDecimals).div(\n        bestAmountOut.mul(10**reserveInDecimals)\n      );\n\n    return\n      AmountCalc(\n        bestAmountOut,\n        outPerInPrice,\n        _calcUsdValue(reserveIn, amountIn, reserveInDecimals),\n        _calcUsdValue(reserveOut, bestAmountOut, reserveOutDecimals),\n        (bestAmountOut == 0) ? new address[](2) : (bestAmountOut == amountsWithoutWeth[1])\n          ? simplePath\n          : pathWithWeth\n      );\n  }\n\n  /**\n   * @dev Returns the minimum input asset amount required to buy the given output asset amount\n   * @param reserveIn Address of the asset to be swap from\n   * @param reserveOut Address of the asset to be swap to\n   * @param amountOut Amount of reserveOut\n   * @return Struct containing the following information:\n   *   uint256 Amount in of the reserveIn\n   *   uint256 The price of in amount denominated in the reserveOut currency (18 decimals)\n   *   uint256 In amount of reserveIn value denominated in USD (8 decimals)\n   *   uint256 Out amount of reserveOut value denominated in USD (8 decimals)\n   */\n  function _getAmountsInData(\n    address reserveIn,\n    address reserveOut,\n    uint256 amountOut\n  ) internal view returns (AmountCalc memory) {\n    if (reserveIn == reserveOut) {\n      // Add flash loan fee\n      uint256 amountIn = amountOut.add(amountOut.mul(FLASHLOAN_PREMIUM_TOTAL).div(10000));\n      uint256 reserveDecimals = _getDecimals(reserveIn);\n      address[] memory path = new address[](1);\n      path[0] = reserveIn;\n\n      return\n        AmountCalc(\n          amountIn,\n          amountOut.mul(10**18).div(amountIn),\n          _calcUsdValue(reserveIn, amountIn, reserveDecimals),\n          _calcUsdValue(reserveIn, amountOut, reserveDecimals),\n          path\n        );\n    }\n\n    (uint256[] memory amounts, address[] memory path) =\n      _getAmountsInAndPath(reserveIn, reserveOut, amountOut);\n\n    // Add flash loan fee\n    uint256 finalAmountIn = amounts[0].add(amounts[0].mul(FLASHLOAN_PREMIUM_TOTAL).div(10000));\n\n    uint256 reserveInDecimals = _getDecimals(reserveIn);\n    uint256 reserveOutDecimals = _getDecimals(reserveOut);\n\n    uint256 inPerOutPrice =\n      amountOut.mul(10**18).mul(10**reserveInDecimals).div(\n        finalAmountIn.mul(10**reserveOutDecimals)\n      );\n\n    return\n      AmountCalc(\n        finalAmountIn,\n        inPerOutPrice,\n        _calcUsdValue(reserveIn, finalAmountIn, reserveInDecimals),\n        _calcUsdValue(reserveOut, amountOut, reserveOutDecimals),\n        path\n      );\n  }\n\n  /**\n   * @dev Calculates the input asset amount required to buy the given output asset amount\n   * @param reserveIn Address of the asset to be swap from\n   * @param reserveOut Address of the asset to be swap to\n   * @param amountOut Amount of reserveOut\n   * @return uint256[] amounts Array containing the amountIn and amountOut for a swap\n   */\n  function _getAmountsInAndPath(\n    address reserveIn,\n    address reserveOut,\n    uint256 amountOut\n  ) internal view returns (uint256[] memory, address[] memory) {\n    address[] memory simplePath = new address[](2);\n    simplePath[0] = reserveIn;\n    simplePath[1] = reserveOut;\n\n    uint256[] memory amountsWithoutWeth;\n    uint256[] memory amountsWithWeth;\n    address[] memory pathWithWeth = new address[](3);\n\n    if (reserveIn != WETH_ADDRESS && reserveOut != WETH_ADDRESS) {\n      pathWithWeth[0] = reserveIn;\n      pathWithWeth[1] = WETH_ADDRESS;\n      pathWithWeth[2] = reserveOut;\n\n      try UNISWAP_ROUTER.getAmountsIn(amountOut, pathWithWeth) returns (\n        uint256[] memory resultsWithWeth\n      ) {\n        amountsWithWeth = resultsWithWeth;\n      } catch {\n        amountsWithWeth = new uint256[](3);\n      }\n    } else {\n      amountsWithWeth = new uint256[](3);\n    }\n\n    try UNISWAP_ROUTER.getAmountsIn(amountOut, simplePath) returns (\n      uint256[] memory resultAmounts\n    ) {\n      amountsWithoutWeth = resultAmounts;\n\n      return\n        (amountsWithWeth[0] < amountsWithoutWeth[0] && amountsWithWeth[0] != 0)\n          ? (amountsWithWeth, pathWithWeth)\n          : (amountsWithoutWeth, simplePath);\n    } catch {\n      return (amountsWithWeth, pathWithWeth);\n    }\n  }\n\n  /**\n   * @dev Calculates the input asset amount required to buy the given output asset amount\n   * @param reserveIn Address of the asset to be swap from\n   * @param reserveOut Address of the asset to be swap to\n   * @param amountOut Amount of reserveOut\n   * @return uint256[] amounts Array containing the amountIn and amountOut for a swap\n   */\n  function _getAmountsIn(\n    address reserveIn,\n    address reserveOut,\n    uint256 amountOut,\n    bool useEthPath\n  ) internal view returns (uint256[] memory) {\n    address[] memory path;\n\n    if (useEthPath) {\n      path = new address[](3);\n      path[0] = reserveIn;\n      path[1] = WETH_ADDRESS;\n      path[2] = reserveOut;\n    } else {\n      path = new address[](2);\n      path[0] = reserveIn;\n      path[1] = reserveOut;\n    }\n\n    return UNISWAP_ROUTER.getAmountsIn(amountOut, path);\n  }\n\n  /**\n   * @dev Emergency rescue for token stucked on this contract, as failsafe mechanism\n   * - Funds should never remain in this contract more time than during transactions\n   * - Only callable by the owner\n   **/\n  function rescueTokens(IERC20 token) external onlyOwner {\n    token.transfer(owner(), token.balanceOf(address(this)));\n  }\n}\n"
      },
      "contracts/protocol/libraries/math/PercentageMath.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {Errors} from '../helpers/Errors.sol';\n\n/**\n * @title PercentageMath library\n * @author Aave\n * @notice Provides functions to perform percentage calculations\n * @dev Percentages are defined by default with 2 decimals of precision (100.00). The precision is indicated by PERCENTAGE_FACTOR\n * @dev Operations are rounded half up\n **/\n\nlibrary PercentageMath {\n  uint256 constant PERCENTAGE_FACTOR = 1e4; //percentage plus two decimals\n  uint256 constant HALF_PERCENT = PERCENTAGE_FACTOR / 2;\n\n  /**\n   * @dev Executes a percentage multiplication\n   * @param value The value of which the percentage needs to be calculated\n   * @param percentage The percentage of the value to be calculated\n   * @return The percentage of value\n   **/\n  function percentMul(uint256 value, uint256 percentage) internal pure returns (uint256) {\n    if (value == 0 || percentage == 0) {\n      return 0;\n    }\n\n    require(\n      value <= (type(uint256).max - HALF_PERCENT) / percentage,\n      Errors.MATH_MULTIPLICATION_OVERFLOW\n    );\n\n    return (value * percentage + HALF_PERCENT) / PERCENTAGE_FACTOR;\n  }\n\n  /**\n   * @dev Executes a percentage division\n   * @param value The value of which the percentage needs to be calculated\n   * @param percentage The percentage of the value to be calculated\n   * @return The value divided the percentage\n   **/\n  function percentDiv(uint256 value, uint256 percentage) internal pure returns (uint256) {\n    require(percentage != 0, Errors.MATH_DIVISION_BY_ZERO);\n    uint256 halfPercentage = percentage / 2;\n\n    require(\n      value <= (type(uint256).max - halfPercentage) / PERCENTAGE_FACTOR,\n      Errors.MATH_MULTIPLICATION_OVERFLOW\n    );\n\n    return (value * PERCENTAGE_FACTOR + halfPercentage) / percentage;\n  }\n}\n"
      },
      "contracts/dependencies/openzeppelin/contracts/SafeMath.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\n * checks.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the transaction when an\n * operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeMath {\n  /**\n   * @dev Returns the addition of two unsigned integers, reverting on\n   * overflow.\n   *\n   * Counterpart to Solidity's `+` operator.\n   *\n   * Requirements:\n   * - Addition cannot overflow.\n   */\n  function add(uint256 a, uint256 b) internal pure returns (uint256) {\n    uint256 c = a + b;\n    require(c >= a, 'SafeMath: addition overflow');\n\n    return c;\n  }\n\n  /**\n   * @dev Returns the subtraction of two unsigned integers, reverting on\n   * overflow (when the result is negative).\n   *\n   * Counterpart to Solidity's `-` operator.\n   *\n   * Requirements:\n   * - Subtraction cannot overflow.\n   */\n  function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n    return sub(a, b, 'SafeMath: subtraction overflow');\n  }\n\n  /**\n   * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n   * overflow (when the result is negative).\n   *\n   * Counterpart to Solidity's `-` operator.\n   *\n   * Requirements:\n   * - Subtraction cannot overflow.\n   */\n  function sub(\n    uint256 a,\n    uint256 b,\n    string memory errorMessage\n  ) internal pure returns (uint256) {\n    require(b <= a, errorMessage);\n    uint256 c = a - b;\n\n    return c;\n  }\n\n  /**\n   * @dev Returns the multiplication of two unsigned integers, reverting on\n   * overflow.\n   *\n   * Counterpart to Solidity's `*` operator.\n   *\n   * Requirements:\n   * - Multiplication cannot overflow.\n   */\n  function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n    // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n    // benefit is lost if 'b' is also tested.\n    // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n    if (a == 0) {\n      return 0;\n    }\n\n    uint256 c = a * b;\n    require(c / a == b, 'SafeMath: multiplication overflow');\n\n    return c;\n  }\n\n  /**\n   * @dev Returns the integer division of two unsigned integers. Reverts on\n   * division by zero. The result is rounded towards zero.\n   *\n   * Counterpart to Solidity's `/` operator. Note: this function uses a\n   * `revert` opcode (which leaves remaining gas untouched) while Solidity\n   * uses an invalid opcode to revert (consuming all remaining gas).\n   *\n   * Requirements:\n   * - The divisor cannot be zero.\n   */\n  function div(uint256 a, uint256 b) internal pure returns (uint256) {\n    return div(a, b, 'SafeMath: division by zero');\n  }\n\n  /**\n   * @dev Returns the integer division of two unsigned integers. Reverts with custom message on\n   * division by zero. The result is rounded towards zero.\n   *\n   * Counterpart to Solidity's `/` operator. Note: this function uses a\n   * `revert` opcode (which leaves remaining gas untouched) while Solidity\n   * uses an invalid opcode to revert (consuming all remaining gas).\n   *\n   * Requirements:\n   * - The divisor cannot be zero.\n   */\n  function div(\n    uint256 a,\n    uint256 b,\n    string memory errorMessage\n  ) internal pure returns (uint256) {\n    // Solidity only automatically asserts when dividing by 0\n    require(b > 0, errorMessage);\n    uint256 c = a / b;\n    // assert(a == b * c + a % b); // There is no case in which this doesn't hold\n\n    return c;\n  }\n\n  /**\n   * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n   * Reverts when dividing by zero.\n   *\n   * Counterpart to Solidity's `%` operator. This function uses a `revert`\n   * opcode (which leaves remaining gas untouched) while Solidity uses an\n   * invalid opcode to revert (consuming all remaining gas).\n   *\n   * Requirements:\n   * - The divisor cannot be zero.\n   */\n  function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n    return mod(a, b, 'SafeMath: modulo by zero');\n  }\n\n  /**\n   * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n   * Reverts with custom message when dividing by zero.\n   *\n   * Counterpart to Solidity's `%` operator. This function uses a `revert`\n   * opcode (which leaves remaining gas untouched) while Solidity uses an\n   * invalid opcode to revert (consuming all remaining gas).\n   *\n   * Requirements:\n   * - The divisor cannot be zero.\n   */\n  function mod(\n    uint256 a,\n    uint256 b,\n    string memory errorMessage\n  ) internal pure returns (uint256) {\n    require(b != 0, errorMessage);\n    return a % b;\n  }\n}\n"
      },
      "contracts/dependencies/openzeppelin/contracts/IERC20.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n  /**\n   * @dev Returns the amount of tokens in existence.\n   */\n  function totalSupply() external view returns (uint256);\n\n  /**\n   * @dev Returns the amount of tokens owned by `account`.\n   */\n  function balanceOf(address account) external view returns (uint256);\n\n  /**\n   * @dev Moves `amount` tokens from the caller's account to `recipient`.\n   *\n   * Returns a boolean value indicating whether the operation succeeded.\n   *\n   * Emits a {Transfer} event.\n   */\n  function transfer(address recipient, uint256 amount) external returns (bool);\n\n  /**\n   * @dev Returns the remaining number of tokens that `spender` will be\n   * allowed to spend on behalf of `owner` through {transferFrom}. This is\n   * zero by default.\n   *\n   * This value changes when {approve} or {transferFrom} are called.\n   */\n  function allowance(address owner, address spender) external view returns (uint256);\n\n  /**\n   * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n   *\n   * Returns a boolean value indicating whether the operation succeeded.\n   *\n   * IMPORTANT: Beware that changing an allowance with this method brings the risk\n   * that someone may use both the old and the new allowance by unfortunate\n   * transaction ordering. One possible solution to mitigate this race\n   * condition is to first reduce the spender's allowance to 0 and set the\n   * desired value afterwards:\n   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n   *\n   * Emits an {Approval} event.\n   */\n  function approve(address spender, uint256 amount) external returns (bool);\n\n  /**\n   * @dev Moves `amount` tokens from `sender` to `recipient` using the\n   * allowance mechanism. `amount` is then deducted from the caller's\n   * allowance.\n   *\n   * Returns a boolean value indicating whether the operation succeeded.\n   *\n   * Emits a {Transfer} event.\n   */\n  function transferFrom(\n    address sender,\n    address recipient,\n    uint256 amount\n  ) external returns (bool);\n\n  /**\n   * @dev Emitted when `value` tokens are moved from one account (`from`) to\n   * another (`to`).\n   *\n   * Note that `value` may be zero.\n   */\n  event Transfer(address indexed from, address indexed to, uint256 value);\n\n  /**\n   * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n   * a call to {approve}. `value` is the new allowance.\n   */\n  event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n"
      },
      "contracts/dependencies/openzeppelin/contracts/IERC20Detailed.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {IERC20} from './IERC20.sol';\n\ninterface IERC20Detailed is IERC20 {\n  function name() external view returns (string memory);\n\n  function symbol() external view returns (string memory);\n\n  function decimals() external view returns (uint8);\n}\n"
      },
      "contracts/dependencies/openzeppelin/contracts/SafeERC20.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity 0.6.12;\n\nimport {IERC20} from './IERC20.sol';\nimport {SafeMath} from './SafeMath.sol';\nimport {Address} from './Address.sol';\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n  using SafeMath for uint256;\n  using Address for address;\n\n  function safeTransfer(\n    IERC20 token,\n    address to,\n    uint256 value\n  ) internal {\n    callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\n  }\n\n  function safeTransferFrom(\n    IERC20 token,\n    address from,\n    address to,\n    uint256 value\n  ) internal {\n    callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n  }\n\n  function safeApprove(\n    IERC20 token,\n    address spender,\n    uint256 value\n  ) internal {\n    require(\n      (value == 0) || (token.allowance(address(this), spender) == 0),\n      'SafeERC20: approve from non-zero to non-zero allowance'\n    );\n    callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\n  }\n\n  function callOptionalReturn(IERC20 token, bytes memory data) private {\n    require(address(token).isContract(), 'SafeERC20: call to non-contract');\n\n    // solhint-disable-next-line avoid-low-level-calls\n    (bool success, bytes memory returndata) = address(token).call(data);\n    require(success, 'SafeERC20: low-level call failed');\n\n    if (returndata.length > 0) {\n      // Return data is optional\n      // solhint-disable-next-line max-line-length\n      require(abi.decode(returndata, (bool)), 'SafeERC20: ERC20 operation did not succeed');\n    }\n  }\n}\n"
      },
      "contracts/dependencies/openzeppelin/contracts/Ownable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport './Context.sol';\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\ncontract Ownable is Context {\n  address private _owner;\n\n  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n  /**\n   * @dev Initializes the contract setting the deployer as the initial owner.\n   */\n  constructor() internal {\n    address msgSender = _msgSender();\n    _owner = msgSender;\n    emit OwnershipTransferred(address(0), msgSender);\n  }\n\n  /**\n   * @dev Returns the address of the current owner.\n   */\n  function owner() public view returns (address) {\n    return _owner;\n  }\n\n  /**\n   * @dev Throws if called by any account other than the owner.\n   */\n  modifier onlyOwner() {\n    require(_owner == _msgSender(), 'Ownable: caller is not the owner');\n    _;\n  }\n\n  /**\n   * @dev Leaves the contract without owner. It will not be possible to call\n   * `onlyOwner` functions anymore. Can only be called by the current owner.\n   *\n   * NOTE: Renouncing ownership will leave the contract without an owner,\n   * thereby removing any functionality that is only available to the owner.\n   */\n  function renounceOwnership() public virtual onlyOwner {\n    emit OwnershipTransferred(_owner, address(0));\n    _owner = address(0);\n  }\n\n  /**\n   * @dev Transfers ownership of the contract to a new account (`newOwner`).\n   * Can only be called by the current owner.\n   */\n  function transferOwnership(address newOwner) public virtual onlyOwner {\n    require(newOwner != address(0), 'Ownable: new owner is the zero address');\n    emit OwnershipTransferred(_owner, newOwner);\n    _owner = newOwner;\n  }\n}\n"
      },
      "contracts/interfaces/ILendingPoolAddressesProvider.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\n/**\n * @title LendingPoolAddressesProvider contract\n * @dev Main registry of addresses part of or connected to the protocol, including permissioned roles\n * - Acting also as factory of proxies and admin of those, so with right to change its implementations\n * - Owned by the Aave Governance\n * @author Aave\n **/\ninterface ILendingPoolAddressesProvider {\n  event MarketIdSet(string newMarketId);\n  event LendingPoolUpdated(address indexed newAddress);\n  event ConfigurationAdminUpdated(address indexed newAddress);\n  event EmergencyAdminUpdated(address indexed newAddress);\n  event LendingPoolConfiguratorUpdated(address indexed newAddress);\n  event LendingPoolCollateralManagerUpdated(address indexed newAddress);\n  event PriceOracleUpdated(address indexed newAddress);\n  event LendingRateOracleUpdated(address indexed newAddress);\n  event ProxyCreated(bytes32 id, address indexed newAddress);\n  event AddressSet(bytes32 id, address indexed newAddress, bool hasProxy);\n\n  function getMarketId() external view returns (string memory);\n\n  function setMarketId(string calldata marketId) external;\n\n  function setAddress(bytes32 id, address newAddress) external;\n\n  function setAddressAsProxy(bytes32 id, address impl) external;\n\n  function getAddress(bytes32 id) external view returns (address);\n\n  function getLendingPool() external view returns (address);\n\n  function setLendingPoolImpl(address pool) external;\n\n  function getLendingPoolConfigurator() external view returns (address);\n\n  function setLendingPoolConfiguratorImpl(address configurator) external;\n\n  function getLendingPoolCollateralManager() external view returns (address);\n\n  function setLendingPoolCollateralManager(address manager) external;\n\n  function getPoolAdmin() external view returns (address);\n\n  function setPoolAdmin(address admin) external;\n\n  function getEmergencyAdmin() external view returns (address);\n\n  function setEmergencyAdmin(address admin) external;\n\n  function getPriceOracle() external view returns (address);\n\n  function setPriceOracle(address priceOracle) external;\n\n  function getLendingRateOracle() external view returns (address);\n\n  function setLendingRateOracle(address lendingRateOracle) external;\n}\n"
      },
      "contracts/protocol/libraries/types/DataTypes.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nlibrary DataTypes {\n  // refer to the whitepaper, section 1.1 basic concepts for a formal description of these properties.\n  struct ReserveData {\n    //stores the reserve configuration\n    ReserveConfigurationMap configuration;\n    //the liquidity index. Expressed in ray\n    uint128 liquidityIndex;\n    //variable borrow index. Expressed in ray\n    uint128 variableBorrowIndex;\n    //the current supply rate. Expressed in ray\n    uint128 currentLiquidityRate;\n    //the current variable borrow rate. Expressed in ray\n    uint128 currentVariableBorrowRate;\n    //the current stable borrow rate. Expressed in ray\n    uint128 currentStableBorrowRate;\n    uint40 lastUpdateTimestamp;\n    //tokens addresses\n    address aTokenAddress;\n    address stableDebtTokenAddress;\n    address variableDebtTokenAddress;\n    //address of the interest rate strategy\n    address interestRateStrategyAddress;\n    //the id of the reserve. Represents the position in the list of the active reserves\n    uint8 id;\n  }\n\n  struct ReserveConfigurationMap {\n    //bit 0-15: LTV\n    //bit 16-31: Liq. threshold\n    //bit 32-47: Liq. bonus\n    //bit 48-55: Decimals\n    //bit 56: Reserve is active\n    //bit 57: reserve is frozen\n    //bit 58: borrowing is enabled\n    //bit 59: stable rate borrowing enabled\n    //bit 60-63: reserved\n    //bit 64-79: reserve factor\n    uint256 data;\n  }\n\n  struct UserConfigurationMap {\n    uint256 data;\n  }\n\n  enum InterestRateMode {NONE, STABLE, VARIABLE}\n}\n"
      },
      "contracts/interfaces/IUniswapV2Router02.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\ninterface IUniswapV2Router02 {\n  function swapExactTokensForTokens(\n    uint256 amountIn,\n    uint256 amountOutMin,\n    address[] calldata path,\n    address to,\n    uint256 deadline\n  ) external returns (uint256[] memory amounts);\n\n  function swapTokensForExactTokens(\n    uint256 amountOut,\n    uint256 amountInMax,\n    address[] calldata path,\n    address to,\n    uint256 deadline\n  ) external returns (uint256[] memory amounts);\n\n  function getAmountsOut(uint256 amountIn, address[] calldata path)\n    external\n    view\n    returns (uint256[] memory amounts);\n\n  function getAmountsIn(uint256 amountOut, address[] calldata path)\n    external\n    view\n    returns (uint256[] memory amounts);\n}\n"
      },
      "contracts/interfaces/IPriceOracleGetter.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\n/**\n * @title IPriceOracleGetter interface\n * @notice Interface for the Aave price oracle.\n **/\n\ninterface IPriceOracleGetter {\n  /**\n   * @dev returns the asset price in ETH\n   * @param asset the address of the asset\n   * @return the ETH price of the asset\n   **/\n  function getAssetPrice(address asset) external view returns (uint256);\n}\n"
      },
      "contracts/interfaces/IERC20WithPermit.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {IERC20} from '../dependencies/openzeppelin/contracts/IERC20.sol';\n\ninterface IERC20WithPermit is IERC20 {\n  function permit(\n    address owner,\n    address spender,\n    uint256 value,\n    uint256 deadline,\n    uint8 v,\n    bytes32 r,\n    bytes32 s\n  ) external;\n}\n"
      },
      "contracts/flashloan/base/FlashLoanReceiverBase.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {SafeMath} from '../../dependencies/openzeppelin/contracts/SafeMath.sol';\nimport {IERC20} from '../../dependencies/openzeppelin/contracts/IERC20.sol';\nimport {SafeERC20} from '../../dependencies/openzeppelin/contracts/SafeERC20.sol';\nimport {IFlashLoanReceiver} from '../interfaces/IFlashLoanReceiver.sol';\nimport {ILendingPoolAddressesProvider} from '../../interfaces/ILendingPoolAddressesProvider.sol';\nimport {ILendingPool} from '../../interfaces/ILendingPool.sol';\n\nabstract contract FlashLoanReceiverBase is IFlashLoanReceiver {\n  using SafeERC20 for IERC20;\n  using SafeMath for uint256;\n\n  ILendingPoolAddressesProvider public immutable override ADDRESSES_PROVIDER;\n  ILendingPool public immutable override LENDING_POOL;\n\n  constructor(ILendingPoolAddressesProvider provider) public {\n    ADDRESSES_PROVIDER = provider;\n    LENDING_POOL = ILendingPool(provider.getLendingPool());\n  }\n}\n"
      },
      "contracts/adapters/interfaces/IBaseUniswapAdapter.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\n\nimport {IPriceOracleGetter} from '../../interfaces/IPriceOracleGetter.sol';\nimport {IUniswapV2Router02} from '../../interfaces/IUniswapV2Router02.sol';\n\ninterface IBaseUniswapAdapter {\n  event Swapped(address fromAsset, address toAsset, uint256 fromAmount, uint256 receivedAmount);\n\n  struct PermitSignature {\n    uint256 amount;\n    uint256 deadline;\n    uint8 v;\n    bytes32 r;\n    bytes32 s;\n  }\n\n  struct AmountCalc {\n    uint256 calculatedAmount;\n    uint256 relativePrice;\n    uint256 amountInUsd;\n    uint256 amountOutUsd;\n    address[] path;\n  }\n\n  function WETH_ADDRESS() external returns (address);\n\n  function MAX_SLIPPAGE_PERCENT() external returns (uint256);\n\n  function FLASHLOAN_PREMIUM_TOTAL() external returns (uint256);\n\n  function USD_ADDRESS() external returns (address);\n\n  function ORACLE() external returns (IPriceOracleGetter);\n\n  function UNISWAP_ROUTER() external returns (IUniswapV2Router02);\n\n  /**\n   * @dev Given an input asset amount, returns the maximum output amount of the other asset and the prices\n   * @param amountIn Amount of reserveIn\n   * @param reserveIn Address of the asset to be swap from\n   * @param reserveOut Address of the asset to be swap to\n   * @return uint256 Amount out of the reserveOut\n   * @return uint256 The price of out amount denominated in the reserveIn currency (18 decimals)\n   * @return uint256 In amount of reserveIn value denominated in USD (8 decimals)\n   * @return uint256 Out amount of reserveOut value denominated in USD (8 decimals)\n   * @return address[] The exchange path\n   */\n  function getAmountsOut(\n    uint256 amountIn,\n    address reserveIn,\n    address reserveOut\n  )\n    external\n    view\n    returns (\n      uint256,\n      uint256,\n      uint256,\n      uint256,\n      address[] memory\n    );\n\n  /**\n   * @dev Returns the minimum input asset amount required to buy the given output asset amount and the prices\n   * @param amountOut Amount of reserveOut\n   * @param reserveIn Address of the asset to be swap from\n   * @param reserveOut Address of the asset to be swap to\n   * @return uint256 Amount in of the reserveIn\n   * @return uint256 The price of in amount denominated in the reserveOut currency (18 decimals)\n   * @return uint256 In amount of reserveIn value denominated in USD (8 decimals)\n   * @return uint256 Out amount of reserveOut value denominated in USD (8 decimals)\n   * @return address[] The exchange path\n   */\n  function getAmountsIn(\n    uint256 amountOut,\n    address reserveIn,\n    address reserveOut\n  )\n    external\n    view\n    returns (\n      uint256,\n      uint256,\n      uint256,\n      uint256,\n      address[] memory\n    );\n}\n"
      },
      "contracts/protocol/libraries/helpers/Errors.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\n/**\n * @title Errors library\n * @author Aave\n * @notice Defines the error messages emitted by the different contracts of the Aave protocol\n * @dev Error messages prefix glossary:\n *  - VL = ValidationLogic\n *  - MATH = Math libraries\n *  - CT = Common errors between tokens (AToken, VariableDebtToken and StableDebtToken)\n *  - AT = AToken\n *  - SDT = StableDebtToken\n *  - VDT = VariableDebtToken\n *  - LP = LendingPool\n *  - LPAPR = LendingPoolAddressesProviderRegistry\n *  - LPC = LendingPoolConfiguration\n *  - RL = ReserveLogic\n *  - LPCM = LendingPoolCollateralManager\n *  - P = Pausable\n */\nlibrary Errors {\n  //common errors\n  string public constant CALLER_NOT_POOL_ADMIN = '33'; // 'The caller must be the pool admin'\n  string public constant BORROW_ALLOWANCE_NOT_ENOUGH = '59'; // User borrows on behalf, but allowance are too small\n\n  //contract specific errors\n  string public constant VL_INVALID_AMOUNT = '1'; // 'Amount must be greater than 0'\n  string public constant VL_NO_ACTIVE_RESERVE = '2'; // 'Action requires an active reserve'\n  string public constant VL_RESERVE_FROZEN = '3'; // 'Action cannot be performed because the reserve is frozen'\n  string public constant VL_CURRENT_AVAILABLE_LIQUIDITY_NOT_ENOUGH = '4'; // 'The current liquidity is not enough'\n  string public constant VL_NOT_ENOUGH_AVAILABLE_USER_BALANCE = '5'; // 'User cannot withdraw more than the available balance'\n  string public constant VL_TRANSFER_NOT_ALLOWED = '6'; // 'Transfer cannot be allowed.'\n  string public constant VL_BORROWING_NOT_ENABLED = '7'; // 'Borrowing is not enabled'\n  string public constant VL_INVALID_INTEREST_RATE_MODE_SELECTED = '8'; // 'Invalid interest rate mode selected'\n  string public constant VL_COLLATERAL_BALANCE_IS_0 = '9'; // 'The collateral balance is 0'\n  string public constant VL_HEALTH_FACTOR_LOWER_THAN_LIQUIDATION_THRESHOLD = '10'; // 'Health factor is lesser than the liquidation threshold'\n  string public constant VL_COLLATERAL_CANNOT_COVER_NEW_BORROW = '11'; // 'There is not enough collateral to cover a new borrow'\n  string public constant VL_STABLE_BORROWING_NOT_ENABLED = '12'; // stable borrowing not enabled\n  string public constant VL_COLLATERAL_SAME_AS_BORROWING_CURRENCY = '13'; // collateral is (mostly) the same currency that is being borrowed\n  string public constant VL_AMOUNT_BIGGER_THAN_MAX_LOAN_SIZE_STABLE = '14'; // 'The requested amount is greater than the max loan size in stable rate mode\n  string public constant VL_NO_DEBT_OF_SELECTED_TYPE = '15'; // 'for repayment of stable debt, the user needs to have stable debt, otherwise, he needs to have variable debt'\n  string public constant VL_NO_EXPLICIT_AMOUNT_TO_REPAY_ON_BEHALF = '16'; // 'To repay on behalf of an user an explicit amount to repay is needed'\n  string public constant VL_NO_STABLE_RATE_LOAN_IN_RESERVE = '17'; // 'User does not have a stable rate loan in progress on this reserve'\n  string public constant VL_NO_VARIABLE_RATE_LOAN_IN_RESERVE = '18'; // 'User does not have a variable rate loan in progress on this reserve'\n  string public constant VL_UNDERLYING_BALANCE_NOT_GREATER_THAN_0 = '19'; // 'The underlying balance needs to be greater than 0'\n  string public constant VL_DEPOSIT_ALREADY_IN_USE = '20'; // 'User deposit is already being used as collateral'\n  string public constant LP_NOT_ENOUGH_STABLE_BORROW_BALANCE = '21'; // 'User does not have any stable rate loan for this reserve'\n  string public constant LP_INTEREST_RATE_REBALANCE_CONDITIONS_NOT_MET = '22'; // 'Interest rate rebalance conditions were not met'\n  string public constant LP_LIQUIDATION_CALL_FAILED = '23'; // 'Liquidation call failed'\n  string public constant LP_NOT_ENOUGH_LIQUIDITY_TO_BORROW = '24'; // 'There is not enough liquidity available to borrow'\n  string public constant LP_REQUESTED_AMOUNT_TOO_SMALL = '25'; // 'The requested amount is too small for a FlashLoan.'\n  string public constant LP_INCONSISTENT_PROTOCOL_ACTUAL_BALANCE = '26'; // 'The actual balance of the protocol is inconsistent'\n  string public constant LP_CALLER_NOT_LENDING_POOL_CONFIGURATOR = '27'; // 'The caller of the function is not the lending pool configurator'\n  string public constant LP_INCONSISTENT_FLASHLOAN_PARAMS = '28';\n  string public constant CT_CALLER_MUST_BE_LENDING_POOL = '29'; // 'The caller of this function must be a lending pool'\n  string public constant CT_CANNOT_GIVE_ALLOWANCE_TO_HIMSELF = '30'; // 'User cannot give allowance to himself'\n  string public constant CT_TRANSFER_AMOUNT_NOT_GT_0 = '31'; // 'Transferred amount needs to be greater than zero'\n  string public constant RL_RESERVE_ALREADY_INITIALIZED = '32'; // 'Reserve has already been initialized'\n  string public constant LPC_RESERVE_LIQUIDITY_NOT_0 = '34'; // 'The liquidity of the reserve needs to be 0'\n  string public constant LPC_INVALID_ATOKEN_POOL_ADDRESS = '35'; // 'The liquidity of the reserve needs to be 0'\n  string public constant LPC_INVALID_STABLE_DEBT_TOKEN_POOL_ADDRESS = '36'; // 'The liquidity of the reserve needs to be 0'\n  string public constant LPC_INVALID_VARIABLE_DEBT_TOKEN_POOL_ADDRESS = '37'; // 'The liquidity of the reserve needs to be 0'\n  string public constant LPC_INVALID_STABLE_DEBT_TOKEN_UNDERLYING_ADDRESS = '38'; // 'The liquidity of the reserve needs to be 0'\n  string public constant LPC_INVALID_VARIABLE_DEBT_TOKEN_UNDERLYING_ADDRESS = '39'; // 'The liquidity of the reserve needs to be 0'\n  string public constant LPC_INVALID_ADDRESSES_PROVIDER_ID = '40'; // 'The liquidity of the reserve needs to be 0'\n  string public constant LPC_INVALID_CONFIGURATION = '75'; // 'Invalid risk parameters for the reserve'\n  string public constant LPC_CALLER_NOT_EMERGENCY_ADMIN = '76'; // 'The caller must be the emergency admin'\n  string public constant LPAPR_PROVIDER_NOT_REGISTERED = '41'; // 'Provider is not registered'\n  string public constant LPCM_HEALTH_FACTOR_NOT_BELOW_THRESHOLD = '42'; // 'Health factor is not below the threshold'\n  string public constant LPCM_COLLATERAL_CANNOT_BE_LIQUIDATED = '43'; // 'The collateral chosen cannot be liquidated'\n  string public constant LPCM_SPECIFIED_CURRENCY_NOT_BORROWED_BY_USER = '44'; // 'User did not borrow the specified currency'\n  string public constant LPCM_NOT_ENOUGH_LIQUIDITY_TO_LIQUIDATE = '45'; // \"There isn't enough liquidity available to liquidate\"\n  string public constant LPCM_NO_ERRORS = '46'; // 'No errors'\n  string public constant LP_INVALID_FLASHLOAN_MODE = '47'; //Invalid flashloan mode selected\n  string public constant MATH_MULTIPLICATION_OVERFLOW = '48';\n  string public constant MATH_ADDITION_OVERFLOW = '49';\n  string public constant MATH_DIVISION_BY_ZERO = '50';\n  string public constant RL_LIQUIDITY_INDEX_OVERFLOW = '51'; //  Liquidity index overflows uint128\n  string public constant RL_VARIABLE_BORROW_INDEX_OVERFLOW = '52'; //  Variable borrow index overflows uint128\n  string public constant RL_LIQUIDITY_RATE_OVERFLOW = '53'; //  Liquidity rate overflows uint128\n  string public constant RL_VARIABLE_BORROW_RATE_OVERFLOW = '54'; //  Variable borrow rate overflows uint128\n  string public constant RL_STABLE_BORROW_RATE_OVERFLOW = '55'; //  Stable borrow rate overflows uint128\n  string public constant CT_INVALID_MINT_AMOUNT = '56'; //invalid amount to mint\n  string public constant LP_FAILED_REPAY_WITH_COLLATERAL = '57';\n  string public constant CT_INVALID_BURN_AMOUNT = '58'; //invalid amount to burn\n  string public constant LP_FAILED_COLLATERAL_SWAP = '60';\n  string public constant LP_INVALID_EQUAL_ASSETS_TO_SWAP = '61';\n  string public constant LP_REENTRANCY_NOT_ALLOWED = '62';\n  string public constant LP_CALLER_MUST_BE_AN_ATOKEN = '63';\n  string public constant LP_IS_PAUSED = '64'; // 'Pool is paused'\n  string public constant LP_NO_MORE_RESERVES_ALLOWED = '65';\n  string public constant LP_INVALID_FLASH_LOAN_EXECUTOR_RETURN = '66';\n  string public constant RC_INVALID_LTV = '67';\n  string public constant RC_INVALID_LIQ_THRESHOLD = '68';\n  string public constant RC_INVALID_LIQ_BONUS = '69';\n  string public constant RC_INVALID_DECIMALS = '70';\n  string public constant RC_INVALID_RESERVE_FACTOR = '71';\n  string public constant LPAPR_INVALID_ADDRESSES_PROVIDER_ID = '72';\n  string public constant VL_INCONSISTENT_FLASHLOAN_PARAMS = '73';\n  string public constant LP_INCONSISTENT_PARAMS_LENGTH = '74';\n  string public constant UL_INVALID_INDEX = '77';\n  string public constant LP_NOT_CONTRACT = '78';\n  string public constant SDT_STABLE_DEBT_OVERFLOW = '79';\n  string public constant SDT_BURN_EXCEEDS_BALANCE = '80';\n\n  enum CollateralManagerErrors {\n    NO_ERROR,\n    NO_COLLATERAL_AVAILABLE,\n    COLLATERAL_CANNOT_BE_LIQUIDATED,\n    CURRRENCY_NOT_BORROWED,\n    HEALTH_FACTOR_ABOVE_THRESHOLD,\n    NOT_ENOUGH_LIQUIDITY,\n    NO_ACTIVE_RESERVE,\n    HEALTH_FACTOR_LOWER_THAN_LIQUIDATION_THRESHOLD,\n    INVALID_EQUAL_ASSETS_TO_SWAP,\n    FROZEN_RESERVE\n  }\n}\n"
      },
      "contracts/dependencies/openzeppelin/contracts/Address.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n  /**\n   * @dev Returns true if `account` is a contract.\n   *\n   * [IMPORTANT]\n   * ====\n   * It is unsafe to assume that an address for which this function returns\n   * false is an externally-owned account (EOA) and not a contract.\n   *\n   * Among others, `isContract` will return false for the following\n   * types of addresses:\n   *\n   *  - an externally-owned account\n   *  - a contract in construction\n   *  - an address where a contract will be created\n   *  - an address where a contract lived, but was destroyed\n   * ====\n   */\n  function isContract(address account) internal view returns (bool) {\n    // According to EIP-1052, 0x0 is the value returned for not-yet created accounts\n    // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned\n    // for accounts without code, i.e. `keccak256('')`\n    bytes32 codehash;\n    bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;\n    // solhint-disable-next-line no-inline-assembly\n    assembly {\n      codehash := extcodehash(account)\n    }\n    return (codehash != accountHash && codehash != 0x0);\n  }\n\n  /**\n   * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n   * `recipient`, forwarding all available gas and reverting on errors.\n   *\n   * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n   * of certain opcodes, possibly making contracts go over the 2300 gas limit\n   * imposed by `transfer`, making them unable to receive funds via\n   * `transfer`. {sendValue} removes this limitation.\n   *\n   * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n   *\n   * IMPORTANT: because control is transferred to `recipient`, care must be\n   * taken to not create reentrancy vulnerabilities. Consider using\n   * {ReentrancyGuard} or the\n   * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n   */\n  function sendValue(address payable recipient, uint256 amount) internal {\n    require(address(this).balance >= amount, 'Address: insufficient balance');\n\n    // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\n    (bool success, ) = recipient.call{value: amount}('');\n    require(success, 'Address: unable to send value, recipient may have reverted');\n  }\n}\n"
      },
      "contracts/dependencies/openzeppelin/contracts/Context.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.6.12;\n\n/*\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with GSN meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n  function _msgSender() internal view virtual returns (address payable) {\n    return msg.sender;\n  }\n\n  function _msgData() internal view virtual returns (bytes memory) {\n    this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\n    return msg.data;\n  }\n}\n"
      },
      "contracts/flashloan/interfaces/IFlashLoanReceiver.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {ILendingPoolAddressesProvider} from '../../interfaces/ILendingPoolAddressesProvider.sol';\nimport {ILendingPool} from '../../interfaces/ILendingPool.sol';\n\n/**\n * @title IFlashLoanReceiver interface\n * @notice Interface for the Aave fee IFlashLoanReceiver.\n * @author Aave\n * @dev implement this interface to develop a flashloan-compatible flashLoanReceiver contract\n **/\ninterface IFlashLoanReceiver {\n  function executeOperation(\n    address[] calldata assets,\n    uint256[] calldata amounts,\n    uint256[] calldata premiums,\n    address initiator,\n    bytes calldata params\n  ) external returns (bool);\n\n  function ADDRESSES_PROVIDER() external view returns (ILendingPoolAddressesProvider);\n\n  function LENDING_POOL() external view returns (ILendingPool);\n}\n"
      },
      "contracts/interfaces/ILendingPool.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\n\nimport {ILendingPoolAddressesProvider} from './ILendingPoolAddressesProvider.sol';\nimport {DataTypes} from '../protocol/libraries/types/DataTypes.sol';\n\ninterface ILendingPool {\n  /**\n   * @dev Emitted on deposit()\n   * @param reserve The address of the underlying asset of the reserve\n   * @param user The address initiating the deposit\n   * @param onBehalfOf The beneficiary of the deposit, receiving the aTokens\n   * @param amount The amount deposited\n   * @param referral The referral code used\n   **/\n  event Deposit(\n    address indexed reserve,\n    address user,\n    address indexed onBehalfOf,\n    uint256 amount,\n    uint16 indexed referral\n  );\n\n  /**\n   * @dev Emitted on withdraw()\n   * @param reserve The address of the underlyng asset being withdrawn\n   * @param user The address initiating the withdrawal, owner of aTokens\n   * @param to Address that will receive the underlying\n   * @param amount The amount to be withdrawn\n   **/\n  event Withdraw(address indexed reserve, address indexed user, address indexed to, uint256 amount);\n\n  /**\n   * @dev Emitted on borrow() and flashLoan() when debt needs to be opened\n   * @param reserve The address of the underlying asset being borrowed\n   * @param user The address of the user initiating the borrow(), receiving the funds on borrow() or just\n   * initiator of the transaction on flashLoan()\n   * @param onBehalfOf The address that will be getting the debt\n   * @param amount The amount borrowed out\n   * @param borrowRateMode The rate mode: 1 for Stable, 2 for Variable\n   * @param borrowRate The numeric rate at which the user has borrowed\n   * @param referral The referral code used\n   **/\n  event Borrow(\n    address indexed reserve,\n    address user,\n    address indexed onBehalfOf,\n    uint256 amount,\n    uint256 borrowRateMode,\n    uint256 borrowRate,\n    uint16 indexed referral\n  );\n\n  /**\n   * @dev Emitted on repay()\n   * @param reserve The address of the underlying asset of the reserve\n   * @param user The beneficiary of the repayment, getting his debt reduced\n   * @param repayer The address of the user initiating the repay(), providing the funds\n   * @param amount The amount repaid\n   **/\n  event Repay(\n    address indexed reserve,\n    address indexed user,\n    address indexed repayer,\n    uint256 amount\n  );\n\n  /**\n   * @dev Emitted on swapBorrowRateMode()\n   * @param reserve The address of the underlying asset of the reserve\n   * @param user The address of the user swapping his rate mode\n   * @param rateMode The rate mode that the user wants to swap to\n   **/\n  event Swap(address indexed reserve, address indexed user, uint256 rateMode);\n\n  /**\n   * @dev Emitted on setUserUseReserveAsCollateral()\n   * @param reserve The address of the underlying asset of the reserve\n   * @param user The address of the user enabling the usage as collateral\n   **/\n  event ReserveUsedAsCollateralEnabled(address indexed reserve, address indexed user);\n\n  /**\n   * @dev Emitted on setUserUseReserveAsCollateral()\n   * @param reserve The address of the underlying asset of the reserve\n   * @param user The address of the user enabling the usage as collateral\n   **/\n  event ReserveUsedAsCollateralDisabled(address indexed reserve, address indexed user);\n\n  /**\n   * @dev Emitted on rebalanceStableBorrowRate()\n   * @param reserve The address of the underlying asset of the reserve\n   * @param user The address of the user for which the rebalance has been executed\n   **/\n  event RebalanceStableBorrowRate(address indexed reserve, address indexed user);\n\n  /**\n   * @dev Emitted on flashLoan()\n   * @param target The address of the flash loan receiver contract\n   * @param initiator The address initiating the flash loan\n   * @param asset The address of the asset being flash borrowed\n   * @param amount The amount flash borrowed\n   * @param premium The fee flash borrowed\n   * @param referralCode The referral code used\n   **/\n  event FlashLoan(\n    address indexed target,\n    address indexed initiator,\n    address indexed asset,\n    uint256 amount,\n    uint256 premium,\n    uint16 referralCode\n  );\n\n  /**\n   * @dev Emitted when the pause is triggered.\n   */\n  event Paused();\n\n  /**\n   * @dev Emitted when the pause is lifted.\n   */\n  event Unpaused();\n\n  /**\n   * @dev Emitted when a borrower is liquidated. This event is emitted by the LendingPool via\n   * LendingPoolCollateral manager using a DELEGATECALL\n   * This allows to have the events in the generated ABI for LendingPool.\n   * @param collateralAsset The address of the underlying asset used as collateral, to receive as result of the liquidation\n   * @param debtAsset The address of the underlying borrowed asset to be repaid with the liquidation\n   * @param user The address of the borrower getting liquidated\n   * @param debtToCover The debt amount of borrowed `asset` the liquidator wants to cover\n   * @param liquidatedCollateralAmount The amount of collateral received by the liiquidator\n   * @param liquidator The address of the liquidator\n   * @param receiveAToken `true` if the liquidators wants to receive the collateral aTokens, `false` if he wants\n   * to receive the underlying collateral asset directly\n   **/\n  event LiquidationCall(\n    address indexed collateralAsset,\n    address indexed debtAsset,\n    address indexed user,\n    uint256 debtToCover,\n    uint256 liquidatedCollateralAmount,\n    address liquidator,\n    bool receiveAToken\n  );\n\n  /**\n   * @dev Emitted when the state of a reserve is updated. NOTE: This event is actually declared\n   * in the ReserveLogic library and emitted in the updateInterestRates() function. Since the function is internal,\n   * the event will actually be fired by the LendingPool contract. The event is therefore replicated here so it\n   * gets added to the LendingPool ABI\n   * @param reserve The address of the underlying asset of the reserve\n   * @param liquidityRate The new liquidity rate\n   * @param stableBorrowRate The new stable borrow rate\n   * @param variableBorrowRate The new variable borrow rate\n   * @param liquidityIndex The new liquidity index\n   * @param variableBorrowIndex The new variable borrow index\n   **/\n  event ReserveDataUpdated(\n    address indexed reserve,\n    uint256 liquidityRate,\n    uint256 stableBorrowRate,\n    uint256 variableBorrowRate,\n    uint256 liquidityIndex,\n    uint256 variableBorrowIndex\n  );\n\n  /**\n   * @dev Deposits an `amount` of underlying asset into the reserve, receiving in return overlying aTokens.\n   * - E.g. User deposits 100 USDC and gets in return 100 aUSDC\n   * @param asset The address of the underlying asset to deposit\n   * @param amount The amount to be deposited\n   * @param onBehalfOf The address that will receive the aTokens, same as msg.sender if the user\n   *   wants to receive them on his own wallet, or a different address if the beneficiary of aTokens\n   *   is a different wallet\n   * @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   *   0 if the action is executed directly by the user, without any middle-man\n   **/\n  function deposit(\n    address asset,\n    uint256 amount,\n    address onBehalfOf,\n    uint16 referralCode\n  ) external;\n\n  /**\n   * @dev Withdraws an `amount` of underlying asset from the reserve, burning the equivalent aTokens owned\n   * E.g. User has 100 aUSDC, calls withdraw() and receives 100 USDC, burning the 100 aUSDC\n   * @param asset The address of the underlying asset to withdraw\n   * @param amount The underlying amount to be withdrawn\n   *   - Send the value type(uint256).max in order to withdraw the whole aToken balance\n   * @param to Address that will receive the underlying, same as msg.sender if the user\n   *   wants to receive it on his own wallet, or a different address if the beneficiary is a\n   *   different wallet\n   * @return The final amount withdrawn\n   **/\n  function withdraw(\n    address asset,\n    uint256 amount,\n    address to\n  ) external returns (uint256);\n\n  /**\n   * @dev Allows users to borrow a specific `amount` of the reserve underlying asset, provided that the borrower\n   * already deposited enough collateral, or he was given enough allowance by a credit delegator on the\n   * corresponding debt token (StableDebtToken or VariableDebtToken)\n   * - E.g. User borrows 100 USDC passing as `onBehalfOf` his own address, receiving the 100 USDC in his wallet\n   *   and 100 stable/variable debt tokens, depending on the `interestRateMode`\n   * @param asset The address of the underlying asset to borrow\n   * @param amount The amount to be borrowed\n   * @param interestRateMode The interest rate mode at which the user wants to borrow: 1 for Stable, 2 for Variable\n   * @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   *   0 if the action is executed directly by the user, without any middle-man\n   * @param onBehalfOf Address of the user who will receive the debt. Should be the address of the borrower itself\n   * calling the function if he wants to borrow against his own collateral, or the address of the credit delegator\n   * if he has been given credit delegation allowance\n   **/\n  function borrow(\n    address asset,\n    uint256 amount,\n    uint256 interestRateMode,\n    uint16 referralCode,\n    address onBehalfOf\n  ) external;\n\n  /**\n   * @notice Repays a borrowed `amount` on a specific reserve, burning the equivalent debt tokens owned\n   * - E.g. User repays 100 USDC, burning 100 variable/stable debt tokens of the `onBehalfOf` address\n   * @param asset The address of the borrowed underlying asset previously borrowed\n   * @param amount The amount to repay\n   * - Send the value type(uint256).max in order to repay the whole debt for `asset` on the specific `debtMode`\n   * @param rateMode The interest rate mode at of the debt the user wants to repay: 1 for Stable, 2 for Variable\n   * @param onBehalfOf Address of the user who will get his debt reduced/removed. Should be the address of the\n   * user calling the function if he wants to reduce/remove his own debt, or the address of any other\n   * other borrower whose debt should be removed\n   * @return The final amount repaid\n   **/\n  function repay(\n    address asset,\n    uint256 amount,\n    uint256 rateMode,\n    address onBehalfOf\n  ) external returns (uint256);\n\n  /**\n   * @dev Allows a borrower to swap his debt between stable and variable mode, or viceversa\n   * @param asset The address of the underlying asset borrowed\n   * @param rateMode The rate mode that the user wants to swap to\n   **/\n  function swapBorrowRateMode(address asset, uint256 rateMode) external;\n\n  /**\n   * @dev Rebalances the stable interest rate of a user to the current stable rate defined on the reserve.\n   * - Users can be rebalanced if the following conditions are satisfied:\n   *     1. Usage ratio is above 95%\n   *     2. the current deposit APY is below REBALANCE_UP_THRESHOLD * maxVariableBorrowRate, which means that too much has been\n   *        borrowed at a stable rate and depositors are not earning enough\n   * @param asset The address of the underlying asset borrowed\n   * @param user The address of the user to be rebalanced\n   **/\n  function rebalanceStableBorrowRate(address asset, address user) external;\n\n  /**\n   * @dev Allows depositors to enable/disable a specific deposited asset as collateral\n   * @param asset The address of the underlying asset deposited\n   * @param useAsCollateral `true` if the user wants to use the deposit as collateral, `false` otherwise\n   **/\n  function setUserUseReserveAsCollateral(address asset, bool useAsCollateral) external;\n\n  /**\n   * @dev Function to liquidate a non-healthy position collateral-wise, with Health Factor below 1\n   * - The caller (liquidator) covers `debtToCover` amount of debt of the user getting liquidated, and receives\n   *   a proportionally amount of the `collateralAsset` plus a bonus to cover market risk\n   * @param collateralAsset The address of the underlying asset used as collateral, to receive as result of the liquidation\n   * @param debtAsset The address of the underlying borrowed asset to be repaid with the liquidation\n   * @param user The address of the borrower getting liquidated\n   * @param debtToCover The debt amount of borrowed `asset` the liquidator wants to cover\n   * @param receiveAToken `true` if the liquidators wants to receive the collateral aTokens, `false` if he wants\n   * to receive the underlying collateral asset directly\n   **/\n  function liquidationCall(\n    address collateralAsset,\n    address debtAsset,\n    address user,\n    uint256 debtToCover,\n    bool receiveAToken\n  ) external;\n\n  /**\n   * @dev Allows smartcontracts to access the liquidity of the pool within one transaction,\n   * as long as the amount taken plus a fee is returned.\n   * IMPORTANT There are security concerns for developers of flashloan receiver contracts that must be kept into consideration.\n   * For further details please visit https://developers.aave.com\n   * @param receiverAddress The address of the contract receiving the funds, implementing the IFlashLoanReceiver interface\n   * @param assets The addresses of the assets being flash-borrowed\n   * @param amounts The amounts amounts being flash-borrowed\n   * @param modes Types of the debt to open if the flash loan is not returned:\n   *   0 -> Don't open any debt, just revert if funds can't be transferred from the receiver\n   *   1 -> Open debt at stable rate for the value of the amount flash-borrowed to the `onBehalfOf` address\n   *   2 -> Open debt at variable rate for the value of the amount flash-borrowed to the `onBehalfOf` address\n   * @param onBehalfOf The address  that will receive the debt in the case of using on `modes` 1 or 2\n   * @param params Variadic packed params to pass to the receiver as extra information\n   * @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   *   0 if the action is executed directly by the user, without any middle-man\n   **/\n  function flashLoan(\n    address receiverAddress,\n    address[] calldata assets,\n    uint256[] calldata amounts,\n    uint256[] calldata modes,\n    address onBehalfOf,\n    bytes calldata params,\n    uint16 referralCode\n  ) external;\n\n  /**\n   * @dev Returns the user account data across all the reserves\n   * @param user The address of the user\n   * @return totalCollateralETH the total collateral in ETH of the user\n   * @return totalDebtETH the total debt in ETH of the user\n   * @return availableBorrowsETH the borrowing power left of the user\n   * @return currentLiquidationThreshold the liquidation threshold of the user\n   * @return ltv the loan to value of the user\n   * @return healthFactor the current health factor of the user\n   **/\n  function getUserAccountData(address user)\n    external\n    view\n    returns (\n      uint256 totalCollateralETH,\n      uint256 totalDebtETH,\n      uint256 availableBorrowsETH,\n      uint256 currentLiquidationThreshold,\n      uint256 ltv,\n      uint256 healthFactor\n    );\n\n  function initReserve(\n    address reserve,\n    address aTokenAddress,\n    address stableDebtAddress,\n    address variableDebtAddress,\n    address interestRateStrategyAddress\n  ) external;\n\n  function setReserveInterestRateStrategyAddress(address reserve, address rateStrategyAddress)\n    external;\n\n  function setConfiguration(address reserve, uint256 configuration) external;\n\n  /**\n   * @dev Returns the configuration of the reserve\n   * @param asset The address of the underlying asset of the reserve\n   * @return The configuration of the reserve\n   **/\n  function getConfiguration(address asset)\n    external\n    view\n    returns (DataTypes.ReserveConfigurationMap memory);\n\n  /**\n   * @dev Returns the configuration of the user across all the reserves\n   * @param user The user address\n   * @return The configuration of the user\n   **/\n  function getUserConfiguration(address user)\n    external\n    view\n    returns (DataTypes.UserConfigurationMap memory);\n\n  /**\n   * @dev Returns the normalized income normalized income of the reserve\n   * @param asset The address of the underlying asset of the reserve\n   * @return The reserve's normalized income\n   */\n  function getReserveNormalizedIncome(address asset) external view returns (uint256);\n\n  /**\n   * @dev Returns the normalized variable debt per unit of asset\n   * @param asset The address of the underlying asset of the reserve\n   * @return The reserve normalized variable debt\n   */\n  function getReserveNormalizedVariableDebt(address asset) external view returns (uint256);\n\n  /**\n   * @dev Returns the state and configuration of the reserve\n   * @param asset The address of the underlying asset of the reserve\n   * @return The state of the reserve\n   **/\n  function getReserveData(address asset) external view returns (DataTypes.ReserveData memory);\n\n  function finalizeTransfer(\n    address asset,\n    address from,\n    address to,\n    uint256 amount,\n    uint256 balanceFromAfter,\n    uint256 balanceToBefore\n  ) external;\n\n  function getReservesList() external view returns (address[] memory);\n\n  function getAddressesProvider() external view returns (ILendingPoolAddressesProvider);\n\n  function setPause(bool val) external;\n\n  function paused() external view returns (bool);\n}\n"
      },
      "contracts/adapters/UniswapRepayAdapter.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\n\nimport {BaseUniswapAdapter} from './BaseUniswapAdapter.sol';\nimport {ILendingPoolAddressesProvider} from '../interfaces/ILendingPoolAddressesProvider.sol';\nimport {IUniswapV2Router02} from '../interfaces/IUniswapV2Router02.sol';\nimport {IERC20} from '../dependencies/openzeppelin/contracts/IERC20.sol';\nimport {DataTypes} from '../protocol/libraries/types/DataTypes.sol';\n\n/**\n * @title UniswapRepayAdapter\n * @notice Uniswap V2 Adapter to perform a repay of a debt with collateral.\n * @author Aave\n **/\ncontract UniswapRepayAdapter is BaseUniswapAdapter {\n  struct RepayParams {\n    address collateralAsset;\n    uint256 collateralAmount;\n    uint256 rateMode;\n    PermitSignature permitSignature;\n    bool useEthPath;\n  }\n\n  constructor(\n    ILendingPoolAddressesProvider addressesProvider,\n    IUniswapV2Router02 uniswapRouter,\n    address wethAddress\n  ) public BaseUniswapAdapter(addressesProvider, uniswapRouter, wethAddress) {}\n\n  /**\n   * @dev Uses the received funds from the flash loan to repay a debt on the protocol on behalf of the user. Then pulls\n   * the collateral from the user and swaps it to the debt asset to repay the flash loan.\n   * The user should give this contract allowance to pull the ATokens in order to withdraw the underlying asset, swap it\n   * and repay the flash loan.\n   * Supports only one asset on the flash loan.\n   * @param assets Address of debt asset\n   * @param amounts Amount of the debt to be repaid\n   * @param premiums Fee of the flash loan\n   * @param initiator Address of the user\n   * @param params Additional variadic field to include extra params. Expected parameters:\n   *   address collateralAsset Address of the reserve to be swapped\n   *   uint256 collateralAmount Amount of reserve to be swapped\n   *   uint256 rateMode Rate modes of the debt to be repaid\n   *   uint256 permitAmount Amount for the permit signature\n   *   uint256 deadline Deadline for the permit signature\n   *   uint8 v V param for the permit signature\n   *   bytes32 r R param for the permit signature\n   *   bytes32 s S param for the permit signature\n   */\n  function executeOperation(\n    address[] calldata assets,\n    uint256[] calldata amounts,\n    uint256[] calldata premiums,\n    address initiator,\n    bytes calldata params\n  ) external override returns (bool) {\n    require(msg.sender == address(LENDING_POOL), 'CALLER_MUST_BE_LENDING_POOL');\n\n    RepayParams memory decodedParams = _decodeParams(params);\n\n    _swapAndRepay(\n      decodedParams.collateralAsset,\n      assets[0],\n      amounts[0],\n      decodedParams.collateralAmount,\n      decodedParams.rateMode,\n      initiator,\n      premiums[0],\n      decodedParams.permitSignature,\n      decodedParams.useEthPath\n    );\n\n    return true;\n  }\n\n  /**\n   * @dev Swaps the user collateral for the debt asset and then repay the debt on the protocol on behalf of the user\n   * without using flash loans. This method can be used when the temporary transfer of the collateral asset to this\n   * contract does not affect the user position.\n   * The user should give this contract allowance to pull the ATokens in order to withdraw the underlying asset\n   * @param collateralAsset Address of asset to be swapped\n   * @param debtAsset Address of debt asset\n   * @param collateralAmount Amount of the collateral to be swapped\n   * @param debtRepayAmount Amount of the debt to be repaid\n   * @param debtRateMode Rate mode of the debt to be repaid\n   * @param permitSignature struct containing the permit signature\n   * @param useEthPath struct containing the permit signature\n\n   */\n  function swapAndRepay(\n    address collateralAsset,\n    address debtAsset,\n    uint256 collateralAmount,\n    uint256 debtRepayAmount,\n    uint256 debtRateMode,\n    PermitSignature calldata permitSignature,\n    bool useEthPath\n  ) external {\n    DataTypes.ReserveData memory collateralReserveData = _getReserveData(collateralAsset);\n    DataTypes.ReserveData memory debtReserveData = _getReserveData(debtAsset);\n\n    address debtToken =\n      DataTypes.InterestRateMode(debtRateMode) == DataTypes.InterestRateMode.STABLE\n        ? debtReserveData.stableDebtTokenAddress\n        : debtReserveData.variableDebtTokenAddress;\n\n    uint256 currentDebt = IERC20(debtToken).balanceOf(msg.sender);\n    uint256 amountToRepay = debtRepayAmount <= currentDebt ? debtRepayAmount : currentDebt;\n\n    if (collateralAsset != debtAsset) {\n      uint256 maxCollateralToSwap = collateralAmount;\n      if (amountToRepay < debtRepayAmount) {\n        maxCollateralToSwap = maxCollateralToSwap.mul(amountToRepay).div(debtRepayAmount);\n      }\n\n      // Get exact collateral needed for the swap to avoid leftovers\n      uint256[] memory amounts =\n        _getAmountsIn(collateralAsset, debtAsset, amountToRepay, useEthPath);\n      require(amounts[0] <= maxCollateralToSwap, 'slippage too high');\n\n      // Pull aTokens from user\n      _pullAToken(\n        collateralAsset,\n        collateralReserveData.aTokenAddress,\n        msg.sender,\n        amounts[0],\n        permitSignature\n      );\n\n      // Swap collateral for debt asset\n      _swapTokensForExactTokens(collateralAsset, debtAsset, amounts[0], amountToRepay, useEthPath);\n    } else {\n      // Pull aTokens from user\n      _pullAToken(\n        collateralAsset,\n        collateralReserveData.aTokenAddress,\n        msg.sender,\n        amountToRepay,\n        permitSignature\n      );\n    }\n\n    // Repay debt. Approves 0 first to comply with tokens that implement the anti frontrunning approval fix\n    IERC20(debtAsset).safeApprove(address(LENDING_POOL), 0);\n    IERC20(debtAsset).safeApprove(address(LENDING_POOL), amountToRepay);\n    LENDING_POOL.repay(debtAsset, amountToRepay, debtRateMode, msg.sender);\n  }\n\n  /**\n   * @dev Perform the repay of the debt, pulls the initiator collateral and swaps to repay the flash loan\n   *\n   * @param collateralAsset Address of token to be swapped\n   * @param debtAsset Address of debt token to be received from the swap\n   * @param amount Amount of the debt to be repaid\n   * @param collateralAmount Amount of the reserve to be swapped\n   * @param rateMode Rate mode of the debt to be repaid\n   * @param initiator Address of the user\n   * @param premium Fee of the flash loan\n   * @param permitSignature struct containing the permit signature\n   */\n  function _swapAndRepay(\n    address collateralAsset,\n    address debtAsset,\n    uint256 amount,\n    uint256 collateralAmount,\n    uint256 rateMode,\n    address initiator,\n    uint256 premium,\n    PermitSignature memory permitSignature,\n    bool useEthPath\n  ) internal {\n    DataTypes.ReserveData memory collateralReserveData = _getReserveData(collateralAsset);\n\n    // Repay debt. Approves for 0 first to comply with tokens that implement the anti frontrunning approval fix.\n    IERC20(debtAsset).safeApprove(address(LENDING_POOL), 0);\n    IERC20(debtAsset).safeApprove(address(LENDING_POOL), amount);\n    uint256 repaidAmount = IERC20(debtAsset).balanceOf(address(this));\n    LENDING_POOL.repay(debtAsset, amount, rateMode, initiator);\n    repaidAmount = repaidAmount.sub(IERC20(debtAsset).balanceOf(address(this)));\n\n    if (collateralAsset != debtAsset) {\n      uint256 maxCollateralToSwap = collateralAmount;\n      if (repaidAmount < amount) {\n        maxCollateralToSwap = maxCollateralToSwap.mul(repaidAmount).div(amount);\n      }\n\n      uint256 neededForFlashLoanDebt = repaidAmount.add(premium);\n      uint256[] memory amounts =\n        _getAmountsIn(collateralAsset, debtAsset, neededForFlashLoanDebt, useEthPath);\n      require(amounts[0] <= maxCollateralToSwap, 'slippage too high');\n\n      // Pull aTokens from user\n      _pullAToken(\n        collateralAsset,\n        collateralReserveData.aTokenAddress,\n        initiator,\n        amounts[0],\n        permitSignature\n      );\n\n      // Swap collateral asset to the debt asset\n      _swapTokensForExactTokens(\n        collateralAsset,\n        debtAsset,\n        amounts[0],\n        neededForFlashLoanDebt,\n        useEthPath\n      );\n    } else {\n      // Pull aTokens from user\n      _pullAToken(\n        collateralAsset,\n        collateralReserveData.aTokenAddress,\n        initiator,\n        repaidAmount.add(premium),\n        permitSignature\n      );\n    }\n\n    // Repay flashloan. Approves for 0 first to comply with tokens that implement the anti frontrunning approval fix.\n    IERC20(debtAsset).safeApprove(address(LENDING_POOL), 0);\n    IERC20(debtAsset).safeApprove(address(LENDING_POOL), amount.add(premium));\n  }\n\n  /**\n   * @dev Decodes debt information encoded in the flash loan params\n   * @param params Additional variadic field to include extra params. Expected parameters:\n   *   address collateralAsset Address of the reserve to be swapped\n   *   uint256 collateralAmount Amount of reserve to be swapped\n   *   uint256 rateMode Rate modes of the debt to be repaid\n   *   uint256 permitAmount Amount for the permit signature\n   *   uint256 deadline Deadline for the permit signature\n   *   uint8 v V param for the permit signature\n   *   bytes32 r R param for the permit signature\n   *   bytes32 s S param for the permit signature\n   *   bool useEthPath use WETH path route\n   * @return RepayParams struct containing decoded params\n   */\n  function _decodeParams(bytes memory params) internal pure returns (RepayParams memory) {\n    (\n      address collateralAsset,\n      uint256 collateralAmount,\n      uint256 rateMode,\n      uint256 permitAmount,\n      uint256 deadline,\n      uint8 v,\n      bytes32 r,\n      bytes32 s,\n      bool useEthPath\n    ) =\n      abi.decode(\n        params,\n        (address, uint256, uint256, uint256, uint256, uint8, bytes32, bytes32, bool)\n      );\n\n    return\n      RepayParams(\n        collateralAsset,\n        collateralAmount,\n        rateMode,\n        PermitSignature(permitAmount, deadline, v, r, s),\n        useEthPath\n      );\n  }\n}\n"
      },
      "contracts/protocol/lendingpool/LendingPoolCollateralManager.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {SafeMath} from '../../dependencies/openzeppelin/contracts//SafeMath.sol';\nimport {IERC20} from '../../dependencies/openzeppelin/contracts//IERC20.sol';\nimport {IAToken} from '../../interfaces/IAToken.sol';\nimport {IStableDebtToken} from '../../interfaces/IStableDebtToken.sol';\nimport {IVariableDebtToken} from '../../interfaces/IVariableDebtToken.sol';\nimport {IPriceOracleGetter} from '../../interfaces/IPriceOracleGetter.sol';\nimport {ILendingPoolCollateralManager} from '../../interfaces/ILendingPoolCollateralManager.sol';\nimport {VersionedInitializable} from '../libraries/aave-upgradeability/VersionedInitializable.sol';\nimport {GenericLogic} from '../libraries/logic/GenericLogic.sol';\nimport {Helpers} from '../libraries/helpers/Helpers.sol';\nimport {WadRayMath} from '../libraries/math/WadRayMath.sol';\nimport {PercentageMath} from '../libraries/math/PercentageMath.sol';\nimport {SafeERC20} from '../../dependencies/openzeppelin/contracts/SafeERC20.sol';\nimport {Errors} from '../libraries/helpers/Errors.sol';\nimport {ValidationLogic} from '../libraries/logic/ValidationLogic.sol';\nimport {DataTypes} from '../libraries/types/DataTypes.sol';\nimport {LendingPoolStorage} from './LendingPoolStorage.sol';\n\n/**\n * @title LendingPoolCollateralManager contract\n * @author Aave\n * @dev Implements actions involving management of collateral in the protocol, the main one being the liquidations\n * IMPORTANT This contract will run always via DELEGATECALL, through the LendingPool, so the chain of inheritance\n * is the same as the LendingPool, to have compatible storage layouts\n **/\ncontract LendingPoolCollateralManager is\n  ILendingPoolCollateralManager,\n  VersionedInitializable,\n  LendingPoolStorage\n{\n  using SafeERC20 for IERC20;\n  using SafeMath for uint256;\n  using WadRayMath for uint256;\n  using PercentageMath for uint256;\n\n  uint256 internal constant LIQUIDATION_CLOSE_FACTOR_PERCENT = 5000;\n\n  struct LiquidationCallLocalVars {\n    uint256 userCollateralBalance;\n    uint256 userStableDebt;\n    uint256 userVariableDebt;\n    uint256 maxLiquidatableDebt;\n    uint256 actualDebtToLiquidate;\n    uint256 liquidationRatio;\n    uint256 maxAmountCollateralToLiquidate;\n    uint256 userStableRate;\n    uint256 maxCollateralToLiquidate;\n    uint256 debtAmountNeeded;\n    uint256 healthFactor;\n    uint256 liquidatorPreviousATokenBalance;\n    IAToken collateralAtoken;\n    bool isCollateralEnabled;\n    DataTypes.InterestRateMode borrowRateMode;\n    uint256 errorCode;\n    string errorMsg;\n  }\n\n  /**\n   * @dev As thIS contract extends the VersionedInitializable contract to match the state\n   * of the LendingPool contract, the getRevision() function is needed, but the value is not\n   * important, as the initialize() function will never be called here\n   */\n  function getRevision() internal pure override returns (uint256) {\n    return 0;\n  }\n\n  /**\n   * @dev Function to liquidate a position if its Health Factor drops below 1\n   * - The caller (liquidator) covers `debtToCover` amount of debt of the user getting liquidated, and receives\n   *   a proportionally amount of the `collateralAsset` plus a bonus to cover market risk\n   * @param collateralAsset The address of the underlying asset used as collateral, to receive as result of the liquidation\n   * @param debtAsset The address of the underlying borrowed asset to be repaid with the liquidation\n   * @param user The address of the borrower getting liquidated\n   * @param debtToCover The debt amount of borrowed `asset` the liquidator wants to cover\n   * @param receiveAToken `true` if the liquidators wants to receive the collateral aTokens, `false` if he wants\n   * to receive the underlying collateral asset directly\n   **/\n  function liquidationCall(\n    address collateralAsset,\n    address debtAsset,\n    address user,\n    uint256 debtToCover,\n    bool receiveAToken\n  ) external override returns (uint256, string memory) {\n    DataTypes.ReserveData storage collateralReserve = _reserves[collateralAsset];\n    DataTypes.ReserveData storage debtReserve = _reserves[debtAsset];\n    DataTypes.UserConfigurationMap storage userConfig = _usersConfig[user];\n\n    LiquidationCallLocalVars memory vars;\n\n    (, , , , vars.healthFactor) = GenericLogic.calculateUserAccountData(\n      user,\n      _reserves,\n      userConfig,\n      _reservesList,\n      _reservesCount,\n      _addressesProvider.getPriceOracle()\n    );\n\n    (vars.userStableDebt, vars.userVariableDebt) = Helpers.getUserCurrentDebt(user, debtReserve);\n\n    (vars.errorCode, vars.errorMsg) = ValidationLogic.validateLiquidationCall(\n      collateralReserve,\n      debtReserve,\n      userConfig,\n      vars.healthFactor,\n      vars.userStableDebt,\n      vars.userVariableDebt\n    );\n\n    if (Errors.CollateralManagerErrors(vars.errorCode) != Errors.CollateralManagerErrors.NO_ERROR) {\n      return (vars.errorCode, vars.errorMsg);\n    }\n\n    vars.collateralAtoken = IAToken(collateralReserve.aTokenAddress);\n\n    vars.userCollateralBalance = vars.collateralAtoken.balanceOf(user);\n\n    vars.maxLiquidatableDebt = vars.userStableDebt.add(vars.userVariableDebt).percentMul(\n      LIQUIDATION_CLOSE_FACTOR_PERCENT\n    );\n\n    vars.actualDebtToLiquidate = debtToCover > vars.maxLiquidatableDebt\n      ? vars.maxLiquidatableDebt\n      : debtToCover;\n\n    (\n      vars.maxCollateralToLiquidate,\n      vars.debtAmountNeeded\n    ) = _calculateAvailableCollateralToLiquidate(\n      collateralReserve,\n      debtReserve,\n      collateralAsset,\n      debtAsset,\n      vars.actualDebtToLiquidate,\n      vars.userCollateralBalance\n    );\n\n    // If debtAmountNeeded < actualDebtToLiquidate, there isn't enough\n    // collateral to cover the actual amount that is being liquidated, hence we liquidate\n    // a smaller amount\n\n    if (vars.debtAmountNeeded < vars.actualDebtToLiquidate) {\n      vars.actualDebtToLiquidate = vars.debtAmountNeeded;\n    }\n\n    // If the liquidator reclaims the underlying asset, we make sure there is enough available liquidity in the\n    // collateral reserve\n    if (!receiveAToken) {\n      uint256 currentAvailableCollateral =\n        IERC20(collateralAsset).balanceOf(address(vars.collateralAtoken));\n      if (currentAvailableCollateral < vars.maxCollateralToLiquidate) {\n        return (\n          uint256(Errors.CollateralManagerErrors.NOT_ENOUGH_LIQUIDITY),\n          Errors.LPCM_NOT_ENOUGH_LIQUIDITY_TO_LIQUIDATE\n        );\n      }\n    }\n\n    debtReserve.updateState();\n\n    if (vars.userVariableDebt >= vars.actualDebtToLiquidate) {\n      IVariableDebtToken(debtReserve.variableDebtTokenAddress).burn(\n        user,\n        vars.actualDebtToLiquidate,\n        debtReserve.variableBorrowIndex\n      );\n    } else {\n      // If the user doesn't have variable debt, no need to try to burn variable debt tokens\n      if (vars.userVariableDebt > 0) {\n        IVariableDebtToken(debtReserve.variableDebtTokenAddress).burn(\n          user,\n          vars.userVariableDebt,\n          debtReserve.variableBorrowIndex\n        );\n      }\n      IStableDebtToken(debtReserve.stableDebtTokenAddress).burn(\n        user,\n        vars.actualDebtToLiquidate.sub(vars.userVariableDebt)\n      );\n    }\n\n    debtReserve.updateInterestRates(\n      debtAsset,\n      debtReserve.aTokenAddress,\n      vars.actualDebtToLiquidate,\n      0\n    );\n\n    if (receiveAToken) {\n      vars.liquidatorPreviousATokenBalance = IERC20(vars.collateralAtoken).balanceOf(msg.sender);\n      vars.collateralAtoken.transferOnLiquidation(user, msg.sender, vars.maxCollateralToLiquidate);\n\n      if (vars.liquidatorPreviousATokenBalance == 0) {\n        DataTypes.UserConfigurationMap storage liquidatorConfig = _usersConfig[msg.sender];\n        liquidatorConfig.setUsingAsCollateral(collateralReserve.id, true);\n        emit ReserveUsedAsCollateralEnabled(collateralAsset, msg.sender);\n      }\n    } else {\n      collateralReserve.updateState();\n      collateralReserve.updateInterestRates(\n        collateralAsset,\n        address(vars.collateralAtoken),\n        0,\n        vars.maxCollateralToLiquidate\n      );\n\n      // Burn the equivalent amount of aToken, sending the underlying to the liquidator\n      vars.collateralAtoken.burn(\n        user,\n        msg.sender,\n        vars.maxCollateralToLiquidate,\n        collateralReserve.liquidityIndex\n      );\n    }\n\n    // If the collateral being liquidated is equal to the user balance,\n    // we set the currency as not being used as collateral anymore\n    if (vars.maxCollateralToLiquidate == vars.userCollateralBalance) {\n      userConfig.setUsingAsCollateral(collateralReserve.id, false);\n      emit ReserveUsedAsCollateralDisabled(collateralAsset, user);\n    }\n\n    // Transfers the debt asset being repaid to the aToken, where the liquidity is kept\n    IERC20(debtAsset).safeTransferFrom(\n      msg.sender,\n      debtReserve.aTokenAddress,\n      vars.actualDebtToLiquidate\n    );\n\n    emit LiquidationCall(\n      collateralAsset,\n      debtAsset,\n      user,\n      vars.actualDebtToLiquidate,\n      vars.maxCollateralToLiquidate,\n      msg.sender,\n      receiveAToken\n    );\n\n    return (uint256(Errors.CollateralManagerErrors.NO_ERROR), Errors.LPCM_NO_ERRORS);\n  }\n\n  struct AvailableCollateralToLiquidateLocalVars {\n    uint256 userCompoundedBorrowBalance;\n    uint256 liquidationBonus;\n    uint256 collateralPrice;\n    uint256 debtAssetPrice;\n    uint256 maxAmountCollateralToLiquidate;\n    uint256 debtAssetDecimals;\n    uint256 collateralDecimals;\n  }\n\n  /**\n   * @dev Calculates how much of a specific collateral can be liquidated, given\n   * a certain amount of debt asset.\n   * - This function needs to be called after all the checks to validate the liquidation have been performed,\n   *   otherwise it might fail.\n   * @param collateralReserve The data of the collateral reserve\n   * @param debtReserve The data of the debt reserve\n   * @param collateralAsset The address of the underlying asset used as collateral, to receive as result of the liquidation\n   * @param debtAsset The address of the underlying borrowed asset to be repaid with the liquidation\n   * @param debtToCover The debt amount of borrowed `asset` the liquidator wants to cover\n   * @param userCollateralBalance The collateral balance for the specific `collateralAsset` of the user being liquidated\n   * @return collateralAmount: The maximum amount that is possible to liquidate given all the liquidation constraints\n   *                           (user balance, close factor)\n   *         debtAmountNeeded: The amount to repay with the liquidation\n   **/\n  function _calculateAvailableCollateralToLiquidate(\n    DataTypes.ReserveData storage collateralReserve,\n    DataTypes.ReserveData storage debtReserve,\n    address collateralAsset,\n    address debtAsset,\n    uint256 debtToCover,\n    uint256 userCollateralBalance\n  ) internal view returns (uint256, uint256) {\n    uint256 collateralAmount = 0;\n    uint256 debtAmountNeeded = 0;\n    IPriceOracleGetter oracle = IPriceOracleGetter(_addressesProvider.getPriceOracle());\n\n    AvailableCollateralToLiquidateLocalVars memory vars;\n\n    vars.collateralPrice = oracle.getAssetPrice(collateralAsset);\n    vars.debtAssetPrice = oracle.getAssetPrice(debtAsset);\n\n    (, , vars.liquidationBonus, vars.collateralDecimals, ) = collateralReserve\n      .configuration\n      .getParams();\n    vars.debtAssetDecimals = debtReserve.configuration.getDecimals();\n\n    // This is the maximum possible amount of the selected collateral that can be liquidated, given the\n    // max amount of liquidatable debt\n    vars.maxAmountCollateralToLiquidate = vars\n      .debtAssetPrice\n      .mul(debtToCover)\n      .mul(10**vars.collateralDecimals)\n      .percentMul(vars.liquidationBonus)\n      .div(vars.collateralPrice.mul(10**vars.debtAssetDecimals));\n\n    if (vars.maxAmountCollateralToLiquidate > userCollateralBalance) {\n      collateralAmount = userCollateralBalance;\n      debtAmountNeeded = vars\n        .collateralPrice\n        .mul(collateralAmount)\n        .mul(10**vars.debtAssetDecimals)\n        .div(vars.debtAssetPrice.mul(10**vars.collateralDecimals))\n        .percentDiv(vars.liquidationBonus);\n    } else {\n      collateralAmount = vars.maxAmountCollateralToLiquidate;\n      debtAmountNeeded = debtToCover;\n    }\n    return (collateralAmount, debtAmountNeeded);\n  }\n}\n"
      },
      "contracts/interfaces/IAToken.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {IERC20} from '../dependencies/openzeppelin/contracts/IERC20.sol';\nimport {IScaledBalanceToken} from './IScaledBalanceToken.sol';\nimport {IInitializableAToken} from './IInitializableAToken.sol';\nimport {IAaveIncentivesController} from './IAaveIncentivesController.sol';\n\ninterface IAToken is IERC20, IScaledBalanceToken, IInitializableAToken {\n  /**\n   * @dev Emitted after the mint action\n   * @param from The address performing the mint\n   * @param value The amount being\n   * @param index The new liquidity index of the reserve\n   **/\n  event Mint(address indexed from, uint256 value, uint256 index);\n\n  /**\n   * @dev Mints `amount` aTokens to `user`\n   * @param user The address receiving the minted tokens\n   * @param amount The amount of tokens getting minted\n   * @param index The new liquidity index of the reserve\n   * @return `true` if the the previous balance of the user was 0\n   */\n  function mint(\n    address user,\n    uint256 amount,\n    uint256 index\n  ) external returns (bool);\n\n  /**\n   * @dev Emitted after aTokens are burned\n   * @param from The owner of the aTokens, getting them burned\n   * @param target The address that will receive the underlying\n   * @param value The amount being burned\n   * @param index The new liquidity index of the reserve\n   **/\n  event Burn(address indexed from, address indexed target, uint256 value, uint256 index);\n\n  /**\n   * @dev Emitted during the transfer action\n   * @param from The user whose tokens are being transferred\n   * @param to The recipient\n   * @param value The amount being transferred\n   * @param index The new liquidity index of the reserve\n   **/\n  event BalanceTransfer(address indexed from, address indexed to, uint256 value, uint256 index);\n\n  /**\n   * @dev Burns aTokens from `user` and sends the equivalent amount of underlying to `receiverOfUnderlying`\n   * @param user The owner of the aTokens, getting them burned\n   * @param receiverOfUnderlying The address that will receive the underlying\n   * @param amount The amount being burned\n   * @param index The new liquidity index of the reserve\n   **/\n  function burn(\n    address user,\n    address receiverOfUnderlying,\n    uint256 amount,\n    uint256 index\n  ) external;\n\n  /**\n   * @dev Mints aTokens to the reserve treasury\n   * @param amount The amount of tokens getting minted\n   * @param index The new liquidity index of the reserve\n   */\n  function mintToTreasury(uint256 amount, uint256 index) external;\n\n  /**\n   * @dev Transfers aTokens in the event of a borrow being liquidated, in case the liquidators reclaims the aToken\n   * @param from The address getting liquidated, current owner of the aTokens\n   * @param to The recipient\n   * @param value The amount of tokens getting transferred\n   **/\n  function transferOnLiquidation(\n    address from,\n    address to,\n    uint256 value\n  ) external;\n\n  /**\n   * @dev Transfers the underlying asset to `target`. Used by the LendingPool to transfer\n   * assets in borrow(), withdraw() and flashLoan()\n   * @param user The recipient of the underlying\n   * @param amount The amount getting transferred\n   * @return The amount transferred\n   **/\n  function transferUnderlyingTo(address user, uint256 amount) external returns (uint256);\n\n  /**\n   * @dev Invoked to execute actions on the aToken side after a repayment.\n   * @param user The user executing the repayment\n   * @param amount The amount getting repaid\n   **/\n  function handleRepayment(address user, uint256 amount) external;\n\n  /**\n   * @dev Returns the address of the incentives controller contract\n   **/\n  function getIncentivesController() external view returns (IAaveIncentivesController);\n\n  /**\n   * @dev Returns the address of the underlying asset of this aToken (E.g. WETH for aWETH)\n   **/\n  function UNDERLYING_ASSET_ADDRESS() external view returns (address);\n}\n"
      },
      "contracts/interfaces/IStableDebtToken.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {IInitializableDebtToken} from './IInitializableDebtToken.sol';\nimport {IAaveIncentivesController} from './IAaveIncentivesController.sol';\n\n/**\n * @title IStableDebtToken\n * @notice Defines the interface for the stable debt token\n * @dev It does not inherit from IERC20 to save in code size\n * @author Aave\n **/\n\ninterface IStableDebtToken is IInitializableDebtToken {\n  /**\n   * @dev Emitted when new stable debt is minted\n   * @param user The address of the user who triggered the minting\n   * @param onBehalfOf The recipient of stable debt tokens\n   * @param amount The amount minted\n   * @param currentBalance The current balance of the user\n   * @param balanceIncrease The increase in balance since the last action of the user\n   * @param newRate The rate of the debt after the minting\n   * @param avgStableRate The new average stable rate after the minting\n   * @param newTotalSupply The new total supply of the stable debt token after the action\n   **/\n  event Mint(\n    address indexed user,\n    address indexed onBehalfOf,\n    uint256 amount,\n    uint256 currentBalance,\n    uint256 balanceIncrease,\n    uint256 newRate,\n    uint256 avgStableRate,\n    uint256 newTotalSupply\n  );\n\n  /**\n   * @dev Emitted when new stable debt is burned\n   * @param user The address of the user\n   * @param amount The amount being burned\n   * @param currentBalance The current balance of the user\n   * @param balanceIncrease The the increase in balance since the last action of the user\n   * @param avgStableRate The new average stable rate after the burning\n   * @param newTotalSupply The new total supply of the stable debt token after the action\n   **/\n  event Burn(\n    address indexed user,\n    uint256 amount,\n    uint256 currentBalance,\n    uint256 balanceIncrease,\n    uint256 avgStableRate,\n    uint256 newTotalSupply\n  );\n\n  /**\n   * @dev Mints debt token to the `onBehalfOf` address.\n   * - The resulting rate is the weighted average between the rate of the new debt\n   * and the rate of the previous debt\n   * @param user The address receiving the borrowed underlying, being the delegatee in case\n   * of credit delegate, or same as `onBehalfOf` otherwise\n   * @param onBehalfOf The address receiving the debt tokens\n   * @param amount The amount of debt tokens to mint\n   * @param rate The rate of the debt being minted\n   **/\n  function mint(\n    address user,\n    address onBehalfOf,\n    uint256 amount,\n    uint256 rate\n  ) external returns (bool);\n\n  /**\n   * @dev Burns debt of `user`\n   * - The resulting rate is the weighted average between the rate of the new debt\n   * and the rate of the previous debt\n   * @param user The address of the user getting his debt burned\n   * @param amount The amount of debt tokens getting burned\n   **/\n  function burn(address user, uint256 amount) external;\n\n  /**\n   * @dev Returns the average rate of all the stable rate loans.\n   * @return The average stable rate\n   **/\n  function getAverageStableRate() external view returns (uint256);\n\n  /**\n   * @dev Returns the stable rate of the user debt\n   * @return The stable rate of the user\n   **/\n  function getUserStableRate(address user) external view returns (uint256);\n\n  /**\n   * @dev Returns the timestamp of the last update of the user\n   * @return The timestamp\n   **/\n  function getUserLastUpdated(address user) external view returns (uint40);\n\n  /**\n   * @dev Returns the principal, the total supply and the average stable rate\n   **/\n  function getSupplyData()\n    external\n    view\n    returns (\n      uint256,\n      uint256,\n      uint256,\n      uint40\n    );\n\n  /**\n   * @dev Returns the timestamp of the last update of the total supply\n   * @return The timestamp\n   **/\n  function getTotalSupplyLastUpdated() external view returns (uint40);\n\n  /**\n   * @dev Returns the total supply and the average stable rate\n   **/\n  function getTotalSupplyAndAvgRate() external view returns (uint256, uint256);\n\n  /**\n   * @dev Returns the principal debt balance of the user\n   * @return The debt balance of the user since the last burn/mint action\n   **/\n  function principalBalanceOf(address user) external view returns (uint256);\n\n  /**\n   * @dev Returns the address of the incentives controller contract\n   **/\n  function getIncentivesController() external view returns (IAaveIncentivesController);\n}\n"
      },
      "contracts/interfaces/IVariableDebtToken.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {IScaledBalanceToken} from './IScaledBalanceToken.sol';\nimport {IInitializableDebtToken} from './IInitializableDebtToken.sol';\nimport {IAaveIncentivesController} from './IAaveIncentivesController.sol';\n\n/**\n * @title IVariableDebtToken\n * @author Aave\n * @notice Defines the basic interface for a variable debt token.\n **/\ninterface IVariableDebtToken is IScaledBalanceToken, IInitializableDebtToken {\n  /**\n   * @dev Emitted after the mint action\n   * @param from The address performing the mint\n   * @param onBehalfOf The address of the user on which behalf minting has been performed\n   * @param value The amount to be minted\n   * @param index The last index of the reserve\n   **/\n  event Mint(address indexed from, address indexed onBehalfOf, uint256 value, uint256 index);\n\n  /**\n   * @dev Mints debt token to the `onBehalfOf` address\n   * @param user The address receiving the borrowed underlying, being the delegatee in case\n   * of credit delegate, or same as `onBehalfOf` otherwise\n   * @param onBehalfOf The address receiving the debt tokens\n   * @param amount The amount of debt being minted\n   * @param index The variable debt index of the reserve\n   * @return `true` if the the previous balance of the user is 0\n   **/\n  function mint(\n    address user,\n    address onBehalfOf,\n    uint256 amount,\n    uint256 index\n  ) external returns (bool);\n\n  /**\n   * @dev Emitted when variable debt is burnt\n   * @param user The user which debt has been burned\n   * @param amount The amount of debt being burned\n   * @param index The index of the user\n   **/\n  event Burn(address indexed user, uint256 amount, uint256 index);\n\n  /**\n   * @dev Burns user variable debt\n   * @param user The user which debt is burnt\n   * @param index The variable debt index of the reserve\n   **/\n  function burn(\n    address user,\n    uint256 amount,\n    uint256 index\n  ) external;\n\n  /**\n   * @dev Returns the address of the incentives controller contract\n   **/\n  function getIncentivesController() external view returns (IAaveIncentivesController);\n}\n"
      },
      "contracts/interfaces/ILendingPoolCollateralManager.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\n/**\n * @title ILendingPoolCollateralManager\n * @author Aave\n * @notice Defines the actions involving management of collateral in the protocol.\n **/\ninterface ILendingPoolCollateralManager {\n  /**\n   * @dev Emitted when a borrower is liquidated\n   * @param collateral The address of the collateral being liquidated\n   * @param principal The address of the reserve\n   * @param user The address of the user being liquidated\n   * @param debtToCover The total amount liquidated\n   * @param liquidatedCollateralAmount The amount of collateral being liquidated\n   * @param liquidator The address of the liquidator\n   * @param receiveAToken true if the liquidator wants to receive aTokens, false otherwise\n   **/\n  event LiquidationCall(\n    address indexed collateral,\n    address indexed principal,\n    address indexed user,\n    uint256 debtToCover,\n    uint256 liquidatedCollateralAmount,\n    address liquidator,\n    bool receiveAToken\n  );\n\n  /**\n   * @dev Emitted when a reserve is disabled as collateral for an user\n   * @param reserve The address of the reserve\n   * @param user The address of the user\n   **/\n  event ReserveUsedAsCollateralDisabled(address indexed reserve, address indexed user);\n\n  /**\n   * @dev Emitted when a reserve is enabled as collateral for an user\n   * @param reserve The address of the reserve\n   * @param user The address of the user\n   **/\n  event ReserveUsedAsCollateralEnabled(address indexed reserve, address indexed user);\n\n  /**\n   * @dev Users can invoke this function to liquidate an undercollateralized position.\n   * @param collateral The address of the collateral to liquidated\n   * @param principal The address of the principal reserve\n   * @param user The address of the borrower\n   * @param debtToCover The amount of principal that the liquidator wants to repay\n   * @param receiveAToken true if the liquidators wants to receive the aTokens, false if\n   * he wants to receive the underlying asset directly\n   **/\n  function liquidationCall(\n    address collateral,\n    address principal,\n    address user,\n    uint256 debtToCover,\n    bool receiveAToken\n  ) external returns (uint256, string memory);\n}\n"
      },
      "contracts/protocol/libraries/aave-upgradeability/VersionedInitializable.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\n/**\n * @title VersionedInitializable\n *\n * @dev Helper contract to implement initializer functions. To use it, replace\n * the constructor with a function that has the `initializer` modifier.\n * WARNING: Unlike constructors, initializer functions must be manually\n * invoked. This applies both to deploying an Initializable contract, as well\n * as extending an Initializable contract via inheritance.\n * WARNING: When used with inheritance, manual care must be taken to not invoke\n * a parent initializer twice, or ensure that all initializers are idempotent,\n * because this is not dealt with automatically as with constructors.\n *\n * @author Aave, inspired by the OpenZeppelin Initializable contract\n */\nabstract contract VersionedInitializable {\n  /**\n   * @dev Indicates that the contract has been initialized.\n   */\n  uint256 private lastInitializedRevision = 0;\n\n  /**\n   * @dev Indicates that the contract is in the process of being initialized.\n   */\n  bool private initializing;\n\n  /**\n   * @dev Modifier to use in the initializer function of a contract.\n   */\n  modifier initializer() {\n    uint256 revision = getRevision();\n    require(\n      initializing || isConstructor() || revision > lastInitializedRevision,\n      'Contract instance has already been initialized'\n    );\n\n    bool isTopLevelCall = !initializing;\n    if (isTopLevelCall) {\n      initializing = true;\n      lastInitializedRevision = revision;\n    }\n\n    _;\n\n    if (isTopLevelCall) {\n      initializing = false;\n    }\n  }\n\n  /**\n   * @dev returns the revision number of the contract\n   * Needs to be defined in the inherited class as a constant.\n   **/\n  function getRevision() internal pure virtual returns (uint256);\n\n  /**\n   * @dev Returns true if and only if the function is running in the constructor\n   **/\n  function isConstructor() private view returns (bool) {\n    // extcodesize checks the size of the code stored in an address, and\n    // address returns the current address. Since the code is still not\n    // deployed when running a constructor, any checks on its code size will\n    // yield zero, making it an effective way to detect if a contract is\n    // under construction or not.\n    uint256 cs;\n    //solium-disable-next-line\n    assembly {\n      cs := extcodesize(address())\n    }\n    return cs == 0;\n  }\n\n  // Reserved storage space to allow for layout changes in the future.\n  uint256[50] private ______gap;\n}\n"
      },
      "contracts/protocol/libraries/logic/GenericLogic.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\n\nimport {SafeMath} from '../../../dependencies/openzeppelin/contracts/SafeMath.sol';\nimport {IERC20} from '../../../dependencies/openzeppelin/contracts/IERC20.sol';\nimport {ReserveLogic} from './ReserveLogic.sol';\nimport {ReserveConfiguration} from '../configuration/ReserveConfiguration.sol';\nimport {UserConfiguration} from '../configuration/UserConfiguration.sol';\nimport {WadRayMath} from '../math/WadRayMath.sol';\nimport {PercentageMath} from '../math/PercentageMath.sol';\nimport {IPriceOracleGetter} from '../../../interfaces/IPriceOracleGetter.sol';\nimport {DataTypes} from '../types/DataTypes.sol';\n\n/**\n * @title GenericLogic library\n * @author Aave\n * @title Implements protocol-level logic to calculate and validate the state of a user\n */\nlibrary GenericLogic {\n  using ReserveLogic for DataTypes.ReserveData;\n  using SafeMath for uint256;\n  using WadRayMath for uint256;\n  using PercentageMath for uint256;\n  using ReserveConfiguration for DataTypes.ReserveConfigurationMap;\n  using UserConfiguration for DataTypes.UserConfigurationMap;\n\n  uint256 public constant HEALTH_FACTOR_LIQUIDATION_THRESHOLD = 1 ether;\n\n  struct balanceDecreaseAllowedLocalVars {\n    uint256 decimals;\n    uint256 liquidationThreshold;\n    uint256 totalCollateralInETH;\n    uint256 totalDebtInETH;\n    uint256 avgLiquidationThreshold;\n    uint256 amountToDecreaseInETH;\n    uint256 collateralBalanceAfterDecrease;\n    uint256 liquidationThresholdAfterDecrease;\n    uint256 healthFactorAfterDecrease;\n    bool reserveUsageAsCollateralEnabled;\n  }\n\n  /**\n   * @dev Checks if a specific balance decrease is allowed\n   * (i.e. doesn't bring the user borrow position health factor under HEALTH_FACTOR_LIQUIDATION_THRESHOLD)\n   * @param asset The address of the underlying asset of the reserve\n   * @param user The address of the user\n   * @param amount The amount to decrease\n   * @param reservesData The data of all the reserves\n   * @param userConfig The user configuration\n   * @param reserves The list of all the active reserves\n   * @param oracle The address of the oracle contract\n   * @return true if the decrease of the balance is allowed\n   **/\n  function balanceDecreaseAllowed(\n    address asset,\n    address user,\n    uint256 amount,\n    mapping(address => DataTypes.ReserveData) storage reservesData,\n    DataTypes.UserConfigurationMap calldata userConfig,\n    mapping(uint256 => address) storage reserves,\n    uint256 reservesCount,\n    address oracle\n  ) external view returns (bool) {\n    if (!userConfig.isBorrowingAny() || !userConfig.isUsingAsCollateral(reservesData[asset].id)) {\n      return true;\n    }\n\n    balanceDecreaseAllowedLocalVars memory vars;\n\n    (, vars.liquidationThreshold, , vars.decimals, ) = reservesData[asset]\n      .configuration\n      .getParams();\n\n    if (vars.liquidationThreshold == 0) {\n      return true;\n    }\n\n    (\n      vars.totalCollateralInETH,\n      vars.totalDebtInETH,\n      ,\n      vars.avgLiquidationThreshold,\n\n    ) = calculateUserAccountData(user, reservesData, userConfig, reserves, reservesCount, oracle);\n\n    if (vars.totalDebtInETH == 0) {\n      return true;\n    }\n\n    vars.amountToDecreaseInETH = IPriceOracleGetter(oracle).getAssetPrice(asset).mul(amount).div(\n      10**vars.decimals\n    );\n\n    vars.collateralBalanceAfterDecrease = vars.totalCollateralInETH.sub(vars.amountToDecreaseInETH);\n\n    //if there is a borrow, there can't be 0 collateral\n    if (vars.collateralBalanceAfterDecrease == 0) {\n      return false;\n    }\n\n    vars.liquidationThresholdAfterDecrease = vars\n      .totalCollateralInETH\n      .mul(vars.avgLiquidationThreshold)\n      .sub(vars.amountToDecreaseInETH.mul(vars.liquidationThreshold))\n      .div(vars.collateralBalanceAfterDecrease);\n\n    uint256 healthFactorAfterDecrease =\n      calculateHealthFactorFromBalances(\n        vars.collateralBalanceAfterDecrease,\n        vars.totalDebtInETH,\n        vars.liquidationThresholdAfterDecrease\n      );\n\n    return healthFactorAfterDecrease >= GenericLogic.HEALTH_FACTOR_LIQUIDATION_THRESHOLD;\n  }\n\n  struct CalculateUserAccountDataVars {\n    uint256 reserveUnitPrice;\n    uint256 tokenUnit;\n    uint256 compoundedLiquidityBalance;\n    uint256 compoundedBorrowBalance;\n    uint256 decimals;\n    uint256 ltv;\n    uint256 liquidationThreshold;\n    uint256 i;\n    uint256 healthFactor;\n    uint256 totalCollateralInETH;\n    uint256 totalDebtInETH;\n    uint256 avgLtv;\n    uint256 avgLiquidationThreshold;\n    uint256 reservesLength;\n    bool healthFactorBelowThreshold;\n    address currentReserveAddress;\n    bool usageAsCollateralEnabled;\n    bool userUsesReserveAsCollateral;\n  }\n\n  /**\n   * @dev Calculates the user data across the reserves.\n   * this includes the total liquidity/collateral/borrow balances in ETH,\n   * the average Loan To Value, the average Liquidation Ratio, and the Health factor.\n   * @param user The address of the user\n   * @param reservesData Data of all the reserves\n   * @param userConfig The configuration of the user\n   * @param reserves The list of the available reserves\n   * @param oracle The price oracle address\n   * @return The total collateral and total debt of the user in ETH, the avg ltv, liquidation threshold and the HF\n   **/\n  function calculateUserAccountData(\n    address user,\n    mapping(address => DataTypes.ReserveData) storage reservesData,\n    DataTypes.UserConfigurationMap memory userConfig,\n    mapping(uint256 => address) storage reserves,\n    uint256 reservesCount,\n    address oracle\n  )\n    internal\n    view\n    returns (\n      uint256,\n      uint256,\n      uint256,\n      uint256,\n      uint256\n    )\n  {\n    CalculateUserAccountDataVars memory vars;\n\n    if (userConfig.isEmpty()) {\n      return (0, 0, 0, 0, uint256(-1));\n    }\n    for (vars.i = 0; vars.i < reservesCount; vars.i++) {\n      if (!userConfig.isUsingAsCollateralOrBorrowing(vars.i)) {\n        continue;\n      }\n\n      vars.currentReserveAddress = reserves[vars.i];\n      DataTypes.ReserveData storage currentReserve = reservesData[vars.currentReserveAddress];\n\n      (vars.ltv, vars.liquidationThreshold, , vars.decimals, ) = currentReserve\n        .configuration\n        .getParams();\n\n      vars.tokenUnit = 10**vars.decimals;\n      vars.reserveUnitPrice = IPriceOracleGetter(oracle).getAssetPrice(vars.currentReserveAddress);\n\n      if (vars.liquidationThreshold != 0 && userConfig.isUsingAsCollateral(vars.i)) {\n        vars.compoundedLiquidityBalance = IERC20(currentReserve.aTokenAddress).balanceOf(user);\n\n        uint256 liquidityBalanceETH =\n          vars.reserveUnitPrice.mul(vars.compoundedLiquidityBalance).div(vars.tokenUnit);\n\n        vars.totalCollateralInETH = vars.totalCollateralInETH.add(liquidityBalanceETH);\n\n        vars.avgLtv = vars.avgLtv.add(liquidityBalanceETH.mul(vars.ltv));\n        vars.avgLiquidationThreshold = vars.avgLiquidationThreshold.add(\n          liquidityBalanceETH.mul(vars.liquidationThreshold)\n        );\n      }\n\n      if (userConfig.isBorrowing(vars.i)) {\n        vars.compoundedBorrowBalance = IERC20(currentReserve.stableDebtTokenAddress).balanceOf(\n          user\n        );\n        vars.compoundedBorrowBalance = vars.compoundedBorrowBalance.add(\n          IERC20(currentReserve.variableDebtTokenAddress).balanceOf(user)\n        );\n\n        vars.totalDebtInETH = vars.totalDebtInETH.add(\n          vars.reserveUnitPrice.mul(vars.compoundedBorrowBalance).div(vars.tokenUnit)\n        );\n      }\n    }\n\n    vars.avgLtv = vars.totalCollateralInETH > 0 ? vars.avgLtv.div(vars.totalCollateralInETH) : 0;\n    vars.avgLiquidationThreshold = vars.totalCollateralInETH > 0\n      ? vars.avgLiquidationThreshold.div(vars.totalCollateralInETH)\n      : 0;\n\n    vars.healthFactor = calculateHealthFactorFromBalances(\n      vars.totalCollateralInETH,\n      vars.totalDebtInETH,\n      vars.avgLiquidationThreshold\n    );\n    return (\n      vars.totalCollateralInETH,\n      vars.totalDebtInETH,\n      vars.avgLtv,\n      vars.avgLiquidationThreshold,\n      vars.healthFactor\n    );\n  }\n\n  /**\n   * @dev Calculates the health factor from the corresponding balances\n   * @param totalCollateralInETH The total collateral in ETH\n   * @param totalDebtInETH The total debt in ETH\n   * @param liquidationThreshold The avg liquidation threshold\n   * @return The health factor calculated from the balances provided\n   **/\n  function calculateHealthFactorFromBalances(\n    uint256 totalCollateralInETH,\n    uint256 totalDebtInETH,\n    uint256 liquidationThreshold\n  ) internal pure returns (uint256) {\n    if (totalDebtInETH == 0) return uint256(-1);\n\n    return (totalCollateralInETH.percentMul(liquidationThreshold)).wadDiv(totalDebtInETH);\n  }\n\n  /**\n   * @dev Calculates the equivalent amount in ETH that an user can borrow, depending on the available collateral and the\n   * average Loan To Value\n   * @param totalCollateralInETH The total collateral in ETH\n   * @param totalDebtInETH The total borrow balance\n   * @param ltv The average loan to value\n   * @return the amount available to borrow in ETH for the user\n   **/\n\n  function calculateAvailableBorrowsETH(\n    uint256 totalCollateralInETH,\n    uint256 totalDebtInETH,\n    uint256 ltv\n  ) internal pure returns (uint256) {\n    uint256 availableBorrowsETH = totalCollateralInETH.percentMul(ltv);\n\n    if (availableBorrowsETH < totalDebtInETH) {\n      return 0;\n    }\n\n    availableBorrowsETH = availableBorrowsETH.sub(totalDebtInETH);\n    return availableBorrowsETH;\n  }\n}\n"
      },
      "contracts/protocol/libraries/helpers/Helpers.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {IERC20} from '../../../dependencies/openzeppelin/contracts/IERC20.sol';\nimport {DataTypes} from '../types/DataTypes.sol';\n\n/**\n * @title Helpers library\n * @author Aave\n */\nlibrary Helpers {\n  /**\n   * @dev Fetches the user current stable and variable debt balances\n   * @param user The user address\n   * @param reserve The reserve data object\n   * @return The stable and variable debt balance\n   **/\n  function getUserCurrentDebt(address user, DataTypes.ReserveData storage reserve)\n    internal\n    view\n    returns (uint256, uint256)\n  {\n    return (\n      IERC20(reserve.stableDebtTokenAddress).balanceOf(user),\n      IERC20(reserve.variableDebtTokenAddress).balanceOf(user)\n    );\n  }\n\n  function getUserCurrentDebtMemory(address user, DataTypes.ReserveData memory reserve)\n    internal\n    view\n    returns (uint256, uint256)\n  {\n    return (\n      IERC20(reserve.stableDebtTokenAddress).balanceOf(user),\n      IERC20(reserve.variableDebtTokenAddress).balanceOf(user)\n    );\n  }\n}\n"
      },
      "contracts/protocol/libraries/math/WadRayMath.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {Errors} from '../helpers/Errors.sol';\n\n/**\n * @title WadRayMath library\n * @author Aave\n * @dev Provides mul and div function for wads (decimal numbers with 18 digits precision) and rays (decimals with 27 digits)\n **/\n\nlibrary WadRayMath {\n  uint256 internal constant WAD = 1e18;\n  uint256 internal constant halfWAD = WAD / 2;\n\n  uint256 internal constant RAY = 1e27;\n  uint256 internal constant halfRAY = RAY / 2;\n\n  uint256 internal constant WAD_RAY_RATIO = 1e9;\n\n  /**\n   * @return One ray, 1e27\n   **/\n  function ray() internal pure returns (uint256) {\n    return RAY;\n  }\n\n  /**\n   * @return One wad, 1e18\n   **/\n\n  function wad() internal pure returns (uint256) {\n    return WAD;\n  }\n\n  /**\n   * @return Half ray, 1e27/2\n   **/\n  function halfRay() internal pure returns (uint256) {\n    return halfRAY;\n  }\n\n  /**\n   * @return Half ray, 1e18/2\n   **/\n  function halfWad() internal pure returns (uint256) {\n    return halfWAD;\n  }\n\n  /**\n   * @dev Multiplies two wad, rounding half up to the nearest wad\n   * @param a Wad\n   * @param b Wad\n   * @return The result of a*b, in wad\n   **/\n  function wadMul(uint256 a, uint256 b) internal pure returns (uint256) {\n    if (a == 0 || b == 0) {\n      return 0;\n    }\n\n    require(a <= (type(uint256).max - halfWAD) / b, Errors.MATH_MULTIPLICATION_OVERFLOW);\n\n    return (a * b + halfWAD) / WAD;\n  }\n\n  /**\n   * @dev Divides two wad, rounding half up to the nearest wad\n   * @param a Wad\n   * @param b Wad\n   * @return The result of a/b, in wad\n   **/\n  function wadDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n    require(b != 0, Errors.MATH_DIVISION_BY_ZERO);\n    uint256 halfB = b / 2;\n\n    require(a <= (type(uint256).max - halfB) / WAD, Errors.MATH_MULTIPLICATION_OVERFLOW);\n\n    return (a * WAD + halfB) / b;\n  }\n\n  /**\n   * @dev Multiplies two ray, rounding half up to the nearest ray\n   * @param a Ray\n   * @param b Ray\n   * @return The result of a*b, in ray\n   **/\n  function rayMul(uint256 a, uint256 b) internal pure returns (uint256) {\n    if (a == 0 || b == 0) {\n      return 0;\n    }\n\n    require(a <= (type(uint256).max - halfRAY) / b, Errors.MATH_MULTIPLICATION_OVERFLOW);\n\n    return (a * b + halfRAY) / RAY;\n  }\n\n  /**\n   * @dev Divides two ray, rounding half up to the nearest ray\n   * @param a Ray\n   * @param b Ray\n   * @return The result of a/b, in ray\n   **/\n  function rayDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n    require(b != 0, Errors.MATH_DIVISION_BY_ZERO);\n    uint256 halfB = b / 2;\n\n    require(a <= (type(uint256).max - halfB) / RAY, Errors.MATH_MULTIPLICATION_OVERFLOW);\n\n    return (a * RAY + halfB) / b;\n  }\n\n  /**\n   * @dev Casts ray down to wad\n   * @param a Ray\n   * @return a casted to wad, rounded half up to the nearest wad\n   **/\n  function rayToWad(uint256 a) internal pure returns (uint256) {\n    uint256 halfRatio = WAD_RAY_RATIO / 2;\n    uint256 result = halfRatio + a;\n    require(result >= halfRatio, Errors.MATH_ADDITION_OVERFLOW);\n\n    return result / WAD_RAY_RATIO;\n  }\n\n  /**\n   * @dev Converts wad up to ray\n   * @param a Wad\n   * @return a converted in ray\n   **/\n  function wadToRay(uint256 a) internal pure returns (uint256) {\n    uint256 result = a * WAD_RAY_RATIO;\n    require(result / WAD_RAY_RATIO == a, Errors.MATH_MULTIPLICATION_OVERFLOW);\n    return result;\n  }\n}\n"
      },
      "contracts/protocol/libraries/logic/ValidationLogic.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\n\nimport {SafeMath} from '../../../dependencies/openzeppelin/contracts/SafeMath.sol';\nimport {IERC20} from '../../../dependencies/openzeppelin/contracts/IERC20.sol';\nimport {ReserveLogic} from './ReserveLogic.sol';\nimport {GenericLogic} from './GenericLogic.sol';\nimport {WadRayMath} from '../math/WadRayMath.sol';\nimport {PercentageMath} from '../math/PercentageMath.sol';\nimport {SafeERC20} from '../../../dependencies/openzeppelin/contracts/SafeERC20.sol';\nimport {ReserveConfiguration} from '../configuration/ReserveConfiguration.sol';\nimport {UserConfiguration} from '../configuration/UserConfiguration.sol';\nimport {Errors} from '../helpers/Errors.sol';\nimport {Helpers} from '../helpers/Helpers.sol';\nimport {IReserveInterestRateStrategy} from '../../../interfaces/IReserveInterestRateStrategy.sol';\nimport {DataTypes} from '../types/DataTypes.sol';\n\n/**\n * @title ReserveLogic library\n * @author Aave\n * @notice Implements functions to validate the different actions of the protocol\n */\nlibrary ValidationLogic {\n  using ReserveLogic for DataTypes.ReserveData;\n  using SafeMath for uint256;\n  using WadRayMath for uint256;\n  using PercentageMath for uint256;\n  using SafeERC20 for IERC20;\n  using ReserveConfiguration for DataTypes.ReserveConfigurationMap;\n  using UserConfiguration for DataTypes.UserConfigurationMap;\n\n  uint256 public constant REBALANCE_UP_LIQUIDITY_RATE_THRESHOLD = 4000;\n  uint256 public constant REBALANCE_UP_USAGE_RATIO_THRESHOLD = 0.95 * 1e27; //usage ratio of 95%\n\n  /**\n   * @dev Validates a deposit action\n   * @param reserve The reserve object on which the user is depositing\n   * @param amount The amount to be deposited\n   */\n  function validateDeposit(DataTypes.ReserveData storage reserve, uint256 amount) external view {\n    (bool isActive, bool isFrozen, , ) = reserve.configuration.getFlags();\n\n    require(amount != 0, Errors.VL_INVALID_AMOUNT);\n    require(isActive, Errors.VL_NO_ACTIVE_RESERVE);\n    require(!isFrozen, Errors.VL_RESERVE_FROZEN);\n  }\n\n  /**\n   * @dev Validates a withdraw action\n   * @param reserveAddress The address of the reserve\n   * @param amount The amount to be withdrawn\n   * @param userBalance The balance of the user\n   * @param reservesData The reserves state\n   * @param userConfig The user configuration\n   * @param reserves The addresses of the reserves\n   * @param reservesCount The number of reserves\n   * @param oracle The price oracle\n   */\n  function validateWithdraw(\n    address reserveAddress,\n    uint256 amount,\n    uint256 userBalance,\n    mapping(address => DataTypes.ReserveData) storage reservesData,\n    DataTypes.UserConfigurationMap storage userConfig,\n    mapping(uint256 => address) storage reserves,\n    uint256 reservesCount,\n    address oracle\n  ) external view {\n    require(amount != 0, Errors.VL_INVALID_AMOUNT);\n    require(amount <= userBalance, Errors.VL_NOT_ENOUGH_AVAILABLE_USER_BALANCE);\n\n    (bool isActive, , , ) = reservesData[reserveAddress].configuration.getFlags();\n    require(isActive, Errors.VL_NO_ACTIVE_RESERVE);\n\n    require(\n      GenericLogic.balanceDecreaseAllowed(\n        reserveAddress,\n        msg.sender,\n        amount,\n        reservesData,\n        userConfig,\n        reserves,\n        reservesCount,\n        oracle\n      ),\n      Errors.VL_TRANSFER_NOT_ALLOWED\n    );\n  }\n\n  struct ValidateBorrowLocalVars {\n    uint256 currentLtv;\n    uint256 currentLiquidationThreshold;\n    uint256 amountOfCollateralNeededETH;\n    uint256 userCollateralBalanceETH;\n    uint256 userBorrowBalanceETH;\n    uint256 availableLiquidity;\n    uint256 healthFactor;\n    bool isActive;\n    bool isFrozen;\n    bool borrowingEnabled;\n    bool stableRateBorrowingEnabled;\n  }\n\n  /**\n   * @dev Validates a borrow action\n   * @param asset The address of the asset to borrow\n   * @param reserve The reserve state from which the user is borrowing\n   * @param userAddress The address of the user\n   * @param amount The amount to be borrowed\n   * @param amountInETH The amount to be borrowed, in ETH\n   * @param interestRateMode The interest rate mode at which the user is borrowing\n   * @param maxStableLoanPercent The max amount of the liquidity that can be borrowed at stable rate, in percentage\n   * @param reservesData The state of all the reserves\n   * @param userConfig The state of the user for the specific reserve\n   * @param reserves The addresses of all the active reserves\n   * @param oracle The price oracle\n   */\n\n  function validateBorrow(\n    address asset,\n    DataTypes.ReserveData storage reserve,\n    address userAddress,\n    uint256 amount,\n    uint256 amountInETH,\n    uint256 interestRateMode,\n    uint256 maxStableLoanPercent,\n    mapping(address => DataTypes.ReserveData) storage reservesData,\n    DataTypes.UserConfigurationMap storage userConfig,\n    mapping(uint256 => address) storage reserves,\n    uint256 reservesCount,\n    address oracle\n  ) external view {\n    ValidateBorrowLocalVars memory vars;\n\n    (vars.isActive, vars.isFrozen, vars.borrowingEnabled, vars.stableRateBorrowingEnabled) = reserve\n      .configuration\n      .getFlags();\n\n    require(vars.isActive, Errors.VL_NO_ACTIVE_RESERVE);\n    require(!vars.isFrozen, Errors.VL_RESERVE_FROZEN);\n    require(amount != 0, Errors.VL_INVALID_AMOUNT);\n\n    require(vars.borrowingEnabled, Errors.VL_BORROWING_NOT_ENABLED);\n\n    //validate interest rate mode\n    require(\n      uint256(DataTypes.InterestRateMode.VARIABLE) == interestRateMode ||\n        uint256(DataTypes.InterestRateMode.STABLE) == interestRateMode,\n      Errors.VL_INVALID_INTEREST_RATE_MODE_SELECTED\n    );\n\n    (\n      vars.userCollateralBalanceETH,\n      vars.userBorrowBalanceETH,\n      vars.currentLtv,\n      vars.currentLiquidationThreshold,\n      vars.healthFactor\n    ) = GenericLogic.calculateUserAccountData(\n      userAddress,\n      reservesData,\n      userConfig,\n      reserves,\n      reservesCount,\n      oracle\n    );\n\n    require(vars.userCollateralBalanceETH > 0, Errors.VL_COLLATERAL_BALANCE_IS_0);\n\n    require(\n      vars.healthFactor > GenericLogic.HEALTH_FACTOR_LIQUIDATION_THRESHOLD,\n      Errors.VL_HEALTH_FACTOR_LOWER_THAN_LIQUIDATION_THRESHOLD\n    );\n\n    //add the current already borrowed amount to the amount requested to calculate the total collateral needed.\n    vars.amountOfCollateralNeededETH = vars.userBorrowBalanceETH.add(amountInETH).percentDiv(\n      vars.currentLtv\n    ); //LTV is calculated in percentage\n\n    require(\n      vars.amountOfCollateralNeededETH <= vars.userCollateralBalanceETH,\n      Errors.VL_COLLATERAL_CANNOT_COVER_NEW_BORROW\n    );\n\n    /**\n     * Following conditions need to be met if the user is borrowing at a stable rate:\n     * 1. Reserve must be enabled for stable rate borrowing\n     * 2. Users cannot borrow from the reserve if their collateral is (mostly) the same currency\n     *    they are borrowing, to prevent abuses.\n     * 3. Users will be able to borrow only a portion of the total available liquidity\n     **/\n\n    if (interestRateMode == uint256(DataTypes.InterestRateMode.STABLE)) {\n      //check if the borrow mode is stable and if stable rate borrowing is enabled on this reserve\n\n      require(vars.stableRateBorrowingEnabled, Errors.VL_STABLE_BORROWING_NOT_ENABLED);\n\n      require(\n        !userConfig.isUsingAsCollateral(reserve.id) ||\n          reserve.configuration.getLtv() == 0 ||\n          amount > IERC20(reserve.aTokenAddress).balanceOf(userAddress),\n        Errors.VL_COLLATERAL_SAME_AS_BORROWING_CURRENCY\n      );\n\n      vars.availableLiquidity = IERC20(asset).balanceOf(reserve.aTokenAddress);\n\n      //calculate the max available loan size in stable rate mode as a percentage of the\n      //available liquidity\n      uint256 maxLoanSizeStable = vars.availableLiquidity.percentMul(maxStableLoanPercent);\n\n      require(amount <= maxLoanSizeStable, Errors.VL_AMOUNT_BIGGER_THAN_MAX_LOAN_SIZE_STABLE);\n    }\n  }\n\n  /**\n   * @dev Validates a repay action\n   * @param reserve The reserve state from which the user is repaying\n   * @param amountSent The amount sent for the repayment. Can be an actual value or uint(-1)\n   * @param onBehalfOf The address of the user msg.sender is repaying for\n   * @param stableDebt The borrow balance of the user\n   * @param variableDebt The borrow balance of the user\n   */\n  function validateRepay(\n    DataTypes.ReserveData storage reserve,\n    uint256 amountSent,\n    DataTypes.InterestRateMode rateMode,\n    address onBehalfOf,\n    uint256 stableDebt,\n    uint256 variableDebt\n  ) external view {\n    bool isActive = reserve.configuration.getActive();\n\n    require(isActive, Errors.VL_NO_ACTIVE_RESERVE);\n\n    require(amountSent > 0, Errors.VL_INVALID_AMOUNT);\n\n    require(\n      (stableDebt > 0 &&\n        DataTypes.InterestRateMode(rateMode) == DataTypes.InterestRateMode.STABLE) ||\n        (variableDebt > 0 &&\n          DataTypes.InterestRateMode(rateMode) == DataTypes.InterestRateMode.VARIABLE),\n      Errors.VL_NO_DEBT_OF_SELECTED_TYPE\n    );\n\n    require(\n      amountSent != uint256(-1) || msg.sender == onBehalfOf,\n      Errors.VL_NO_EXPLICIT_AMOUNT_TO_REPAY_ON_BEHALF\n    );\n  }\n\n  /**\n   * @dev Validates a swap of borrow rate mode.\n   * @param reserve The reserve state on which the user is swapping the rate\n   * @param userConfig The user reserves configuration\n   * @param stableDebt The stable debt of the user\n   * @param variableDebt The variable debt of the user\n   * @param currentRateMode The rate mode of the borrow\n   */\n  function validateSwapRateMode(\n    DataTypes.ReserveData storage reserve,\n    DataTypes.UserConfigurationMap storage userConfig,\n    uint256 stableDebt,\n    uint256 variableDebt,\n    DataTypes.InterestRateMode currentRateMode\n  ) external view {\n    (bool isActive, bool isFrozen, , bool stableRateEnabled) = reserve.configuration.getFlags();\n\n    require(isActive, Errors.VL_NO_ACTIVE_RESERVE);\n    require(!isFrozen, Errors.VL_RESERVE_FROZEN);\n\n    if (currentRateMode == DataTypes.InterestRateMode.STABLE) {\n      require(stableDebt > 0, Errors.VL_NO_STABLE_RATE_LOAN_IN_RESERVE);\n    } else if (currentRateMode == DataTypes.InterestRateMode.VARIABLE) {\n      require(variableDebt > 0, Errors.VL_NO_VARIABLE_RATE_LOAN_IN_RESERVE);\n      /**\n       * user wants to swap to stable, before swapping we need to ensure that\n       * 1. stable borrow rate is enabled on the reserve\n       * 2. user is not trying to abuse the reserve by depositing\n       * more collateral than he is borrowing, artificially lowering\n       * the interest rate, borrowing at variable, and switching to stable\n       **/\n      require(stableRateEnabled, Errors.VL_STABLE_BORROWING_NOT_ENABLED);\n\n      require(\n        !userConfig.isUsingAsCollateral(reserve.id) ||\n          reserve.configuration.getLtv() == 0 ||\n          stableDebt.add(variableDebt) > IERC20(reserve.aTokenAddress).balanceOf(msg.sender),\n        Errors.VL_COLLATERAL_SAME_AS_BORROWING_CURRENCY\n      );\n    } else {\n      revert(Errors.VL_INVALID_INTEREST_RATE_MODE_SELECTED);\n    }\n  }\n\n  /**\n   * @dev Validates a stable borrow rate rebalance action\n   * @param reserve The reserve state on which the user is getting rebalanced\n   * @param reserveAddress The address of the reserve\n   * @param stableDebtToken The stable debt token instance\n   * @param variableDebtToken The variable debt token instance\n   * @param aTokenAddress The address of the aToken contract\n   */\n  function validateRebalanceStableBorrowRate(\n    DataTypes.ReserveData storage reserve,\n    address reserveAddress,\n    IERC20 stableDebtToken,\n    IERC20 variableDebtToken,\n    address aTokenAddress\n  ) external view {\n    (bool isActive, , , ) = reserve.configuration.getFlags();\n\n    require(isActive, Errors.VL_NO_ACTIVE_RESERVE);\n\n    //if the usage ratio is below 95%, no rebalances are needed\n    uint256 totalDebt =\n      stableDebtToken.totalSupply().add(variableDebtToken.totalSupply()).wadToRay();\n    uint256 availableLiquidity = IERC20(reserveAddress).balanceOf(aTokenAddress).wadToRay();\n    uint256 usageRatio = totalDebt == 0 ? 0 : totalDebt.rayDiv(availableLiquidity.add(totalDebt));\n\n    //if the liquidity rate is below REBALANCE_UP_THRESHOLD of the max variable APR at 95% usage,\n    //then we allow rebalancing of the stable rate positions.\n\n    uint256 currentLiquidityRate = reserve.currentLiquidityRate;\n    uint256 maxVariableBorrowRate =\n      IReserveInterestRateStrategy(reserve.interestRateStrategyAddress).getMaxVariableBorrowRate();\n\n    require(\n      usageRatio >= REBALANCE_UP_USAGE_RATIO_THRESHOLD &&\n        currentLiquidityRate <=\n        maxVariableBorrowRate.percentMul(REBALANCE_UP_LIQUIDITY_RATE_THRESHOLD),\n      Errors.LP_INTEREST_RATE_REBALANCE_CONDITIONS_NOT_MET\n    );\n  }\n\n  /**\n   * @dev Validates the action of setting an asset as collateral\n   * @param reserve The state of the reserve that the user is enabling or disabling as collateral\n   * @param reserveAddress The address of the reserve\n   * @param reservesData The data of all the reserves\n   * @param userConfig The state of the user for the specific reserve\n   * @param reserves The addresses of all the active reserves\n   * @param oracle The price oracle\n   */\n  function validateSetUseReserveAsCollateral(\n    DataTypes.ReserveData storage reserve,\n    address reserveAddress,\n    bool useAsCollateral,\n    mapping(address => DataTypes.ReserveData) storage reservesData,\n    DataTypes.UserConfigurationMap storage userConfig,\n    mapping(uint256 => address) storage reserves,\n    uint256 reservesCount,\n    address oracle\n  ) external view {\n    uint256 underlyingBalance = IERC20(reserve.aTokenAddress).balanceOf(msg.sender);\n\n    require(underlyingBalance > 0, Errors.VL_UNDERLYING_BALANCE_NOT_GREATER_THAN_0);\n\n    require(\n      useAsCollateral ||\n        GenericLogic.balanceDecreaseAllowed(\n          reserveAddress,\n          msg.sender,\n          underlyingBalance,\n          reservesData,\n          userConfig,\n          reserves,\n          reservesCount,\n          oracle\n        ),\n      Errors.VL_DEPOSIT_ALREADY_IN_USE\n    );\n  }\n\n  /**\n   * @dev Validates a flashloan action\n   * @param assets The assets being flashborrowed\n   * @param amounts The amounts for each asset being borrowed\n   **/\n  function validateFlashloan(address[] memory assets, uint256[] memory amounts) internal pure {\n    require(assets.length == amounts.length, Errors.VL_INCONSISTENT_FLASHLOAN_PARAMS);\n  }\n\n  /**\n   * @dev Validates the liquidation action\n   * @param collateralReserve The reserve data of the collateral\n   * @param principalReserve The reserve data of the principal\n   * @param userConfig The user configuration\n   * @param userHealthFactor The user's health factor\n   * @param userStableDebt Total stable debt balance of the user\n   * @param userVariableDebt Total variable debt balance of the user\n   **/\n  function validateLiquidationCall(\n    DataTypes.ReserveData storage collateralReserve,\n    DataTypes.ReserveData storage principalReserve,\n    DataTypes.UserConfigurationMap storage userConfig,\n    uint256 userHealthFactor,\n    uint256 userStableDebt,\n    uint256 userVariableDebt\n  ) internal view returns (uint256, string memory) {\n    if (\n      !collateralReserve.configuration.getActive() || !principalReserve.configuration.getActive()\n    ) {\n      return (\n        uint256(Errors.CollateralManagerErrors.NO_ACTIVE_RESERVE),\n        Errors.VL_NO_ACTIVE_RESERVE\n      );\n    }\n\n    if (userHealthFactor >= GenericLogic.HEALTH_FACTOR_LIQUIDATION_THRESHOLD) {\n      return (\n        uint256(Errors.CollateralManagerErrors.HEALTH_FACTOR_ABOVE_THRESHOLD),\n        Errors.LPCM_HEALTH_FACTOR_NOT_BELOW_THRESHOLD\n      );\n    }\n\n    bool isCollateralEnabled =\n      collateralReserve.configuration.getLiquidationThreshold() > 0 &&\n        userConfig.isUsingAsCollateral(collateralReserve.id);\n\n    //if collateral isn't enabled as collateral by user, it cannot be liquidated\n    if (!isCollateralEnabled) {\n      return (\n        uint256(Errors.CollateralManagerErrors.COLLATERAL_CANNOT_BE_LIQUIDATED),\n        Errors.LPCM_COLLATERAL_CANNOT_BE_LIQUIDATED\n      );\n    }\n\n    if (userStableDebt == 0 && userVariableDebt == 0) {\n      return (\n        uint256(Errors.CollateralManagerErrors.CURRRENCY_NOT_BORROWED),\n        Errors.LPCM_SPECIFIED_CURRENCY_NOT_BORROWED_BY_USER\n      );\n    }\n\n    return (uint256(Errors.CollateralManagerErrors.NO_ERROR), Errors.LPCM_NO_ERRORS);\n  }\n\n  /**\n   * @dev Validates an aToken transfer\n   * @param from The user from which the aTokens are being transferred\n   * @param reservesData The state of all the reserves\n   * @param userConfig The state of the user for the specific reserve\n   * @param reserves The addresses of all the active reserves\n   * @param oracle The price oracle\n   */\n  function validateTransfer(\n    address from,\n    mapping(address => DataTypes.ReserveData) storage reservesData,\n    DataTypes.UserConfigurationMap storage userConfig,\n    mapping(uint256 => address) storage reserves,\n    uint256 reservesCount,\n    address oracle\n  ) internal view {\n    (, , , , uint256 healthFactor) =\n      GenericLogic.calculateUserAccountData(\n        from,\n        reservesData,\n        userConfig,\n        reserves,\n        reservesCount,\n        oracle\n      );\n\n    require(\n      healthFactor >= GenericLogic.HEALTH_FACTOR_LIQUIDATION_THRESHOLD,\n      Errors.VL_TRANSFER_NOT_ALLOWED\n    );\n  }\n}\n"
      },
      "contracts/protocol/lendingpool/LendingPoolStorage.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {UserConfiguration} from '../libraries/configuration/UserConfiguration.sol';\nimport {ReserveConfiguration} from '../libraries/configuration/ReserveConfiguration.sol';\nimport {ReserveLogic} from '../libraries/logic/ReserveLogic.sol';\nimport {ILendingPoolAddressesProvider} from '../../interfaces/ILendingPoolAddressesProvider.sol';\nimport {DataTypes} from '../libraries/types/DataTypes.sol';\n\ncontract LendingPoolStorage {\n  using ReserveLogic for DataTypes.ReserveData;\n  using ReserveConfiguration for DataTypes.ReserveConfigurationMap;\n  using UserConfiguration for DataTypes.UserConfigurationMap;\n\n  ILendingPoolAddressesProvider internal _addressesProvider;\n\n  mapping(address => DataTypes.ReserveData) internal _reserves;\n  mapping(address => DataTypes.UserConfigurationMap) internal _usersConfig;\n\n  // the list of the available reserves, structured as a mapping for gas savings reasons\n  mapping(uint256 => address) internal _reservesList;\n\n  uint256 internal _reservesCount;\n\n  bool internal _paused;\n\n  uint256 internal _maxStableRateBorrowSizePercent;\n\n  uint256 internal _flashLoanPremiumTotal;\n\n  uint256 internal _maxNumberOfReserves;\n}\n"
      },
      "contracts/interfaces/IScaledBalanceToken.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\ninterface IScaledBalanceToken {\n  /**\n   * @dev Returns the scaled balance of the user. The scaled balance is the sum of all the\n   * updated stored balance divided by the reserve's liquidity index at the moment of the update\n   * @param user The user whose balance is calculated\n   * @return The scaled balance of the user\n   **/\n  function scaledBalanceOf(address user) external view returns (uint256);\n\n  /**\n   * @dev Returns the scaled balance of the user and the scaled total supply.\n   * @param user The address of the user\n   * @return The scaled balance of the user\n   * @return The scaled balance and the scaled total supply\n   **/\n  function getScaledUserBalanceAndSupply(address user) external view returns (uint256, uint256);\n\n  /**\n   * @dev Returns the scaled total supply of the variable debt token. Represents sum(debt/index)\n   * @return The scaled total supply\n   **/\n  function scaledTotalSupply() external view returns (uint256);\n}\n"
      },
      "contracts/interfaces/IInitializableAToken.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {ILendingPool} from './ILendingPool.sol';\nimport {IAaveIncentivesController} from './IAaveIncentivesController.sol';\n\n/**\n * @title IInitializableAToken\n * @notice Interface for the initialize function on AToken\n * @author Aave\n **/\ninterface IInitializableAToken {\n  /**\n   * @dev Emitted when an aToken is initialized\n   * @param underlyingAsset The address of the underlying asset\n   * @param pool The address of the associated lending pool\n   * @param treasury The address of the treasury\n   * @param incentivesController The address of the incentives controller for this aToken\n   * @param aTokenDecimals the decimals of the underlying\n   * @param aTokenName the name of the aToken\n   * @param aTokenSymbol the symbol of the aToken\n   * @param params A set of encoded parameters for additional initialization\n   **/\n  event Initialized(\n    address indexed underlyingAsset,\n    address indexed pool,\n    address treasury,\n    address incentivesController,\n    uint8 aTokenDecimals,\n    string aTokenName,\n    string aTokenSymbol,\n    bytes params\n  );\n\n  /**\n   * @dev Initializes the aToken\n   * @param pool The address of the lending pool where this aToken will be used\n   * @param treasury The address of the Aave treasury, receiving the fees on this aToken\n   * @param underlyingAsset The address of the underlying asset of this aToken (E.g. WETH for aWETH)\n   * @param incentivesController The smart contract managing potential incentives distribution\n   * @param aTokenDecimals The decimals of the aToken, same as the underlying asset's\n   * @param aTokenName The name of the aToken\n   * @param aTokenSymbol The symbol of the aToken\n   */\n  function initialize(\n    ILendingPool pool,\n    address treasury,\n    address underlyingAsset,\n    IAaveIncentivesController incentivesController,\n    uint8 aTokenDecimals,\n    string calldata aTokenName,\n    string calldata aTokenSymbol,\n    bytes calldata params\n  ) external;\n}\n"
      },
      "contracts/interfaces/IAaveIncentivesController.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\n\ninterface IAaveIncentivesController {\n  event RewardsAccrued(address indexed user, uint256 amount);\n\n  event RewardsClaimed(address indexed user, address indexed to, uint256 amount);\n\n  event RewardsClaimed(\n    address indexed user,\n    address indexed to,\n    address indexed claimer,\n    uint256 amount\n  );\n\n  event ClaimerSet(address indexed user, address indexed claimer);\n\n  /*\n   * @dev Returns the configuration of the distribution for a certain asset\n   * @param asset The address of the reference asset of the distribution\n   * @return The asset index, the emission per second and the last updated timestamp\n   **/\n  function getAssetData(address asset)\n    external\n    view\n    returns (\n      uint128,\n      uint128,\n      uint256\n    );\n\n  /**\n   * @dev Whitelists an address to claim the rewards on behalf of another address\n   * @param user The address of the user\n   * @param claimer The address of the claimer\n   */\n  function setClaimer(address user, address claimer) external;\n\n  /**\n   * @dev Returns the whitelisted claimer for a certain address (0x0 if not set)\n   * @param user The address of the user\n   * @return The claimer address\n   */\n  function getClaimer(address user) external view returns (address);\n\n  /**\n   * @dev Configure assets for a certain rewards emission\n   * @param assets The assets to incentivize\n   * @param emissionsPerSecond The emission for each asset\n   */\n  function configureAssets(address[] calldata assets, uint256[] calldata emissionsPerSecond)\n    external;\n\n  /**\n   * @dev Called by the corresponding asset on any update that affects the rewards distribution\n   * @param asset The address of the user\n   * @param userBalance The balance of the user of the asset in the lending pool\n   * @param totalSupply The total supply of the asset in the lending pool\n   **/\n  function handleAction(\n    address asset,\n    uint256 userBalance,\n    uint256 totalSupply\n  ) external;\n\n  /**\n   * @dev Returns the total of rewards of an user, already accrued + not yet accrued\n   * @param user The address of the user\n   * @return The rewards\n   **/\n  function getRewardsBalance(address[] calldata assets, address user)\n    external\n    view\n    returns (uint256);\n\n  function DISTRIBUTION_END() external view returns (uint256);\n\n  /**\n   * @dev Claims reward for an user, on all the assets of the lending pool, accumulating the pending rewards\n   * @param amount Amount of rewards to claim\n   * @param to Address that will be receiving the rewards\n   * @return Rewards claimed\n   **/\n  function claimRewards(\n    address[] calldata assets,\n    uint256 amount,\n    address to\n  ) external returns (uint256);\n\n  /**\n   * @dev Claims reward for an user on behalf, on all the assets of the lending pool, accumulating the pending rewards. The caller must\n   * be whitelisted via \"allowClaimOnBehalf\" function by the RewardsAdmin role manager\n   * @param amount Amount of rewards to claim\n   * @param user Address to check and claim rewards\n   * @param to Address that will be receiving the rewards\n   * @return Rewards claimed\n   **/\n  function claimRewardsOnBehalf(\n    address[] calldata assets,\n    uint256 amount,\n    address user,\n    address to\n  ) external returns (uint256);\n\n  /**\n   * @dev returns the unclaimed rewards of the user\n   * @param user the address of the user\n   * @return the unclaimed user rewards\n   */\n  function getUserUnclaimedRewards(address user) external view returns (uint256);\n\n  /**\n   * @dev returns the unclaimed rewards of the user\n   * @param user the address of the user\n   * @param asset The asset to incentivize\n   * @return the user index for the asset\n   */\n  function getUserAssetData(address user, address asset) external view returns (uint256);\n\n  /**\n   * @dev for backward compatibility with previous implementation of the Incentives controller\n   */\n  function REWARD_TOKEN() external view returns (address);\n\n  /**\n   * @dev for backward compatibility with previous implementation of the Incentives controller\n   */\n  function PRECISION() external view returns (uint8);\n}\n"
      },
      "contracts/interfaces/IInitializableDebtToken.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {ILendingPool} from './ILendingPool.sol';\nimport {IAaveIncentivesController} from './IAaveIncentivesController.sol';\n\n/**\n * @title IInitializableDebtToken\n * @notice Interface for the initialize function common between debt tokens\n * @author Aave\n **/\ninterface IInitializableDebtToken {\n  /**\n   * @dev Emitted when a debt token is initialized\n   * @param underlyingAsset The address of the underlying asset\n   * @param pool The address of the associated lending pool\n   * @param incentivesController The address of the incentives controller for this aToken\n   * @param debtTokenDecimals the decimals of the debt token\n   * @param debtTokenName the name of the debt token\n   * @param debtTokenSymbol the symbol of the debt token\n   * @param params A set of encoded parameters for additional initialization\n   **/\n  event Initialized(\n    address indexed underlyingAsset,\n    address indexed pool,\n    address incentivesController,\n    uint8 debtTokenDecimals,\n    string debtTokenName,\n    string debtTokenSymbol,\n    bytes params\n  );\n\n  /**\n   * @dev Initializes the debt token.\n   * @param pool The address of the lending pool where this aToken will be used\n   * @param underlyingAsset The address of the underlying asset of this aToken (E.g. WETH for aWETH)\n   * @param incentivesController The smart contract managing potential incentives distribution\n   * @param debtTokenDecimals The decimals of the debtToken, same as the underlying asset's\n   * @param debtTokenName The name of the token\n   * @param debtTokenSymbol The symbol of the token\n   */\n  function initialize(\n    ILendingPool pool,\n    address underlyingAsset,\n    IAaveIncentivesController incentivesController,\n    uint8 debtTokenDecimals,\n    string memory debtTokenName,\n    string memory debtTokenSymbol,\n    bytes calldata params\n  ) external;\n}\n"
      },
      "contracts/protocol/libraries/logic/ReserveLogic.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {SafeMath} from '../../../dependencies/openzeppelin/contracts/SafeMath.sol';\nimport {IERC20} from '../../../dependencies/openzeppelin/contracts/IERC20.sol';\nimport {SafeERC20} from '../../../dependencies/openzeppelin/contracts/SafeERC20.sol';\nimport {IAToken} from '../../../interfaces/IAToken.sol';\nimport {IStableDebtToken} from '../../../interfaces/IStableDebtToken.sol';\nimport {IVariableDebtToken} from '../../../interfaces/IVariableDebtToken.sol';\nimport {IReserveInterestRateStrategy} from '../../../interfaces/IReserveInterestRateStrategy.sol';\nimport {ReserveConfiguration} from '../configuration/ReserveConfiguration.sol';\nimport {MathUtils} from '../math/MathUtils.sol';\nimport {WadRayMath} from '../math/WadRayMath.sol';\nimport {PercentageMath} from '../math/PercentageMath.sol';\nimport {Errors} from '../helpers/Errors.sol';\nimport {DataTypes} from '../types/DataTypes.sol';\n\n/**\n * @title ReserveLogic library\n * @author Aave\n * @notice Implements the logic to update the reserves state\n */\nlibrary ReserveLogic {\n  using SafeMath for uint256;\n  using WadRayMath for uint256;\n  using PercentageMath for uint256;\n  using SafeERC20 for IERC20;\n\n  /**\n   * @dev Emitted when the state of a reserve is updated\n   * @param asset The address of the underlying asset of the reserve\n   * @param liquidityRate The new liquidity rate\n   * @param stableBorrowRate The new stable borrow rate\n   * @param variableBorrowRate The new variable borrow rate\n   * @param liquidityIndex The new liquidity index\n   * @param variableBorrowIndex The new variable borrow index\n   **/\n  event ReserveDataUpdated(\n    address indexed asset,\n    uint256 liquidityRate,\n    uint256 stableBorrowRate,\n    uint256 variableBorrowRate,\n    uint256 liquidityIndex,\n    uint256 variableBorrowIndex\n  );\n\n  using ReserveLogic for DataTypes.ReserveData;\n  using ReserveConfiguration for DataTypes.ReserveConfigurationMap;\n\n  /**\n   * @dev Returns the ongoing normalized income for the reserve\n   * A value of 1e27 means there is no income. As time passes, the income is accrued\n   * A value of 2*1e27 means for each unit of asset one unit of income has been accrued\n   * @param reserve The reserve object\n   * @return the normalized income. expressed in ray\n   **/\n  function getNormalizedIncome(DataTypes.ReserveData storage reserve)\n    internal\n    view\n    returns (uint256)\n  {\n    uint40 timestamp = reserve.lastUpdateTimestamp;\n\n    //solium-disable-next-line\n    if (timestamp == uint40(block.timestamp)) {\n      //if the index was updated in the same block, no need to perform any calculation\n      return reserve.liquidityIndex;\n    }\n\n    uint256 cumulated =\n      MathUtils.calculateLinearInterest(reserve.currentLiquidityRate, timestamp).rayMul(\n        reserve.liquidityIndex\n      );\n\n    return cumulated;\n  }\n\n  /**\n   * @dev Returns the ongoing normalized variable debt for the reserve\n   * A value of 1e27 means there is no debt. As time passes, the income is accrued\n   * A value of 2*1e27 means that for each unit of debt, one unit worth of interest has been accumulated\n   * @param reserve The reserve object\n   * @return The normalized variable debt. expressed in ray\n   **/\n  function getNormalizedDebt(DataTypes.ReserveData storage reserve)\n    internal\n    view\n    returns (uint256)\n  {\n    uint40 timestamp = reserve.lastUpdateTimestamp;\n\n    //solium-disable-next-line\n    if (timestamp == uint40(block.timestamp)) {\n      //if the index was updated in the same block, no need to perform any calculation\n      return reserve.variableBorrowIndex;\n    }\n\n    uint256 cumulated =\n      MathUtils.calculateCompoundedInterest(reserve.currentVariableBorrowRate, timestamp).rayMul(\n        reserve.variableBorrowIndex\n      );\n\n    return cumulated;\n  }\n\n  /**\n   * @dev Updates the liquidity cumulative index and the variable borrow index.\n   * @param reserve the reserve object\n   **/\n  function updateState(DataTypes.ReserveData storage reserve) internal {\n    uint256 scaledVariableDebt =\n      IVariableDebtToken(reserve.variableDebtTokenAddress).scaledTotalSupply();\n    uint256 previousVariableBorrowIndex = reserve.variableBorrowIndex;\n    uint256 previousLiquidityIndex = reserve.liquidityIndex;\n    uint40 lastUpdatedTimestamp = reserve.lastUpdateTimestamp;\n\n    (uint256 newLiquidityIndex, uint256 newVariableBorrowIndex) =\n      _updateIndexes(\n        reserve,\n        scaledVariableDebt,\n        previousLiquidityIndex,\n        previousVariableBorrowIndex,\n        lastUpdatedTimestamp\n      );\n\n    _mintToTreasury(\n      reserve,\n      scaledVariableDebt,\n      previousVariableBorrowIndex,\n      newLiquidityIndex,\n      newVariableBorrowIndex,\n      lastUpdatedTimestamp\n    );\n  }\n\n  /**\n   * @dev Accumulates a predefined amount of asset to the reserve as a fixed, instantaneous income. Used for example to accumulate\n   * the flashloan fee to the reserve, and spread it between all the depositors\n   * @param reserve The reserve object\n   * @param totalLiquidity The total liquidity available in the reserve\n   * @param amount The amount to accomulate\n   **/\n  function cumulateToLiquidityIndex(\n    DataTypes.ReserveData storage reserve,\n    uint256 totalLiquidity,\n    uint256 amount\n  ) internal {\n    uint256 amountToLiquidityRatio = amount.wadToRay().rayDiv(totalLiquidity.wadToRay());\n\n    uint256 result = amountToLiquidityRatio.add(WadRayMath.ray());\n\n    result = result.rayMul(reserve.liquidityIndex);\n    require(result <= type(uint128).max, Errors.RL_LIQUIDITY_INDEX_OVERFLOW);\n\n    reserve.liquidityIndex = uint128(result);\n  }\n\n  /**\n   * @dev Initializes a reserve\n   * @param reserve The reserve object\n   * @param aTokenAddress The address of the overlying atoken contract\n   * @param interestRateStrategyAddress The address of the interest rate strategy contract\n   **/\n  function init(\n    DataTypes.ReserveData storage reserve,\n    address aTokenAddress,\n    address stableDebtTokenAddress,\n    address variableDebtTokenAddress,\n    address interestRateStrategyAddress\n  ) external {\n    require(reserve.aTokenAddress == address(0), Errors.RL_RESERVE_ALREADY_INITIALIZED);\n\n    reserve.liquidityIndex = uint128(WadRayMath.ray());\n    reserve.variableBorrowIndex = uint128(WadRayMath.ray());\n    reserve.aTokenAddress = aTokenAddress;\n    reserve.stableDebtTokenAddress = stableDebtTokenAddress;\n    reserve.variableDebtTokenAddress = variableDebtTokenAddress;\n    reserve.interestRateStrategyAddress = interestRateStrategyAddress;\n  }\n\n  struct UpdateInterestRatesLocalVars {\n    address stableDebtTokenAddress;\n    uint256 availableLiquidity;\n    uint256 totalStableDebt;\n    uint256 newLiquidityRate;\n    uint256 newStableRate;\n    uint256 newVariableRate;\n    uint256 avgStableRate;\n    uint256 totalVariableDebt;\n  }\n\n  /**\n   * @dev Updates the reserve current stable borrow rate, the current variable borrow rate and the current liquidity rate\n   * @param reserve The address of the reserve to be updated\n   * @param liquidityAdded The amount of liquidity added to the protocol (deposit or repay) in the previous action\n   * @param liquidityTaken The amount of liquidity taken from the protocol (redeem or borrow)\n   **/\n  function updateInterestRates(\n    DataTypes.ReserveData storage reserve,\n    address reserveAddress,\n    address aTokenAddress,\n    uint256 liquidityAdded,\n    uint256 liquidityTaken\n  ) internal {\n    UpdateInterestRatesLocalVars memory vars;\n\n    vars.stableDebtTokenAddress = reserve.stableDebtTokenAddress;\n\n    (vars.totalStableDebt, vars.avgStableRate) = IStableDebtToken(vars.stableDebtTokenAddress)\n      .getTotalSupplyAndAvgRate();\n\n    //calculates the total variable debt locally using the scaled total supply instead\n    //of totalSupply(), as it's noticeably cheaper. Also, the index has been\n    //updated by the previous updateState() call\n    vars.totalVariableDebt = IVariableDebtToken(reserve.variableDebtTokenAddress)\n      .scaledTotalSupply()\n      .rayMul(reserve.variableBorrowIndex);\n\n    (\n      vars.newLiquidityRate,\n      vars.newStableRate,\n      vars.newVariableRate\n    ) = IReserveInterestRateStrategy(reserve.interestRateStrategyAddress).calculateInterestRates(\n      reserveAddress,\n      aTokenAddress,\n      liquidityAdded,\n      liquidityTaken,\n      vars.totalStableDebt,\n      vars.totalVariableDebt,\n      vars.avgStableRate,\n      reserve.configuration.getReserveFactor()\n    );\n    require(vars.newLiquidityRate <= type(uint128).max, Errors.RL_LIQUIDITY_RATE_OVERFLOW);\n    require(vars.newStableRate <= type(uint128).max, Errors.RL_STABLE_BORROW_RATE_OVERFLOW);\n    require(vars.newVariableRate <= type(uint128).max, Errors.RL_VARIABLE_BORROW_RATE_OVERFLOW);\n\n    reserve.currentLiquidityRate = uint128(vars.newLiquidityRate);\n    reserve.currentStableBorrowRate = uint128(vars.newStableRate);\n    reserve.currentVariableBorrowRate = uint128(vars.newVariableRate);\n\n    emit ReserveDataUpdated(\n      reserveAddress,\n      vars.newLiquidityRate,\n      vars.newStableRate,\n      vars.newVariableRate,\n      reserve.liquidityIndex,\n      reserve.variableBorrowIndex\n    );\n  }\n\n  struct MintToTreasuryLocalVars {\n    uint256 currentStableDebt;\n    uint256 principalStableDebt;\n    uint256 previousStableDebt;\n    uint256 currentVariableDebt;\n    uint256 previousVariableDebt;\n    uint256 avgStableRate;\n    uint256 cumulatedStableInterest;\n    uint256 totalDebtAccrued;\n    uint256 amountToMint;\n    uint256 reserveFactor;\n    uint40 stableSupplyUpdatedTimestamp;\n  }\n\n  /**\n   * @dev Mints part of the repaid interest to the reserve treasury as a function of the reserveFactor for the\n   * specific asset.\n   * @param reserve The reserve reserve to be updated\n   * @param scaledVariableDebt The current scaled total variable debt\n   * @param previousVariableBorrowIndex The variable borrow index before the last accumulation of the interest\n   * @param newLiquidityIndex The new liquidity index\n   * @param newVariableBorrowIndex The variable borrow index after the last accumulation of the interest\n   **/\n  function _mintToTreasury(\n    DataTypes.ReserveData storage reserve,\n    uint256 scaledVariableDebt,\n    uint256 previousVariableBorrowIndex,\n    uint256 newLiquidityIndex,\n    uint256 newVariableBorrowIndex,\n    uint40 timestamp\n  ) internal {\n    MintToTreasuryLocalVars memory vars;\n\n    vars.reserveFactor = reserve.configuration.getReserveFactor();\n\n    if (vars.reserveFactor == 0) {\n      return;\n    }\n\n    //fetching the principal, total stable debt and the avg stable rate\n    (\n      vars.principalStableDebt,\n      vars.currentStableDebt,\n      vars.avgStableRate,\n      vars.stableSupplyUpdatedTimestamp\n    ) = IStableDebtToken(reserve.stableDebtTokenAddress).getSupplyData();\n\n    //calculate the last principal variable debt\n    vars.previousVariableDebt = scaledVariableDebt.rayMul(previousVariableBorrowIndex);\n\n    //calculate the new total supply after accumulation of the index\n    vars.currentVariableDebt = scaledVariableDebt.rayMul(newVariableBorrowIndex);\n\n    //calculate the stable debt until the last timestamp update\n    vars.cumulatedStableInterest = MathUtils.calculateCompoundedInterest(\n      vars.avgStableRate,\n      vars.stableSupplyUpdatedTimestamp,\n      timestamp\n    );\n\n    vars.previousStableDebt = vars.principalStableDebt.rayMul(vars.cumulatedStableInterest);\n\n    //debt accrued is the sum of the current debt minus the sum of the debt at the last update\n    vars.totalDebtAccrued = vars\n      .currentVariableDebt\n      .add(vars.currentStableDebt)\n      .sub(vars.previousVariableDebt)\n      .sub(vars.previousStableDebt);\n\n    vars.amountToMint = vars.totalDebtAccrued.percentMul(vars.reserveFactor);\n\n    if (vars.amountToMint != 0) {\n      IAToken(reserve.aTokenAddress).mintToTreasury(vars.amountToMint, newLiquidityIndex);\n    }\n  }\n\n  /**\n   * @dev Updates the reserve indexes and the timestamp of the update\n   * @param reserve The reserve reserve to be updated\n   * @param scaledVariableDebt The scaled variable debt\n   * @param liquidityIndex The last stored liquidity index\n   * @param variableBorrowIndex The last stored variable borrow index\n   **/\n  function _updateIndexes(\n    DataTypes.ReserveData storage reserve,\n    uint256 scaledVariableDebt,\n    uint256 liquidityIndex,\n    uint256 variableBorrowIndex,\n    uint40 timestamp\n  ) internal returns (uint256, uint256) {\n    uint256 currentLiquidityRate = reserve.currentLiquidityRate;\n\n    uint256 newLiquidityIndex = liquidityIndex;\n    uint256 newVariableBorrowIndex = variableBorrowIndex;\n\n    //only cumulating if there is any income being produced\n    if (currentLiquidityRate > 0) {\n      uint256 cumulatedLiquidityInterest =\n        MathUtils.calculateLinearInterest(currentLiquidityRate, timestamp);\n      newLiquidityIndex = cumulatedLiquidityInterest.rayMul(liquidityIndex);\n      require(newLiquidityIndex <= type(uint128).max, Errors.RL_LIQUIDITY_INDEX_OVERFLOW);\n\n      reserve.liquidityIndex = uint128(newLiquidityIndex);\n\n      //as the liquidity rate might come only from stable rate loans, we need to ensure\n      //that there is actual variable debt before accumulating\n      if (scaledVariableDebt != 0) {\n        uint256 cumulatedVariableBorrowInterest =\n          MathUtils.calculateCompoundedInterest(reserve.currentVariableBorrowRate, timestamp);\n        newVariableBorrowIndex = cumulatedVariableBorrowInterest.rayMul(variableBorrowIndex);\n        require(\n          newVariableBorrowIndex <= type(uint128).max,\n          Errors.RL_VARIABLE_BORROW_INDEX_OVERFLOW\n        );\n        reserve.variableBorrowIndex = uint128(newVariableBorrowIndex);\n      }\n    }\n\n    //solium-disable-next-line\n    reserve.lastUpdateTimestamp = uint40(block.timestamp);\n    return (newLiquidityIndex, newVariableBorrowIndex);\n  }\n}\n"
      },
      "contracts/protocol/libraries/configuration/ReserveConfiguration.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {Errors} from '../helpers/Errors.sol';\nimport {DataTypes} from '../types/DataTypes.sol';\n\n/**\n * @title ReserveConfiguration library\n * @author Aave\n * @notice Implements the bitmap logic to handle the reserve configuration\n */\nlibrary ReserveConfiguration {\n  uint256 constant LTV_MASK =                   0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000; // prettier-ignore\n  uint256 constant LIQUIDATION_THRESHOLD_MASK = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF; // prettier-ignore\n  uint256 constant LIQUIDATION_BONUS_MASK =     0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF; // prettier-ignore\n  uint256 constant DECIMALS_MASK =              0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF; // prettier-ignore\n  uint256 constant ACTIVE_MASK =                0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFF; // prettier-ignore\n  uint256 constant FROZEN_MASK =                0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFFF; // prettier-ignore\n  uint256 constant BORROWING_MASK =             0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFFFFFFFFFFF; // prettier-ignore\n  uint256 constant STABLE_BORROWING_MASK =      0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFFFFF; // prettier-ignore\n  uint256 constant RESERVE_FACTOR_MASK =        0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF; // prettier-ignore\n\n  /// @dev For the LTV, the start bit is 0 (up to 15), hence no bitshifting is needed\n  uint256 constant LIQUIDATION_THRESHOLD_START_BIT_POSITION = 16;\n  uint256 constant LIQUIDATION_BONUS_START_BIT_POSITION = 32;\n  uint256 constant RESERVE_DECIMALS_START_BIT_POSITION = 48;\n  uint256 constant IS_ACTIVE_START_BIT_POSITION = 56;\n  uint256 constant IS_FROZEN_START_BIT_POSITION = 57;\n  uint256 constant BORROWING_ENABLED_START_BIT_POSITION = 58;\n  uint256 constant STABLE_BORROWING_ENABLED_START_BIT_POSITION = 59;\n  uint256 constant RESERVE_FACTOR_START_BIT_POSITION = 64;\n\n  uint256 constant MAX_VALID_LTV = 65535;\n  uint256 constant MAX_VALID_LIQUIDATION_THRESHOLD = 65535;\n  uint256 constant MAX_VALID_LIQUIDATION_BONUS = 65535;\n  uint256 constant MAX_VALID_DECIMALS = 255;\n  uint256 constant MAX_VALID_RESERVE_FACTOR = 65535;\n\n  /**\n   * @dev Sets the Loan to Value of the reserve\n   * @param self The reserve configuration\n   * @param ltv the new ltv\n   **/\n  function setLtv(DataTypes.ReserveConfigurationMap memory self, uint256 ltv) internal pure {\n    require(ltv <= MAX_VALID_LTV, Errors.RC_INVALID_LTV);\n\n    self.data = (self.data & LTV_MASK) | ltv;\n  }\n\n  /**\n   * @dev Gets the Loan to Value of the reserve\n   * @param self The reserve configuration\n   * @return The loan to value\n   **/\n  function getLtv(DataTypes.ReserveConfigurationMap storage self) internal view returns (uint256) {\n    return self.data & ~LTV_MASK;\n  }\n\n  /**\n   * @dev Sets the liquidation threshold of the reserve\n   * @param self The reserve configuration\n   * @param threshold The new liquidation threshold\n   **/\n  function setLiquidationThreshold(DataTypes.ReserveConfigurationMap memory self, uint256 threshold)\n    internal\n    pure\n  {\n    require(threshold <= MAX_VALID_LIQUIDATION_THRESHOLD, Errors.RC_INVALID_LIQ_THRESHOLD);\n\n    self.data =\n      (self.data & LIQUIDATION_THRESHOLD_MASK) |\n      (threshold << LIQUIDATION_THRESHOLD_START_BIT_POSITION);\n  }\n\n  /**\n   * @dev Gets the liquidation threshold of the reserve\n   * @param self The reserve configuration\n   * @return The liquidation threshold\n   **/\n  function getLiquidationThreshold(DataTypes.ReserveConfigurationMap storage self)\n    internal\n    view\n    returns (uint256)\n  {\n    return (self.data & ~LIQUIDATION_THRESHOLD_MASK) >> LIQUIDATION_THRESHOLD_START_BIT_POSITION;\n  }\n\n  /**\n   * @dev Sets the liquidation bonus of the reserve\n   * @param self The reserve configuration\n   * @param bonus The new liquidation bonus\n   **/\n  function setLiquidationBonus(DataTypes.ReserveConfigurationMap memory self, uint256 bonus)\n    internal\n    pure\n  {\n    require(bonus <= MAX_VALID_LIQUIDATION_BONUS, Errors.RC_INVALID_LIQ_BONUS);\n\n    self.data =\n      (self.data & LIQUIDATION_BONUS_MASK) |\n      (bonus << LIQUIDATION_BONUS_START_BIT_POSITION);\n  }\n\n  /**\n   * @dev Gets the liquidation bonus of the reserve\n   * @param self The reserve configuration\n   * @return The liquidation bonus\n   **/\n  function getLiquidationBonus(DataTypes.ReserveConfigurationMap storage self)\n    internal\n    view\n    returns (uint256)\n  {\n    return (self.data & ~LIQUIDATION_BONUS_MASK) >> LIQUIDATION_BONUS_START_BIT_POSITION;\n  }\n\n  /**\n   * @dev Sets the decimals of the underlying asset of the reserve\n   * @param self The reserve configuration\n   * @param decimals The decimals\n   **/\n  function setDecimals(DataTypes.ReserveConfigurationMap memory self, uint256 decimals)\n    internal\n    pure\n  {\n    require(decimals <= MAX_VALID_DECIMALS, Errors.RC_INVALID_DECIMALS);\n\n    self.data = (self.data & DECIMALS_MASK) | (decimals << RESERVE_DECIMALS_START_BIT_POSITION);\n  }\n\n  /**\n   * @dev Gets the decimals of the underlying asset of the reserve\n   * @param self The reserve configuration\n   * @return The decimals of the asset\n   **/\n  function getDecimals(DataTypes.ReserveConfigurationMap storage self)\n    internal\n    view\n    returns (uint256)\n  {\n    return (self.data & ~DECIMALS_MASK) >> RESERVE_DECIMALS_START_BIT_POSITION;\n  }\n\n  /**\n   * @dev Sets the active state of the reserve\n   * @param self The reserve configuration\n   * @param active The active state\n   **/\n  function setActive(DataTypes.ReserveConfigurationMap memory self, bool active) internal pure {\n    self.data =\n      (self.data & ACTIVE_MASK) |\n      (uint256(active ? 1 : 0) << IS_ACTIVE_START_BIT_POSITION);\n  }\n\n  /**\n   * @dev Gets the active state of the reserve\n   * @param self The reserve configuration\n   * @return The active state\n   **/\n  function getActive(DataTypes.ReserveConfigurationMap storage self) internal view returns (bool) {\n    return (self.data & ~ACTIVE_MASK) != 0;\n  }\n\n  /**\n   * @dev Sets the frozen state of the reserve\n   * @param self The reserve configuration\n   * @param frozen The frozen state\n   **/\n  function setFrozen(DataTypes.ReserveConfigurationMap memory self, bool frozen) internal pure {\n    self.data =\n      (self.data & FROZEN_MASK) |\n      (uint256(frozen ? 1 : 0) << IS_FROZEN_START_BIT_POSITION);\n  }\n\n  /**\n   * @dev Gets the frozen state of the reserve\n   * @param self The reserve configuration\n   * @return The frozen state\n   **/\n  function getFrozen(DataTypes.ReserveConfigurationMap storage self) internal view returns (bool) {\n    return (self.data & ~FROZEN_MASK) != 0;\n  }\n\n  /**\n   * @dev Enables or disables borrowing on the reserve\n   * @param self The reserve configuration\n   * @param enabled True if the borrowing needs to be enabled, false otherwise\n   **/\n  function setBorrowingEnabled(DataTypes.ReserveConfigurationMap memory self, bool enabled)\n    internal\n    pure\n  {\n    self.data =\n      (self.data & BORROWING_MASK) |\n      (uint256(enabled ? 1 : 0) << BORROWING_ENABLED_START_BIT_POSITION);\n  }\n\n  /**\n   * @dev Gets the borrowing state of the reserve\n   * @param self The reserve configuration\n   * @return The borrowing state\n   **/\n  function getBorrowingEnabled(DataTypes.ReserveConfigurationMap storage self)\n    internal\n    view\n    returns (bool)\n  {\n    return (self.data & ~BORROWING_MASK) != 0;\n  }\n\n  /**\n   * @dev Enables or disables stable rate borrowing on the reserve\n   * @param self The reserve configuration\n   * @param enabled True if the stable rate borrowing needs to be enabled, false otherwise\n   **/\n  function setStableRateBorrowingEnabled(\n    DataTypes.ReserveConfigurationMap memory self,\n    bool enabled\n  ) internal pure {\n    self.data =\n      (self.data & STABLE_BORROWING_MASK) |\n      (uint256(enabled ? 1 : 0) << STABLE_BORROWING_ENABLED_START_BIT_POSITION);\n  }\n\n  /**\n   * @dev Gets the stable rate borrowing state of the reserve\n   * @param self The reserve configuration\n   * @return The stable rate borrowing state\n   **/\n  function getStableRateBorrowingEnabled(DataTypes.ReserveConfigurationMap storage self)\n    internal\n    view\n    returns (bool)\n  {\n    return (self.data & ~STABLE_BORROWING_MASK) != 0;\n  }\n\n  /**\n   * @dev Sets the reserve factor of the reserve\n   * @param self The reserve configuration\n   * @param reserveFactor The reserve factor\n   **/\n  function setReserveFactor(DataTypes.ReserveConfigurationMap memory self, uint256 reserveFactor)\n    internal\n    pure\n  {\n    require(reserveFactor <= MAX_VALID_RESERVE_FACTOR, Errors.RC_INVALID_RESERVE_FACTOR);\n\n    self.data =\n      (self.data & RESERVE_FACTOR_MASK) |\n      (reserveFactor << RESERVE_FACTOR_START_BIT_POSITION);\n  }\n\n  /**\n   * @dev Gets the reserve factor of the reserve\n   * @param self The reserve configuration\n   * @return The reserve factor\n   **/\n  function getReserveFactor(DataTypes.ReserveConfigurationMap storage self)\n    internal\n    view\n    returns (uint256)\n  {\n    return (self.data & ~RESERVE_FACTOR_MASK) >> RESERVE_FACTOR_START_BIT_POSITION;\n  }\n\n  /**\n   * @dev Gets the configuration flags of the reserve\n   * @param self The reserve configuration\n   * @return The state flags representing active, frozen, borrowing enabled, stableRateBorrowing enabled\n   **/\n  function getFlags(DataTypes.ReserveConfigurationMap storage self)\n    internal\n    view\n    returns (\n      bool,\n      bool,\n      bool,\n      bool\n    )\n  {\n    uint256 dataLocal = self.data;\n\n    return (\n      (dataLocal & ~ACTIVE_MASK) != 0,\n      (dataLocal & ~FROZEN_MASK) != 0,\n      (dataLocal & ~BORROWING_MASK) != 0,\n      (dataLocal & ~STABLE_BORROWING_MASK) != 0\n    );\n  }\n\n  /**\n   * @dev Gets the configuration paramters of the reserve\n   * @param self The reserve configuration\n   * @return The state params representing ltv, liquidation threshold, liquidation bonus, the reserve decimals\n   **/\n  function getParams(DataTypes.ReserveConfigurationMap storage self)\n    internal\n    view\n    returns (\n      uint256,\n      uint256,\n      uint256,\n      uint256,\n      uint256\n    )\n  {\n    uint256 dataLocal = self.data;\n\n    return (\n      dataLocal & ~LTV_MASK,\n      (dataLocal & ~LIQUIDATION_THRESHOLD_MASK) >> LIQUIDATION_THRESHOLD_START_BIT_POSITION,\n      (dataLocal & ~LIQUIDATION_BONUS_MASK) >> LIQUIDATION_BONUS_START_BIT_POSITION,\n      (dataLocal & ~DECIMALS_MASK) >> RESERVE_DECIMALS_START_BIT_POSITION,\n      (dataLocal & ~RESERVE_FACTOR_MASK) >> RESERVE_FACTOR_START_BIT_POSITION\n    );\n  }\n\n  /**\n   * @dev Gets the configuration paramters of the reserve from a memory object\n   * @param self The reserve configuration\n   * @return The state params representing ltv, liquidation threshold, liquidation bonus, the reserve decimals\n   **/\n  function getParamsMemory(DataTypes.ReserveConfigurationMap memory self)\n    internal\n    pure\n    returns (\n      uint256,\n      uint256,\n      uint256,\n      uint256,\n      uint256\n    )\n  {\n    return (\n      self.data & ~LTV_MASK,\n      (self.data & ~LIQUIDATION_THRESHOLD_MASK) >> LIQUIDATION_THRESHOLD_START_BIT_POSITION,\n      (self.data & ~LIQUIDATION_BONUS_MASK) >> LIQUIDATION_BONUS_START_BIT_POSITION,\n      (self.data & ~DECIMALS_MASK) >> RESERVE_DECIMALS_START_BIT_POSITION,\n      (self.data & ~RESERVE_FACTOR_MASK) >> RESERVE_FACTOR_START_BIT_POSITION\n    );\n  }\n\n  /**\n   * @dev Gets the configuration flags of the reserve from a memory object\n   * @param self The reserve configuration\n   * @return The state flags representing active, frozen, borrowing enabled, stableRateBorrowing enabled\n   **/\n  function getFlagsMemory(DataTypes.ReserveConfigurationMap memory self)\n    internal\n    pure\n    returns (\n      bool,\n      bool,\n      bool,\n      bool\n    )\n  {\n    return (\n      (self.data & ~ACTIVE_MASK) != 0,\n      (self.data & ~FROZEN_MASK) != 0,\n      (self.data & ~BORROWING_MASK) != 0,\n      (self.data & ~STABLE_BORROWING_MASK) != 0\n    );\n  }\n}\n"
      },
      "contracts/protocol/libraries/configuration/UserConfiguration.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {Errors} from '../helpers/Errors.sol';\nimport {DataTypes} from '../types/DataTypes.sol';\n\n/**\n * @title UserConfiguration library\n * @author Aave\n * @notice Implements the bitmap logic to handle the user configuration\n */\nlibrary UserConfiguration {\n  uint256 internal constant BORROWING_MASK =\n    0x5555555555555555555555555555555555555555555555555555555555555555;\n\n  /**\n   * @dev Sets if the user is borrowing the reserve identified by reserveIndex\n   * @param self The configuration object\n   * @param reserveIndex The index of the reserve in the bitmap\n   * @param borrowing True if the user is borrowing the reserve, false otherwise\n   **/\n  function setBorrowing(\n    DataTypes.UserConfigurationMap storage self,\n    uint256 reserveIndex,\n    bool borrowing\n  ) internal {\n    require(reserveIndex < 128, Errors.UL_INVALID_INDEX);\n    self.data =\n      (self.data & ~(1 << (reserveIndex * 2))) |\n      (uint256(borrowing ? 1 : 0) << (reserveIndex * 2));\n  }\n\n  /**\n   * @dev Sets if the user is using as collateral the reserve identified by reserveIndex\n   * @param self The configuration object\n   * @param reserveIndex The index of the reserve in the bitmap\n   * @param usingAsCollateral True if the user is usin the reserve as collateral, false otherwise\n   **/\n  function setUsingAsCollateral(\n    DataTypes.UserConfigurationMap storage self,\n    uint256 reserveIndex,\n    bool usingAsCollateral\n  ) internal {\n    require(reserveIndex < 128, Errors.UL_INVALID_INDEX);\n    self.data =\n      (self.data & ~(1 << (reserveIndex * 2 + 1))) |\n      (uint256(usingAsCollateral ? 1 : 0) << (reserveIndex * 2 + 1));\n  }\n\n  /**\n   * @dev Used to validate if a user has been using the reserve for borrowing or as collateral\n   * @param self The configuration object\n   * @param reserveIndex The index of the reserve in the bitmap\n   * @return True if the user has been using a reserve for borrowing or as collateral, false otherwise\n   **/\n  function isUsingAsCollateralOrBorrowing(\n    DataTypes.UserConfigurationMap memory self,\n    uint256 reserveIndex\n  ) internal pure returns (bool) {\n    require(reserveIndex < 128, Errors.UL_INVALID_INDEX);\n    return (self.data >> (reserveIndex * 2)) & 3 != 0;\n  }\n\n  /**\n   * @dev Used to validate if a user has been using the reserve for borrowing\n   * @param self The configuration object\n   * @param reserveIndex The index of the reserve in the bitmap\n   * @return True if the user has been using a reserve for borrowing, false otherwise\n   **/\n  function isBorrowing(DataTypes.UserConfigurationMap memory self, uint256 reserveIndex)\n    internal\n    pure\n    returns (bool)\n  {\n    require(reserveIndex < 128, Errors.UL_INVALID_INDEX);\n    return (self.data >> (reserveIndex * 2)) & 1 != 0;\n  }\n\n  /**\n   * @dev Used to validate if a user has been using the reserve as collateral\n   * @param self The configuration object\n   * @param reserveIndex The index of the reserve in the bitmap\n   * @return True if the user has been using a reserve as collateral, false otherwise\n   **/\n  function isUsingAsCollateral(DataTypes.UserConfigurationMap memory self, uint256 reserveIndex)\n    internal\n    pure\n    returns (bool)\n  {\n    require(reserveIndex < 128, Errors.UL_INVALID_INDEX);\n    return (self.data >> (reserveIndex * 2 + 1)) & 1 != 0;\n  }\n\n  /**\n   * @dev Used to validate if a user has been borrowing from any reserve\n   * @param self The configuration object\n   * @return True if the user has been borrowing any reserve, false otherwise\n   **/\n  function isBorrowingAny(DataTypes.UserConfigurationMap memory self) internal pure returns (bool) {\n    return self.data & BORROWING_MASK != 0;\n  }\n\n  /**\n   * @dev Used to validate if a user has not been using any reserve\n   * @param self The configuration object\n   * @return True if the user has been borrowing any reserve, false otherwise\n   **/\n  function isEmpty(DataTypes.UserConfigurationMap memory self) internal pure returns (bool) {\n    return self.data == 0;\n  }\n}\n"
      },
      "contracts/interfaces/IReserveInterestRateStrategy.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\n/**\n * @title IReserveInterestRateStrategyInterface interface\n * @dev Interface for the calculation of the interest rates\n * @author Aave\n */\ninterface IReserveInterestRateStrategy {\n  function baseVariableBorrowRate() external view returns (uint256);\n\n  function getMaxVariableBorrowRate() external view returns (uint256);\n\n  function calculateInterestRates(\n    address reserve,\n    uint256 availableLiquidity,\n    uint256 totalStableDebt,\n    uint256 totalVariableDebt,\n    uint256 averageStableBorrowRate,\n    uint256 reserveFactor\n  )\n    external\n    view\n    returns (\n      uint256,\n      uint256,\n      uint256\n    );\n\n  function calculateInterestRates(\n    address reserve,\n    address aToken,\n    uint256 liquidityAdded,\n    uint256 liquidityTaken,\n    uint256 totalStableDebt,\n    uint256 totalVariableDebt,\n    uint256 averageStableBorrowRate,\n    uint256 reserveFactor\n  )\n    external\n    view\n    returns (\n      uint256 liquidityRate,\n      uint256 stableBorrowRate,\n      uint256 variableBorrowRate\n    );\n}\n"
      },
      "contracts/protocol/libraries/math/MathUtils.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {SafeMath} from '../../../dependencies/openzeppelin/contracts/SafeMath.sol';\nimport {WadRayMath} from './WadRayMath.sol';\n\nlibrary MathUtils {\n  using SafeMath for uint256;\n  using WadRayMath for uint256;\n\n  /// @dev Ignoring leap years\n  uint256 internal constant SECONDS_PER_YEAR = 365 days;\n\n  /**\n   * @dev Function to calculate the interest accumulated using a linear interest rate formula\n   * @param rate The interest rate, in ray\n   * @param lastUpdateTimestamp The timestamp of the last update of the interest\n   * @return The interest rate linearly accumulated during the timeDelta, in ray\n   **/\n\n  function calculateLinearInterest(uint256 rate, uint40 lastUpdateTimestamp)\n    internal\n    view\n    returns (uint256)\n  {\n    //solium-disable-next-line\n    uint256 timeDifference = block.timestamp.sub(uint256(lastUpdateTimestamp));\n\n    return (rate.mul(timeDifference) / SECONDS_PER_YEAR).add(WadRayMath.ray());\n  }\n\n  /**\n   * @dev Function to calculate the interest using a compounded interest rate formula\n   * To avoid expensive exponentiation, the calculation is performed using a binomial approximation:\n   *\n   *  (1+x)^n = 1+n*x+[n/2*(n-1)]*x^2+[n/6*(n-1)*(n-2)*x^3...\n   *\n   * The approximation slightly underpays liquidity providers and undercharges borrowers, with the advantage of great gas cost reductions\n   * The whitepaper contains reference to the approximation and a table showing the margin of error per different time periods\n   *\n   * @param rate The interest rate, in ray\n   * @param lastUpdateTimestamp The timestamp of the last update of the interest\n   * @return The interest rate compounded during the timeDelta, in ray\n   **/\n  function calculateCompoundedInterest(\n    uint256 rate,\n    uint40 lastUpdateTimestamp,\n    uint256 currentTimestamp\n  ) internal pure returns (uint256) {\n    //solium-disable-next-line\n    uint256 exp = currentTimestamp.sub(uint256(lastUpdateTimestamp));\n\n    if (exp == 0) {\n      return WadRayMath.ray();\n    }\n\n    uint256 expMinusOne = exp - 1;\n\n    uint256 expMinusTwo = exp > 2 ? exp - 2 : 0;\n\n    uint256 ratePerSecond = rate / SECONDS_PER_YEAR;\n\n    uint256 basePowerTwo = ratePerSecond.rayMul(ratePerSecond);\n    uint256 basePowerThree = basePowerTwo.rayMul(ratePerSecond);\n\n    uint256 secondTerm = exp.mul(expMinusOne).mul(basePowerTwo) / 2;\n    uint256 thirdTerm = exp.mul(expMinusOne).mul(expMinusTwo).mul(basePowerThree) / 6;\n\n    return WadRayMath.ray().add(ratePerSecond.mul(exp)).add(secondTerm).add(thirdTerm);\n  }\n\n  /**\n   * @dev Calculates the compounded interest between the timestamp of the last update and the current block timestamp\n   * @param rate The interest rate (in ray)\n   * @param lastUpdateTimestamp The timestamp from which the interest accumulation needs to be calculated\n   **/\n  function calculateCompoundedInterest(uint256 rate, uint40 lastUpdateTimestamp)\n    internal\n    view\n    returns (uint256)\n  {\n    return calculateCompoundedInterest(rate, lastUpdateTimestamp, block.timestamp);\n  }\n}\n"
      },
      "contracts/mocks/flashloan/MockFlashLoanReceiver.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {SafeMath} from '../../dependencies/openzeppelin/contracts/SafeMath.sol';\nimport {IERC20} from '../../dependencies/openzeppelin/contracts/IERC20.sol';\n\nimport {FlashLoanReceiverBase} from '../../flashloan/base/FlashLoanReceiverBase.sol';\nimport {MintableERC20} from '../tokens/MintableERC20.sol';\nimport {SafeERC20} from '../../dependencies/openzeppelin/contracts/SafeERC20.sol';\nimport {ILendingPoolAddressesProvider} from '../../interfaces/ILendingPoolAddressesProvider.sol';\n\ncontract MockFlashLoanReceiver is FlashLoanReceiverBase {\n  using SafeERC20 for IERC20;\n\n  ILendingPoolAddressesProvider internal _provider;\n\n  event ExecutedWithFail(address[] _assets, uint256[] _amounts, uint256[] _premiums);\n  event ExecutedWithSuccess(address[] _assets, uint256[] _amounts, uint256[] _premiums);\n\n  bool _failExecution;\n  uint256 _amountToApprove;\n  bool _simulateEOA;\n\n  constructor(ILendingPoolAddressesProvider provider) public FlashLoanReceiverBase(provider) {}\n\n  function setFailExecutionTransfer(bool fail) public {\n    _failExecution = fail;\n  }\n\n  function setAmountToApprove(uint256 amountToApprove) public {\n    _amountToApprove = amountToApprove;\n  }\n\n  function setSimulateEOA(bool flag) public {\n    _simulateEOA = flag;\n  }\n\n  function amountToApprove() public view returns (uint256) {\n    return _amountToApprove;\n  }\n\n  function simulateEOA() public view returns (bool) {\n    return _simulateEOA;\n  }\n\n  function executeOperation(\n    address[] memory assets,\n    uint256[] memory amounts,\n    uint256[] memory premiums,\n    address initiator,\n    bytes memory params\n  ) public override returns (bool) {\n    params;\n    initiator;\n\n    if (_failExecution) {\n      emit ExecutedWithFail(assets, amounts, premiums);\n      return !_simulateEOA;\n    }\n\n    for (uint256 i = 0; i < assets.length; i++) {\n      //mint to this contract the specific amount\n      MintableERC20 token = MintableERC20(assets[i]);\n\n      //check the contract has the specified balance\n      require(\n        amounts[i] <= IERC20(assets[i]).balanceOf(address(this)),\n        'Invalid balance for the contract'\n      );\n\n      uint256 amountToReturn =\n        (_amountToApprove != 0) ? _amountToApprove : amounts[i].add(premiums[i]);\n      //execution does not fail - mint tokens and return them to the _destination\n\n      token.mint(premiums[i]);\n\n      IERC20(assets[i]).approve(address(LENDING_POOL), amountToReturn);\n    }\n\n    emit ExecutedWithSuccess(assets, amounts, premiums);\n\n    return true;\n  }\n}\n"
      },
      "contracts/mocks/tokens/MintableERC20.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {ERC20} from '../../dependencies/openzeppelin/contracts/ERC20.sol';\n\n/**\n * @title ERC20Mintable\n * @dev ERC20 minting logic\n */\ncontract MintableERC20 is ERC20 {\n  constructor(\n    string memory name,\n    string memory symbol,\n    uint8 decimals\n  ) public ERC20(name, symbol) {\n    _setupDecimals(decimals);\n  }\n\n  /**\n   * @dev Function to mint tokens\n   * @param value The amount of tokens to mint.\n   * @return A boolean that indicates if the operation was successful.\n   */\n  function mint(uint256 value) public returns (bool) {\n    _mint(_msgSender(), value);\n    return true;\n  }\n}\n"
      },
      "contracts/dependencies/openzeppelin/contracts/ERC20.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\nimport './Context.sol';\nimport './IERC20.sol';\nimport './SafeMath.sol';\nimport './Address.sol';\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * We have followed general OpenZeppelin guidelines: functions revert instead\n * of returning `false` on failure. This behavior is nonetheless conventional\n * and does not conflict with the expectations of ERC20 applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is Context, IERC20 {\n  using SafeMath for uint256;\n  using Address for address;\n\n  mapping(address => uint256) private _balances;\n\n  mapping(address => mapping(address => uint256)) private _allowances;\n\n  uint256 private _totalSupply;\n\n  string internal _name;\n  string internal _symbol;\n  uint8 private _decimals;\n\n  /**\n   * @dev Sets the values for {name} and {symbol}, initializes {decimals} with\n   * a default value of 18.\n   *\n   * To select a different value for {decimals}, use {_setupDecimals}.\n   *\n   * All three of these values are immutable: they can only be set once during\n   * construction.\n   */\n  constructor(string memory name, string memory symbol) public {\n    _name = name;\n    _symbol = symbol;\n    _decimals = 18;\n  }\n\n  /**\n   * @dev Returns the name of the token.\n   */\n  function name() public view returns (string memory) {\n    return _name;\n  }\n\n  /**\n   * @dev Returns the symbol of the token, usually a shorter version of the\n   * name.\n   */\n  function symbol() public view returns (string memory) {\n    return _symbol;\n  }\n\n  /**\n   * @dev Returns the number of decimals used to get its user representation.\n   * For example, if `decimals` equals `2`, a balance of `505` tokens should\n   * be displayed to a user as `5,05` (`505 / 10 ** 2`).\n   *\n   * Tokens usually opt for a value of 18, imitating the relationship between\n   * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n   * called.\n   *\n   * NOTE: This information is only used for _display_ purposes: it in\n   * no way affects any of the arithmetic of the contract, including\n   * {IERC20-balanceOf} and {IERC20-transfer}.\n   */\n  function decimals() public view returns (uint8) {\n    return _decimals;\n  }\n\n  /**\n   * @dev See {IERC20-totalSupply}.\n   */\n  function totalSupply() public view override returns (uint256) {\n    return _totalSupply;\n  }\n\n  /**\n   * @dev See {IERC20-balanceOf}.\n   */\n  function balanceOf(address account) public view override returns (uint256) {\n    return _balances[account];\n  }\n\n  /**\n   * @dev See {IERC20-transfer}.\n   *\n   * Requirements:\n   *\n   * - `recipient` cannot be the zero address.\n   * - the caller must have a balance of at least `amount`.\n   */\n  function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\n    _transfer(_msgSender(), recipient, amount);\n    return true;\n  }\n\n  /**\n   * @dev See {IERC20-allowance}.\n   */\n  function allowance(address owner, address spender)\n    public\n    view\n    virtual\n    override\n    returns (uint256)\n  {\n    return _allowances[owner][spender];\n  }\n\n  /**\n   * @dev See {IERC20-approve}.\n   *\n   * Requirements:\n   *\n   * - `spender` cannot be the zero address.\n   */\n  function approve(address spender, uint256 amount) public virtual override returns (bool) {\n    _approve(_msgSender(), spender, amount);\n    return true;\n  }\n\n  /**\n   * @dev See {IERC20-transferFrom}.\n   *\n   * Emits an {Approval} event indicating the updated allowance. This is not\n   * required by the EIP. See the note at the beginning of {ERC20};\n   *\n   * Requirements:\n   * - `sender` and `recipient` cannot be the zero address.\n   * - `sender` must have a balance of at least `amount`.\n   * - the caller must have allowance for ``sender``'s tokens of at least\n   * `amount`.\n   */\n  function transferFrom(\n    address sender,\n    address recipient,\n    uint256 amount\n  ) public virtual override returns (bool) {\n    _transfer(sender, recipient, amount);\n    _approve(\n      sender,\n      _msgSender(),\n      _allowances[sender][_msgSender()].sub(amount, 'ERC20: transfer amount exceeds allowance')\n    );\n    return true;\n  }\n\n  /**\n   * @dev Atomically increases the allowance granted to `spender` by the caller.\n   *\n   * This is an alternative to {approve} that can be used as a mitigation for\n   * problems described in {IERC20-approve}.\n   *\n   * Emits an {Approval} event indicating the updated allowance.\n   *\n   * Requirements:\n   *\n   * - `spender` cannot be the zero address.\n   */\n  function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n    _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\n    return true;\n  }\n\n  /**\n   * @dev Atomically decreases the allowance granted to `spender` by the caller.\n   *\n   * This is an alternative to {approve} that can be used as a mitigation for\n   * problems described in {IERC20-approve}.\n   *\n   * Emits an {Approval} event indicating the updated allowance.\n   *\n   * Requirements:\n   *\n   * - `spender` cannot be the zero address.\n   * - `spender` must have allowance for the caller of at least\n   * `subtractedValue`.\n   */\n  function decreaseAllowance(address spender, uint256 subtractedValue)\n    public\n    virtual\n    returns (bool)\n  {\n    _approve(\n      _msgSender(),\n      spender,\n      _allowances[_msgSender()][spender].sub(\n        subtractedValue,\n        'ERC20: decreased allowance below zero'\n      )\n    );\n    return true;\n  }\n\n  /**\n   * @dev Moves tokens `amount` from `sender` to `recipient`.\n   *\n   * This is internal function is equivalent to {transfer}, and can be used to\n   * e.g. implement automatic token fees, slashing mechanisms, etc.\n   *\n   * Emits a {Transfer} event.\n   *\n   * Requirements:\n   *\n   * - `sender` cannot be the zero address.\n   * - `recipient` cannot be the zero address.\n   * - `sender` must have a balance of at least `amount`.\n   */\n  function _transfer(\n    address sender,\n    address recipient,\n    uint256 amount\n  ) internal virtual {\n    require(sender != address(0), 'ERC20: transfer from the zero address');\n    require(recipient != address(0), 'ERC20: transfer to the zero address');\n\n    _beforeTokenTransfer(sender, recipient, amount);\n\n    _balances[sender] = _balances[sender].sub(amount, 'ERC20: transfer amount exceeds balance');\n    _balances[recipient] = _balances[recipient].add(amount);\n    emit Transfer(sender, recipient, amount);\n  }\n\n  /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n   * the total supply.\n   *\n   * Emits a {Transfer} event with `from` set to the zero address.\n   *\n   * Requirements\n   *\n   * - `to` cannot be the zero address.\n   */\n  function _mint(address account, uint256 amount) internal virtual {\n    require(account != address(0), 'ERC20: mint to the zero address');\n\n    _beforeTokenTransfer(address(0), account, amount);\n\n    _totalSupply = _totalSupply.add(amount);\n    _balances[account] = _balances[account].add(amount);\n    emit Transfer(address(0), account, amount);\n  }\n\n  /**\n   * @dev Destroys `amount` tokens from `account`, reducing the\n   * total supply.\n   *\n   * Emits a {Transfer} event with `to` set to the zero address.\n   *\n   * Requirements\n   *\n   * - `account` cannot be the zero address.\n   * - `account` must have at least `amount` tokens.\n   */\n  function _burn(address account, uint256 amount) internal virtual {\n    require(account != address(0), 'ERC20: burn from the zero address');\n\n    _beforeTokenTransfer(account, address(0), amount);\n\n    _balances[account] = _balances[account].sub(amount, 'ERC20: burn amount exceeds balance');\n    _totalSupply = _totalSupply.sub(amount);\n    emit Transfer(account, address(0), amount);\n  }\n\n  /**\n   * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n   *\n   * This is internal function is equivalent to `approve`, and can be used to\n   * e.g. set automatic allowances for certain subsystems, etc.\n   *\n   * Emits an {Approval} event.\n   *\n   * Requirements:\n   *\n   * - `owner` cannot be the zero address.\n   * - `spender` cannot be the zero address.\n   */\n  function _approve(\n    address owner,\n    address spender,\n    uint256 amount\n  ) internal virtual {\n    require(owner != address(0), 'ERC20: approve from the zero address');\n    require(spender != address(0), 'ERC20: approve to the zero address');\n\n    _allowances[owner][spender] = amount;\n    emit Approval(owner, spender, amount);\n  }\n\n  /**\n   * @dev Sets {decimals} to a value other than the default one of 18.\n   *\n   * WARNING: This function should only be called from the constructor. Most\n   * applications that interact with token contracts will not expect\n   * {decimals} to ever change, and may work incorrectly if it does.\n   */\n  function _setupDecimals(uint8 decimals_) internal {\n    _decimals = decimals_;\n  }\n\n  /**\n   * @dev Hook that is called before any transfer of tokens. This includes\n   * minting and burning.\n   *\n   * Calling conditions:\n   *\n   * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n   * will be to transferred to `to`.\n   * - when `from` is zero, `amount` tokens will be minted for `to`.\n   * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n   * - `from` and `to` are never both zero.\n   *\n   * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n   */\n  function _beforeTokenTransfer(\n    address from,\n    address to,\n    uint256 amount\n  ) internal virtual {}\n}\n"
      },
      "contracts/protocol/tokenization/StaticATokenLM.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\n\nimport {ILendingPool} from '../../interfaces/ILendingPool.sol';\nimport {IScaledBalanceToken} from '../../interfaces/IScaledBalanceToken.sol';\nimport {IERC20} from '../../dependencies/openzeppelin/contracts/IERC20.sol';\nimport {IERC20Detailed} from '../../dependencies/openzeppelin/contracts/IERC20Detailed.sol';\nimport {IAToken} from '../../interfaces/IAToken.sol';\nimport {IStaticATokenLM} from '../../interfaces/IStaticATokenLM.sol';\nimport {IAaveIncentivesController} from '../../interfaces/IAaveIncentivesController.sol';\nimport {IInitializableStaticATokenLM} from '../../interfaces/IInitializableStaticATokenLM.sol';\nimport {VersionedInitializable} from '../libraries/aave-upgradeability/VersionedInitializable.sol';\n\nimport {StaticATokenErrors} from '../libraries/helpers/StaticATokenErrors.sol';\n\nimport {ERC20} from '../../dependencies/openzeppelin/contracts/ERC20.sol';\nimport {SafeERC20} from '../../dependencies/openzeppelin/contracts/SafeERC20.sol';\nimport {WadRayMath} from '../../protocol/libraries/math/WadRayMath.sol';\nimport {RayMathNoRounding} from '../../protocol/libraries/math/RayMathNoRounding.sol';\nimport {SafeMath} from '../../dependencies/openzeppelin/contracts/SafeMath.sol';\n\ninterface ITokenBridge {\n  function sendMessageStaticAToken(uint256) external;\n}\n\n/**\n * @title StaticATokenLM\n * @notice Wrapper token that allows to deposit tokens on the Aave protocol and receive\n * a token which balance doesn't increase automatically, but uses an ever-increasing exchange rate.\n * The token support claiming liquidity mining rewards from the Aave system.\n * @author Aave\n **/\ncontract StaticATokenLM is\n  VersionedInitializable,\n  ERC20('STATIC_ATOKEN_IMPL', 'STATIC_ATOKEN_IMPL'),\n  IStaticATokenLM\n{\n  using SafeERC20 for IERC20;\n  using SafeMath for uint256;\n  using WadRayMath for uint256;\n  using RayMathNoRounding for uint256;\n\n  bytes public constant EIP712_REVISION = bytes('1');\n  bytes32 internal constant EIP712_DOMAIN =\n    keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)');\n  bytes32 public constant PERMIT_TYPEHASH =\n    keccak256('Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)');\n  bytes32 public constant METADEPOSIT_TYPEHASH =\n    keccak256(\n      'Deposit(address depositor,address recipient,uint256 value,uint16 referralCode,bool fromUnderlying,uint256 nonce,uint256 deadline)'\n    );\n  bytes32 public constant METAWITHDRAWAL_TYPEHASH =\n    keccak256(\n      'Withdraw(address owner,address recipient,uint256 staticAmount,uint256 dynamicAmount,bool toUnderlying,uint256 nonce,uint256 deadline)'\n    );\n\n  uint256 public constant STATIC_ATOKEN_LM_REVISION = 0x1;\n\n  ILendingPool public override LENDING_POOL;\n  IAaveIncentivesController public override INCENTIVES_CONTROLLER;\n  IERC20 public override ATOKEN;\n  IERC20 public override ASSET;\n  IERC20 public override REWARD_TOKEN;\n\n  mapping(address => uint256) public _nonces;\n\n  // user => _accRewardsPerToken at last interaction (in RAYs)\n  mapping(address => uint256) private _userSnapshotRewardsPerToken;\n  // user => unclaimedRewards (in RAYs)\n  mapping(address => uint256) private _unclaimedRewards;\n\n  address private _l1TokenBridge;\n\n  ///@inheritdoc VersionedInitializable\n  function getRevision() internal pure virtual override returns (uint256) {\n    return STATIC_ATOKEN_LM_REVISION;\n  }\n\n  ///@inheritdoc IInitializableStaticATokenLM\n  function initialize(\n    ILendingPool pool,\n    address aToken,\n    string calldata staticATokenName,\n    string calldata staticATokenSymbol,\n    address l1TokenBridge\n  ) external override initializer {\n    _l1TokenBridge = l1TokenBridge;\n    LENDING_POOL = pool;\n    ATOKEN = IERC20(aToken);\n\n    _name = staticATokenName;\n    _symbol = staticATokenSymbol;\n    _setupDecimals(IERC20Detailed(aToken).decimals());\n\n    ASSET = IERC20(IAToken(aToken).UNDERLYING_ASSET_ADDRESS());\n    ASSET.safeApprove(address(pool), type(uint256).max);\n\n    try IAToken(aToken).getIncentivesController() returns (\n      IAaveIncentivesController incentivesController\n    ) {\n      if (address(incentivesController) != address(0)) {\n        INCENTIVES_CONTROLLER = incentivesController;\n        REWARD_TOKEN = IERC20(INCENTIVES_CONTROLLER.REWARD_TOKEN());\n      }\n    } catch {}\n\n    emit Initialized(address(pool), aToken, staticATokenName, staticATokenSymbol);\n  }\n\n  ///@inheritdoc IStaticATokenLM\n  function deposit(\n    address recipient,\n    uint256 amount,\n    uint16 referralCode,\n    bool fromUnderlying\n  ) external override returns (uint256) {\n    return _deposit(msg.sender, recipient, amount, referralCode, fromUnderlying);\n  }\n\n  ///@inheritdoc IStaticATokenLM\n  function withdraw(\n    address recipient,\n    uint256 amount,\n    bool toUnderlying\n  ) external override returns (uint256, uint256) {\n    return _withdraw(msg.sender, recipient, amount, 0, toUnderlying);\n  }\n\n  ///@inheritdoc IStaticATokenLM\n  function withdrawDynamicAmount(\n    address recipient,\n    uint256 amount,\n    bool toUnderlying\n  ) external override returns (uint256, uint256) {\n    return _withdraw(msg.sender, recipient, 0, amount, toUnderlying);\n  }\n\n  ///@inheritdoc IStaticATokenLM\n  function permit(\n    address owner,\n    address spender,\n    uint256 value,\n    uint256 deadline,\n    uint8 v,\n    bytes32 r,\n    bytes32 s\n  ) external override {\n    require(owner != address(0), StaticATokenErrors.INVALID_OWNER);\n    //solium-disable-next-line\n    require(block.timestamp <= deadline, StaticATokenErrors.INVALID_EXPIRATION);\n    uint256 currentValidNonce = _nonces[owner];\n    bytes32 digest =\n      keccak256(\n        abi.encodePacked(\n          '\\x19\\x01',\n          getDomainSeparator(),\n          keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, currentValidNonce, deadline))\n        )\n      );\n    require(owner == ecrecover(digest, v, r, s), StaticATokenErrors.INVALID_SIGNATURE);\n    _nonces[owner] = currentValidNonce.add(1);\n    _approve(owner, spender, value);\n  }\n\n  ///@inheritdoc IStaticATokenLM\n  function metaDeposit(\n    address depositor,\n    address recipient,\n    uint256 value,\n    uint16 referralCode,\n    bool fromUnderlying,\n    uint256 deadline,\n    SignatureParams calldata sigParams\n  ) external override returns (uint256) {\n    require(depositor != address(0), StaticATokenErrors.INVALID_DEPOSITOR);\n    //solium-disable-next-line\n    require(block.timestamp <= deadline, StaticATokenErrors.INVALID_EXPIRATION);\n    uint256 currentValidNonce = _nonces[depositor];\n    bytes32 digest =\n      keccak256(\n        abi.encodePacked(\n          '\\x19\\x01',\n          getDomainSeparator(),\n          keccak256(\n            abi.encode(\n              METADEPOSIT_TYPEHASH,\n              depositor,\n              recipient,\n              value,\n              referralCode,\n              fromUnderlying,\n              currentValidNonce,\n              deadline\n            )\n          )\n        )\n      );\n    require(\n      depositor == ecrecover(digest, sigParams.v, sigParams.r, sigParams.s),\n      StaticATokenErrors.INVALID_SIGNATURE\n    );\n    _nonces[depositor] = currentValidNonce.add(1);\n    return _deposit(depositor, recipient, value, referralCode, fromUnderlying);\n  }\n\n  ///@inheritdoc IStaticATokenLM\n  function metaWithdraw(\n    address owner,\n    address recipient,\n    uint256 staticAmount,\n    uint256 dynamicAmount,\n    bool toUnderlying,\n    uint256 deadline,\n    SignatureParams calldata sigParams\n  ) external override returns (uint256, uint256) {\n    require(owner != address(0), StaticATokenErrors.INVALID_OWNER);\n    //solium-disable-next-line\n    require(block.timestamp <= deadline, StaticATokenErrors.INVALID_EXPIRATION);\n    uint256 currentValidNonce = _nonces[owner];\n    bytes32 digest =\n      keccak256(\n        abi.encodePacked(\n          '\\x19\\x01',\n          getDomainSeparator(),\n          keccak256(\n            abi.encode(\n              METAWITHDRAWAL_TYPEHASH,\n              owner,\n              recipient,\n              staticAmount,\n              dynamicAmount,\n              toUnderlying,\n              currentValidNonce,\n              deadline\n            )\n          )\n        )\n      );\n\n    require(\n      owner == ecrecover(digest, sigParams.v, sigParams.r, sigParams.s),\n      StaticATokenErrors.INVALID_SIGNATURE\n    );\n    _nonces[owner] = currentValidNonce.add(1);\n    return _withdraw(owner, recipient, staticAmount, dynamicAmount, toUnderlying);\n  }\n\n  ///@inheritdoc IStaticATokenLM\n  function dynamicBalanceOf(address account) external view override returns (uint256) {\n    return _staticToDynamicAmount(balanceOf(account), rate());\n  }\n\n  ///@inheritdoc IStaticATokenLM\n  function staticToDynamicAmount(uint256 amount) external view override returns (uint256) {\n    return _staticToDynamicAmount(amount, rate());\n  }\n\n  ///@inheritdoc IStaticATokenLM\n  function dynamicToStaticAmount(uint256 amount) external view override returns (uint256) {\n    return _dynamicToStaticAmount(amount, rate());\n  }\n\n  ///@inheritdoc IStaticATokenLM\n  function rate() public view override returns (uint256) {\n    return LENDING_POOL.getReserveNormalizedIncome(address(ASSET));\n  }\n\n  ///@inheritdoc IStaticATokenLM\n  function getDomainSeparator() public view override returns (bytes32) {\n    uint256 chainId;\n    assembly {\n      chainId := chainid()\n    }\n    return\n      keccak256(\n        abi.encode(\n          EIP712_DOMAIN,\n          keccak256(bytes(name())),\n          keccak256(EIP712_REVISION),\n          chainId,\n          address(this)\n        )\n      );\n  }\n\n  function _dynamicToStaticAmount(uint256 amount, uint256 rate) internal pure returns (uint256) {\n    return amount.rayDiv(rate);\n  }\n\n  function _staticToDynamicAmount(uint256 amount, uint256 rate) internal pure returns (uint256) {\n    return amount.rayMul(rate);\n  }\n\n  function _deposit(\n    address depositor,\n    address recipient,\n    uint256 amount,\n    uint16 referralCode,\n    bool fromUnderlying\n  ) internal returns (uint256) {\n    require(recipient != address(0), StaticATokenErrors.INVALID_RECIPIENT);\n\n    if (fromUnderlying) {\n      ASSET.safeTransferFrom(depositor, address(this), amount);\n      LENDING_POOL.deposit(address(ASSET), amount, address(this), referralCode);\n    } else {\n      ATOKEN.safeTransferFrom(depositor, address(this), amount);\n    }\n    uint256 amountToMint = _dynamicToStaticAmount(amount, rate());\n    _mint(recipient, amountToMint);\n\n    return amountToMint;\n  }\n\n  function _withdraw(\n    address owner,\n    address recipient,\n    uint256 staticAmount,\n    uint256 dynamicAmount,\n    bool toUnderlying\n  ) internal returns (uint256, uint256) {\n    require(recipient != address(0), StaticATokenErrors.INVALID_RECIPIENT);\n    require(\n      staticAmount == 0 || dynamicAmount == 0,\n      StaticATokenErrors.ONLY_ONE_AMOUNT_FORMAT_ALLOWED\n    );\n\n    uint256 userBalance = balanceOf(owner);\n\n    uint256 amountToWithdraw;\n    uint256 amountToBurn;\n\n    uint256 currentRate = rate();\n    if (staticAmount > 0) {\n      amountToBurn = (staticAmount > userBalance) ? userBalance : staticAmount;\n      amountToWithdraw = _staticToDynamicAmount(amountToBurn, currentRate);\n    } else {\n      uint256 dynamicUserBalance = _staticToDynamicAmount(userBalance, currentRate);\n      amountToWithdraw = (dynamicAmount > dynamicUserBalance) ? dynamicUserBalance : dynamicAmount;\n      amountToBurn = _dynamicToStaticAmount(amountToWithdraw, currentRate);\n    }\n\n    _burn(owner, amountToBurn);\n\n    if (toUnderlying) {\n      LENDING_POOL.withdraw(address(ASSET), amountToWithdraw, recipient);\n    } else {\n      ATOKEN.safeTransfer(recipient, amountToWithdraw);\n    }\n\n    return (amountToBurn, amountToWithdraw);\n  }\n\n  /**\n   * @notice Updates rewards for senders and receiver in a transfer (not updating rewards for address(0))\n   * @param from The address of the sender of tokens\n   * @param to The address of the receiver of tokens\n   * @param amount The amount of tokens to transfer in WAD\n   */\n  function _beforeTokenTransfer(\n    address from,\n    address to,\n    uint256 amount\n  ) internal override {\n    if (address(INCENTIVES_CONTROLLER) == address(0)) {\n      return;\n    }\n    uint256 rewardsIndex = getCurrentRewardsIndex();\n    if (from != address(0)) {\n      _updateUser(from, rewardsIndex);\n    }\n    if (to != address(0) && from != to) {\n      _updateUser(to, rewardsIndex);\n    }\n    if (_l1TokenBridge != address(0x0)) {\n      _updateL2TokenState(rewardsIndex);\n    }\n  }\n\n  ///@inheritdoc IStaticATokenLM\n  //* @return Rewards claimed\n  function collectAndUpdateRewards() public override returns (uint256) {\n    if (address(INCENTIVES_CONTROLLER) == address(0)) {\n      return 0;\n    }\n\n    address[] memory assets = new address[](1);\n    assets[0] = address(ATOKEN);\n\n    return INCENTIVES_CONTROLLER.claimRewards(assets, type(uint256).max, address(this));\n  }\n\n  /**\n   * @notice Claim rewards on behalf of a user and send them to a receiver\n   * @param onBehalfOf The address to claim on behalf of\n   * @param receiver The address to receive the rewards\n   */\n  function _claimRewardsOnBehalf(address onBehalfOf, address receiver) internal {\n    uint256 currentRewardsIndex = getCurrentRewardsIndex();\n    uint256 balance = balanceOf(onBehalfOf);\n    uint256 userReward = _getClaimableRewards(onBehalfOf, balance, currentRewardsIndex);\n    uint256 totalRewardTokenBalance = REWARD_TOKEN.balanceOf(address(this));\n    uint256 unclaimedReward = 0;\n\n    if (userReward > totalRewardTokenBalance) {\n      totalRewardTokenBalance += collectAndUpdateRewards();\n    }\n\n    if (userReward > totalRewardTokenBalance) {\n      unclaimedReward = userReward - totalRewardTokenBalance;\n      userReward = totalRewardTokenBalance;\n    }\n    if (userReward > 0) {\n      _unclaimedRewards[onBehalfOf] = unclaimedReward;\n      _updateUserSnapshotRewardsPerToken(onBehalfOf, currentRewardsIndex);\n      REWARD_TOKEN.safeTransfer(receiver, userReward);\n    }\n  }\n\n  function claimRewardsOnBehalf(address onBehalfOf, address receiver) external override {\n    if (address(INCENTIVES_CONTROLLER) == address(0)) {\n      return;\n    }\n\n    require(\n      msg.sender == onBehalfOf || msg.sender == INCENTIVES_CONTROLLER.getClaimer(onBehalfOf),\n      StaticATokenErrors.INVALID_CLAIMER\n    );\n    _claimRewardsOnBehalf(onBehalfOf, receiver);\n  }\n\n  function claimRewards(address receiver) external override {\n    if (address(INCENTIVES_CONTROLLER) == address(0)) {\n      return;\n    }\n    _claimRewardsOnBehalf(msg.sender, receiver);\n  }\n\n  function claimRewardsToSelf() external override {\n    if (address(INCENTIVES_CONTROLLER) == address(0)) {\n      return;\n    }\n    _claimRewardsOnBehalf(msg.sender, msg.sender);\n  }\n\n  /**\n   * @notice Update the rewardDebt for a user with balance as his balance\n   * @param user The user to update\n   */\n  function _updateUserSnapshotRewardsPerToken(address user, uint256 currentRewardsIndex) internal {\n    _userSnapshotRewardsPerToken[user] = currentRewardsIndex;\n  }\n\n  /**\n   * @notice Adding the pending rewards to the unclaimed for specific user and updating user index\n   * @param user The address of the user to update\n   */\n  function _updateUser(address user, uint256 currentRewardsIndex) internal {\n    uint256 balance = balanceOf(user);\n    if (balance > 0) {\n      uint256 pending = _getPendingRewards(user, balance, currentRewardsIndex);\n      _unclaimedRewards[user] = _unclaimedRewards[user].add(pending);\n    }\n    _updateUserSnapshotRewardsPerToken(user, currentRewardsIndex);\n  }\n\n  function _updateL2TokenState(uint256 currentRewardsIndex) internal {\n    ITokenBridge(_l1TokenBridge).sendMessageStaticAToken(currentRewardsIndex);\n  }\n\n  /**\n   * @notice Compute the pending in RAY (rounded down). Pending is the amount to add (not yet unclaimed) rewards in RAY (rounded down).\n   * @param user The user to compute for\n   * @param balance The balance of the user\n   * @return The amound of pending rewards in RAY\n   */\n  function _getPendingRewards(\n    address user,\n    uint256 balance,\n    uint256 currentRewardsIndex\n  ) internal view returns (uint256) {\n    if (address(INCENTIVES_CONTROLLER) == address(0)) {\n      // TODO: let's see, looks useless\n      return 0;\n    }\n\n    if (balance == 0) {\n      return 0;\n    }\n\n    uint256 rayBalance = balance.wadToRay();\n    return rayBalance.rayMulNoRounding(currentRewardsIndex.sub(_userSnapshotRewardsPerToken[user]));\n  }\n\n  /**\n   * @notice Compute the claimable rewards for a user\n   * @param user The address of the user\n   * @param balance The balance of the user in WAD\n   * @return The total rewards that can be claimed by the user (if `fresh` flag true, after updating rewards)\n   */\n  function _getClaimableRewards(\n    address user,\n    uint256 balance,\n    uint256 currentRewardsIndex\n  ) internal view returns (uint256) {\n    uint256 reward =\n      _unclaimedRewards[user].add(_getPendingRewards(user, balance, currentRewardsIndex));\n    return reward;\n  }\n\n  ///@inheritdoc IStaticATokenLM\n  function getCurrentRewardsIndex() public view override returns (uint256) {\n    (uint256 index, uint256 emissionPerSecond, uint256 lastUpdateTimestamp) =\n      INCENTIVES_CONTROLLER.getAssetData(address(ATOKEN));\n    uint256 distributionEnd = INCENTIVES_CONTROLLER.DISTRIBUTION_END();\n    uint256 totalSupply = IScaledBalanceToken(address(ATOKEN)).scaledTotalSupply();\n\n    if (\n      emissionPerSecond == 0 ||\n      totalSupply == 0 ||\n      lastUpdateTimestamp == block.timestamp ||\n      lastUpdateTimestamp >= distributionEnd\n    ) {\n      return index;\n    }\n\n    uint256 currentTimestamp =\n      block.timestamp > distributionEnd ? distributionEnd : block.timestamp;\n    uint256 timeDelta = currentTimestamp.sub(lastUpdateTimestamp);\n    return emissionPerSecond.mul(timeDelta).mul(10**uint256(18)).div(totalSupply).add(index); // 18- precision, should be loaded\n  }\n\n  ///@inheritdoc IStaticATokenLM\n  function getTotalClaimableRewards() external view override returns (uint256) {\n    if (address(INCENTIVES_CONTROLLER) == address(0)) {\n      return 0;\n    }\n\n    address[] memory assets = new address[](1);\n    assets[0] = address(ATOKEN);\n    uint256 freshRewards = INCENTIVES_CONTROLLER.getRewardsBalance(assets, address(this));\n    return REWARD_TOKEN.balanceOf(address(this)).add(freshRewards);\n  }\n\n  ///@inheritdoc IStaticATokenLM\n  function getClaimableRewards(address user) external view override returns (uint256) {\n    return _getClaimableRewards(user, balanceOf(user), getCurrentRewardsIndex());\n  }\n\n  ///@inheritdoc IStaticATokenLM\n  function getUnclaimedRewards(address user) external view override returns (uint256) {\n    return _unclaimedRewards[user].rayToWadNoRounding();\n  }\n\n  function getIncentivesController() external view override returns (IAaveIncentivesController) {\n    return INCENTIVES_CONTROLLER;\n  }\n\n  function UNDERLYING_ASSET_ADDRESS() external view override returns (address) {\n    return address(ASSET);\n  }\n}\n"
      },
      "contracts/interfaces/IStaticATokenLM.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\n\nimport {IERC20} from '../dependencies/openzeppelin/contracts/IERC20.sol';\nimport {ILendingPool} from './ILendingPool.sol';\nimport {IAaveIncentivesController} from './IAaveIncentivesController.sol';\nimport {IInitializableStaticATokenLM} from './IInitializableStaticATokenLM.sol';\n\ninterface IStaticATokenLM is IERC20, IInitializableStaticATokenLM {\n  struct SignatureParams {\n    uint8 v;\n    bytes32 r;\n    bytes32 s;\n  }\n\n  /**\n   * @notice Deposits `ASSET` in the Aave protocol and mints static aTokens to msg.sender\n   * @param recipient The address that will receive the static aTokens\n   * @param amount The amount of underlying `ASSET` to deposit (e.g. deposit of 100 USDC)\n   * @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   *   0 if the action is executed directly by the user, without any middle-man\n   * @param fromUnderlying bool\n   * - `true` if the msg.sender comes with underlying tokens (e.g. USDC)\n   * - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\n   * @return uint256 The amount of StaticAToken minted, static balance\n   **/\n  function deposit(\n    address recipient,\n    uint256 amount,\n    uint16 referralCode,\n    bool fromUnderlying\n  ) external returns (uint256);\n\n  /**\n   * @notice Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\n   * @param recipient The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\n   * @param amount The amount to withdraw, in static balance of StaticAToken\n   * @param toUnderlying bool\n   * - `true` for the recipient to get underlying tokens (e.g. USDC)\n   * - `false` for the recipient to get aTokens (e.g. aUSDC)\n   * @return amountToBurn: StaticATokens burnt, static balance\n   * @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance\n   **/\n  function withdraw(\n    address recipient,\n    uint256 amount,\n    bool toUnderlying\n  ) external returns (uint256, uint256);\n\n  /**\n   * @notice Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\n   * @param recipient The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\n   * @param amount The amount to withdraw, in dynamic balance of aToken/underlying asset\n   * @param toUnderlying bool\n   * - `true` for the recipient to get underlying tokens (e.g. USDC)\n   * - `false` for the recipient to get aTokens (e.g. aUSDC)\n   * @return amountToBurn: StaticATokens burnt, static balance\n   * @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance\n   **/\n  function withdrawDynamicAmount(\n    address recipient,\n    uint256 amount,\n    bool toUnderlying\n  ) external returns (uint256, uint256);\n\n  /**\n   * @notice Implements the permit function as for\n   * https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n   * @param owner The owner of the funds\n   * @param spender The spender\n   * @param value The amount\n   * @param deadline The deadline timestamp, type(uint256).max for max deadline\n   * @param v Signature param\n   * @param s Signature param\n   * @param r Signature param\n   */\n  function permit(\n    address owner,\n    address spender,\n    uint256 value,\n    uint256 deadline,\n    uint8 v,\n    bytes32 r,\n    bytes32 s\n  ) external;\n\n  /**\n   * @notice Allows to deposit on Aave via meta-transaction\n   * https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n   * @param depositor Address from which the funds to deposit are going to be pulled\n   * @param recipient Address that will receive the staticATokens, in the average case, same as the `depositor`\n   * @param value The amount to deposit\n   * @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   *   0 if the action is executed directly by the user, without any middle-man\n   * @param fromUnderlying bool\n   * - `true` if the msg.sender comes with underlying tokens (e.g. USDC)\n   * - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\n   * @param deadline The deadline timestamp, type(uint256).max for max deadline\n   * @param sigParams Signature params: v,r,s\n   * @return uint256 The amount of StaticAToken minted, static balance\n   */\n  function metaDeposit(\n    address depositor,\n    address recipient,\n    uint256 value,\n    uint16 referralCode,\n    bool fromUnderlying,\n    uint256 deadline,\n    SignatureParams calldata sigParams\n  ) external returns (uint256);\n\n  /**\n   * @notice Allows to withdraw from Aave via meta-transaction\n   * https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n   * @param owner Address owning the staticATokens\n   * @param recipient Address that will receive the underlying withdrawn from Aave\n   * @param staticAmount The amount of staticAToken to withdraw. If > 0, `dynamicAmount` needs to be 0\n   * @param dynamicAmount The amount of underlying/aToken to withdraw. If > 0, `staticAmount` needs to be 0\n   * @param toUnderlying bool\n   * - `true` for the recipient to get underlying tokens (e.g. USDC)\n   * - `false` for the recipient to get aTokens (e.g. aUSDC)\n   * @param deadline The deadline timestamp, type(uint256).max for max deadline\n   * @param sigParams Signature params: v,r,s\n   * @return amountToBurn: StaticATokens burnt, static balance\n   * @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance\n   */\n  function metaWithdraw(\n    address owner,\n    address recipient,\n    uint256 staticAmount,\n    uint256 dynamicAmount,\n    bool toUnderlying,\n    uint256 deadline,\n    SignatureParams calldata sigParams\n  ) external returns (uint256, uint256);\n\n  /**\n   * @notice Utility method to get the current aToken balance of an user, from his staticAToken balance\n   * @param account The address of the user\n   * @return uint256 The aToken balance\n   **/\n  function dynamicBalanceOf(address account) external view returns (uint256);\n\n  /**\n   * @notice Converts a static amount (scaled balance on aToken) to the aToken/underlying value,\n   * using the current liquidity index on Aave\n   * @param amount The amount to convert from\n   * @return uint256 The dynamic amount\n   **/\n  function staticToDynamicAmount(uint256 amount) external view returns (uint256);\n\n  /**\n   * @notice Converts an aToken or underlying amount to the what it is denominated on the aToken as\n   * scaled balance, function of the principal and the liquidity index\n   * @param amount The amount to convert from\n   * @return uint256 The static (scaled) amount\n   **/\n  function dynamicToStaticAmount(uint256 amount) external view returns (uint256);\n\n  /**\n   * @notice Returns the Aave liquidity index of the underlying aToken, denominated rate here\n   * as it can be considered as an ever-increasing exchange rate\n   * @return The liquidity index\n   **/\n  function rate() external view returns (uint256);\n\n  /**\n   * @notice Function to return a dynamic domain separator, in order to be compatible with forks changing chainId\n   * @return bytes32 The domain separator\n   **/\n  function getDomainSeparator() external view returns (bytes32);\n\n  /**\n   * @notice Claims rewards from `INCENTIVES_CONTROLLER` and updates internal accounting of rewards.\n   * @return uint256 Amount collected\n   */\n  function collectAndUpdateRewards() external returns (uint256);\n\n  /**\n   * @notice Claim rewards on behalf of a user and send them to a receiver\n   * @dev Only callable by if sender is onBehalfOf or sender is approved claimer\n   * @param onBehalfOf The address to claim on behalf of\n   * @param receiver The address to receive the rewards\n   */\n  function claimRewardsOnBehalf(address onBehalfOf, address receiver) external;\n\n  /**\n   * @notice Claim rewards and send them to a receiver\n   * @param receiver The address to receive the rewards\n   */\n  function claimRewards(address receiver) external;\n\n  /**\n   * @notice Claim rewards\n   */\n  function claimRewardsToSelf() external;\n\n  /**\n   * @notice Get the total claimable rewards of the contract.\n   * @return The current balance + pending rewards from the `_incentivesController`\n   */\n  function getTotalClaimableRewards() external view returns (uint256);\n\n  /**\n   * @notice Get the total claimable rewards for a user in WAD\n   * @param user The address of the user\n   * @return The claimable amount of rewards in WAD\n   */\n  function getClaimableRewards(address user) external view returns (uint256);\n\n  /**\n   * @notice The unclaimed rewards for a user in WAD\n   * @param user The address of the user\n   * @return The unclaimed amount of rewards in WAD\n   */\n  function getUnclaimedRewards(address user) external view returns (uint256);\n\n  /**\n   * @notice The underlying asset reward index in RAY\n   * @return The underlying asset reward index in RAY\n   */\n  function getCurrentRewardsIndex() external view returns (uint256);\n\n  function LENDING_POOL() external view returns (ILendingPool);\n\n  function INCENTIVES_CONTROLLER() external view returns (IAaveIncentivesController);\n\n  function ATOKEN() external view returns (IERC20);\n\n  function ASSET() external view returns (IERC20);\n\n  function REWARD_TOKEN() external view returns (IERC20);\n\n  function UNDERLYING_ASSET_ADDRESS() external view returns (address);\n\n  function getIncentivesController() external view returns (IAaveIncentivesController);\n}\n"
      },
      "contracts/interfaces/IInitializableStaticATokenLM.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {ILendingPool} from './ILendingPool.sol';\nimport {IAaveIncentivesController} from './IAaveIncentivesController.sol';\n\n/**\n * @title IInitializableStaticATokenLM\n * @notice Interface for the initialize function on StaticATokenLM\n * @author Aave\n **/\ninterface IInitializableStaticATokenLM {\n  /**\n   * @dev Emitted when a StaticATokenLM is initialized\n   * @param pool The address of the lending pool where the underlying aToken is used\n   * @param aToken The address of the underlying aToken (aWETH)\n   * @param staticATokenName The name of the Static aToken\n   * @param staticATokenSymbol The symbol of the Static aToken\n   **/\n  event Initialized(\n    address indexed pool,\n    address aToken,\n    string staticATokenName,\n    string staticATokenSymbol\n  );\n\n  /**\n   * @dev Initializes the StaticATokenLM\n   * @param pool The address of the lending pool where the underlying aToken is used\n   * @param aToken The address of the underlying aToken (aWETH)\n   * @param staticATokenName The name of the Static aToken\n   * @param staticATokenSymbol The symbol of the Static aToken\n   * @param l1TokenBridge The address of the bridge to Starknet\n   */\n  function initialize(\n    ILendingPool pool,\n    address aToken,\n    string calldata staticATokenName,\n    string calldata staticATokenSymbol,\n    address l1TokenBridge\n  ) external;\n}\n"
      },
      "contracts/protocol/libraries/helpers/StaticATokenErrors.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nlibrary StaticATokenErrors {\n  string public constant INVALID_OWNER = '1';\n  string public constant INVALID_EXPIRATION = '2';\n  string public constant INVALID_SIGNATURE = '3';\n  string public constant INVALID_DEPOSITOR = '4';\n  string public constant INVALID_RECIPIENT = '5';\n  string public constant INVALID_CLAIMER = '6';\n  string public constant ONLY_ONE_AMOUNT_FORMAT_ALLOWED = '7';\n}\n"
      },
      "contracts/protocol/libraries/math/RayMathNoRounding.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\n\nimport {Errors} from '../helpers/Errors.sol';\n\nlibrary RayMathNoRounding {\n  uint256 internal constant RAY = 1e27;\n  uint256 internal constant WAD_RAY_RATIO = 1e9;\n\n  function rayMulNoRounding(uint256 a, uint256 b) internal pure returns (uint256) {\n    if (a == 0 || b == 0) {\n      return 0;\n    }\n    require(a <= type(uint256).max / b, Errors.MATH_MULTIPLICATION_OVERFLOW);\n    return (a * b) / RAY;\n  }\n\n  function rayDivNoRounding(uint256 a, uint256 b) internal pure returns (uint256) {\n    require(b != 0, Errors.MATH_DIVISION_BY_ZERO);\n    require(a <= (type(uint256).max) / RAY, Errors.MATH_MULTIPLICATION_OVERFLOW);\n    return (a * RAY) / b;\n  }\n\n  function rayToWadNoRounding(uint256 a) internal pure returns (uint256) {\n    return a / WAD_RAY_RATIO;\n  }\n}\n"
      },
      "contracts/protocol/lendingpool/DefaultReserveInterestRateStrategy.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {SafeMath} from '../../dependencies/openzeppelin/contracts/SafeMath.sol';\nimport {IReserveInterestRateStrategy} from '../../interfaces/IReserveInterestRateStrategy.sol';\nimport {WadRayMath} from '../libraries/math/WadRayMath.sol';\nimport {PercentageMath} from '../libraries/math/PercentageMath.sol';\nimport {ILendingPoolAddressesProvider} from '../../interfaces/ILendingPoolAddressesProvider.sol';\nimport {ILendingRateOracle} from '../../interfaces/ILendingRateOracle.sol';\nimport {IERC20} from '../../dependencies/openzeppelin/contracts/IERC20.sol';\n\n/**\n * @title DefaultReserveInterestRateStrategy contract\n * @notice Implements the calculation of the interest rates depending on the reserve state\n * @dev The model of interest rate is based on 2 slopes, one before the `OPTIMAL_UTILIZATION_RATE`\n * point of utilization and another from that one to 100%\n * - An instance of this same contract, can't be used across different Aave markets, due to the caching\n *   of the LendingPoolAddressesProvider\n * @author Aave\n **/\ncontract DefaultReserveInterestRateStrategy is IReserveInterestRateStrategy {\n  using WadRayMath for uint256;\n  using SafeMath for uint256;\n  using PercentageMath for uint256;\n\n  /**\n   * @dev this constant represents the utilization rate at which the pool aims to obtain most competitive borrow rates.\n   * Expressed in ray\n   **/\n  uint256 public immutable OPTIMAL_UTILIZATION_RATE;\n\n  /**\n   * @dev This constant represents the excess utilization rate above the optimal. It's always equal to\n   * 1-optimal utilization rate. Added as a constant here for gas optimizations.\n   * Expressed in ray\n   **/\n\n  uint256 public immutable EXCESS_UTILIZATION_RATE;\n\n  ILendingPoolAddressesProvider public immutable addressesProvider;\n\n  // Base variable borrow rate when Utilization rate = 0. Expressed in ray\n  uint256 internal immutable _baseVariableBorrowRate;\n\n  // Slope of the variable interest curve when utilization rate > 0 and <= OPTIMAL_UTILIZATION_RATE. Expressed in ray\n  uint256 internal immutable _variableRateSlope1;\n\n  // Slope of the variable interest curve when utilization rate > OPTIMAL_UTILIZATION_RATE. Expressed in ray\n  uint256 internal immutable _variableRateSlope2;\n\n  // Slope of the stable interest curve when utilization rate > 0 and <= OPTIMAL_UTILIZATION_RATE. Expressed in ray\n  uint256 internal immutable _stableRateSlope1;\n\n  // Slope of the stable interest curve when utilization rate > OPTIMAL_UTILIZATION_RATE. Expressed in ray\n  uint256 internal immutable _stableRateSlope2;\n\n  constructor(\n    ILendingPoolAddressesProvider provider,\n    uint256 optimalUtilizationRate,\n    uint256 baseVariableBorrowRate,\n    uint256 variableRateSlope1,\n    uint256 variableRateSlope2,\n    uint256 stableRateSlope1,\n    uint256 stableRateSlope2\n  ) public {\n    OPTIMAL_UTILIZATION_RATE = optimalUtilizationRate;\n    EXCESS_UTILIZATION_RATE = WadRayMath.ray().sub(optimalUtilizationRate);\n    addressesProvider = provider;\n    _baseVariableBorrowRate = baseVariableBorrowRate;\n    _variableRateSlope1 = variableRateSlope1;\n    _variableRateSlope2 = variableRateSlope2;\n    _stableRateSlope1 = stableRateSlope1;\n    _stableRateSlope2 = stableRateSlope2;\n  }\n\n  function variableRateSlope1() external view returns (uint256) {\n    return _variableRateSlope1;\n  }\n\n  function variableRateSlope2() external view returns (uint256) {\n    return _variableRateSlope2;\n  }\n\n  function stableRateSlope1() external view returns (uint256) {\n    return _stableRateSlope1;\n  }\n\n  function stableRateSlope2() external view returns (uint256) {\n    return _stableRateSlope2;\n  }\n\n  function baseVariableBorrowRate() external view override returns (uint256) {\n    return _baseVariableBorrowRate;\n  }\n\n  function getMaxVariableBorrowRate() external view override returns (uint256) {\n    return _baseVariableBorrowRate.add(_variableRateSlope1).add(_variableRateSlope2);\n  }\n\n  /**\n   * @dev Calculates the interest rates depending on the reserve's state and configurations\n   * @param reserve The address of the reserve\n   * @param liquidityAdded The liquidity added during the operation\n   * @param liquidityTaken The liquidity taken during the operation\n   * @param totalStableDebt The total borrowed from the reserve a stable rate\n   * @param totalVariableDebt The total borrowed from the reserve at a variable rate\n   * @param averageStableBorrowRate The weighted average of all the stable rate loans\n   * @param reserveFactor The reserve portion of the interest that goes to the treasury of the market\n   * @return The liquidity rate, the stable borrow rate and the variable borrow rate\n   **/\n  function calculateInterestRates(\n    address reserve,\n    address aToken,\n    uint256 liquidityAdded,\n    uint256 liquidityTaken,\n    uint256 totalStableDebt,\n    uint256 totalVariableDebt,\n    uint256 averageStableBorrowRate,\n    uint256 reserveFactor\n  )\n    external\n    view\n    override\n    returns (\n      uint256,\n      uint256,\n      uint256\n    )\n  {\n    uint256 availableLiquidity = IERC20(reserve).balanceOf(aToken);\n    //avoid stack too deep\n    availableLiquidity = availableLiquidity.add(liquidityAdded).sub(liquidityTaken);\n\n    return\n      calculateInterestRates(\n        reserve,\n        availableLiquidity,\n        totalStableDebt,\n        totalVariableDebt,\n        averageStableBorrowRate,\n        reserveFactor\n      );\n  }\n\n  struct CalcInterestRatesLocalVars {\n    uint256 totalDebt;\n    uint256 currentVariableBorrowRate;\n    uint256 currentStableBorrowRate;\n    uint256 currentLiquidityRate;\n    uint256 utilizationRate;\n  }\n\n  /**\n   * @dev Calculates the interest rates depending on the reserve's state and configurations.\n   * NOTE This function is kept for compatibility with the previous DefaultInterestRateStrategy interface.\n   * New protocol implementation uses the new calculateInterestRates() interface\n   * @param reserve The address of the reserve\n   * @param availableLiquidity The liquidity available in the corresponding aToken\n   * @param totalStableDebt The total borrowed from the reserve a stable rate\n   * @param totalVariableDebt The total borrowed from the reserve at a variable rate\n   * @param averageStableBorrowRate The weighted average of all the stable rate loans\n   * @param reserveFactor The reserve portion of the interest that goes to the treasury of the market\n   * @return The liquidity rate, the stable borrow rate and the variable borrow rate\n   **/\n  function calculateInterestRates(\n    address reserve,\n    uint256 availableLiquidity,\n    uint256 totalStableDebt,\n    uint256 totalVariableDebt,\n    uint256 averageStableBorrowRate,\n    uint256 reserveFactor\n  )\n    public\n    view\n    override\n    returns (\n      uint256,\n      uint256,\n      uint256\n    )\n  {\n    CalcInterestRatesLocalVars memory vars;\n\n    vars.totalDebt = totalStableDebt.add(totalVariableDebt);\n    vars.currentVariableBorrowRate = 0;\n    vars.currentStableBorrowRate = 0;\n    vars.currentLiquidityRate = 0;\n\n    vars.utilizationRate = vars.totalDebt == 0\n      ? 0\n      : vars.totalDebt.rayDiv(availableLiquidity.add(vars.totalDebt));\n\n    vars.currentStableBorrowRate = ILendingRateOracle(addressesProvider.getLendingRateOracle())\n      .getMarketBorrowRate(reserve);\n\n    if (vars.utilizationRate > OPTIMAL_UTILIZATION_RATE) {\n      uint256 excessUtilizationRateRatio =\n        vars.utilizationRate.sub(OPTIMAL_UTILIZATION_RATE).rayDiv(EXCESS_UTILIZATION_RATE);\n\n      vars.currentStableBorrowRate = vars.currentStableBorrowRate.add(_stableRateSlope1).add(\n        _stableRateSlope2.rayMul(excessUtilizationRateRatio)\n      );\n\n      vars.currentVariableBorrowRate = _baseVariableBorrowRate.add(_variableRateSlope1).add(\n        _variableRateSlope2.rayMul(excessUtilizationRateRatio)\n      );\n    } else {\n      vars.currentStableBorrowRate = vars.currentStableBorrowRate.add(\n        _stableRateSlope1.rayMul(vars.utilizationRate.rayDiv(OPTIMAL_UTILIZATION_RATE))\n      );\n      vars.currentVariableBorrowRate = _baseVariableBorrowRate.add(\n        vars.utilizationRate.rayMul(_variableRateSlope1).rayDiv(OPTIMAL_UTILIZATION_RATE)\n      );\n    }\n\n    vars.currentLiquidityRate = _getOverallBorrowRate(\n      totalStableDebt,\n      totalVariableDebt,\n      vars\n        .currentVariableBorrowRate,\n      averageStableBorrowRate\n    )\n      .rayMul(vars.utilizationRate)\n      .percentMul(PercentageMath.PERCENTAGE_FACTOR.sub(reserveFactor));\n\n    return (\n      vars.currentLiquidityRate,\n      vars.currentStableBorrowRate,\n      vars.currentVariableBorrowRate\n    );\n  }\n\n  /**\n   * @dev Calculates the overall borrow rate as the weighted average between the total variable debt and total stable debt\n   * @param totalStableDebt The total borrowed from the reserve a stable rate\n   * @param totalVariableDebt The total borrowed from the reserve at a variable rate\n   * @param currentVariableBorrowRate The current variable borrow rate of the reserve\n   * @param currentAverageStableBorrowRate The current weighted average of all the stable rate loans\n   * @return The weighted averaged borrow rate\n   **/\n  function _getOverallBorrowRate(\n    uint256 totalStableDebt,\n    uint256 totalVariableDebt,\n    uint256 currentVariableBorrowRate,\n    uint256 currentAverageStableBorrowRate\n  ) internal pure returns (uint256) {\n    uint256 totalDebt = totalStableDebt.add(totalVariableDebt);\n\n    if (totalDebt == 0) return 0;\n\n    uint256 weightedVariableRate = totalVariableDebt.wadToRay().rayMul(currentVariableBorrowRate);\n\n    uint256 weightedStableRate = totalStableDebt.wadToRay().rayMul(currentAverageStableBorrowRate);\n\n    uint256 overallBorrowRate =\n      weightedVariableRate.add(weightedStableRate).rayDiv(totalDebt.wadToRay());\n\n    return overallBorrowRate;\n  }\n}\n"
      },
      "contracts/interfaces/ILendingRateOracle.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\n/**\n * @title ILendingRateOracle interface\n * @notice Interface for the Aave borrow rate oracle. Provides the average market borrow rate to be used as a base for the stable borrow rate calculations\n **/\n\ninterface ILendingRateOracle {\n  /**\n    @dev returns the market borrow rate in ray\n    **/\n  function getMarketBorrowRate(address asset) external view returns (uint256);\n\n  /**\n    @dev sets the market borrow rate. Rate value must be in ray\n    **/\n  function setMarketBorrowRate(address asset, uint256 rate) external;\n}\n"
      },
      "contracts/misc/UiPoolDataProvider.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\n\nimport {IERC20Detailed} from '../dependencies/openzeppelin/contracts/IERC20Detailed.sol';\nimport {ILendingPoolAddressesProvider} from '../interfaces/ILendingPoolAddressesProvider.sol';\nimport {IAaveIncentivesController} from '../interfaces/IAaveIncentivesController.sol';\nimport {IUiPoolDataProvider} from './interfaces/IUiPoolDataProvider.sol';\nimport {ILendingPool} from '../interfaces/ILendingPool.sol';\nimport {IPriceOracleGetter} from '../interfaces/IPriceOracleGetter.sol';\nimport {IAToken} from '../interfaces/IAToken.sol';\nimport {IVariableDebtToken} from '../interfaces/IVariableDebtToken.sol';\nimport {IStableDebtToken} from '../interfaces/IStableDebtToken.sol';\nimport {WadRayMath} from '../protocol/libraries/math/WadRayMath.sol';\nimport {ReserveConfiguration} from '../protocol/libraries/configuration/ReserveConfiguration.sol';\nimport {UserConfiguration} from '../protocol/libraries/configuration/UserConfiguration.sol';\nimport {DataTypes} from '../protocol/libraries/types/DataTypes.sol';\nimport {\n  DefaultReserveInterestRateStrategy\n} from '../protocol/lendingpool/DefaultReserveInterestRateStrategy.sol';\n\ncontract UiPoolDataProvider is IUiPoolDataProvider {\n  using WadRayMath for uint256;\n  using ReserveConfiguration for DataTypes.ReserveConfigurationMap;\n  using UserConfiguration for DataTypes.UserConfigurationMap;\n\n  address public constant MOCK_USD_ADDRESS = 0x10F7Fc1F91Ba351f9C629c5947AD69bD03C05b96;\n  IAaveIncentivesController public immutable incentivesController;\n  IPriceOracleGetter public immutable oracle;\n\n  constructor(IAaveIncentivesController _incentivesController, IPriceOracleGetter _oracle) public {\n    incentivesController = _incentivesController;\n    oracle = _oracle;\n  }\n\n  function getInterestRateStrategySlopes(DefaultReserveInterestRateStrategy interestRateStrategy)\n    internal\n    view\n    returns (\n      uint256,\n      uint256,\n      uint256,\n      uint256\n    )\n  {\n    return (\n      interestRateStrategy.variableRateSlope1(),\n      interestRateStrategy.variableRateSlope2(),\n      interestRateStrategy.stableRateSlope1(),\n      interestRateStrategy.stableRateSlope2()\n    );\n  }\n\n  function getReservesData(ILendingPoolAddressesProvider provider, address user)\n    external\n    view\n    override\n    returns (\n      AggregatedReserveData[] memory,\n      UserReserveData[] memory,\n      uint256,\n      uint256\n    )\n  {\n    ILendingPool lendingPool = ILendingPool(provider.getLendingPool());\n    address[] memory reserves = lendingPool.getReservesList();\n    DataTypes.UserConfigurationMap memory userConfig = lendingPool.getUserConfiguration(user);\n\n    AggregatedReserveData[] memory reservesData = new AggregatedReserveData[](reserves.length);\n    UserReserveData[] memory userReservesData =\n      new UserReserveData[](user != address(0) ? reserves.length : 0);\n\n    for (uint256 i = 0; i < reserves.length; i++) {\n      AggregatedReserveData memory reserveData = reservesData[i];\n      reserveData.underlyingAsset = reserves[i];\n\n      // reserve current state\n      DataTypes.ReserveData memory baseData =\n        lendingPool.getReserveData(reserveData.underlyingAsset);\n      reserveData.liquidityIndex = baseData.liquidityIndex;\n      reserveData.variableBorrowIndex = baseData.variableBorrowIndex;\n      reserveData.liquidityRate = baseData.currentLiquidityRate;\n      reserveData.variableBorrowRate = baseData.currentVariableBorrowRate;\n      reserveData.stableBorrowRate = baseData.currentStableBorrowRate;\n      reserveData.lastUpdateTimestamp = baseData.lastUpdateTimestamp;\n      reserveData.aTokenAddress = baseData.aTokenAddress;\n      reserveData.stableDebtTokenAddress = baseData.stableDebtTokenAddress;\n      reserveData.variableDebtTokenAddress = baseData.variableDebtTokenAddress;\n      reserveData.interestRateStrategyAddress = baseData.interestRateStrategyAddress;\n      reserveData.priceInEth = oracle.getAssetPrice(reserveData.underlyingAsset);\n\n      reserveData.availableLiquidity = IERC20Detailed(reserveData.underlyingAsset).balanceOf(\n        reserveData.aTokenAddress\n      );\n      (\n        reserveData.totalPrincipalStableDebt,\n        ,\n        reserveData.averageStableRate,\n        reserveData.stableDebtLastUpdateTimestamp\n      ) = IStableDebtToken(reserveData.stableDebtTokenAddress).getSupplyData();\n      reserveData.totalScaledVariableDebt = IVariableDebtToken(reserveData.variableDebtTokenAddress)\n        .scaledTotalSupply();\n\n      // reserve configuration\n\n      // we're getting this info from the aToken, because some of assets can be not compliant with ETC20Detailed\n      reserveData.symbol = IERC20Detailed(reserveData.aTokenAddress).symbol();\n      reserveData.name = '';\n\n      (\n        reserveData.baseLTVasCollateral,\n        reserveData.reserveLiquidationThreshold,\n        reserveData.reserveLiquidationBonus,\n        reserveData.decimals,\n        reserveData.reserveFactor\n      ) = baseData.configuration.getParamsMemory();\n      (\n        reserveData.isActive,\n        reserveData.isFrozen,\n        reserveData.borrowingEnabled,\n        reserveData.stableBorrowRateEnabled\n      ) = baseData.configuration.getFlagsMemory();\n      reserveData.usageAsCollateralEnabled = reserveData.baseLTVasCollateral != 0;\n      (\n        reserveData.variableRateSlope1,\n        reserveData.variableRateSlope2,\n        reserveData.stableRateSlope1,\n        reserveData.stableRateSlope2\n      ) = getInterestRateStrategySlopes(\n        DefaultReserveInterestRateStrategy(reserveData.interestRateStrategyAddress)\n      );\n\n      // incentives\n      if (address(0) != address(incentivesController)) {\n        (\n          reserveData.aEmissionPerSecond,\n          reserveData.aIncentivesLastUpdateTimestamp,\n          reserveData.aTokenIncentivesIndex\n        ) = incentivesController.getAssetData(reserveData.aTokenAddress);\n\n        (\n          reserveData.sEmissionPerSecond,\n          reserveData.sIncentivesLastUpdateTimestamp,\n          reserveData.sTokenIncentivesIndex\n        ) = incentivesController.getAssetData(reserveData.stableDebtTokenAddress);\n\n        (\n          reserveData.vEmissionPerSecond,\n          reserveData.vIncentivesLastUpdateTimestamp,\n          reserveData.vTokenIncentivesIndex\n        ) = incentivesController.getAssetData(reserveData.variableDebtTokenAddress);\n      }\n\n      if (user != address(0)) {\n        // incentives\n        if (address(0) != address(incentivesController)) {\n          userReservesData[i].aTokenincentivesUserIndex = incentivesController.getUserAssetData(\n            user,\n            reserveData.aTokenAddress\n          );\n          userReservesData[i].vTokenincentivesUserIndex = incentivesController.getUserAssetData(\n            user,\n            reserveData.variableDebtTokenAddress\n          );\n          userReservesData[i].sTokenincentivesUserIndex = incentivesController.getUserAssetData(\n            user,\n            reserveData.stableDebtTokenAddress\n          );\n        }\n        // user reserve data\n        userReservesData[i].underlyingAsset = reserveData.underlyingAsset;\n        userReservesData[i].scaledATokenBalance = IAToken(reserveData.aTokenAddress)\n          .scaledBalanceOf(user);\n        userReservesData[i].usageAsCollateralEnabledOnUser = userConfig.isUsingAsCollateral(i);\n\n        if (userConfig.isBorrowing(i)) {\n          userReservesData[i].scaledVariableDebt = IVariableDebtToken(\n            reserveData\n              .variableDebtTokenAddress\n          )\n            .scaledBalanceOf(user);\n          userReservesData[i].principalStableDebt = IStableDebtToken(\n            reserveData\n              .stableDebtTokenAddress\n          )\n            .principalBalanceOf(user);\n          if (userReservesData[i].principalStableDebt != 0) {\n            userReservesData[i].stableBorrowRate = IStableDebtToken(\n              reserveData\n                .stableDebtTokenAddress\n            )\n              .getUserStableRate(user);\n            userReservesData[i].stableBorrowLastUpdateTimestamp = IStableDebtToken(\n              reserveData\n                .stableDebtTokenAddress\n            )\n              .getUserLastUpdated(user);\n          }\n        }\n      }\n    }\n\n    return (\n      reservesData,\n      userReservesData,\n      oracle.getAssetPrice(MOCK_USD_ADDRESS),\n      incentivesController.getUserUnclaimedRewards(user)\n    );\n  }\n}\n"
      },
      "contracts/misc/interfaces/IUiPoolDataProvider.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\n\nimport {ILendingPoolAddressesProvider} from '../../interfaces/ILendingPoolAddressesProvider.sol';\nimport {IAaveIncentivesController} from '../../interfaces/IAaveIncentivesController.sol';\n\ninterface IUiPoolDataProvider {\n  struct AggregatedReserveData {\n    address underlyingAsset;\n    string name;\n    string symbol;\n    uint256 decimals;\n    uint256 baseLTVasCollateral;\n    uint256 reserveLiquidationThreshold;\n    uint256 reserveLiquidationBonus;\n    uint256 reserveFactor;\n    bool usageAsCollateralEnabled;\n    bool borrowingEnabled;\n    bool stableBorrowRateEnabled;\n    bool isActive;\n    bool isFrozen;\n    // base data\n    uint128 liquidityIndex;\n    uint128 variableBorrowIndex;\n    uint128 liquidityRate;\n    uint128 variableBorrowRate;\n    uint128 stableBorrowRate;\n    uint40 lastUpdateTimestamp;\n    address aTokenAddress;\n    address stableDebtTokenAddress;\n    address variableDebtTokenAddress;\n    address interestRateStrategyAddress;\n    //\n    uint256 availableLiquidity;\n    uint256 totalPrincipalStableDebt;\n    uint256 averageStableRate;\n    uint256 stableDebtLastUpdateTimestamp;\n    uint256 totalScaledVariableDebt;\n    uint256 priceInEth;\n    uint256 variableRateSlope1;\n    uint256 variableRateSlope2;\n    uint256 stableRateSlope1;\n    uint256 stableRateSlope2;\n    // incentives\n    uint256 aEmissionPerSecond;\n    uint256 vEmissionPerSecond;\n    uint256 sEmissionPerSecond;\n    uint256 aIncentivesLastUpdateTimestamp;\n    uint256 vIncentivesLastUpdateTimestamp;\n    uint256 sIncentivesLastUpdateTimestamp;\n    uint256 aTokenIncentivesIndex;\n    uint256 vTokenIncentivesIndex;\n    uint256 sTokenIncentivesIndex;\n  }\n\n  struct UserReserveData {\n    address underlyingAsset;\n    uint256 scaledATokenBalance;\n    bool usageAsCollateralEnabledOnUser;\n    uint256 stableBorrowRate;\n    uint256 scaledVariableDebt;\n    uint256 principalStableDebt;\n    uint256 stableBorrowLastUpdateTimestamp;\n    // incentives\n    uint256 aTokenincentivesUserIndex;\n    uint256 vTokenincentivesUserIndex;\n    uint256 sTokenincentivesUserIndex;\n  }\n\n  function getReservesData(ILendingPoolAddressesProvider provider, address user)\n    external\n    view\n    returns (\n      AggregatedReserveData[] memory,\n      UserReserveData[] memory,\n      uint256,\n      uint256\n    );\n}\n"
      },
      "contracts/misc/WETHGateway.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\n\nimport {Ownable} from '../dependencies/openzeppelin/contracts/Ownable.sol';\nimport {IERC20} from '../dependencies/openzeppelin/contracts/IERC20.sol';\nimport {IWETH} from './interfaces/IWETH.sol';\nimport {IWETHGateway} from './interfaces/IWETHGateway.sol';\nimport {ILendingPool} from '../interfaces/ILendingPool.sol';\nimport {IAToken} from '../interfaces/IAToken.sol';\nimport {ReserveConfiguration} from '../protocol/libraries/configuration/ReserveConfiguration.sol';\nimport {UserConfiguration} from '../protocol/libraries/configuration/UserConfiguration.sol';\nimport {Helpers} from '../protocol/libraries/helpers/Helpers.sol';\nimport {DataTypes} from '../protocol/libraries/types/DataTypes.sol';\n\ncontract WETHGateway is IWETHGateway, Ownable {\n  using ReserveConfiguration for DataTypes.ReserveConfigurationMap;\n  using UserConfiguration for DataTypes.UserConfigurationMap;\n\n  IWETH internal immutable WETH;\n\n  /**\n   * @dev Sets the WETH address and the LendingPoolAddressesProvider address. Infinite approves lending pool.\n   * @param weth Address of the Wrapped Ether contract\n   **/\n  constructor(address weth) public {\n    WETH = IWETH(weth);\n  }\n\n  function authorizeLendingPool(address lendingPool) external onlyOwner {\n    WETH.approve(lendingPool, uint256(-1));\n  }\n\n  /**\n   * @dev deposits WETH into the reserve, using native ETH. A corresponding amount of the overlying asset (aTokens)\n   * is minted.\n   * @param lendingPool address of the targeted underlying lending pool\n   * @param onBehalfOf address of the user who will receive the aTokens representing the deposit\n   * @param referralCode integrators are assigned a referral code and can potentially receive rewards.\n   **/\n  function depositETH(\n    address lendingPool,\n    address onBehalfOf,\n    uint16 referralCode\n  ) external payable override {\n    WETH.deposit{value: msg.value}();\n    ILendingPool(lendingPool).deposit(address(WETH), msg.value, onBehalfOf, referralCode);\n  }\n\n  /**\n   * @dev withdraws the WETH _reserves of msg.sender.\n   * @param lendingPool address of the targeted underlying lending pool\n   * @param amount amount of aWETH to withdraw and receive native ETH\n   * @param to address of the user who will receive native ETH\n   */\n  function withdrawETH(\n    address lendingPool,\n    uint256 amount,\n    address to\n  ) external override {\n    IAToken aWETH = IAToken(ILendingPool(lendingPool).getReserveData(address(WETH)).aTokenAddress);\n    uint256 userBalance = aWETH.balanceOf(msg.sender);\n    uint256 amountToWithdraw = amount;\n\n    // if amount is equal to uint(-1), the user wants to redeem everything\n    if (amount == type(uint256).max) {\n      amountToWithdraw = userBalance;\n    }\n    aWETH.transferFrom(msg.sender, address(this), amountToWithdraw);\n    ILendingPool(lendingPool).withdraw(address(WETH), amountToWithdraw, address(this));\n    WETH.withdraw(amountToWithdraw);\n    _safeTransferETH(to, amountToWithdraw);\n  }\n\n  /**\n   * @dev repays a borrow on the WETH reserve, for the specified amount (or for the whole amount, if uint256(-1) is specified).\n   * @param lendingPool address of the targeted underlying lending pool\n   * @param amount the amount to repay, or uint256(-1) if the user wants to repay everything\n   * @param rateMode the rate mode to repay\n   * @param onBehalfOf the address for which msg.sender is repaying\n   */\n  function repayETH(\n    address lendingPool,\n    uint256 amount,\n    uint256 rateMode,\n    address onBehalfOf\n  ) external payable override {\n    (uint256 stableDebt, uint256 variableDebt) =\n      Helpers.getUserCurrentDebtMemory(\n        onBehalfOf,\n        ILendingPool(lendingPool).getReserveData(address(WETH))\n      );\n\n    uint256 paybackAmount =\n      DataTypes.InterestRateMode(rateMode) == DataTypes.InterestRateMode.STABLE\n        ? stableDebt\n        : variableDebt;\n\n    if (amount < paybackAmount) {\n      paybackAmount = amount;\n    }\n    require(msg.value >= paybackAmount, 'msg.value is less than repayment amount');\n    WETH.deposit{value: paybackAmount}();\n    ILendingPool(lendingPool).repay(address(WETH), msg.value, rateMode, onBehalfOf);\n\n    // refund remaining dust eth\n    if (msg.value > paybackAmount) _safeTransferETH(msg.sender, msg.value - paybackAmount);\n  }\n\n  /**\n   * @dev borrow WETH, unwraps to ETH and send both the ETH and DebtTokens to msg.sender, via `approveDelegation` and onBehalf argument in `LendingPool.borrow`.\n   * @param lendingPool address of the targeted underlying lending pool\n   * @param amount the amount of ETH to borrow\n   * @param interesRateMode the interest rate mode\n   * @param referralCode integrators are assigned a referral code and can potentially receive rewards\n   */\n  function borrowETH(\n    address lendingPool,\n    uint256 amount,\n    uint256 interesRateMode,\n    uint16 referralCode\n  ) external override {\n    ILendingPool(lendingPool).borrow(\n      address(WETH),\n      amount,\n      interesRateMode,\n      referralCode,\n      msg.sender\n    );\n    WETH.withdraw(amount);\n    _safeTransferETH(msg.sender, amount);\n  }\n\n  /**\n   * @dev transfer ETH to an address, revert if it fails.\n   * @param to recipient of the transfer\n   * @param value the amount to send\n   */\n  function _safeTransferETH(address to, uint256 value) internal {\n    (bool success, ) = to.call{value: value}(new bytes(0));\n    require(success, 'ETH_TRANSFER_FAILED');\n  }\n\n  /**\n   * @dev transfer ERC20 from the utility contract, for ERC20 recovery in case of stuck tokens due\n   * direct transfers to the contract address.\n   * @param token token to transfer\n   * @param to recipient of the transfer\n   * @param amount amount to send\n   */\n  function emergencyTokenTransfer(\n    address token,\n    address to,\n    uint256 amount\n  ) external onlyOwner {\n    IERC20(token).transfer(to, amount);\n  }\n\n  /**\n   * @dev transfer native Ether from the utility contract, for native Ether recovery in case of stuck Ether\n   * due selfdestructs or transfer ether to pre-computated contract address before deployment.\n   * @param to recipient of the transfer\n   * @param amount amount to send\n   */\n  function emergencyEtherTransfer(address to, uint256 amount) external onlyOwner {\n    _safeTransferETH(to, amount);\n  }\n\n  /**\n   * @dev Get WETH address used by WETHGateway\n   */\n  function getWETHAddress() external view returns (address) {\n    return address(WETH);\n  }\n\n  /**\n   * @dev Only WETH contract is allowed to transfer ETH here. Prevent other addresses to send Ether to this contract.\n   */\n  receive() external payable {\n    require(msg.sender == address(WETH), 'Receive not allowed');\n  }\n\n  /**\n   * @dev Revert fallback calls\n   */\n  fallback() external payable {\n    revert('Fallback not allowed');\n  }\n}\n"
      },
      "contracts/misc/interfaces/IWETH.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\ninterface IWETH {\n  function deposit() external payable;\n\n  function withdraw(uint256) external;\n\n  function approve(address guy, uint256 wad) external returns (bool);\n\n  function transferFrom(\n    address src,\n    address dst,\n    uint256 wad\n  ) external returns (bool);\n}\n"
      },
      "contracts/misc/interfaces/IWETHGateway.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\ninterface IWETHGateway {\n  function depositETH(\n    address lendingPool,\n    address onBehalfOf,\n    uint16 referralCode\n  ) external payable;\n\n  function withdrawETH(\n    address lendingPool,\n    uint256 amount,\n    address onBehalfOf\n  ) external;\n\n  function repayETH(\n    address lendingPool,\n    uint256 amount,\n    uint256 rateMode,\n    address onBehalfOf\n  ) external payable;\n\n  function borrowETH(\n    address lendingPool,\n    uint256 amount,\n    uint256 interesRateMode,\n    uint16 referralCode\n  ) external;\n}\n"
      },
      "contracts/misc/AaveOracle.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {Ownable} from '../dependencies/openzeppelin/contracts/Ownable.sol';\nimport {IERC20} from '../dependencies/openzeppelin/contracts/IERC20.sol';\n\nimport {IPriceOracleGetter} from '../interfaces/IPriceOracleGetter.sol';\nimport {IChainlinkAggregator} from '../interfaces/IChainlinkAggregator.sol';\nimport {SafeERC20} from '../dependencies/openzeppelin/contracts/SafeERC20.sol';\n\n/// @title AaveOracle\n/// @author Aave\n/// @notice Proxy smart contract to get the price of an asset from a price source, with Chainlink Aggregator\n///         smart contracts as primary option\n/// - If the returned price by a Chainlink aggregator is <= 0, the call is forwarded to a fallbackOracle\n/// - Owned by the Aave governance system, allowed to add sources for assets, replace them\n///   and change the fallbackOracle\ncontract AaveOracle is IPriceOracleGetter, Ownable {\n  using SafeERC20 for IERC20;\n\n  event WethSet(address indexed weth);\n  event AssetSourceUpdated(address indexed asset, address indexed source);\n  event FallbackOracleUpdated(address indexed fallbackOracle);\n\n  mapping(address => IChainlinkAggregator) private assetsSources;\n  IPriceOracleGetter private _fallbackOracle;\n  address public immutable WETH;\n\n  /// @notice Constructor\n  /// @param assets The addresses of the assets\n  /// @param sources The address of the source of each asset\n  /// @param fallbackOracle The address of the fallback oracle to use if the data of an\n  ///        aggregator is not consistent\n  constructor(\n    address[] memory assets,\n    address[] memory sources,\n    address fallbackOracle,\n    address weth\n  ) public {\n    _setFallbackOracle(fallbackOracle);\n    _setAssetsSources(assets, sources);\n    WETH = weth;\n    emit WethSet(weth);\n  }\n\n  /// @notice External function called by the Aave governance to set or replace sources of assets\n  /// @param assets The addresses of the assets\n  /// @param sources The address of the source of each asset\n  function setAssetSources(address[] calldata assets, address[] calldata sources)\n    external\n    onlyOwner\n  {\n    _setAssetsSources(assets, sources);\n  }\n\n  /// @notice Sets the fallbackOracle\n  /// - Callable only by the Aave governance\n  /// @param fallbackOracle The address of the fallbackOracle\n  function setFallbackOracle(address fallbackOracle) external onlyOwner {\n    _setFallbackOracle(fallbackOracle);\n  }\n\n  /// @notice Internal function to set the sources for each asset\n  /// @param assets The addresses of the assets\n  /// @param sources The address of the source of each asset\n  function _setAssetsSources(address[] memory assets, address[] memory sources) internal {\n    require(assets.length == sources.length, 'INCONSISTENT_PARAMS_LENGTH');\n    for (uint256 i = 0; i < assets.length; i++) {\n      assetsSources[assets[i]] = IChainlinkAggregator(sources[i]);\n      emit AssetSourceUpdated(assets[i], sources[i]);\n    }\n  }\n\n  /// @notice Internal function to set the fallbackOracle\n  /// @param fallbackOracle The address of the fallbackOracle\n  function _setFallbackOracle(address fallbackOracle) internal {\n    _fallbackOracle = IPriceOracleGetter(fallbackOracle);\n    emit FallbackOracleUpdated(fallbackOracle);\n  }\n\n  /// @notice Gets an asset price by address\n  /// @param asset The asset address\n  function getAssetPrice(address asset) public view override returns (uint256) {\n    IChainlinkAggregator source = assetsSources[asset];\n\n    if (asset == WETH) {\n      return 1 ether;\n    } else if (address(source) == address(0)) {\n      return _fallbackOracle.getAssetPrice(asset);\n    } else {\n      int256 price = IChainlinkAggregator(source).latestAnswer();\n      if (price > 0) {\n        return uint256(price);\n      } else {\n        return _fallbackOracle.getAssetPrice(asset);\n      }\n    }\n  }\n\n  /// @notice Gets a list of prices from a list of assets addresses\n  /// @param assets The list of assets addresses\n  function getAssetsPrices(address[] calldata assets) external view returns (uint256[] memory) {\n    uint256[] memory prices = new uint256[](assets.length);\n    for (uint256 i = 0; i < assets.length; i++) {\n      prices[i] = getAssetPrice(assets[i]);\n    }\n    return prices;\n  }\n\n  /// @notice Gets the address of the source for an asset address\n  /// @param asset The address of the asset\n  /// @return address The address of the source\n  function getSourceOfAsset(address asset) external view returns (address) {\n    return address(assetsSources[asset]);\n  }\n\n  /// @notice Gets the address of the fallback oracle\n  /// @return address The addres of the fallback oracle\n  function getFallbackOracle() external view returns (address) {\n    return address(_fallbackOracle);\n  }\n}\n"
      },
      "contracts/interfaces/IChainlinkAggregator.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\ninterface IChainlinkAggregator {\n  function latestAnswer() external view returns (int256);\n\n  function latestTimestamp() external view returns (uint256);\n\n  function latestRound() external view returns (uint256);\n\n  function getAnswer(uint256 roundId) external view returns (int256);\n\n  function getTimestamp(uint256 roundId) external view returns (uint256);\n\n  event AnswerUpdated(int256 indexed current, uint256 indexed roundId, uint256 timestamp);\n  event NewRound(uint256 indexed roundId, address indexed startedBy);\n}\n"
      },
      "contracts/protocol/tokenization/StaticAToken.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\n\nimport {ILendingPool} from '../../interfaces/ILendingPool.sol';\nimport {IERC20} from '../../dependencies/openzeppelin/contracts/IERC20.sol';\nimport {IAToken} from '../../interfaces/IAToken.sol';\nimport {ERC20} from '../../dependencies/openzeppelin/contracts/ERC20.sol';\nimport {SafeERC20} from '../../dependencies/openzeppelin/contracts/SafeERC20.sol';\nimport {WadRayMath} from '../../protocol/libraries/math/WadRayMath.sol';\n\n/**\n * @title StaticAToken\n * @dev Wrapper token that allows to deposit tokens on the Aave protocol and receive\n * a token which balance doesn't increase automatically, but uses an ever-increasing exchange rate\n * - Only supporting deposits and withdrawals\n * @author Aave\n **/\ncontract StaticAToken is ERC20 {\n  using SafeERC20 for IERC20;\n  using WadRayMath for uint256;\n\n  struct SignatureParams {\n    uint8 v;\n    bytes32 r;\n    bytes32 s;\n  }\n\n  bytes public constant EIP712_REVISION = bytes('1');\n  bytes32 internal constant EIP712_DOMAIN =\n    keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)');\n  bytes32 public constant PERMIT_TYPEHASH =\n    keccak256('Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)');\n  bytes32 public constant METADEPOSIT_TYPEHASH =\n    keccak256(\n      'Deposit(address depositor,address recipient,uint256 value,uint16 referralCode,bool fromUnderlying,uint256 nonce,uint256 deadline)'\n    );\n  bytes32 public constant METAWITHDRAWAL_TYPEHASH =\n    keccak256(\n      'Withdraw(address owner,address recipient,uint256 staticAmount, uint256 dynamicAmount, bool toUnderlying, uint256 nonce,uint256 deadline)'\n    );\n\n  ILendingPool public immutable LENDING_POOL;\n  IERC20 public immutable ATOKEN;\n  IERC20 public immutable ASSET;\n\n  /// @dev owner => next valid nonce to submit with permit(), metaDeposit() and metaWithdraw()\n  /// We choose to have sequentiality on them for each user to avoid potentially dangerous/bad UX cases\n  mapping(address => uint256) public _nonces;\n\n  constructor(\n    ILendingPool lendingPool,\n    address aToken,\n    string memory wrappedTokenName,\n    string memory wrappedTokenSymbol\n  ) public ERC20(wrappedTokenName, wrappedTokenSymbol) {\n    LENDING_POOL = lendingPool;\n    ATOKEN = IERC20(aToken);\n\n    IERC20 underlyingAsset = IERC20(IAToken(aToken).UNDERLYING_ASSET_ADDRESS());\n    ASSET = underlyingAsset;\n    underlyingAsset.approve(address(lendingPool), type(uint256).max);\n  }\n\n  /**\n   * @dev Deposits `ASSET` in the Aave protocol and mints static aTokens to msg.sender\n   * @param recipient The address that will receive the static aTokens\n   * @param amount The amount of underlying `ASSET` to deposit (e.g. deposit of 100 USDC)\n   * @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   *   0 if the action is executed directly by the user, without any middle-man\n   * @param fromUnderlying bool\n   * - `true` if the msg.sender comes with underlying tokens (e.g. USDC)\n   * - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\n   * @return uint256 The amount of StaticAToken minted, static balance\n   **/\n  function deposit(\n    address recipient,\n    uint256 amount,\n    uint16 referralCode,\n    bool fromUnderlying\n  ) external returns (uint256) {\n    return _deposit(msg.sender, recipient, amount, referralCode, fromUnderlying);\n  }\n\n  /**\n   * @dev Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\n   * @param recipient The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\n   * @param amount The amount to withdraw, in static balance of StaticAToken\n   * @param toUnderlying bool\n   * - `true` for the recipient to get underlying tokens (e.g. USDC)\n   * - `false` for the recipient to get aTokens (e.g. aUSDC)\n   * @return amountToBurn: StaticATokens burnt, static balance\n   * @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance\n   **/\n  function withdraw(\n    address recipient,\n    uint256 amount,\n    bool toUnderlying\n  ) external returns (uint256, uint256) {\n    return _withdraw(msg.sender, recipient, amount, 0, toUnderlying);\n  }\n\n  /**\n   * @dev Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\n   * @param recipient The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\n   * @param amount The amount to withdraw, in dynamic balance of aToken/underlying asset\n   * @param toUnderlying bool\n   * - `true` for the recipient to get underlying tokens (e.g. USDC)\n   * - `false` for the recipient to get aTokens (e.g. aUSDC)\n   * @return amountToBurn: StaticATokens burnt, static balance\n   * @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance\n   **/\n  function withdrawDynamicAmount(\n    address recipient,\n    uint256 amount,\n    bool toUnderlying\n  ) external returns (uint256, uint256) {\n    return _withdraw(msg.sender, recipient, 0, amount, toUnderlying);\n  }\n\n  /**\n   * @dev Implements the permit function as for\n   * https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n   * @param owner The owner of the funds\n   * @param spender The spender\n   * @param value The amount\n   * @param deadline The deadline timestamp, type(uint256).max for max deadline\n   * @param v Signature param\n   * @param s Signature param\n   * @param r Signature param\n   * @param chainId Passing the chainId in order to be fork-compatible\n   */\n  function permit(\n    address owner,\n    address spender,\n    uint256 value,\n    uint256 deadline,\n    uint8 v,\n    bytes32 r,\n    bytes32 s,\n    uint256 chainId\n  ) external {\n    require(owner != address(0), 'INVALID_OWNER');\n    //solium-disable-next-line\n    require(block.timestamp <= deadline, 'INVALID_EXPIRATION');\n    uint256 currentValidNonce = _nonces[owner];\n    bytes32 digest =\n      keccak256(\n        abi.encodePacked(\n          '\\x19\\x01',\n          getDomainSeparator(chainId),\n          keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, currentValidNonce, deadline))\n        )\n      );\n    require(owner == ecrecover(digest, v, r, s), 'INVALID_SIGNATURE');\n    _nonces[owner] = currentValidNonce.add(1);\n    _approve(owner, spender, value);\n  }\n\n  /**\n   * @dev Allows to deposit on Aave via meta-transaction\n   * https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n   * @param depositor Address from which the funds to deposit are going to be pulled\n   * @param recipient Address that will receive the staticATokens, in the average case, same as the `depositor`\n   * @param value The amount to deposit\n   * @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   *   0 if the action is executed directly by the user, without any middle-man\n   * @param fromUnderlying bool\n   * - `true` if the msg.sender comes with underlying tokens (e.g. USDC)\n   * - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\n   * @param deadline The deadline timestamp, type(uint256).max for max deadline\n   * @param sigParams Signature params: v,r,s\n   * @param chainId Passing the chainId in order to be fork-compatible\n   * @return uint256 The amount of StaticAToken minted, static balance\n   */\n  function metaDeposit(\n    address depositor,\n    address recipient,\n    uint256 value,\n    uint16 referralCode,\n    bool fromUnderlying,\n    uint256 deadline,\n    SignatureParams calldata sigParams,\n    uint256 chainId\n  ) external returns (uint256) {\n    require(depositor != address(0), 'INVALID_DEPOSITOR');\n    //solium-disable-next-line\n    require(block.timestamp <= deadline, 'INVALID_EXPIRATION');\n    uint256 currentValidNonce = _nonces[depositor];\n    bytes32 digest =\n      keccak256(\n        abi.encodePacked(\n          '\\x19\\x01',\n          getDomainSeparator(chainId),\n          keccak256(\n            abi.encode(\n              METADEPOSIT_TYPEHASH,\n              depositor,\n              recipient,\n              value,\n              referralCode,\n              fromUnderlying,\n              currentValidNonce,\n              deadline\n            )\n          )\n        )\n      );\n    require(\n      depositor == ecrecover(digest, sigParams.v, sigParams.r, sigParams.s),\n      'INVALID_SIGNATURE'\n    );\n    _nonces[depositor] = currentValidNonce.add(1);\n    _deposit(depositor, recipient, value, referralCode, fromUnderlying);\n  }\n\n  /**\n   * @dev Allows to withdraw from Aave via meta-transaction\n   * https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n   * @param owner Address owning the staticATokens\n   * @param recipient Address that will receive the underlying withdrawn from Aave\n   * @param staticAmount The amount of staticAToken to withdraw. If > 0, `dynamicAmount` needs to be 0\n   * @param dynamicAmount The amount of underlying/aToken to withdraw. If > 0, `staticAmount` needs to be 0\n   * @param toUnderlying bool\n   * - `true` for the recipient to get underlying tokens (e.g. USDC)\n   * - `false` for the recipient to get aTokens (e.g. aUSDC)\n   * @param deadline The deadline timestamp, type(uint256).max for max deadline\n   * @param sigParams Signature params: v,r,s\n   * @param chainId Passing the chainId in order to be fork-compatible\n   * @return amountToBurn: StaticATokens burnt, static balance\n   * @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance\n   */\n  function metaWithdraw(\n    address owner,\n    address recipient,\n    uint256 staticAmount,\n    uint256 dynamicAmount,\n    bool toUnderlying,\n    uint256 deadline,\n    SignatureParams calldata sigParams,\n    uint256 chainId\n  ) external returns (uint256, uint256) {\n    require(owner != address(0), 'INVALID_DEPOSITOR');\n    //solium-disable-next-line\n    require(block.timestamp <= deadline, 'INVALID_EXPIRATION');\n    uint256 currentValidNonce = _nonces[owner];\n    bytes32 digest =\n      keccak256(\n        abi.encodePacked(\n          '\\x19\\x01',\n          getDomainSeparator(chainId),\n          keccak256(\n            abi.encode(\n              METAWITHDRAWAL_TYPEHASH,\n              owner,\n              recipient,\n              staticAmount,\n              dynamicAmount,\n              toUnderlying,\n              currentValidNonce,\n              deadline\n            )\n          )\n        )\n      );\n    require(owner == ecrecover(digest, sigParams.v, sigParams.r, sigParams.s), 'INVALID_SIGNATURE');\n    _nonces[owner] = currentValidNonce.add(1);\n    return _withdraw(owner, recipient, staticAmount, dynamicAmount, toUnderlying);\n  }\n\n  /**\n   * @dev Utility method to get the current aToken balance of an user, from his staticAToken balance\n   * @param account The address of the user\n   * @return uint256 The aToken balance\n   **/\n  function dynamicBalanceOf(address account) external view returns (uint256) {\n    return staticToDynamicAmount(balanceOf(account));\n  }\n\n  /**\n   * @dev Converts a static amount (scaled balance on aToken) to the aToken/underlying value,\n   * using the current liquidity index on Aave\n   * @param amount The amount to convert from\n   * @return uint256 The dynamic amount\n   **/\n  function staticToDynamicAmount(uint256 amount) public view returns (uint256) {\n    return amount.rayMul(rate());\n  }\n\n  /**\n   * @dev Converts an aToken or underlying amount to the what it is denominated on the aToken as\n   * scaled balance, function of the principal and the liquidity index\n   * @param amount The amount to convert from\n   * @return uint256 The static (scaled) amount\n   **/\n  function dynamicToStaticAmount(uint256 amount) public view returns (uint256) {\n    return amount.rayDiv(rate());\n  }\n\n  /**\n   * @dev Returns the Aave liquidity index of the underlying aToken, denominated rate here\n   * as it can be considered as an ever-increasing exchange rate\n   * @return bytes32 The domain separator\n   **/\n  function rate() public view returns (uint256) {\n    return LENDING_POOL.getReserveNormalizedIncome(address(ASSET));\n  }\n\n  /**\n   * @dev Function to return a dynamic domain separator, in order to be compatible with forks changing chainId\n   * @param chainId The chain id\n   * @return bytes32 The domain separator\n   **/\n  function getDomainSeparator(uint256 chainId) public view returns (bytes32) {\n    return\n      keccak256(\n        abi.encode(\n          EIP712_DOMAIN,\n          keccak256(bytes(name())),\n          keccak256(EIP712_REVISION),\n          chainId,\n          address(this)\n        )\n      );\n  }\n\n  function _deposit(\n    address depositor,\n    address recipient,\n    uint256 amount,\n    uint16 referralCode,\n    bool fromUnderlying\n  ) internal returns (uint256) {\n    require(recipient != address(0), 'INVALID_RECIPIENT');\n\n    if (fromUnderlying) {\n      ASSET.safeTransferFrom(depositor, address(this), amount);\n      LENDING_POOL.deposit(address(ASSET), amount, address(this), referralCode);\n    } else {\n      ATOKEN.safeTransferFrom(depositor, address(this), amount);\n    }\n\n    uint256 amountToMint = dynamicToStaticAmount(amount);\n    _mint(recipient, amountToMint);\n    return amountToMint;\n  }\n\n  function _withdraw(\n    address owner,\n    address recipient,\n    uint256 staticAmount,\n    uint256 dynamicAmount,\n    bool toUnderlying\n  ) internal returns (uint256, uint256) {\n    require(recipient != address(0), 'INVALID_RECIPIENT');\n    require(staticAmount == 0 || dynamicAmount == 0, 'ONLY_ONE_AMOUNT_FORMAT_ALLOWED');\n\n    uint256 userBalance = balanceOf(owner);\n\n    uint256 amountToWithdraw;\n    uint256 amountToBurn;\n\n    uint256 currentRate = rate();\n    if (staticAmount > 0) {\n      amountToBurn = (staticAmount > userBalance) ? userBalance : staticAmount;\n      amountToWithdraw = (staticAmount > userBalance)\n        ? _staticToDynamicAmount(userBalance, currentRate)\n        : _staticToDynamicAmount(staticAmount, currentRate);\n    } else {\n      uint256 dynamicUserBalance = _staticToDynamicAmount(userBalance, currentRate);\n      amountToWithdraw = (dynamicAmount > dynamicUserBalance) ? dynamicUserBalance : dynamicAmount;\n      amountToBurn = _dynamicToStaticAmount(amountToWithdraw, currentRate);\n    }\n\n    _burn(owner, amountToBurn);\n\n    if (toUnderlying) {\n      LENDING_POOL.withdraw(address(ASSET), amountToWithdraw, recipient);\n    } else {\n      ATOKEN.safeTransfer(recipient, amountToWithdraw);\n    }\n\n    return (amountToBurn, amountToWithdraw);\n  }\n\n  function _dynamicToStaticAmount(uint256 amount, uint256 rate) internal pure returns (uint256) {\n    return amount.rayDiv(rate);\n  }\n\n  function _staticToDynamicAmount(uint256 amount, uint256 rate) internal pure returns (uint256) {\n    return amount.rayMul(rate);\n  }\n}\n"
      },
      "contracts/protocol/tokenization/VariableDebtToken.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {IVariableDebtToken} from '../../interfaces/IVariableDebtToken.sol';\nimport {WadRayMath} from '../libraries/math/WadRayMath.sol';\nimport {Errors} from '../libraries/helpers/Errors.sol';\nimport {DebtTokenBase} from './base/DebtTokenBase.sol';\nimport {ILendingPool} from '../../interfaces/ILendingPool.sol';\nimport {IAaveIncentivesController} from '../../interfaces/IAaveIncentivesController.sol';\n\n/**\n * @title VariableDebtToken\n * @notice Implements a variable debt token to track the borrowing positions of users\n * at variable rate mode\n * @author Aave\n **/\ncontract VariableDebtToken is DebtTokenBase, IVariableDebtToken {\n  using WadRayMath for uint256;\n\n  uint256 public constant DEBT_TOKEN_REVISION = 0x1;\n\n  ILendingPool internal _pool;\n  address internal _underlyingAsset;\n  IAaveIncentivesController internal _incentivesController;\n\n  /**\n   * @dev Initializes the debt token.\n   * @param pool The address of the lending pool where this aToken will be used\n   * @param underlyingAsset The address of the underlying asset of this aToken (E.g. WETH for aWETH)\n   * @param incentivesController The smart contract managing potential incentives distribution\n   * @param debtTokenDecimals The decimals of the debtToken, same as the underlying asset's\n   * @param debtTokenName The name of the token\n   * @param debtTokenSymbol The symbol of the token\n   */\n  function initialize(\n    ILendingPool pool,\n    address underlyingAsset,\n    IAaveIncentivesController incentivesController,\n    uint8 debtTokenDecimals,\n    string memory debtTokenName,\n    string memory debtTokenSymbol,\n    bytes calldata params\n  ) public override initializer {\n    _setName(debtTokenName);\n    _setSymbol(debtTokenSymbol);\n    _setDecimals(debtTokenDecimals);\n\n    _pool = pool;\n    _underlyingAsset = underlyingAsset;\n    _incentivesController = incentivesController;\n\n    emit Initialized(\n      underlyingAsset,\n      address(pool),\n      address(incentivesController),\n      debtTokenDecimals,\n      debtTokenName,\n      debtTokenSymbol,\n      params\n    );\n  }\n\n  /**\n   * @dev Gets the revision of the stable debt token implementation\n   * @return The debt token implementation revision\n   **/\n  function getRevision() internal pure virtual override returns (uint256) {\n    return DEBT_TOKEN_REVISION;\n  }\n\n  /**\n   * @dev Calculates the accumulated debt balance of the user\n   * @return The debt balance of the user\n   **/\n  function balanceOf(address user) public view virtual override returns (uint256) {\n    uint256 scaledBalance = super.balanceOf(user);\n\n    if (scaledBalance == 0) {\n      return 0;\n    }\n\n    return scaledBalance.rayMul(_pool.getReserveNormalizedVariableDebt(_underlyingAsset));\n  }\n\n  /**\n   * @dev Mints debt token to the `onBehalfOf` address\n   * -  Only callable by the LendingPool\n   * @param user The address receiving the borrowed underlying, being the delegatee in case\n   * of credit delegate, or same as `onBehalfOf` otherwise\n   * @param onBehalfOf The address receiving the debt tokens\n   * @param amount The amount of debt being minted\n   * @param index The variable debt index of the reserve\n   * @return `true` if the the previous balance of the user is 0\n   **/\n  function mint(\n    address user,\n    address onBehalfOf,\n    uint256 amount,\n    uint256 index\n  ) external override onlyLendingPool returns (bool) {\n    if (user != onBehalfOf) {\n      _decreaseBorrowAllowance(onBehalfOf, user, amount);\n    }\n\n    uint256 previousBalance = super.balanceOf(onBehalfOf);\n    uint256 amountScaled = amount.rayDiv(index);\n    require(amountScaled != 0, Errors.CT_INVALID_MINT_AMOUNT);\n\n    _mint(onBehalfOf, amountScaled);\n\n    emit Transfer(address(0), onBehalfOf, amount);\n    emit Mint(user, onBehalfOf, amount, index);\n\n    return previousBalance == 0;\n  }\n\n  /**\n   * @dev Burns user variable debt\n   * - Only callable by the LendingPool\n   * @param user The user whose debt is getting burned\n   * @param amount The amount getting burned\n   * @param index The variable debt index of the reserve\n   **/\n  function burn(\n    address user,\n    uint256 amount,\n    uint256 index\n  ) external override onlyLendingPool {\n    uint256 amountScaled = amount.rayDiv(index);\n    require(amountScaled != 0, Errors.CT_INVALID_BURN_AMOUNT);\n\n    _burn(user, amountScaled);\n\n    emit Transfer(user, address(0), amount);\n    emit Burn(user, amount, index);\n  }\n\n  /**\n   * @dev Returns the principal debt balance of the user from\n   * @return The debt balance of the user since the last burn/mint action\n   **/\n  function scaledBalanceOf(address user) public view virtual override returns (uint256) {\n    return super.balanceOf(user);\n  }\n\n  /**\n   * @dev Returns the total supply of the variable debt token. Represents the total debt accrued by the users\n   * @return The total supply\n   **/\n  function totalSupply() public view virtual override returns (uint256) {\n    return super.totalSupply().rayMul(_pool.getReserveNormalizedVariableDebt(_underlyingAsset));\n  }\n\n  /**\n   * @dev Returns the scaled total supply of the variable debt token. Represents sum(debt/index)\n   * @return the scaled total supply\n   **/\n  function scaledTotalSupply() public view virtual override returns (uint256) {\n    return super.totalSupply();\n  }\n\n  /**\n   * @dev Returns the principal balance of the user and principal total supply.\n   * @param user The address of the user\n   * @return The principal balance of the user\n   * @return The principal total supply\n   **/\n  function getScaledUserBalanceAndSupply(address user)\n    external\n    view\n    override\n    returns (uint256, uint256)\n  {\n    return (super.balanceOf(user), super.totalSupply());\n  }\n\n  /**\n   * @dev Returns the address of the underlying asset of this aToken (E.g. WETH for aWETH)\n   **/\n  function UNDERLYING_ASSET_ADDRESS() public view returns (address) {\n    return _underlyingAsset;\n  }\n\n  /**\n   * @dev Returns the address of the incentives controller contract\n   **/\n  function getIncentivesController() external view override returns (IAaveIncentivesController) {\n    return _getIncentivesController();\n  }\n\n  /**\n   * @dev Returns the address of the lending pool where this aToken is used\n   **/\n  function POOL() public view returns (ILendingPool) {\n    return _pool;\n  }\n\n  function _getIncentivesController() internal view override returns (IAaveIncentivesController) {\n    return _incentivesController;\n  }\n\n  function _getUnderlyingAssetAddress() internal view override returns (address) {\n    return _underlyingAsset;\n  }\n\n  function _getLendingPool() internal view override returns (ILendingPool) {\n    return _pool;\n  }\n}\n"
      },
      "contracts/protocol/tokenization/base/DebtTokenBase.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {ILendingPool} from '../../../interfaces/ILendingPool.sol';\nimport {ICreditDelegationToken} from '../../../interfaces/ICreditDelegationToken.sol';\nimport {\n  VersionedInitializable\n} from '../../libraries/aave-upgradeability/VersionedInitializable.sol';\nimport {IncentivizedERC20} from '../IncentivizedERC20.sol';\nimport {Errors} from '../../libraries/helpers/Errors.sol';\n\n/**\n * @title DebtTokenBase\n * @notice Base contract for different types of debt tokens, like StableDebtToken or VariableDebtToken\n * @author Aave\n */\n\nabstract contract DebtTokenBase is\n  IncentivizedERC20('DEBTTOKEN_IMPL', 'DEBTTOKEN_IMPL', 0),\n  VersionedInitializable,\n  ICreditDelegationToken\n{\n  mapping(address => mapping(address => uint256)) internal _borrowAllowances;\n\n  /**\n   * @dev Only lending pool can call functions marked by this modifier\n   **/\n  modifier onlyLendingPool {\n    require(_msgSender() == address(_getLendingPool()), Errors.CT_CALLER_MUST_BE_LENDING_POOL);\n    _;\n  }\n\n  /**\n   * @dev delegates borrowing power to a user on the specific debt token\n   * @param delegatee the address receiving the delegated borrowing power\n   * @param amount the maximum amount being delegated. Delegation will still\n   * respect the liquidation constraints (even if delegated, a delegatee cannot\n   * force a delegator HF to go below 1)\n   **/\n  function approveDelegation(address delegatee, uint256 amount) external override {\n    _borrowAllowances[_msgSender()][delegatee] = amount;\n    emit BorrowAllowanceDelegated(_msgSender(), delegatee, _getUnderlyingAssetAddress(), amount);\n  }\n\n  /**\n   * @dev returns the borrow allowance of the user\n   * @param fromUser The user to giving allowance\n   * @param toUser The user to give allowance to\n   * @return the current allowance of toUser\n   **/\n  function borrowAllowance(address fromUser, address toUser)\n    external\n    view\n    override\n    returns (uint256)\n  {\n    return _borrowAllowances[fromUser][toUser];\n  }\n\n  /**\n   * @dev Being non transferrable, the debt token does not implement any of the\n   * standard ERC20 functions for transfer and allowance.\n   **/\n  function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\n    recipient;\n    amount;\n    revert('TRANSFER_NOT_SUPPORTED');\n  }\n\n  function allowance(address owner, address spender)\n    public\n    view\n    virtual\n    override\n    returns (uint256)\n  {\n    owner;\n    spender;\n    revert('ALLOWANCE_NOT_SUPPORTED');\n  }\n\n  function approve(address spender, uint256 amount) public virtual override returns (bool) {\n    spender;\n    amount;\n    revert('APPROVAL_NOT_SUPPORTED');\n  }\n\n  function transferFrom(\n    address sender,\n    address recipient,\n    uint256 amount\n  ) public virtual override returns (bool) {\n    sender;\n    recipient;\n    amount;\n    revert('TRANSFER_NOT_SUPPORTED');\n  }\n\n  function increaseAllowance(address spender, uint256 addedValue)\n    public\n    virtual\n    override\n    returns (bool)\n  {\n    spender;\n    addedValue;\n    revert('ALLOWANCE_NOT_SUPPORTED');\n  }\n\n  function decreaseAllowance(address spender, uint256 subtractedValue)\n    public\n    virtual\n    override\n    returns (bool)\n  {\n    spender;\n    subtractedValue;\n    revert('ALLOWANCE_NOT_SUPPORTED');\n  }\n\n  function _decreaseBorrowAllowance(\n    address delegator,\n    address delegatee,\n    uint256 amount\n  ) internal {\n    uint256 newAllowance =\n      _borrowAllowances[delegator][delegatee].sub(amount, Errors.BORROW_ALLOWANCE_NOT_ENOUGH);\n\n    _borrowAllowances[delegator][delegatee] = newAllowance;\n\n    emit BorrowAllowanceDelegated(delegator, delegatee, _getUnderlyingAssetAddress(), newAllowance);\n  }\n\n  function _getUnderlyingAssetAddress() internal view virtual returns (address);\n\n  function _getLendingPool() internal view virtual returns (ILendingPool);\n}\n"
      },
      "contracts/interfaces/ICreditDelegationToken.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\ninterface ICreditDelegationToken {\n  event BorrowAllowanceDelegated(\n    address indexed fromUser,\n    address indexed toUser,\n    address asset,\n    uint256 amount\n  );\n\n  /**\n   * @dev delegates borrowing power to a user on the specific debt token\n   * @param delegatee the address receiving the delegated borrowing power\n   * @param amount the maximum amount being delegated. Delegation will still\n   * respect the liquidation constraints (even if delegated, a delegatee cannot\n   * force a delegator HF to go below 1)\n   **/\n  function approveDelegation(address delegatee, uint256 amount) external;\n\n  /**\n   * @dev returns the borrow allowance of the user\n   * @param fromUser The user to giving allowance\n   * @param toUser The user to give allowance to\n   * @return the current allowance of toUser\n   **/\n  function borrowAllowance(address fromUser, address toUser) external view returns (uint256);\n}\n"
      },
      "contracts/protocol/tokenization/IncentivizedERC20.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {Context} from '../../dependencies/openzeppelin/contracts/Context.sol';\nimport {IERC20} from '../../dependencies/openzeppelin/contracts/IERC20.sol';\nimport {IERC20Detailed} from '../../dependencies/openzeppelin/contracts/IERC20Detailed.sol';\nimport {SafeMath} from '../../dependencies/openzeppelin/contracts/SafeMath.sol';\nimport {IAaveIncentivesController} from '../../interfaces/IAaveIncentivesController.sol';\n\n/**\n * @title ERC20\n * @notice Basic ERC20 implementation\n * @author Aave, inspired by the Openzeppelin ERC20 implementation\n **/\nabstract contract IncentivizedERC20 is Context, IERC20, IERC20Detailed {\n  using SafeMath for uint256;\n\n  mapping(address => uint256) internal _balances;\n\n  mapping(address => mapping(address => uint256)) private _allowances;\n  uint256 internal _totalSupply;\n  string private _name;\n  string private _symbol;\n  uint8 private _decimals;\n\n  constructor(\n    string memory name,\n    string memory symbol,\n    uint8 decimals\n  ) public {\n    _name = name;\n    _symbol = symbol;\n    _decimals = decimals;\n  }\n\n  /**\n   * @return The name of the token\n   **/\n  function name() public view override returns (string memory) {\n    return _name;\n  }\n\n  /**\n   * @return The symbol of the token\n   **/\n  function symbol() public view override returns (string memory) {\n    return _symbol;\n  }\n\n  /**\n   * @return The decimals of the token\n   **/\n  function decimals() public view override returns (uint8) {\n    return _decimals;\n  }\n\n  /**\n   * @return The total supply of the token\n   **/\n  function totalSupply() public view virtual override returns (uint256) {\n    return _totalSupply;\n  }\n\n  /**\n   * @return The balance of the token\n   **/\n  function balanceOf(address account) public view virtual override returns (uint256) {\n    return _balances[account];\n  }\n\n  /**\n   * @return Abstract function implemented by the child aToken/debtToken. \n   * Done this way in order to not break compatibility with previous versions of aTokens/debtTokens\n   **/\n  function _getIncentivesController() internal view virtual returns(IAaveIncentivesController);\n\n  /**\n   * @dev Executes a transfer of tokens from _msgSender() to recipient\n   * @param recipient The recipient of the tokens\n   * @param amount The amount of tokens being transferred\n   * @return `true` if the transfer succeeds, `false` otherwise\n   **/\n  function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\n    _transfer(_msgSender(), recipient, amount);\n    emit Transfer(_msgSender(), recipient, amount);\n    return true;\n  }\n\n  /**\n   * @dev Returns the allowance of spender on the tokens owned by owner\n   * @param owner The owner of the tokens\n   * @param spender The user allowed to spend the owner's tokens\n   * @return The amount of owner's tokens spender is allowed to spend\n   **/\n  function allowance(address owner, address spender)\n    public\n    view\n    virtual\n    override\n    returns (uint256)\n  {\n    return _allowances[owner][spender];\n  }\n\n  /**\n   * @dev Allows `spender` to spend the tokens owned by _msgSender()\n   * @param spender The user allowed to spend _msgSender() tokens\n   * @return `true`\n   **/\n  function approve(address spender, uint256 amount) public virtual override returns (bool) {\n    _approve(_msgSender(), spender, amount);\n    return true;\n  }\n\n  /**\n   * @dev Executes a transfer of token from sender to recipient, if _msgSender() is allowed to do so\n   * @param sender The owner of the tokens\n   * @param recipient The recipient of the tokens\n   * @param amount The amount of tokens being transferred\n   * @return `true` if the transfer succeeds, `false` otherwise\n   **/\n  function transferFrom(\n    address sender,\n    address recipient,\n    uint256 amount\n  ) public virtual override returns (bool) {\n    _transfer(sender, recipient, amount);\n    _approve(\n      sender,\n      _msgSender(),\n      _allowances[sender][_msgSender()].sub(amount, 'ERC20: transfer amount exceeds allowance')\n    );\n    emit Transfer(sender, recipient, amount);\n    return true;\n  }\n\n  /**\n   * @dev Increases the allowance of spender to spend _msgSender() tokens\n   * @param spender The user allowed to spend on behalf of _msgSender()\n   * @param addedValue The amount being added to the allowance\n   * @return `true`\n   **/\n  function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n    _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\n    return true;\n  }\n\n  /**\n   * @dev Decreases the allowance of spender to spend _msgSender() tokens\n   * @param spender The user allowed to spend on behalf of _msgSender()\n   * @param subtractedValue The amount being subtracted to the allowance\n   * @return `true`\n   **/\n  function decreaseAllowance(address spender, uint256 subtractedValue)\n    public\n    virtual\n    returns (bool)\n  {\n    _approve(\n      _msgSender(),\n      spender,\n      _allowances[_msgSender()][spender].sub(\n        subtractedValue,\n        'ERC20: decreased allowance below zero'\n      )\n    );\n    return true;\n  }\n\n  function _transfer(\n    address sender,\n    address recipient,\n    uint256 amount\n  ) internal virtual {\n    require(sender != address(0), 'ERC20: transfer from the zero address');\n    require(recipient != address(0), 'ERC20: transfer to the zero address');\n\n    _beforeTokenTransfer(sender, recipient, amount);\n\n    uint256 oldSenderBalance = _balances[sender];\n    _balances[sender] = oldSenderBalance.sub(amount, 'ERC20: transfer amount exceeds balance');\n    uint256 oldRecipientBalance = _balances[recipient];\n    _balances[recipient] = _balances[recipient].add(amount);\n\n    if (address(_getIncentivesController()) != address(0)) {\n      uint256 currentTotalSupply = _totalSupply;\n      _getIncentivesController().handleAction(sender, currentTotalSupply, oldSenderBalance);\n      if (sender != recipient) {\n        _getIncentivesController().handleAction(recipient, currentTotalSupply, oldRecipientBalance);\n      }\n    }\n  }\n\n  function _mint(address account, uint256 amount) internal virtual {\n    require(account != address(0), 'ERC20: mint to the zero address');\n\n    _beforeTokenTransfer(address(0), account, amount);\n\n    uint256 oldTotalSupply = _totalSupply;\n    _totalSupply = oldTotalSupply.add(amount);\n\n    uint256 oldAccountBalance = _balances[account];\n    _balances[account] = oldAccountBalance.add(amount);\n\n    if (address(_getIncentivesController()) != address(0)) {\n      _getIncentivesController().handleAction(account, oldTotalSupply, oldAccountBalance);\n    }\n  }\n\n  function _burn(address account, uint256 amount) internal virtual {\n    require(account != address(0), 'ERC20: burn from the zero address');\n\n    _beforeTokenTransfer(account, address(0), amount);\n\n    uint256 oldTotalSupply = _totalSupply;\n    _totalSupply = oldTotalSupply.sub(amount);\n\n    uint256 oldAccountBalance = _balances[account];\n    _balances[account] = oldAccountBalance.sub(amount, 'ERC20: burn amount exceeds balance');\n\n    if (address(_getIncentivesController()) != address(0)) {\n      _getIncentivesController().handleAction(account, oldTotalSupply, oldAccountBalance);\n    }\n  }\n\n  function _approve(\n    address owner,\n    address spender,\n    uint256 amount\n  ) internal virtual {\n    require(owner != address(0), 'ERC20: approve from the zero address');\n    require(spender != address(0), 'ERC20: approve to the zero address');\n\n    _allowances[owner][spender] = amount;\n    emit Approval(owner, spender, amount);\n  }\n\n  function _setName(string memory newName) internal {\n    _name = newName;\n  }\n\n  function _setSymbol(string memory newSymbol) internal {\n    _symbol = newSymbol;\n  }\n\n  function _setDecimals(uint8 newDecimals) internal {\n    _decimals = newDecimals;\n  }\n\n  function _beforeTokenTransfer(\n    address from,\n    address to,\n    uint256 amount\n  ) internal virtual {}\n}\n"
      },
      "contracts/mocks/upgradeability/MockVariableDebtToken.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {VariableDebtToken} from '../../protocol/tokenization/VariableDebtToken.sol';\n\ncontract MockVariableDebtToken is VariableDebtToken {\n  function getRevision() internal pure override returns (uint256) {\n    return 0x2;\n  }\n}\n"
      },
      "contracts/mocks/upgradeability/MockAToken.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {AToken} from '../../protocol/tokenization/AToken.sol';\nimport {ILendingPool} from '../../interfaces/ILendingPool.sol';\nimport {IAaveIncentivesController} from '../../interfaces/IAaveIncentivesController.sol';\n\ncontract MockAToken is AToken {\n  function getRevision() internal pure override returns (uint256) {\n    return 0x2;\n  }\n}\n"
      },
      "contracts/protocol/tokenization/AToken.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {IERC20} from '../../dependencies/openzeppelin/contracts/IERC20.sol';\nimport {SafeERC20} from '../../dependencies/openzeppelin/contracts/SafeERC20.sol';\nimport {ILendingPool} from '../../interfaces/ILendingPool.sol';\nimport {IAToken} from '../../interfaces/IAToken.sol';\nimport {WadRayMath} from '../libraries/math/WadRayMath.sol';\nimport {Errors} from '../libraries/helpers/Errors.sol';\nimport {VersionedInitializable} from '../libraries/aave-upgradeability/VersionedInitializable.sol';\nimport {IncentivizedERC20} from './IncentivizedERC20.sol';\nimport {IAaveIncentivesController} from '../../interfaces/IAaveIncentivesController.sol';\n\n/**\n * @title Aave ERC20 AToken\n * @dev Implementation of the interest bearing token for the Aave protocol\n * @author Aave\n */\ncontract AToken is\n  VersionedInitializable,\n  IncentivizedERC20('ATOKEN_IMPL', 'ATOKEN_IMPL', 0),\n  IAToken\n{\n  using WadRayMath for uint256;\n  using SafeERC20 for IERC20;\n\n  bytes public constant EIP712_REVISION = bytes('1');\n  bytes32 internal constant EIP712_DOMAIN =\n    keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)');\n  bytes32 public constant PERMIT_TYPEHASH =\n    keccak256('Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)');\n\n  uint256 public constant ATOKEN_REVISION = 0x1;\n\n  /// @dev owner => next valid nonce to submit with permit()\n  mapping(address => uint256) public _nonces;\n\n  bytes32 public DOMAIN_SEPARATOR;\n\n  ILendingPool internal _pool;\n  address internal _treasury;\n  address internal _underlyingAsset;\n  IAaveIncentivesController internal _incentivesController;\n\n  modifier onlyLendingPool {\n    require(_msgSender() == address(_pool), Errors.CT_CALLER_MUST_BE_LENDING_POOL);\n    _;\n  }\n\n  function getRevision() internal pure virtual override returns (uint256) {\n    return ATOKEN_REVISION;\n  }\n\n  /**\n   * @dev Initializes the aToken\n   * @param pool The address of the lending pool where this aToken will be used\n   * @param treasury The address of the Aave treasury, receiving the fees on this aToken\n   * @param underlyingAsset The address of the underlying asset of this aToken (E.g. WETH for aWETH)\n   * @param incentivesController The smart contract managing potential incentives distribution\n   * @param aTokenDecimals The decimals of the aToken, same as the underlying asset's\n   * @param aTokenName The name of the aToken\n   * @param aTokenSymbol The symbol of the aToken\n   */\n  function initialize(\n    ILendingPool pool,\n    address treasury,\n    address underlyingAsset,\n    IAaveIncentivesController incentivesController,\n    uint8 aTokenDecimals,\n    string calldata aTokenName,\n    string calldata aTokenSymbol,\n    bytes calldata params\n  ) external override initializer {\n    uint256 chainId;\n\n    //solium-disable-next-line\n    assembly {\n      chainId := chainid()\n    }\n\n    DOMAIN_SEPARATOR = keccak256(\n      abi.encode(\n        EIP712_DOMAIN,\n        keccak256(bytes(aTokenName)),\n        keccak256(EIP712_REVISION),\n        chainId,\n        address(this)\n      )\n    );\n\n    _setName(aTokenName);\n    _setSymbol(aTokenSymbol);\n    _setDecimals(aTokenDecimals);\n\n    _pool = pool;\n    _treasury = treasury;\n    _underlyingAsset = underlyingAsset;\n    _incentivesController = incentivesController;\n\n    emit Initialized(\n      underlyingAsset,\n      address(pool),\n      treasury,\n      address(incentivesController),\n      aTokenDecimals,\n      aTokenName,\n      aTokenSymbol,\n      params\n    );\n  }\n\n  /**\n   * @dev Burns aTokens from `user` and sends the equivalent amount of underlying to `receiverOfUnderlying`\n   * - Only callable by the LendingPool, as extra state updates there need to be managed\n   * @param user The owner of the aTokens, getting them burned\n   * @param receiverOfUnderlying The address that will receive the underlying\n   * @param amount The amount being burned\n   * @param index The new liquidity index of the reserve\n   **/\n  function burn(\n    address user,\n    address receiverOfUnderlying,\n    uint256 amount,\n    uint256 index\n  ) external override onlyLendingPool {\n    uint256 amountScaled = amount.rayDiv(index);\n    require(amountScaled != 0, Errors.CT_INVALID_BURN_AMOUNT);\n    _burn(user, amountScaled);\n\n    IERC20(_underlyingAsset).safeTransfer(receiverOfUnderlying, amount);\n\n    emit Transfer(user, address(0), amount);\n    emit Burn(user, receiverOfUnderlying, amount, index);\n  }\n\n  /**\n   * @dev Mints `amount` aTokens to `user`\n   * - Only callable by the LendingPool, as extra state updates there need to be managed\n   * @param user The address receiving the minted tokens\n   * @param amount The amount of tokens getting minted\n   * @param index The new liquidity index of the reserve\n   * @return `true` if the the previous balance of the user was 0\n   */\n  function mint(\n    address user,\n    uint256 amount,\n    uint256 index\n  ) external override onlyLendingPool returns (bool) {\n    uint256 previousBalance = super.balanceOf(user);\n\n    uint256 amountScaled = amount.rayDiv(index);\n    require(amountScaled != 0, Errors.CT_INVALID_MINT_AMOUNT);\n    _mint(user, amountScaled);\n\n    emit Transfer(address(0), user, amount);\n    emit Mint(user, amount, index);\n\n    return previousBalance == 0;\n  }\n\n  /**\n   * @dev Mints aTokens to the reserve treasury\n   * - Only callable by the LendingPool\n   * @param amount The amount of tokens getting minted\n   * @param index The new liquidity index of the reserve\n   */\n  function mintToTreasury(uint256 amount, uint256 index) external override onlyLendingPool {\n    if (amount == 0) {\n      return;\n    }\n\n    address treasury = _treasury;\n\n    // Compared to the normal mint, we don't check for rounding errors.\n    // The amount to mint can easily be very small since it is a fraction of the interest ccrued.\n    // In that case, the treasury will experience a (very small) loss, but it\n    // wont cause potentially valid transactions to fail.\n    _mint(treasury, amount.rayDiv(index));\n\n    emit Transfer(address(0), treasury, amount);\n    emit Mint(treasury, amount, index);\n  }\n\n  /**\n   * @dev Transfers aTokens in the event of a borrow being liquidated, in case the liquidators reclaims the aToken\n   * - Only callable by the LendingPool\n   * @param from The address getting liquidated, current owner of the aTokens\n   * @param to The recipient\n   * @param value The amount of tokens getting transferred\n   **/\n  function transferOnLiquidation(\n    address from,\n    address to,\n    uint256 value\n  ) external override onlyLendingPool {\n    // Being a normal transfer, the Transfer() and BalanceTransfer() are emitted\n    // so no need to emit a specific event here\n    _transfer(from, to, value, false);\n\n    emit Transfer(from, to, value);\n  }\n\n  /**\n   * @dev Calculates the balance of the user: principal balance + interest generated by the principal\n   * @param user The user whose balance is calculated\n   * @return The balance of the user\n   **/\n  function balanceOf(address user)\n    public\n    view\n    override(IncentivizedERC20, IERC20)\n    returns (uint256)\n  {\n    return super.balanceOf(user).rayMul(_pool.getReserveNormalizedIncome(_underlyingAsset));\n  }\n\n  /**\n   * @dev Returns the scaled balance of the user. The scaled balance is the sum of all the\n   * updated stored balance divided by the reserve's liquidity index at the moment of the update\n   * @param user The user whose balance is calculated\n   * @return The scaled balance of the user\n   **/\n  function scaledBalanceOf(address user) external view override returns (uint256) {\n    return super.balanceOf(user);\n  }\n\n  /**\n   * @dev Returns the scaled balance of the user and the scaled total supply.\n   * @param user The address of the user\n   * @return The scaled balance of the user\n   * @return The scaled balance and the scaled total supply\n   **/\n  function getScaledUserBalanceAndSupply(address user)\n    external\n    view\n    override\n    returns (uint256, uint256)\n  {\n    return (super.balanceOf(user), super.totalSupply());\n  }\n\n  /**\n   * @dev calculates the total supply of the specific aToken\n   * since the balance of every single user increases over time, the total supply\n   * does that too.\n   * @return the current total supply\n   **/\n  function totalSupply() public view override(IncentivizedERC20, IERC20) returns (uint256) {\n    uint256 currentSupplyScaled = super.totalSupply();\n\n    if (currentSupplyScaled == 0) {\n      return 0;\n    }\n\n    return currentSupplyScaled.rayMul(_pool.getReserveNormalizedIncome(_underlyingAsset));\n  }\n\n  /**\n   * @dev Returns the scaled total supply of the variable debt token. Represents sum(debt/index)\n   * @return the scaled total supply\n   **/\n  function scaledTotalSupply() public view virtual override returns (uint256) {\n    return super.totalSupply();\n  }\n\n  /**\n   * @dev Returns the address of the Aave treasury, receiving the fees on this aToken\n   **/\n  function RESERVE_TREASURY_ADDRESS() public view returns (address) {\n    return _treasury;\n  }\n\n  /**\n   * @dev Returns the address of the underlying asset of this aToken (E.g. WETH for aWETH)\n   **/\n  function UNDERLYING_ASSET_ADDRESS() public override view returns (address) {\n    return _underlyingAsset;\n  }\n\n  /**\n   * @dev Returns the address of the lending pool where this aToken is used\n   **/\n  function POOL() public view returns (ILendingPool) {\n    return _pool;\n  }\n\n  /**\n   * @dev For internal usage in the logic of the parent contract IncentivizedERC20\n   **/\n  function _getIncentivesController() internal view override returns (IAaveIncentivesController) {\n    return _incentivesController;\n  }\n\n  /**\n   * @dev Returns the address of the incentives controller contract\n   **/\n  function getIncentivesController() external view override returns (IAaveIncentivesController) {\n    return _getIncentivesController();\n  }\n\n  /**\n   * @dev Transfers the underlying asset to `target`. Used by the LendingPool to transfer\n   * assets in borrow(), withdraw() and flashLoan()\n   * @param target The recipient of the aTokens\n   * @param amount The amount getting transferred\n   * @return The amount transferred\n   **/\n  function transferUnderlyingTo(address target, uint256 amount)\n    external\n    override\n    onlyLendingPool\n    returns (uint256)\n  {\n    IERC20(_underlyingAsset).safeTransfer(target, amount);\n    return amount;\n  }\n\n  /**\n   * @dev Invoked to execute actions on the aToken side after a repayment.\n   * @param user The user executing the repayment\n   * @param amount The amount getting repaid\n   **/\n  function handleRepayment(address user, uint256 amount) external override onlyLendingPool {}\n\n  /**\n   * @dev implements the permit function as for\n   * https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n   * @param owner The owner of the funds\n   * @param spender The spender\n   * @param value The amount\n   * @param deadline The deadline timestamp, type(uint256).max for max deadline\n   * @param v Signature param\n   * @param s Signature param\n   * @param r Signature param\n   */\n  function permit(\n    address owner,\n    address spender,\n    uint256 value,\n    uint256 deadline,\n    uint8 v,\n    bytes32 r,\n    bytes32 s\n  ) external {\n    require(owner != address(0), 'INVALID_OWNER');\n    //solium-disable-next-line\n    require(block.timestamp <= deadline, 'INVALID_EXPIRATION');\n    uint256 currentValidNonce = _nonces[owner];\n    bytes32 digest =\n      keccak256(\n        abi.encodePacked(\n          '\\x19\\x01',\n          DOMAIN_SEPARATOR,\n          keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, currentValidNonce, deadline))\n        )\n      );\n    require(owner == ecrecover(digest, v, r, s), 'INVALID_SIGNATURE');\n    _nonces[owner] = currentValidNonce.add(1);\n    _approve(owner, spender, value);\n  }\n\n  /**\n   * @dev Transfers the aTokens between two users. Validates the transfer\n   * (ie checks for valid HF after the transfer) if required\n   * @param from The source address\n   * @param to The destination address\n   * @param amount The amount getting transferred\n   * @param validate `true` if the transfer needs to be validated\n   **/\n  function _transfer(\n    address from,\n    address to,\n    uint256 amount,\n    bool validate\n  ) internal {\n    address underlyingAsset = _underlyingAsset;\n    ILendingPool pool = _pool;\n\n    uint256 index = pool.getReserveNormalizedIncome(underlyingAsset);\n\n    uint256 fromBalanceBefore = super.balanceOf(from).rayMul(index);\n    uint256 toBalanceBefore = super.balanceOf(to).rayMul(index);\n\n    super._transfer(from, to, amount.rayDiv(index));\n\n    if (validate) {\n      pool.finalizeTransfer(underlyingAsset, from, to, amount, fromBalanceBefore, toBalanceBefore);\n    }\n\n    emit BalanceTransfer(from, to, amount, index);\n  }\n\n  /**\n   * @dev Overrides the parent _transfer to force validated transfer() and transferFrom()\n   * @param from The source address\n   * @param to The destination address\n   * @param amount The amount getting transferred\n   **/\n  function _transfer(\n    address from,\n    address to,\n    uint256 amount\n  ) internal override {\n    _transfer(from, to, amount, true);\n  }\n}\n"
      },
      "contracts/protocol/tokenization/DelegationAwareAToken.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {ILendingPool} from '../../interfaces/ILendingPool.sol';\nimport {IDelegationToken} from '../../interfaces/IDelegationToken.sol';\nimport {Errors} from '../libraries/helpers/Errors.sol';\nimport {AToken} from './AToken.sol';\n\n/**\n * @title Aave AToken enabled to delegate voting power of the underlying asset to a different address\n * @dev The underlying asset needs to be compatible with the COMP delegation interface\n * @author Aave\n */\ncontract DelegationAwareAToken is AToken {\n  modifier onlyPoolAdmin {\n    require(\n      _msgSender() == ILendingPool(_pool).getAddressesProvider().getPoolAdmin(),\n      Errors.CALLER_NOT_POOL_ADMIN\n    );\n    _;\n  }\n\n  /**\n   * @dev Delegates voting power of the underlying asset to a `delegatee` address\n   * @param delegatee The address that will receive the delegation\n   **/\n  function delegateUnderlyingTo(address delegatee) external onlyPoolAdmin {\n    IDelegationToken(_underlyingAsset).delegate(delegatee);\n  }\n}\n"
      },
      "contracts/interfaces/IDelegationToken.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\n/**\n * @title IDelegationToken\n * @dev Implements an interface for tokens with delegation COMP/UNI compatible\n * @author Aave\n **/\ninterface IDelegationToken {\n  function delegate(address delegatee) external;\n}\n"
      },
      "contracts/protocol/configuration/LendingPoolAddressesProviderRegistry.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {Ownable} from '../../dependencies/openzeppelin/contracts/Ownable.sol';\nimport {\n  ILendingPoolAddressesProviderRegistry\n} from '../../interfaces/ILendingPoolAddressesProviderRegistry.sol';\nimport {Errors} from '../libraries/helpers/Errors.sol';\n\n/**\n * @title LendingPoolAddressesProviderRegistry contract\n * @dev Main registry of LendingPoolAddressesProvider of multiple Aave protocol's markets\n * - Used for indexing purposes of Aave protocol's markets\n * - The id assigned to a LendingPoolAddressesProvider refers to the market it is connected with,\n *   for example with `0` for the Aave main market and `1` for the next created\n * @author Aave\n **/\ncontract LendingPoolAddressesProviderRegistry is Ownable, ILendingPoolAddressesProviderRegistry {\n  mapping(address => uint256) private _addressesProviders;\n  address[] private _addressesProvidersList;\n\n  /**\n   * @dev Returns the list of registered addresses provider\n   * @return The list of addresses provider, potentially containing address(0) elements\n   **/\n  function getAddressesProvidersList() external view override returns (address[] memory) {\n    address[] memory addressesProvidersList = _addressesProvidersList;\n\n    uint256 maxLength = addressesProvidersList.length;\n\n    address[] memory activeProviders = new address[](maxLength);\n\n    for (uint256 i = 0; i < maxLength; i++) {\n      if (_addressesProviders[addressesProvidersList[i]] > 0) {\n        activeProviders[i] = addressesProvidersList[i];\n      }\n    }\n\n    return activeProviders;\n  }\n\n  /**\n   * @dev Registers an addresses provider\n   * @param provider The address of the new LendingPoolAddressesProvider\n   * @param id The id for the new LendingPoolAddressesProvider, referring to the market it belongs to\n   **/\n  function registerAddressesProvider(address provider, uint256 id) external override onlyOwner {\n    require(id != 0, Errors.LPAPR_INVALID_ADDRESSES_PROVIDER_ID);\n\n    _addressesProviders[provider] = id;\n    _addToAddressesProvidersList(provider);\n    emit AddressesProviderRegistered(provider);\n  }\n\n  /**\n   * @dev Removes a LendingPoolAddressesProvider from the list of registered addresses provider\n   * @param provider The LendingPoolAddressesProvider address\n   **/\n  function unregisterAddressesProvider(address provider) external override onlyOwner {\n    require(_addressesProviders[provider] > 0, Errors.LPAPR_PROVIDER_NOT_REGISTERED);\n    _addressesProviders[provider] = 0;\n    emit AddressesProviderUnregistered(provider);\n  }\n\n  /**\n   * @dev Returns the id on a registered LendingPoolAddressesProvider\n   * @return The id or 0 if the LendingPoolAddressesProvider is not registered\n   */\n  function getAddressesProviderIdByAddress(address addressesProvider)\n    external\n    view\n    override\n    returns (uint256)\n  {\n    return _addressesProviders[addressesProvider];\n  }\n\n  function _addToAddressesProvidersList(address provider) internal {\n    uint256 providersCount = _addressesProvidersList.length;\n\n    for (uint256 i = 0; i < providersCount; i++) {\n      if (_addressesProvidersList[i] == provider) {\n        return;\n      }\n    }\n\n    _addressesProvidersList.push(provider);\n  }\n}\n"
      },
      "contracts/interfaces/ILendingPoolAddressesProviderRegistry.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\n/**\n * @title LendingPoolAddressesProviderRegistry contract\n * @dev Main registry of LendingPoolAddressesProvider of multiple Aave protocol's markets\n * - Used for indexing purposes of Aave protocol's markets\n * - The id assigned to a LendingPoolAddressesProvider refers to the market it is connected with,\n *   for example with `0` for the Aave main market and `1` for the next created\n * @author Aave\n **/\ninterface ILendingPoolAddressesProviderRegistry {\n  event AddressesProviderRegistered(address indexed newAddress);\n  event AddressesProviderUnregistered(address indexed newAddress);\n\n  function getAddressesProvidersList() external view returns (address[] memory);\n\n  function getAddressesProviderIdByAddress(address addressesProvider)\n    external\n    view\n    returns (uint256);\n\n  function registerAddressesProvider(address provider, uint256 id) external;\n\n  function unregisterAddressesProvider(address provider) external;\n}\n"
      },
      "contracts/mocks/oracle/LendingRateOracle.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {ILendingRateOracle} from '../../interfaces/ILendingRateOracle.sol';\nimport {Ownable} from '../../dependencies/openzeppelin/contracts/Ownable.sol';\n\ncontract LendingRateOracle is ILendingRateOracle, Ownable {\n  mapping(address => uint256) borrowRates;\n  mapping(address => uint256) liquidityRates;\n\n  function getMarketBorrowRate(address _asset) external view override returns (uint256) {\n    return borrowRates[_asset];\n  }\n\n  function setMarketBorrowRate(address _asset, uint256 _rate) external override onlyOwner {\n    borrowRates[_asset] = _rate;\n  }\n\n  function getMarketLiquidityRate(address _asset) external view returns (uint256) {\n    return liquidityRates[_asset];\n  }\n\n  function setMarketLiquidityRate(address _asset, uint256 _rate) external onlyOwner {\n    liquidityRates[_asset] = _rate;\n  }\n}\n"
      },
      "contracts/deployments/StableAndVariableTokensHelper.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\n\nimport {StableDebtToken} from '../protocol/tokenization/StableDebtToken.sol';\nimport {VariableDebtToken} from '../protocol/tokenization/VariableDebtToken.sol';\nimport {LendingRateOracle} from '../mocks/oracle/LendingRateOracle.sol';\nimport {Ownable} from '../dependencies/openzeppelin/contracts/Ownable.sol';\nimport {StringLib} from './StringLib.sol';\n\ncontract StableAndVariableTokensHelper is Ownable {\n  address payable private pool;\n  address private addressesProvider;\n  event deployedContracts(address stableToken, address variableToken);\n\n  constructor(address payable _pool, address _addressesProvider) public {\n    pool = _pool;\n    addressesProvider = _addressesProvider;\n  }\n\n  function initDeployment(address[] calldata tokens, string[] calldata symbols) external onlyOwner {\n    require(tokens.length == symbols.length, 'Arrays not same length');\n    require(pool != address(0), 'Pool can not be zero address');\n    for (uint256 i = 0; i < tokens.length; i++) {\n      emit deployedContracts(address(new StableDebtToken()), address(new VariableDebtToken()));\n    }\n  }\n\n  function setOracleBorrowRates(\n    address[] calldata assets,\n    uint256[] calldata rates,\n    address oracle\n  ) external onlyOwner {\n    require(assets.length == rates.length, 'Arrays not same length');\n\n    for (uint256 i = 0; i < assets.length; i++) {\n      // LendingRateOracle owner must be this contract\n      LendingRateOracle(oracle).setMarketBorrowRate(assets[i], rates[i]);\n    }\n  }\n\n  function setOracleOwnership(address oracle, address admin) external onlyOwner {\n    require(admin != address(0), 'owner can not be zero');\n    require(LendingRateOracle(oracle).owner() == address(this), 'helper is not owner');\n    LendingRateOracle(oracle).transferOwnership(admin);\n  }\n}\n"
      },
      "contracts/protocol/tokenization/StableDebtToken.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {DebtTokenBase} from './base/DebtTokenBase.sol';\nimport {MathUtils} from '../libraries/math/MathUtils.sol';\nimport {WadRayMath} from '../libraries/math/WadRayMath.sol';\nimport {IStableDebtToken} from '../../interfaces/IStableDebtToken.sol';\nimport {ILendingPool} from '../../interfaces/ILendingPool.sol';\nimport {IAaveIncentivesController} from '../../interfaces/IAaveIncentivesController.sol';\nimport {Errors} from '../libraries/helpers/Errors.sol';\n\n/**\n * @title StableDebtToken\n * @notice Implements a stable debt token to track the borrowing positions of users\n * at stable rate mode\n * @author Aave\n **/\ncontract StableDebtToken is IStableDebtToken, DebtTokenBase {\n  using WadRayMath for uint256;\n\n  uint256 public constant DEBT_TOKEN_REVISION = 0x1;\n\n  uint256 internal _avgStableRate;\n  mapping(address => uint40) internal _timestamps;\n  mapping(address => uint256) internal _usersStableRate;\n  uint40 internal _totalSupplyTimestamp;\n\n  ILendingPool internal _pool;\n  address internal _underlyingAsset;\n  IAaveIncentivesController internal _incentivesController;\n\n  /**\n   * @dev Initializes the debt token.\n   * @param pool The address of the lending pool where this aToken will be used\n   * @param underlyingAsset The address of the underlying asset of this aToken (E.g. WETH for aWETH)\n   * @param incentivesController The smart contract managing potential incentives distribution\n   * @param debtTokenDecimals The decimals of the debtToken, same as the underlying asset's\n   * @param debtTokenName The name of the token\n   * @param debtTokenSymbol The symbol of the token\n   */\n  function initialize(\n    ILendingPool pool,\n    address underlyingAsset,\n    IAaveIncentivesController incentivesController,\n    uint8 debtTokenDecimals,\n    string memory debtTokenName,\n    string memory debtTokenSymbol,\n    bytes calldata params\n  ) public override initializer {\n    _setName(debtTokenName);\n    _setSymbol(debtTokenSymbol);\n    _setDecimals(debtTokenDecimals);\n\n    _pool = pool;\n    _underlyingAsset = underlyingAsset;\n    _incentivesController = incentivesController;\n\n    emit Initialized(\n      underlyingAsset,\n      address(pool),\n      address(incentivesController),\n      debtTokenDecimals,\n      debtTokenName,\n      debtTokenSymbol,\n      params\n    );\n  }\n\n  /**\n   * @dev Gets the revision of the stable debt token implementation\n   * @return The debt token implementation revision\n   **/\n  function getRevision() internal pure virtual override returns (uint256) {\n    return DEBT_TOKEN_REVISION;\n  }\n\n  /**\n   * @dev Returns the average stable rate across all the stable rate debt\n   * @return the average stable rate\n   **/\n  function getAverageStableRate() external view virtual override returns (uint256) {\n    return _avgStableRate;\n  }\n\n  /**\n   * @dev Returns the timestamp of the last user action\n   * @return The last update timestamp\n   **/\n  function getUserLastUpdated(address user) external view virtual override returns (uint40) {\n    return _timestamps[user];\n  }\n\n  /**\n   * @dev Returns the stable rate of the user\n   * @param user The address of the user\n   * @return The stable rate of user\n   **/\n  function getUserStableRate(address user) external view virtual override returns (uint256) {\n    return _usersStableRate[user];\n  }\n\n  /**\n   * @dev Calculates the current user debt balance\n   * @return The accumulated debt of the user\n   **/\n  function balanceOf(address account) public view virtual override returns (uint256) {\n    uint256 accountBalance = super.balanceOf(account);\n    uint256 stableRate = _usersStableRate[account];\n    if (accountBalance == 0) {\n      return 0;\n    }\n    uint256 cumulatedInterest =\n      MathUtils.calculateCompoundedInterest(stableRate, _timestamps[account]);\n    return accountBalance.rayMul(cumulatedInterest);\n  }\n\n  struct MintLocalVars {\n    uint256 previousSupply;\n    uint256 nextSupply;\n    uint256 amountInRay;\n    uint256 newStableRate;\n    uint256 currentAvgStableRate;\n  }\n\n  /**\n   * @dev Mints debt token to the `onBehalfOf` address.\n   * -  Only callable by the LendingPool\n   * - The resulting rate is the weighted average between the rate of the new debt\n   * and the rate of the previous debt\n   * @param user The address receiving the borrowed underlying, being the delegatee in case\n   * of credit delegate, or same as `onBehalfOf` otherwise\n   * @param onBehalfOf The address receiving the debt tokens\n   * @param amount The amount of debt tokens to mint\n   * @param rate The rate of the debt being minted\n   **/\n  function mint(\n    address user,\n    address onBehalfOf,\n    uint256 amount,\n    uint256 rate\n  ) external override onlyLendingPool returns (bool) {\n    MintLocalVars memory vars;\n\n    if (user != onBehalfOf) {\n      _decreaseBorrowAllowance(onBehalfOf, user, amount);\n    }\n\n    (, uint256 currentBalance, uint256 balanceIncrease) = _calculateBalanceIncrease(onBehalfOf);\n\n    vars.previousSupply = totalSupply();\n    vars.currentAvgStableRate = _avgStableRate;\n    vars.nextSupply = _totalSupply = vars.previousSupply.add(amount);\n\n    vars.amountInRay = amount.wadToRay();\n\n    vars.newStableRate = _usersStableRate[onBehalfOf]\n      .rayMul(currentBalance.wadToRay())\n      .add(vars.amountInRay.rayMul(rate))\n      .rayDiv(currentBalance.add(amount).wadToRay());\n\n    require(vars.newStableRate <= type(uint128).max, Errors.SDT_STABLE_DEBT_OVERFLOW);\n    _usersStableRate[onBehalfOf] = vars.newStableRate;\n\n    //solium-disable-next-line\n    _totalSupplyTimestamp = _timestamps[onBehalfOf] = uint40(block.timestamp);\n\n    // Calculates the updated average stable rate\n    vars.currentAvgStableRate = _avgStableRate = vars\n      .currentAvgStableRate\n      .rayMul(vars.previousSupply.wadToRay())\n      .add(rate.rayMul(vars.amountInRay))\n      .rayDiv(vars.nextSupply.wadToRay());\n\n    _mint(onBehalfOf, amount.add(balanceIncrease), vars.previousSupply);\n\n    emit Transfer(address(0), onBehalfOf, amount);\n\n    emit Mint(\n      user,\n      onBehalfOf,\n      amount,\n      currentBalance,\n      balanceIncrease,\n      vars.newStableRate,\n      vars.currentAvgStableRate,\n      vars.nextSupply\n    );\n\n    return currentBalance == 0;\n  }\n\n  /**\n   * @dev Burns debt of `user`\n   * @param user The address of the user getting his debt burned\n   * @param amount The amount of debt tokens getting burned\n   **/\n  function burn(address user, uint256 amount) external override onlyLendingPool {\n    (, uint256 currentBalance, uint256 balanceIncrease) = _calculateBalanceIncrease(user);\n\n    uint256 previousSupply = totalSupply();\n    uint256 newAvgStableRate = 0;\n    uint256 nextSupply = 0;\n    uint256 userStableRate = _usersStableRate[user];\n\n    // Since the total supply and each single user debt accrue separately,\n    // there might be accumulation errors so that the last borrower repaying\n    // mght actually try to repay more than the available debt supply.\n    // In this case we simply set the total supply and the avg stable rate to 0\n    if (previousSupply <= amount) {\n      _avgStableRate = 0;\n      _totalSupply = 0;\n    } else {\n      nextSupply = _totalSupply = previousSupply.sub(amount);\n      uint256 firstTerm = _avgStableRate.rayMul(previousSupply.wadToRay());\n      uint256 secondTerm = userStableRate.rayMul(amount.wadToRay());\n\n      // For the same reason described above, when the last user is repaying it might\n      // happen that user rate * user balance > avg rate * total supply. In that case,\n      // we simply set the avg rate to 0\n      if (secondTerm >= firstTerm) {\n        newAvgStableRate = _avgStableRate = _totalSupply = 0;\n      } else {\n        newAvgStableRate = _avgStableRate = firstTerm.sub(secondTerm).rayDiv(nextSupply.wadToRay());\n      }\n    }\n\n    if (amount == currentBalance) {\n      _usersStableRate[user] = 0;\n      _timestamps[user] = 0;\n    } else {\n      //solium-disable-next-line\n      _timestamps[user] = uint40(block.timestamp);\n    }\n    //solium-disable-next-line\n    _totalSupplyTimestamp = uint40(block.timestamp);\n\n    if (balanceIncrease > amount) {\n      uint256 amountToMint = balanceIncrease.sub(amount);\n      _mint(user, amountToMint, previousSupply);\n      emit Mint(\n        user,\n        user,\n        amountToMint,\n        currentBalance,\n        balanceIncrease,\n        userStableRate,\n        newAvgStableRate,\n        nextSupply\n      );\n    } else {\n      uint256 amountToBurn = amount.sub(balanceIncrease);\n      _burn(user, amountToBurn, previousSupply);\n      emit Burn(user, amountToBurn, currentBalance, balanceIncrease, newAvgStableRate, nextSupply);\n    }\n\n    emit Transfer(user, address(0), amount);\n  }\n\n  /**\n   * @dev Calculates the increase in balance since the last user interaction\n   * @param user The address of the user for which the interest is being accumulated\n   * @return The previous principal balance, the new principal balance and the balance increase\n   **/\n  function _calculateBalanceIncrease(address user)\n    internal\n    view\n    returns (\n      uint256,\n      uint256,\n      uint256\n    )\n  {\n    uint256 previousPrincipalBalance = super.balanceOf(user);\n\n    if (previousPrincipalBalance == 0) {\n      return (0, 0, 0);\n    }\n\n    // Calculation of the accrued interest since the last accumulation\n    uint256 balanceIncrease = balanceOf(user).sub(previousPrincipalBalance);\n\n    return (\n      previousPrincipalBalance,\n      previousPrincipalBalance.add(balanceIncrease),\n      balanceIncrease\n    );\n  }\n\n  /**\n   * @dev Returns the principal and total supply, the average borrow rate and the last supply update timestamp\n   **/\n  function getSupplyData()\n    public\n    view\n    override\n    returns (\n      uint256,\n      uint256,\n      uint256,\n      uint40\n    )\n  {\n    uint256 avgRate = _avgStableRate;\n    return (super.totalSupply(), _calcTotalSupply(avgRate), avgRate, _totalSupplyTimestamp);\n  }\n\n  /**\n   * @dev Returns the the total supply and the average stable rate\n   **/\n  function getTotalSupplyAndAvgRate() public view override returns (uint256, uint256) {\n    uint256 avgRate = _avgStableRate;\n    return (_calcTotalSupply(avgRate), avgRate);\n  }\n\n  /**\n   * @dev Returns the total supply\n   **/\n  function totalSupply() public view override returns (uint256) {\n    return _calcTotalSupply(_avgStableRate);\n  }\n\n  /**\n   * @dev Returns the timestamp at which the total supply was updated\n   **/\n  function getTotalSupplyLastUpdated() public view override returns (uint40) {\n    return _totalSupplyTimestamp;\n  }\n\n  /**\n   * @dev Returns the principal debt balance of the user from\n   * @param user The user's address\n   * @return The debt balance of the user since the last burn/mint action\n   **/\n  function principalBalanceOf(address user) external view virtual override returns (uint256) {\n    return super.balanceOf(user);\n  }\n\n  /**\n   * @dev Returns the address of the underlying asset of this aToken (E.g. WETH for aWETH)\n   **/\n  function UNDERLYING_ASSET_ADDRESS() public view returns (address) {\n    return _underlyingAsset;\n  }\n\n  /**\n   * @dev Returns the address of the lending pool where this aToken is used\n   **/\n  function POOL() public view returns (ILendingPool) {\n    return _pool;\n  }\n\n  /**\n   * @dev Returns the address of the incentives controller contract\n   **/\n  function getIncentivesController() external view override returns (IAaveIncentivesController) {\n    return _getIncentivesController();\n  }\n\n  /**\n   * @dev For internal usage in the logic of the parent contracts\n   **/\n  function _getIncentivesController() internal view override returns (IAaveIncentivesController) {\n    return _incentivesController;\n  }\n\n  /**\n   * @dev For internal usage in the logic of the parent contracts\n   **/\n  function _getUnderlyingAssetAddress() internal view override returns (address) {\n    return _underlyingAsset;\n  }\n\n  /**\n   * @dev For internal usage in the logic of the parent contracts\n   **/\n  function _getLendingPool() internal view override returns (ILendingPool) {\n    return _pool;\n  }\n\n  /**\n   * @dev Calculates the total supply\n   * @param avgRate The average rate at which the total supply increases\n   * @return The debt balance of the user since the last burn/mint action\n   **/\n  function _calcTotalSupply(uint256 avgRate) internal view virtual returns (uint256) {\n    uint256 principalSupply = super.totalSupply();\n\n    if (principalSupply == 0) {\n      return 0;\n    }\n\n    uint256 cumulatedInterest =\n      MathUtils.calculateCompoundedInterest(avgRate, _totalSupplyTimestamp);\n\n    return principalSupply.rayMul(cumulatedInterest);\n  }\n\n  /**\n   * @dev Mints stable debt tokens to an user\n   * @param account The account receiving the debt tokens\n   * @param amount The amount being minted\n   * @param oldTotalSupply the total supply before the minting event\n   **/\n  function _mint(\n    address account,\n    uint256 amount,\n    uint256 oldTotalSupply\n  ) internal {\n    uint256 oldAccountBalance = _balances[account];\n    _balances[account] = oldAccountBalance.add(amount);\n\n    if (address(_incentivesController) != address(0)) {\n      _incentivesController.handleAction(account, oldTotalSupply, oldAccountBalance);\n    }\n  }\n\n  /**\n   * @dev Burns stable debt tokens of an user\n   * @param account The user getting his debt burned\n   * @param amount The amount being burned\n   * @param oldTotalSupply The total supply before the burning event\n   **/\n  function _burn(\n    address account,\n    uint256 amount,\n    uint256 oldTotalSupply\n  ) internal {\n    uint256 oldAccountBalance = _balances[account];\n    _balances[account] = oldAccountBalance.sub(amount, Errors.SDT_BURN_EXCEEDS_BALANCE);\n\n    if (address(_incentivesController) != address(0)) {\n      _incentivesController.handleAction(account, oldTotalSupply, oldAccountBalance);\n    }\n  }\n}\n"
      },
      "contracts/deployments/StringLib.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nlibrary StringLib {\n  function concat(string memory a, string memory b) internal pure returns (string memory) {\n    return string(abi.encodePacked(a, b));\n  }\n}\n"
      },
      "contracts/deployments/ATokensAndRatesHelper.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\n\nimport {LendingPool} from '../protocol/lendingpool/LendingPool.sol';\nimport {\n  LendingPoolAddressesProvider\n} from '../protocol/configuration/LendingPoolAddressesProvider.sol';\nimport {LendingPoolConfigurator} from '../protocol/lendingpool/LendingPoolConfigurator.sol';\nimport {AToken} from '../protocol/tokenization/AToken.sol';\nimport {\n  DefaultReserveInterestRateStrategy\n} from '../protocol/lendingpool/DefaultReserveInterestRateStrategy.sol';\nimport {Ownable} from '../dependencies/openzeppelin/contracts/Ownable.sol';\nimport {StringLib} from './StringLib.sol';\n\ncontract ATokensAndRatesHelper is Ownable {\n  address payable private pool;\n  address private addressesProvider;\n  address private poolConfigurator;\n  event deployedContracts(address aToken, address strategy);\n\n  struct InitDeploymentInput {\n    address asset;\n    uint256[6] rates;\n  }\n\n  struct ConfigureReserveInput {\n    address asset;\n    uint256 baseLTV;\n    uint256 liquidationThreshold;\n    uint256 liquidationBonus;\n    uint256 reserveFactor;\n    bool stableBorrowingEnabled;\n    bool borrowingEnabled;\n  }\n\n  constructor(\n    address payable _pool,\n    address _addressesProvider,\n    address _poolConfigurator\n  ) public {\n    pool = _pool;\n    addressesProvider = _addressesProvider;\n    poolConfigurator = _poolConfigurator;\n  }\n\n  function initDeployment(InitDeploymentInput[] calldata inputParams) external onlyOwner {\n    for (uint256 i = 0; i < inputParams.length; i++) {\n      emit deployedContracts(\n        address(new AToken()),\n        address(\n          new DefaultReserveInterestRateStrategy(\n            LendingPoolAddressesProvider(addressesProvider),\n            inputParams[i].rates[0],\n            inputParams[i].rates[1],\n            inputParams[i].rates[2],\n            inputParams[i].rates[3],\n            inputParams[i].rates[4],\n            inputParams[i].rates[5]\n          )\n        )\n      );\n    }\n  }\n\n  function configureReserves(ConfigureReserveInput[] calldata inputParams) external onlyOwner {\n    LendingPoolConfigurator configurator = LendingPoolConfigurator(poolConfigurator);\n    for (uint256 i = 0; i < inputParams.length; i++) {\n      configurator.configureReserveAsCollateral(\n        inputParams[i].asset,\n        inputParams[i].baseLTV,\n        inputParams[i].liquidationThreshold,\n        inputParams[i].liquidationBonus\n      );\n\n      if (inputParams[i].borrowingEnabled) {\n        configurator.enableBorrowingOnReserve(\n          inputParams[i].asset,\n          inputParams[i].stableBorrowingEnabled\n        );\n      }\n      configurator.setReserveFactor(inputParams[i].asset, inputParams[i].reserveFactor);\n    }\n  }\n}\n"
      },
      "contracts/protocol/lendingpool/LendingPool.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\n\nimport {SafeMath} from '../../dependencies/openzeppelin/contracts/SafeMath.sol';\nimport {IERC20} from '../../dependencies/openzeppelin/contracts/IERC20.sol';\nimport {SafeERC20} from '../../dependencies/openzeppelin/contracts/SafeERC20.sol';\nimport {Address} from '../../dependencies/openzeppelin/contracts/Address.sol';\nimport {ILendingPoolAddressesProvider} from '../../interfaces/ILendingPoolAddressesProvider.sol';\nimport {IAToken} from '../../interfaces/IAToken.sol';\nimport {IVariableDebtToken} from '../../interfaces/IVariableDebtToken.sol';\nimport {IFlashLoanReceiver} from '../../flashloan/interfaces/IFlashLoanReceiver.sol';\nimport {IPriceOracleGetter} from '../../interfaces/IPriceOracleGetter.sol';\nimport {IStableDebtToken} from '../../interfaces/IStableDebtToken.sol';\nimport {ILendingPool} from '../../interfaces/ILendingPool.sol';\nimport {VersionedInitializable} from '../libraries/aave-upgradeability/VersionedInitializable.sol';\nimport {Helpers} from '../libraries/helpers/Helpers.sol';\nimport {Errors} from '../libraries/helpers/Errors.sol';\nimport {WadRayMath} from '../libraries/math/WadRayMath.sol';\nimport {PercentageMath} from '../libraries/math/PercentageMath.sol';\nimport {ReserveLogic} from '../libraries/logic/ReserveLogic.sol';\nimport {GenericLogic} from '../libraries/logic/GenericLogic.sol';\nimport {ValidationLogic} from '../libraries/logic/ValidationLogic.sol';\nimport {ReserveConfiguration} from '../libraries/configuration/ReserveConfiguration.sol';\nimport {UserConfiguration} from '../libraries/configuration/UserConfiguration.sol';\nimport {DataTypes} from '../libraries/types/DataTypes.sol';\nimport {LendingPoolStorage} from './LendingPoolStorage.sol';\n\n/**\n * @title LendingPool contract\n * @dev Main point of interaction with an Aave protocol's market\n * - Users can:\n *   # Deposit\n *   # Withdraw\n *   # Borrow\n *   # Repay\n *   # Swap their loans between variable and stable rate\n *   # Enable/disable their deposits as collateral rebalance stable rate borrow positions\n *   # Liquidate positions\n *   # Execute Flash Loans\n * - To be covered by a proxy contract, owned by the LendingPoolAddressesProvider of the specific market\n * - All admin functions are callable by the LendingPoolConfigurator contract defined also in the\n *   LendingPoolAddressesProvider\n * @author Aave\n **/\ncontract LendingPool is VersionedInitializable, ILendingPool, LendingPoolStorage {\n  using SafeMath for uint256;\n  using WadRayMath for uint256;\n  using PercentageMath for uint256;\n  using SafeERC20 for IERC20;\n\n  uint256 public constant LENDINGPOOL_REVISION = 0x2;\n\n  modifier whenNotPaused() {\n    _whenNotPaused();\n    _;\n  }\n\n  modifier onlyLendingPoolConfigurator() {\n    _onlyLendingPoolConfigurator();\n    _;\n  }\n\n  function _whenNotPaused() internal view {\n    require(!_paused, Errors.LP_IS_PAUSED);\n  }\n\n  function _onlyLendingPoolConfigurator() internal view {\n    require(\n      _addressesProvider.getLendingPoolConfigurator() == msg.sender,\n      Errors.LP_CALLER_NOT_LENDING_POOL_CONFIGURATOR\n    );\n  }\n\n  function getRevision() internal pure override returns (uint256) {\n    return LENDINGPOOL_REVISION;\n  }\n\n  /**\n   * @dev Function is invoked by the proxy contract when the LendingPool contract is added to the\n   * LendingPoolAddressesProvider of the market.\n   * - Caching the address of the LendingPoolAddressesProvider in order to reduce gas consumption\n   *   on subsequent operations\n   * @param provider The address of the LendingPoolAddressesProvider\n   **/\n  function initialize(ILendingPoolAddressesProvider provider) public initializer {\n    _addressesProvider = provider;\n    _maxStableRateBorrowSizePercent = 2500;\n    _flashLoanPremiumTotal = 9;\n    _maxNumberOfReserves = 128;\n  }\n\n  /**\n   * @dev Deposits an `amount` of underlying asset into the reserve, receiving in return overlying aTokens.\n   * - E.g. User deposits 100 USDC and gets in return 100 aUSDC\n   * @param asset The address of the underlying asset to deposit\n   * @param amount The amount to be deposited\n   * @param onBehalfOf The address that will receive the aTokens, same as msg.sender if the user\n   *   wants to receive them on his own wallet, or a different address if the beneficiary of aTokens\n   *   is a different wallet\n   * @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   *   0 if the action is executed directly by the user, without any middle-man\n   **/\n  function deposit(\n    address asset,\n    uint256 amount,\n    address onBehalfOf,\n    uint16 referralCode\n  ) external override whenNotPaused {\n    DataTypes.ReserveData storage reserve = _reserves[asset];\n\n    ValidationLogic.validateDeposit(reserve, amount);\n\n    address aToken = reserve.aTokenAddress;\n\n    reserve.updateState();\n    reserve.updateInterestRates(asset, aToken, amount, 0);\n\n    IERC20(asset).safeTransferFrom(msg.sender, aToken, amount);\n\n    bool isFirstDeposit = IAToken(aToken).mint(onBehalfOf, amount, reserve.liquidityIndex);\n\n    if (isFirstDeposit) {\n      _usersConfig[onBehalfOf].setUsingAsCollateral(reserve.id, true);\n      emit ReserveUsedAsCollateralEnabled(asset, onBehalfOf);\n    }\n\n    emit Deposit(asset, msg.sender, onBehalfOf, amount, referralCode);\n  }\n\n  /**\n   * @dev Withdraws an `amount` of underlying asset from the reserve, burning the equivalent aTokens owned\n   * E.g. User has 100 aUSDC, calls withdraw() and receives 100 USDC, burning the 100 aUSDC\n   * @param asset The address of the underlying asset to withdraw\n   * @param amount The underlying amount to be withdrawn\n   *   - Send the value type(uint256).max in order to withdraw the whole aToken balance\n   * @param to Address that will receive the underlying, same as msg.sender if the user\n   *   wants to receive it on his own wallet, or a different address if the beneficiary is a\n   *   different wallet\n   * @return The final amount withdrawn\n   **/\n  function withdraw(\n    address asset,\n    uint256 amount,\n    address to\n  ) external override whenNotPaused returns (uint256) {\n    DataTypes.ReserveData storage reserve = _reserves[asset];\n\n    address aToken = reserve.aTokenAddress;\n\n    uint256 userBalance = IAToken(aToken).balanceOf(msg.sender);\n\n    uint256 amountToWithdraw = amount;\n\n    if (amount == type(uint256).max) {\n      amountToWithdraw = userBalance;\n    }\n\n    ValidationLogic.validateWithdraw(\n      asset,\n      amountToWithdraw,\n      userBalance,\n      _reserves,\n      _usersConfig[msg.sender],\n      _reservesList,\n      _reservesCount,\n      _addressesProvider.getPriceOracle()\n    );\n\n    reserve.updateState();\n\n    reserve.updateInterestRates(asset, aToken, 0, amountToWithdraw);\n\n    if (amountToWithdraw == userBalance) {\n      _usersConfig[msg.sender].setUsingAsCollateral(reserve.id, false);\n      emit ReserveUsedAsCollateralDisabled(asset, msg.sender);\n    }\n\n    IAToken(aToken).burn(msg.sender, to, amountToWithdraw, reserve.liquidityIndex);\n\n    emit Withdraw(asset, msg.sender, to, amountToWithdraw);\n\n    return amountToWithdraw;\n  }\n\n  /**\n   * @dev Allows users to borrow a specific `amount` of the reserve underlying asset, provided that the borrower\n   * already deposited enough collateral, or he was given enough allowance by a credit delegator on the\n   * corresponding debt token (StableDebtToken or VariableDebtToken)\n   * - E.g. User borrows 100 USDC passing as `onBehalfOf` his own address, receiving the 100 USDC in his wallet\n   *   and 100 stable/variable debt tokens, depending on the `interestRateMode`\n   * @param asset The address of the underlying asset to borrow\n   * @param amount The amount to be borrowed\n   * @param interestRateMode The interest rate mode at which the user wants to borrow: 1 for Stable, 2 for Variable\n   * @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   *   0 if the action is executed directly by the user, without any middle-man\n   * @param onBehalfOf Address of the user who will receive the debt. Should be the address of the borrower itself\n   * calling the function if he wants to borrow against his own collateral, or the address of the credit delegator\n   * if he has been given credit delegation allowance\n   **/\n  function borrow(\n    address asset,\n    uint256 amount,\n    uint256 interestRateMode,\n    uint16 referralCode,\n    address onBehalfOf\n  ) external override whenNotPaused {\n    DataTypes.ReserveData storage reserve = _reserves[asset];\n\n    _executeBorrow(\n      ExecuteBorrowParams(\n        asset,\n        msg.sender,\n        onBehalfOf,\n        amount,\n        interestRateMode,\n        reserve.aTokenAddress,\n        referralCode,\n        true\n      )\n    );\n  }\n\n  /**\n   * @notice Repays a borrowed `amount` on a specific reserve, burning the equivalent debt tokens owned\n   * - E.g. User repays 100 USDC, burning 100 variable/stable debt tokens of the `onBehalfOf` address\n   * @param asset The address of the borrowed underlying asset previously borrowed\n   * @param amount The amount to repay\n   * - Send the value type(uint256).max in order to repay the whole debt for `asset` on the specific `debtMode`\n   * @param rateMode The interest rate mode at of the debt the user wants to repay: 1 for Stable, 2 for Variable\n   * @param onBehalfOf Address of the user who will get his debt reduced/removed. Should be the address of the\n   * user calling the function if he wants to reduce/remove his own debt, or the address of any other\n   * other borrower whose debt should be removed\n   * @return The final amount repaid\n   **/\n  function repay(\n    address asset,\n    uint256 amount,\n    uint256 rateMode,\n    address onBehalfOf\n  ) external override whenNotPaused returns (uint256) {\n    DataTypes.ReserveData storage reserve = _reserves[asset];\n\n    (uint256 stableDebt, uint256 variableDebt) = Helpers.getUserCurrentDebt(onBehalfOf, reserve);\n\n    DataTypes.InterestRateMode interestRateMode = DataTypes.InterestRateMode(rateMode);\n\n    ValidationLogic.validateRepay(\n      reserve,\n      amount,\n      interestRateMode,\n      onBehalfOf,\n      stableDebt,\n      variableDebt\n    );\n\n    uint256 paybackAmount =\n      interestRateMode == DataTypes.InterestRateMode.STABLE ? stableDebt : variableDebt;\n\n    if (amount < paybackAmount) {\n      paybackAmount = amount;\n    }\n\n    reserve.updateState();\n\n    if (interestRateMode == DataTypes.InterestRateMode.STABLE) {\n      IStableDebtToken(reserve.stableDebtTokenAddress).burn(onBehalfOf, paybackAmount);\n    } else {\n      IVariableDebtToken(reserve.variableDebtTokenAddress).burn(\n        onBehalfOf,\n        paybackAmount,\n        reserve.variableBorrowIndex\n      );\n    }\n\n    address aToken = reserve.aTokenAddress;\n    reserve.updateInterestRates(asset, aToken, paybackAmount, 0);\n\n    if (stableDebt.add(variableDebt).sub(paybackAmount) == 0) {\n      _usersConfig[onBehalfOf].setBorrowing(reserve.id, false);\n    }\n\n    IERC20(asset).safeTransferFrom(msg.sender, aToken, paybackAmount);\n\n    IAToken(aToken).handleRepayment(msg.sender, paybackAmount);\n\n    emit Repay(asset, onBehalfOf, msg.sender, paybackAmount);\n\n    return paybackAmount;\n  }\n\n  /**\n   * @dev Allows a borrower to swap his debt between stable and variable mode, or viceversa\n   * @param asset The address of the underlying asset borrowed\n   * @param rateMode The rate mode that the user wants to swap to\n   **/\n  function swapBorrowRateMode(address asset, uint256 rateMode) external override whenNotPaused {\n    DataTypes.ReserveData storage reserve = _reserves[asset];\n\n    (uint256 stableDebt, uint256 variableDebt) = Helpers.getUserCurrentDebt(msg.sender, reserve);\n\n    DataTypes.InterestRateMode interestRateMode = DataTypes.InterestRateMode(rateMode);\n\n    ValidationLogic.validateSwapRateMode(\n      reserve,\n      _usersConfig[msg.sender],\n      stableDebt,\n      variableDebt,\n      interestRateMode\n    );\n\n    reserve.updateState();\n\n    if (interestRateMode == DataTypes.InterestRateMode.STABLE) {\n      IStableDebtToken(reserve.stableDebtTokenAddress).burn(msg.sender, stableDebt);\n      IVariableDebtToken(reserve.variableDebtTokenAddress).mint(\n        msg.sender,\n        msg.sender,\n        stableDebt,\n        reserve.variableBorrowIndex\n      );\n    } else {\n      IVariableDebtToken(reserve.variableDebtTokenAddress).burn(\n        msg.sender,\n        variableDebt,\n        reserve.variableBorrowIndex\n      );\n      IStableDebtToken(reserve.stableDebtTokenAddress).mint(\n        msg.sender,\n        msg.sender,\n        variableDebt,\n        reserve.currentStableBorrowRate\n      );\n    }\n\n    reserve.updateInterestRates(asset, reserve.aTokenAddress, 0, 0);\n\n    emit Swap(asset, msg.sender, rateMode);\n  }\n\n  /**\n   * @dev Rebalances the stable interest rate of a user to the current stable rate defined on the reserve.\n   * - Users can be rebalanced if the following conditions are satisfied:\n   *     1. Usage ratio is above 95%\n   *     2. the current deposit APY is below REBALANCE_UP_THRESHOLD * maxVariableBorrowRate, which means that too much has been\n   *        borrowed at a stable rate and depositors are not earning enough\n   * @param asset The address of the underlying asset borrowed\n   * @param user The address of the user to be rebalanced\n   **/\n  function rebalanceStableBorrowRate(address asset, address user) external override whenNotPaused {\n    DataTypes.ReserveData storage reserve = _reserves[asset];\n\n    IERC20 stableDebtToken = IERC20(reserve.stableDebtTokenAddress);\n    IERC20 variableDebtToken = IERC20(reserve.variableDebtTokenAddress);\n    address aTokenAddress = reserve.aTokenAddress;\n\n    uint256 stableDebt = IERC20(stableDebtToken).balanceOf(user);\n\n    ValidationLogic.validateRebalanceStableBorrowRate(\n      reserve,\n      asset,\n      stableDebtToken,\n      variableDebtToken,\n      aTokenAddress\n    );\n\n    reserve.updateState();\n\n    IStableDebtToken(address(stableDebtToken)).burn(user, stableDebt);\n    IStableDebtToken(address(stableDebtToken)).mint(\n      user,\n      user,\n      stableDebt,\n      reserve.currentStableBorrowRate\n    );\n\n    reserve.updateInterestRates(asset, aTokenAddress, 0, 0);\n\n    emit RebalanceStableBorrowRate(asset, user);\n  }\n\n  /**\n   * @dev Allows depositors to enable/disable a specific deposited asset as collateral\n   * @param asset The address of the underlying asset deposited\n   * @param useAsCollateral `true` if the user wants to use the deposit as collateral, `false` otherwise\n   **/\n  function setUserUseReserveAsCollateral(address asset, bool useAsCollateral)\n    external\n    override\n    whenNotPaused\n  {\n    DataTypes.ReserveData storage reserve = _reserves[asset];\n\n    ValidationLogic.validateSetUseReserveAsCollateral(\n      reserve,\n      asset,\n      useAsCollateral,\n      _reserves,\n      _usersConfig[msg.sender],\n      _reservesList,\n      _reservesCount,\n      _addressesProvider.getPriceOracle()\n    );\n\n    _usersConfig[msg.sender].setUsingAsCollateral(reserve.id, useAsCollateral);\n\n    if (useAsCollateral) {\n      emit ReserveUsedAsCollateralEnabled(asset, msg.sender);\n    } else {\n      emit ReserveUsedAsCollateralDisabled(asset, msg.sender);\n    }\n  }\n\n  /**\n   * @dev Function to liquidate a non-healthy position collateral-wise, with Health Factor below 1\n   * - The caller (liquidator) covers `debtToCover` amount of debt of the user getting liquidated, and receives\n   *   a proportionally amount of the `collateralAsset` plus a bonus to cover market risk\n   * @param collateralAsset The address of the underlying asset used as collateral, to receive as result of the liquidation\n   * @param debtAsset The address of the underlying borrowed asset to be repaid with the liquidation\n   * @param user The address of the borrower getting liquidated\n   * @param debtToCover The debt amount of borrowed `asset` the liquidator wants to cover\n   * @param receiveAToken `true` if the liquidators wants to receive the collateral aTokens, `false` if he wants\n   * to receive the underlying collateral asset directly\n   **/\n  function liquidationCall(\n    address collateralAsset,\n    address debtAsset,\n    address user,\n    uint256 debtToCover,\n    bool receiveAToken\n  ) external override whenNotPaused {\n    address collateralManager = _addressesProvider.getLendingPoolCollateralManager();\n\n    //solium-disable-next-line\n    (bool success, bytes memory result) =\n      collateralManager.delegatecall(\n        abi.encodeWithSignature(\n          'liquidationCall(address,address,address,uint256,bool)',\n          collateralAsset,\n          debtAsset,\n          user,\n          debtToCover,\n          receiveAToken\n        )\n      );\n\n    require(success, Errors.LP_LIQUIDATION_CALL_FAILED);\n\n    (uint256 returnCode, string memory returnMessage) = abi.decode(result, (uint256, string));\n\n    require(returnCode == 0, string(abi.encodePacked(returnMessage)));\n  }\n\n  struct FlashLoanLocalVars {\n    IFlashLoanReceiver receiver;\n    address oracle;\n    uint256 i;\n    address currentAsset;\n    address currentATokenAddress;\n    uint256 currentAmount;\n    uint256 currentPremium;\n    uint256 currentAmountPlusPremium;\n    address debtToken;\n  }\n\n  /**\n   * @dev Allows smartcontracts to access the liquidity of the pool within one transaction,\n   * as long as the amount taken plus a fee is returned.\n   * IMPORTANT There are security concerns for developers of flashloan receiver contracts that must be kept into consideration.\n   * For further details please visit https://developers.aave.com\n   * @param receiverAddress The address of the contract receiving the funds, implementing the IFlashLoanReceiver interface\n   * @param assets The addresses of the assets being flash-borrowed\n   * @param amounts The amounts amounts being flash-borrowed\n   * @param modes Types of the debt to open if the flash loan is not returned:\n   *   0 -> Don't open any debt, just revert if funds can't be transferred from the receiver\n   *   1 -> Open debt at stable rate for the value of the amount flash-borrowed to the `onBehalfOf` address\n   *   2 -> Open debt at variable rate for the value of the amount flash-borrowed to the `onBehalfOf` address\n   * @param onBehalfOf The address  that will receive the debt in the case of using on `modes` 1 or 2\n   * @param params Variadic packed params to pass to the receiver as extra information\n   * @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   *   0 if the action is executed directly by the user, without any middle-man\n   **/\n  function flashLoan(\n    address receiverAddress,\n    address[] calldata assets,\n    uint256[] calldata amounts,\n    uint256[] calldata modes,\n    address onBehalfOf,\n    bytes calldata params,\n    uint16 referralCode\n  ) external override whenNotPaused {\n    FlashLoanLocalVars memory vars;\n\n    ValidationLogic.validateFlashloan(assets, amounts);\n\n    address[] memory aTokenAddresses = new address[](assets.length);\n    uint256[] memory premiums = new uint256[](assets.length);\n\n    vars.receiver = IFlashLoanReceiver(receiverAddress);\n\n    for (vars.i = 0; vars.i < assets.length; vars.i++) {\n      aTokenAddresses[vars.i] = _reserves[assets[vars.i]].aTokenAddress;\n\n      premiums[vars.i] = amounts[vars.i].mul(_flashLoanPremiumTotal).div(10000);\n\n      IAToken(aTokenAddresses[vars.i]).transferUnderlyingTo(receiverAddress, amounts[vars.i]);\n    }\n\n    require(\n      vars.receiver.executeOperation(assets, amounts, premiums, msg.sender, params),\n      Errors.LP_INVALID_FLASH_LOAN_EXECUTOR_RETURN\n    );\n\n    for (vars.i = 0; vars.i < assets.length; vars.i++) {\n      vars.currentAsset = assets[vars.i];\n      vars.currentAmount = amounts[vars.i];\n      vars.currentPremium = premiums[vars.i];\n      vars.currentATokenAddress = aTokenAddresses[vars.i];\n      vars.currentAmountPlusPremium = vars.currentAmount.add(vars.currentPremium);\n\n      if (DataTypes.InterestRateMode(modes[vars.i]) == DataTypes.InterestRateMode.NONE) {\n        _reserves[vars.currentAsset].updateState();\n        _reserves[vars.currentAsset].cumulateToLiquidityIndex(\n          IERC20(vars.currentATokenAddress).totalSupply(),\n          vars.currentPremium\n        );\n        _reserves[vars.currentAsset].updateInterestRates(\n          vars.currentAsset,\n          vars.currentATokenAddress,\n          vars.currentAmountPlusPremium,\n          0\n        );\n\n        IERC20(vars.currentAsset).safeTransferFrom(\n          receiverAddress,\n          vars.currentATokenAddress,\n          vars.currentAmountPlusPremium\n        );\n      } else {\n        // If the user chose to not return the funds, the system checks if there is enough collateral and\n        // eventually opens a debt position\n        _executeBorrow(\n          ExecuteBorrowParams(\n            vars.currentAsset,\n            msg.sender,\n            onBehalfOf,\n            vars.currentAmount,\n            modes[vars.i],\n            vars.currentATokenAddress,\n            referralCode,\n            false\n          )\n        );\n      }\n      emit FlashLoan(\n        receiverAddress,\n        msg.sender,\n        vars.currentAsset,\n        vars.currentAmount,\n        vars.currentPremium,\n        referralCode\n      );\n    }\n  }\n\n  /**\n   * @dev Returns the state and configuration of the reserve\n   * @param asset The address of the underlying asset of the reserve\n   * @return The state of the reserve\n   **/\n  function getReserveData(address asset)\n    external\n    view\n    override\n    returns (DataTypes.ReserveData memory)\n  {\n    return _reserves[asset];\n  }\n\n  /**\n   * @dev Returns the user account data across all the reserves\n   * @param user The address of the user\n   * @return totalCollateralETH the total collateral in ETH of the user\n   * @return totalDebtETH the total debt in ETH of the user\n   * @return availableBorrowsETH the borrowing power left of the user\n   * @return currentLiquidationThreshold the liquidation threshold of the user\n   * @return ltv the loan to value of the user\n   * @return healthFactor the current health factor of the user\n   **/\n  function getUserAccountData(address user)\n    external\n    view\n    override\n    returns (\n      uint256 totalCollateralETH,\n      uint256 totalDebtETH,\n      uint256 availableBorrowsETH,\n      uint256 currentLiquidationThreshold,\n      uint256 ltv,\n      uint256 healthFactor\n    )\n  {\n    (\n      totalCollateralETH,\n      totalDebtETH,\n      ltv,\n      currentLiquidationThreshold,\n      healthFactor\n    ) = GenericLogic.calculateUserAccountData(\n      user,\n      _reserves,\n      _usersConfig[user],\n      _reservesList,\n      _reservesCount,\n      _addressesProvider.getPriceOracle()\n    );\n\n    availableBorrowsETH = GenericLogic.calculateAvailableBorrowsETH(\n      totalCollateralETH,\n      totalDebtETH,\n      ltv\n    );\n  }\n\n  /**\n   * @dev Returns the configuration of the reserve\n   * @param asset The address of the underlying asset of the reserve\n   * @return The configuration of the reserve\n   **/\n  function getConfiguration(address asset)\n    external\n    view\n    override\n    returns (DataTypes.ReserveConfigurationMap memory)\n  {\n    return _reserves[asset].configuration;\n  }\n\n  /**\n   * @dev Returns the configuration of the user across all the reserves\n   * @param user The user address\n   * @return The configuration of the user\n   **/\n  function getUserConfiguration(address user)\n    external\n    view\n    override\n    returns (DataTypes.UserConfigurationMap memory)\n  {\n    return _usersConfig[user];\n  }\n\n  /**\n   * @dev Returns the normalized income per unit of asset\n   * @param asset The address of the underlying asset of the reserve\n   * @return The reserve's normalized income\n   */\n  function getReserveNormalizedIncome(address asset)\n    external\n    view\n    virtual\n    override\n    returns (uint256)\n  {\n    return _reserves[asset].getNormalizedIncome();\n  }\n\n  /**\n   * @dev Returns the normalized variable debt per unit of asset\n   * @param asset The address of the underlying asset of the reserve\n   * @return The reserve normalized variable debt\n   */\n  function getReserveNormalizedVariableDebt(address asset)\n    external\n    view\n    override\n    returns (uint256)\n  {\n    return _reserves[asset].getNormalizedDebt();\n  }\n\n  /**\n   * @dev Returns if the LendingPool is paused\n   */\n  function paused() external view override returns (bool) {\n    return _paused;\n  }\n\n  /**\n   * @dev Returns the list of the initialized reserves\n   **/\n  function getReservesList() external view override returns (address[] memory) {\n    address[] memory _activeReserves = new address[](_reservesCount);\n\n    for (uint256 i = 0; i < _reservesCount; i++) {\n      _activeReserves[i] = _reservesList[i];\n    }\n    return _activeReserves;\n  }\n\n  /**\n   * @dev Returns the cached LendingPoolAddressesProvider connected to this contract\n   **/\n  function getAddressesProvider() external view override returns (ILendingPoolAddressesProvider) {\n    return _addressesProvider;\n  }\n\n  /**\n   * @dev Returns the percentage of available liquidity that can be borrowed at once at stable rate\n   */\n  function MAX_STABLE_RATE_BORROW_SIZE_PERCENT() public view returns (uint256) {\n    return _maxStableRateBorrowSizePercent;\n  }\n\n  /**\n   * @dev Returns the fee on flash loans \n   */\n  function FLASHLOAN_PREMIUM_TOTAL() public view returns (uint256) {\n    return _flashLoanPremiumTotal;\n  }\n\n  /**\n   * @dev Returns the maximum number of reserves supported to be listed in this LendingPool\n   */\n  function MAX_NUMBER_RESERVES() public view returns (uint256) {\n    return _maxNumberOfReserves;\n  }\n\n  /**\n   * @dev Validates and finalizes an aToken transfer\n   * - Only callable by the overlying aToken of the `asset`\n   * @param asset The address of the underlying asset of the aToken\n   * @param from The user from which the aTokens are transferred\n   * @param to The user receiving the aTokens\n   * @param amount The amount being transferred/withdrawn\n   * @param balanceFromBefore The aToken balance of the `from` user before the transfer\n   * @param balanceToBefore The aToken balance of the `to` user before the transfer\n   */\n  function finalizeTransfer(\n    address asset,\n    address from,\n    address to,\n    uint256 amount,\n    uint256 balanceFromBefore,\n    uint256 balanceToBefore\n  ) external override whenNotPaused {\n    require(msg.sender == _reserves[asset].aTokenAddress, Errors.LP_CALLER_MUST_BE_AN_ATOKEN);\n\n    ValidationLogic.validateTransfer(\n      from,\n      _reserves,\n      _usersConfig[from],\n      _reservesList,\n      _reservesCount,\n      _addressesProvider.getPriceOracle()\n    );\n\n    uint256 reserveId = _reserves[asset].id;\n\n    if (from != to) {\n      if (balanceFromBefore.sub(amount) == 0) {\n        DataTypes.UserConfigurationMap storage fromConfig = _usersConfig[from];\n        fromConfig.setUsingAsCollateral(reserveId, false);\n        emit ReserveUsedAsCollateralDisabled(asset, from);\n      }\n\n      if (balanceToBefore == 0 && amount != 0) {\n        DataTypes.UserConfigurationMap storage toConfig = _usersConfig[to];\n        toConfig.setUsingAsCollateral(reserveId, true);\n        emit ReserveUsedAsCollateralEnabled(asset, to);\n      }\n    }\n  }\n\n  /**\n   * @dev Initializes a reserve, activating it, assigning an aToken and debt tokens and an\n   * interest rate strategy\n   * - Only callable by the LendingPoolConfigurator contract\n   * @param asset The address of the underlying asset of the reserve\n   * @param aTokenAddress The address of the aToken that will be assigned to the reserve\n   * @param stableDebtAddress The address of the StableDebtToken that will be assigned to the reserve\n   * @param aTokenAddress The address of the VariableDebtToken that will be assigned to the reserve\n   * @param interestRateStrategyAddress The address of the interest rate strategy contract\n   **/\n  function initReserve(\n    address asset,\n    address aTokenAddress,\n    address stableDebtAddress,\n    address variableDebtAddress,\n    address interestRateStrategyAddress\n  ) external override onlyLendingPoolConfigurator {\n    require(Address.isContract(asset), Errors.LP_NOT_CONTRACT);\n    _reserves[asset].init(\n      aTokenAddress,\n      stableDebtAddress,\n      variableDebtAddress,\n      interestRateStrategyAddress\n    );\n    _addReserveToList(asset);\n  }\n\n  /**\n   * @dev Updates the address of the interest rate strategy contract\n   * - Only callable by the LendingPoolConfigurator contract\n   * @param asset The address of the underlying asset of the reserve\n   * @param rateStrategyAddress The address of the interest rate strategy contract\n   **/\n  function setReserveInterestRateStrategyAddress(address asset, address rateStrategyAddress)\n    external\n    override\n    onlyLendingPoolConfigurator\n  {\n    _reserves[asset].interestRateStrategyAddress = rateStrategyAddress;\n  }\n\n  /**\n   * @dev Sets the configuration bitmap of the reserve as a whole\n   * - Only callable by the LendingPoolConfigurator contract\n   * @param asset The address of the underlying asset of the reserve\n   * @param configuration The new configuration bitmap\n   **/\n  function setConfiguration(address asset, uint256 configuration)\n    external\n    override\n    onlyLendingPoolConfigurator\n  {\n    _reserves[asset].configuration.data = configuration;\n  }\n\n  /**\n   * @dev Set the _pause state of a reserve\n   * - Only callable by the LendingPoolConfigurator contract\n   * @param val `true` to pause the reserve, `false` to un-pause it\n   */\n  function setPause(bool val) external override onlyLendingPoolConfigurator {\n    _paused = val;\n    if (_paused) {\n      emit Paused();\n    } else {\n      emit Unpaused();\n    }\n  }\n\n  struct ExecuteBorrowParams {\n    address asset;\n    address user;\n    address onBehalfOf;\n    uint256 amount;\n    uint256 interestRateMode;\n    address aTokenAddress;\n    uint16 referralCode;\n    bool releaseUnderlying;\n  }\n\n  function _executeBorrow(ExecuteBorrowParams memory vars) internal {\n    DataTypes.ReserveData storage reserve = _reserves[vars.asset];\n    DataTypes.UserConfigurationMap storage userConfig = _usersConfig[vars.onBehalfOf];\n\n    address oracle = _addressesProvider.getPriceOracle();\n\n    uint256 amountInETH =\n      IPriceOracleGetter(oracle).getAssetPrice(vars.asset).mul(vars.amount).div(\n        10**reserve.configuration.getDecimals()\n      );\n\n    ValidationLogic.validateBorrow(\n      vars.asset,\n      reserve,\n      vars.onBehalfOf,\n      vars.amount,\n      amountInETH,\n      vars.interestRateMode,\n      _maxStableRateBorrowSizePercent,\n      _reserves,\n      userConfig,\n      _reservesList,\n      _reservesCount,\n      oracle\n    );\n\n    reserve.updateState();\n\n    uint256 currentStableRate = 0;\n\n    bool isFirstBorrowing = false;\n    if (DataTypes.InterestRateMode(vars.interestRateMode) == DataTypes.InterestRateMode.STABLE) {\n      currentStableRate = reserve.currentStableBorrowRate;\n\n      isFirstBorrowing = IStableDebtToken(reserve.stableDebtTokenAddress).mint(\n        vars.user,\n        vars.onBehalfOf,\n        vars.amount,\n        currentStableRate\n      );\n    } else {\n      isFirstBorrowing = IVariableDebtToken(reserve.variableDebtTokenAddress).mint(\n        vars.user,\n        vars.onBehalfOf,\n        vars.amount,\n        reserve.variableBorrowIndex\n      );\n    }\n\n    if (isFirstBorrowing) {\n      userConfig.setBorrowing(reserve.id, true);\n    }\n\n    reserve.updateInterestRates(\n      vars.asset,\n      vars.aTokenAddress,\n      0,\n      vars.releaseUnderlying ? vars.amount : 0\n    );\n\n    if (vars.releaseUnderlying) {\n      IAToken(vars.aTokenAddress).transferUnderlyingTo(vars.user, vars.amount);\n    }\n\n    emit Borrow(\n      vars.asset,\n      vars.user,\n      vars.onBehalfOf,\n      vars.amount,\n      vars.interestRateMode,\n      DataTypes.InterestRateMode(vars.interestRateMode) == DataTypes.InterestRateMode.STABLE\n        ? currentStableRate\n        : reserve.currentVariableBorrowRate,\n      vars.referralCode\n    );\n  }\n\n  function _addReserveToList(address asset) internal {\n    uint256 reservesCount = _reservesCount;\n\n    require(reservesCount < _maxNumberOfReserves, Errors.LP_NO_MORE_RESERVES_ALLOWED);\n\n    bool reserveAlreadyAdded = _reserves[asset].id != 0 || _reservesList[0] == asset;\n\n    if (!reserveAlreadyAdded) {\n      _reserves[asset].id = uint8(reservesCount);\n      _reservesList[reservesCount] = asset;\n\n      _reservesCount = reservesCount + 1;\n    }\n  }\n}\n"
      },
      "contracts/protocol/configuration/LendingPoolAddressesProvider.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {Ownable} from '../../dependencies/openzeppelin/contracts/Ownable.sol';\n\n// Prettier ignore to prevent buidler flatter bug\n// prettier-ignore\nimport {InitializableImmutableAdminUpgradeabilityProxy} from '../libraries/aave-upgradeability/InitializableImmutableAdminUpgradeabilityProxy.sol';\n\nimport {ILendingPoolAddressesProvider} from '../../interfaces/ILendingPoolAddressesProvider.sol';\n\n/**\n * @title LendingPoolAddressesProvider contract\n * @dev Main registry of addresses part of or connected to the protocol, including permissioned roles\n * - Acting also as factory of proxies and admin of those, so with right to change its implementations\n * - Owned by the Aave Governance\n * @author Aave\n **/\ncontract LendingPoolAddressesProvider is Ownable, ILendingPoolAddressesProvider {\n  string private _marketId;\n  mapping(bytes32 => address) private _addresses;\n\n  bytes32 private constant LENDING_POOL = 'LENDING_POOL';\n  bytes32 private constant LENDING_POOL_CONFIGURATOR = 'LENDING_POOL_CONFIGURATOR';\n  bytes32 private constant POOL_ADMIN = 'POOL_ADMIN';\n  bytes32 private constant EMERGENCY_ADMIN = 'EMERGENCY_ADMIN';\n  bytes32 private constant LENDING_POOL_COLLATERAL_MANAGER = 'COLLATERAL_MANAGER';\n  bytes32 private constant PRICE_ORACLE = 'PRICE_ORACLE';\n  bytes32 private constant LENDING_RATE_ORACLE = 'LENDING_RATE_ORACLE';\n\n  constructor(string memory marketId) public {\n    _setMarketId(marketId);\n  }\n\n  /**\n   * @dev Returns the id of the Aave market to which this contracts points to\n   * @return The market id\n   **/\n  function getMarketId() external view override returns (string memory) {\n    return _marketId;\n  }\n\n  /**\n   * @dev Allows to set the market which this LendingPoolAddressesProvider represents\n   * @param marketId The market id\n   */\n  function setMarketId(string memory marketId) external override onlyOwner {\n    _setMarketId(marketId);\n  }\n\n  /**\n   * @dev General function to update the implementation of a proxy registered with\n   * certain `id`. If there is no proxy registered, it will instantiate one and\n   * set as implementation the `implementationAddress`\n   * IMPORTANT Use this function carefully, only for ids that don't have an explicit\n   * setter function, in order to avoid unexpected consequences\n   * @param id The id\n   * @param implementationAddress The address of the new implementation\n   */\n  function setAddressAsProxy(bytes32 id, address implementationAddress)\n    external\n    override\n    onlyOwner\n  {\n    _updateImpl(id, implementationAddress);\n    emit AddressSet(id, implementationAddress, true);\n  }\n\n  /**\n   * @dev Sets an address for an id replacing the address saved in the addresses map\n   * IMPORTANT Use this function carefully, as it will do a hard replacement\n   * @param id The id\n   * @param newAddress The address to set\n   */\n  function setAddress(bytes32 id, address newAddress) external override onlyOwner {\n    _addresses[id] = newAddress;\n    emit AddressSet(id, newAddress, false);\n  }\n\n  /**\n   * @dev Returns an address by id\n   * @return The address\n   */\n  function getAddress(bytes32 id) public view override returns (address) {\n    return _addresses[id];\n  }\n\n  /**\n   * @dev Returns the address of the LendingPool proxy\n   * @return The LendingPool proxy address\n   **/\n  function getLendingPool() external view override returns (address) {\n    return getAddress(LENDING_POOL);\n  }\n\n  /**\n   * @dev Updates the implementation of the LendingPool, or creates the proxy\n   * setting the new `pool` implementation on the first time calling it\n   * @param pool The new LendingPool implementation\n   **/\n  function setLendingPoolImpl(address pool) external override onlyOwner {\n    _updateImpl(LENDING_POOL, pool);\n    emit LendingPoolUpdated(pool);\n  }\n\n  /**\n   * @dev Returns the address of the LendingPoolConfigurator proxy\n   * @return The LendingPoolConfigurator proxy address\n   **/\n  function getLendingPoolConfigurator() external view override returns (address) {\n    return getAddress(LENDING_POOL_CONFIGURATOR);\n  }\n\n  /**\n   * @dev Updates the implementation of the LendingPoolConfigurator, or creates the proxy\n   * setting the new `configurator` implementation on the first time calling it\n   * @param configurator The new LendingPoolConfigurator implementation\n   **/\n  function setLendingPoolConfiguratorImpl(address configurator) external override onlyOwner {\n    _updateImpl(LENDING_POOL_CONFIGURATOR, configurator);\n    emit LendingPoolConfiguratorUpdated(configurator);\n  }\n\n  /**\n   * @dev Returns the address of the LendingPoolCollateralManager. Since the manager is used\n   * through delegateCall within the LendingPool contract, the proxy contract pattern does not work properly hence\n   * the addresses are changed directly\n   * @return The address of the LendingPoolCollateralManager\n   **/\n\n  function getLendingPoolCollateralManager() external view override returns (address) {\n    return getAddress(LENDING_POOL_COLLATERAL_MANAGER);\n  }\n\n  /**\n   * @dev Updates the address of the LendingPoolCollateralManager\n   * @param manager The new LendingPoolCollateralManager address\n   **/\n  function setLendingPoolCollateralManager(address manager) external override onlyOwner {\n    _addresses[LENDING_POOL_COLLATERAL_MANAGER] = manager;\n    emit LendingPoolCollateralManagerUpdated(manager);\n  }\n\n  /**\n   * @dev The functions below are getters/setters of addresses that are outside the context\n   * of the protocol hence the upgradable proxy pattern is not used\n   **/\n\n  function getPoolAdmin() external view override returns (address) {\n    return getAddress(POOL_ADMIN);\n  }\n\n  function setPoolAdmin(address admin) external override onlyOwner {\n    _addresses[POOL_ADMIN] = admin;\n    emit ConfigurationAdminUpdated(admin);\n  }\n\n  function getEmergencyAdmin() external view override returns (address) {\n    return getAddress(EMERGENCY_ADMIN);\n  }\n\n  function setEmergencyAdmin(address emergencyAdmin) external override onlyOwner {\n    _addresses[EMERGENCY_ADMIN] = emergencyAdmin;\n    emit EmergencyAdminUpdated(emergencyAdmin);\n  }\n\n  function getPriceOracle() external view override returns (address) {\n    return getAddress(PRICE_ORACLE);\n  }\n\n  function setPriceOracle(address priceOracle) external override onlyOwner {\n    _addresses[PRICE_ORACLE] = priceOracle;\n    emit PriceOracleUpdated(priceOracle);\n  }\n\n  function getLendingRateOracle() external view override returns (address) {\n    return getAddress(LENDING_RATE_ORACLE);\n  }\n\n  function setLendingRateOracle(address lendingRateOracle) external override onlyOwner {\n    _addresses[LENDING_RATE_ORACLE] = lendingRateOracle;\n    emit LendingRateOracleUpdated(lendingRateOracle);\n  }\n\n  /**\n   * @dev Internal function to update the implementation of a specific proxied component of the protocol\n   * - If there is no proxy registered in the given `id`, it creates the proxy setting `newAdress`\n   *   as implementation and calls the initialize() function on the proxy\n   * - If there is already a proxy registered, it just updates the implementation to `newAddress` and\n   *   calls the initialize() function via upgradeToAndCall() in the proxy\n   * @param id The id of the proxy to be updated\n   * @param newAddress The address of the new implementation\n   **/\n  function _updateImpl(bytes32 id, address newAddress) internal {\n    address payable proxyAddress = payable(_addresses[id]);\n\n    InitializableImmutableAdminUpgradeabilityProxy proxy =\n      InitializableImmutableAdminUpgradeabilityProxy(proxyAddress);\n    bytes memory params = abi.encodeWithSignature('initialize(address)', address(this));\n\n    if (proxyAddress == address(0)) {\n      proxy = new InitializableImmutableAdminUpgradeabilityProxy(address(this));\n      proxy.initialize(newAddress, params);\n      _addresses[id] = address(proxy);\n      emit ProxyCreated(id, address(proxy));\n    } else {\n      proxy.upgradeToAndCall(newAddress, params);\n    }\n  }\n\n  function _setMarketId(string memory marketId) internal {\n    _marketId = marketId;\n    emit MarketIdSet(marketId);\n  }\n}\n"
      },
      "contracts/protocol/lendingpool/LendingPoolConfigurator.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\n\nimport {SafeMath} from '../../dependencies/openzeppelin/contracts/SafeMath.sol';\nimport {VersionedInitializable} from '../libraries/aave-upgradeability/VersionedInitializable.sol';\nimport {\n  InitializableImmutableAdminUpgradeabilityProxy\n} from '../libraries/aave-upgradeability/InitializableImmutableAdminUpgradeabilityProxy.sol';\nimport {ReserveConfiguration} from '../libraries/configuration/ReserveConfiguration.sol';\nimport {ILendingPoolAddressesProvider} from '../../interfaces/ILendingPoolAddressesProvider.sol';\nimport {ILendingPool} from '../../interfaces/ILendingPool.sol';\nimport {IERC20Detailed} from '../../dependencies/openzeppelin/contracts/IERC20Detailed.sol';\nimport {Errors} from '../libraries/helpers/Errors.sol';\nimport {PercentageMath} from '../libraries/math/PercentageMath.sol';\nimport {DataTypes} from '../libraries/types/DataTypes.sol';\nimport {IInitializableDebtToken} from '../../interfaces/IInitializableDebtToken.sol';\nimport {IInitializableAToken} from '../../interfaces/IInitializableAToken.sol';\nimport {IAaveIncentivesController} from '../../interfaces/IAaveIncentivesController.sol';\nimport {ILendingPoolConfigurator} from '../../interfaces/ILendingPoolConfigurator.sol';\n\n/**\n * @title LendingPoolConfigurator contract\n * @author Aave\n * @dev Implements the configuration methods for the Aave protocol\n **/\n\ncontract LendingPoolConfigurator is VersionedInitializable, ILendingPoolConfigurator {\n  using SafeMath for uint256;\n  using PercentageMath for uint256;\n  using ReserveConfiguration for DataTypes.ReserveConfigurationMap;\n\n  ILendingPoolAddressesProvider internal addressesProvider;\n  ILendingPool internal pool;\n\n  modifier onlyPoolAdmin {\n    require(addressesProvider.getPoolAdmin() == msg.sender, Errors.CALLER_NOT_POOL_ADMIN);\n    _;\n  }\n\n  modifier onlyEmergencyAdmin {\n    require(\n      addressesProvider.getEmergencyAdmin() == msg.sender,\n      Errors.LPC_CALLER_NOT_EMERGENCY_ADMIN\n    );\n    _;\n  }\n\n  uint256 internal constant CONFIGURATOR_REVISION = 0x1;\n\n  function getRevision() internal pure override returns (uint256) {\n    return CONFIGURATOR_REVISION;\n  }\n\n  function initialize(ILendingPoolAddressesProvider provider) public initializer {\n    addressesProvider = provider;\n    pool = ILendingPool(addressesProvider.getLendingPool());\n  }\n\n  /**\n   * @dev Initializes reserves in batch\n   **/\n  function batchInitReserve(InitReserveInput[] calldata input) external onlyPoolAdmin {\n    ILendingPool cachedPool = pool;\n    for (uint256 i = 0; i < input.length; i++) {\n      _initReserve(cachedPool, input[i]);\n    }\n  }\n\n  function _initReserve(ILendingPool pool, InitReserveInput calldata input) internal {\n    address aTokenProxyAddress =\n      _initTokenWithProxy(\n        input.aTokenImpl,\n        abi.encodeWithSelector(\n          IInitializableAToken.initialize.selector,\n          pool,\n          input.treasury,\n          input.underlyingAsset,\n          IAaveIncentivesController(input.incentivesController),\n          input.underlyingAssetDecimals,\n          input.aTokenName,\n          input.aTokenSymbol,\n          input.params\n        )\n      );\n\n    address stableDebtTokenProxyAddress =\n      _initTokenWithProxy(\n        input.stableDebtTokenImpl,\n        abi.encodeWithSelector(\n          IInitializableDebtToken.initialize.selector,\n          pool,\n          input.underlyingAsset,\n          IAaveIncentivesController(input.incentivesController),\n          input.underlyingAssetDecimals,\n          input.stableDebtTokenName,\n          input.stableDebtTokenSymbol,\n          input.params\n        )\n      );\n\n    address variableDebtTokenProxyAddress =\n      _initTokenWithProxy(\n        input.variableDebtTokenImpl,\n        abi.encodeWithSelector(\n          IInitializableDebtToken.initialize.selector,\n          pool,\n          input.underlyingAsset,\n          IAaveIncentivesController(input.incentivesController),\n          input.underlyingAssetDecimals,\n          input.variableDebtTokenName,\n          input.variableDebtTokenSymbol,\n          input.params\n        )\n      );\n\n    pool.initReserve(\n      input.underlyingAsset,\n      aTokenProxyAddress,\n      stableDebtTokenProxyAddress,\n      variableDebtTokenProxyAddress,\n      input.interestRateStrategyAddress\n    );\n\n    DataTypes.ReserveConfigurationMap memory currentConfig =\n      pool.getConfiguration(input.underlyingAsset);\n\n    currentConfig.setDecimals(input.underlyingAssetDecimals);\n\n    currentConfig.setActive(true);\n    currentConfig.setFrozen(false);\n\n    pool.setConfiguration(input.underlyingAsset, currentConfig.data);\n\n    emit ReserveInitialized(\n      input.underlyingAsset,\n      aTokenProxyAddress,\n      stableDebtTokenProxyAddress,\n      variableDebtTokenProxyAddress,\n      input.interestRateStrategyAddress\n    );\n  }\n\n  /**\n   * @dev Updates the aToken implementation for the reserve\n   **/\n  function updateAToken(UpdateATokenInput calldata input) external onlyPoolAdmin {\n    ILendingPool cachedPool = pool;\n\n    DataTypes.ReserveData memory reserveData = cachedPool.getReserveData(input.asset);\n\n    (, , , uint256 decimals, ) = cachedPool.getConfiguration(input.asset).getParamsMemory();\n\n    bytes memory encodedCall = abi.encodeWithSelector(\n        IInitializableAToken.initialize.selector,\n        cachedPool,\n        input.treasury,\n        input.asset,\n        input.incentivesController,\n        decimals,\n        input.name,\n        input.symbol,\n        input.params\n      );\n\n    _upgradeTokenImplementation(\n      reserveData.aTokenAddress,\n      input.implementation,\n      encodedCall\n    );\n\n    emit ATokenUpgraded(input.asset, reserveData.aTokenAddress, input.implementation);\n  }\n\n  /**\n   * @dev Updates the stable debt token implementation for the reserve\n   **/\n  function updateStableDebtToken(UpdateDebtTokenInput calldata input) external onlyPoolAdmin {\n    ILendingPool cachedPool = pool;\n\n    DataTypes.ReserveData memory reserveData = cachedPool.getReserveData(input.asset);\n     \n    (, , , uint256 decimals, ) = cachedPool.getConfiguration(input.asset).getParamsMemory();\n\n    bytes memory encodedCall = abi.encodeWithSelector(\n        IInitializableDebtToken.initialize.selector,\n        cachedPool,\n        input.asset,\n        input.incentivesController,\n        decimals,\n        input.name,\n        input.symbol,\n        input.params\n      );\n\n    _upgradeTokenImplementation(\n      reserveData.stableDebtTokenAddress,\n      input.implementation,\n      encodedCall\n    );\n\n    emit StableDebtTokenUpgraded(\n      input.asset,\n      reserveData.stableDebtTokenAddress,\n      input.implementation\n    );\n  }\n\n  /**\n   * @dev Updates the variable debt token implementation for the asset\n   **/\n  function updateVariableDebtToken(UpdateDebtTokenInput calldata input)\n    external\n    onlyPoolAdmin\n  {\n    ILendingPool cachedPool = pool;\n\n    DataTypes.ReserveData memory reserveData = cachedPool.getReserveData(input.asset);\n\n    (, , , uint256 decimals, ) = cachedPool.getConfiguration(input.asset).getParamsMemory();\n\n    bytes memory encodedCall = abi.encodeWithSelector(\n        IInitializableDebtToken.initialize.selector,\n        cachedPool,\n        input.asset,\n        input.incentivesController,\n        decimals,\n        input.name,\n        input.symbol,\n        input.params\n      );\n\n    _upgradeTokenImplementation(\n      reserveData.variableDebtTokenAddress,\n      input.implementation,\n      encodedCall\n    );\n\n    emit VariableDebtTokenUpgraded(\n      input.asset,\n      reserveData.variableDebtTokenAddress,\n      input.implementation\n    );\n  }\n\n  /**\n   * @dev Enables borrowing on a reserve\n   * @param asset The address of the underlying asset of the reserve\n   * @param stableBorrowRateEnabled True if stable borrow rate needs to be enabled by default on this reserve\n   **/\n  function enableBorrowingOnReserve(address asset, bool stableBorrowRateEnabled)\n    external\n    onlyPoolAdmin\n  {\n    DataTypes.ReserveConfigurationMap memory currentConfig = pool.getConfiguration(asset);\n\n    currentConfig.setBorrowingEnabled(true);\n    currentConfig.setStableRateBorrowingEnabled(stableBorrowRateEnabled);\n\n    pool.setConfiguration(asset, currentConfig.data);\n\n    emit BorrowingEnabledOnReserve(asset, stableBorrowRateEnabled);\n  }\n\n  /**\n   * @dev Disables borrowing on a reserve\n   * @param asset The address of the underlying asset of the reserve\n   **/\n  function disableBorrowingOnReserve(address asset) external onlyPoolAdmin {\n    DataTypes.ReserveConfigurationMap memory currentConfig = pool.getConfiguration(asset);\n\n    currentConfig.setBorrowingEnabled(false);\n\n    pool.setConfiguration(asset, currentConfig.data);\n    emit BorrowingDisabledOnReserve(asset);\n  }\n\n  /**\n   * @dev Configures the reserve collateralization parameters\n   * all the values are expressed in percentages with two decimals of precision. A valid value is 10000, which means 100.00%\n   * @param asset The address of the underlying asset of the reserve\n   * @param ltv The loan to value of the asset when used as collateral\n   * @param liquidationThreshold The threshold at which loans using this asset as collateral will be considered undercollateralized\n   * @param liquidationBonus The bonus liquidators receive to liquidate this asset. The values is always above 100%. A value of 105%\n   * means the liquidator will receive a 5% bonus\n   **/\n  function configureReserveAsCollateral(\n    address asset,\n    uint256 ltv,\n    uint256 liquidationThreshold,\n    uint256 liquidationBonus\n  ) external onlyPoolAdmin {\n    DataTypes.ReserveConfigurationMap memory currentConfig = pool.getConfiguration(asset);\n\n    //validation of the parameters: the LTV can\n    //only be lower or equal than the liquidation threshold\n    //(otherwise a loan against the asset would cause instantaneous liquidation)\n    require(ltv <= liquidationThreshold, Errors.LPC_INVALID_CONFIGURATION);\n\n    if (liquidationThreshold != 0) {\n      //liquidation bonus must be bigger than 100.00%, otherwise the liquidator would receive less\n      //collateral than needed to cover the debt\n      require(\n        liquidationBonus > PercentageMath.PERCENTAGE_FACTOR,\n        Errors.LPC_INVALID_CONFIGURATION\n      );\n\n      //if threshold * bonus is less than PERCENTAGE_FACTOR, it's guaranteed that at the moment\n      //a loan is taken there is enough collateral available to cover the liquidation bonus\n      require(\n        liquidationThreshold.percentMul(liquidationBonus) <= PercentageMath.PERCENTAGE_FACTOR,\n        Errors.LPC_INVALID_CONFIGURATION\n      );\n    } else {\n      require(liquidationBonus == 0, Errors.LPC_INVALID_CONFIGURATION);\n      //if the liquidation threshold is being set to 0,\n      // the reserve is being disabled as collateral. To do so,\n      //we need to ensure no liquidity is deposited\n      _checkNoLiquidity(asset);\n    }\n\n    currentConfig.setLtv(ltv);\n    currentConfig.setLiquidationThreshold(liquidationThreshold);\n    currentConfig.setLiquidationBonus(liquidationBonus);\n\n    pool.setConfiguration(asset, currentConfig.data);\n\n    emit CollateralConfigurationChanged(asset, ltv, liquidationThreshold, liquidationBonus);\n  }\n\n  /**\n   * @dev Enable stable rate borrowing on a reserve\n   * @param asset The address of the underlying asset of the reserve\n   **/\n  function enableReserveStableRate(address asset) external onlyPoolAdmin {\n    DataTypes.ReserveConfigurationMap memory currentConfig = pool.getConfiguration(asset);\n\n    currentConfig.setStableRateBorrowingEnabled(true);\n\n    pool.setConfiguration(asset, currentConfig.data);\n\n    emit StableRateEnabledOnReserve(asset);\n  }\n\n  /**\n   * @dev Disable stable rate borrowing on a reserve\n   * @param asset The address of the underlying asset of the reserve\n   **/\n  function disableReserveStableRate(address asset) external onlyPoolAdmin {\n    DataTypes.ReserveConfigurationMap memory currentConfig = pool.getConfiguration(asset);\n\n    currentConfig.setStableRateBorrowingEnabled(false);\n\n    pool.setConfiguration(asset, currentConfig.data);\n\n    emit StableRateDisabledOnReserve(asset);\n  }\n\n  /**\n   * @dev Activates a reserve\n   * @param asset The address of the underlying asset of the reserve\n   **/\n  function activateReserve(address asset) external onlyPoolAdmin {\n    DataTypes.ReserveConfigurationMap memory currentConfig = pool.getConfiguration(asset);\n\n    currentConfig.setActive(true);\n\n    pool.setConfiguration(asset, currentConfig.data);\n\n    emit ReserveActivated(asset);\n  }\n\n  /**\n   * @dev Deactivates a reserve\n   * @param asset The address of the underlying asset of the reserve\n   **/\n  function deactivateReserve(address asset) external onlyPoolAdmin {\n    _checkNoLiquidity(asset);\n\n    DataTypes.ReserveConfigurationMap memory currentConfig = pool.getConfiguration(asset);\n\n    currentConfig.setActive(false);\n\n    pool.setConfiguration(asset, currentConfig.data);\n\n    emit ReserveDeactivated(asset);\n  }\n\n  /**\n   * @dev Freezes a reserve. A frozen reserve doesn't allow any new deposit, borrow or rate swap\n   *  but allows repayments, liquidations, rate rebalances and withdrawals\n   * @param asset The address of the underlying asset of the reserve\n   **/\n  function freezeReserve(address asset) external onlyPoolAdmin {\n    DataTypes.ReserveConfigurationMap memory currentConfig = pool.getConfiguration(asset);\n\n    currentConfig.setFrozen(true);\n\n    pool.setConfiguration(asset, currentConfig.data);\n\n    emit ReserveFrozen(asset);\n  }\n\n  /**\n   * @dev Unfreezes a reserve\n   * @param asset The address of the underlying asset of the reserve\n   **/\n  function unfreezeReserve(address asset) external onlyPoolAdmin {\n    DataTypes.ReserveConfigurationMap memory currentConfig = pool.getConfiguration(asset);\n\n    currentConfig.setFrozen(false);\n\n    pool.setConfiguration(asset, currentConfig.data);\n\n    emit ReserveUnfrozen(asset);\n  }\n\n  /**\n   * @dev Updates the reserve factor of a reserve\n   * @param asset The address of the underlying asset of the reserve\n   * @param reserveFactor The new reserve factor of the reserve\n   **/\n  function setReserveFactor(address asset, uint256 reserveFactor) external onlyPoolAdmin {\n    DataTypes.ReserveConfigurationMap memory currentConfig = pool.getConfiguration(asset);\n\n    currentConfig.setReserveFactor(reserveFactor);\n\n    pool.setConfiguration(asset, currentConfig.data);\n\n    emit ReserveFactorChanged(asset, reserveFactor);\n  }\n\n  /**\n   * @dev Sets the interest rate strategy of a reserve\n   * @param asset The address of the underlying asset of the reserve\n   * @param rateStrategyAddress The new address of the interest strategy contract\n   **/\n  function setReserveInterestRateStrategyAddress(address asset, address rateStrategyAddress)\n    external\n    onlyPoolAdmin\n  {\n    pool.setReserveInterestRateStrategyAddress(asset, rateStrategyAddress);\n    emit ReserveInterestRateStrategyChanged(asset, rateStrategyAddress);\n  }\n\n  /**\n   * @dev pauses or unpauses all the actions of the protocol, including aToken transfers\n   * @param val true if protocol needs to be paused, false otherwise\n   **/\n  function setPoolPause(bool val) external onlyEmergencyAdmin {\n    pool.setPause(val);\n  }\n\n  function _initTokenWithProxy(address implementation, bytes memory initParams)\n    internal\n    returns (address)\n  {\n    InitializableImmutableAdminUpgradeabilityProxy proxy =\n      new InitializableImmutableAdminUpgradeabilityProxy(address(this));\n\n    proxy.initialize(implementation, initParams);\n\n    return address(proxy);\n  }\n\n  function _upgradeTokenImplementation(\n    address proxyAddress,\n    address implementation,\n    bytes memory initParams\n  ) internal {\n    InitializableImmutableAdminUpgradeabilityProxy proxy =\n      InitializableImmutableAdminUpgradeabilityProxy(payable(proxyAddress));\n\n    proxy.upgradeToAndCall(implementation, initParams);\n  }\n\n  function _checkNoLiquidity(address asset) internal view {\n    DataTypes.ReserveData memory reserveData = pool.getReserveData(asset);\n\n    uint256 availableLiquidity = IERC20Detailed(asset).balanceOf(reserveData.aTokenAddress);\n\n    require(\n      availableLiquidity == 0 && reserveData.currentLiquidityRate == 0,\n      Errors.LPC_RESERVE_LIQUIDITY_NOT_0\n    );\n  }\n}\n"
      },
      "contracts/protocol/libraries/aave-upgradeability/InitializableImmutableAdminUpgradeabilityProxy.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport './BaseImmutableAdminUpgradeabilityProxy.sol';\nimport '../../../dependencies/openzeppelin/upgradeability/InitializableUpgradeabilityProxy.sol';\n\n/**\n * @title InitializableAdminUpgradeabilityProxy\n * @dev Extends BaseAdminUpgradeabilityProxy with an initializer function\n */\ncontract InitializableImmutableAdminUpgradeabilityProxy is\n  BaseImmutableAdminUpgradeabilityProxy,\n  InitializableUpgradeabilityProxy\n{\n  constructor(address admin) public BaseImmutableAdminUpgradeabilityProxy(admin) {}\n\n  /**\n   * @dev Only fall back when the sender is not the admin.\n   */\n  function _willFallback() internal override(BaseImmutableAdminUpgradeabilityProxy, Proxy) {\n    BaseImmutableAdminUpgradeabilityProxy._willFallback();\n  }\n}\n"
      },
      "contracts/protocol/libraries/aave-upgradeability/BaseImmutableAdminUpgradeabilityProxy.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport '../../../dependencies/openzeppelin/upgradeability/BaseUpgradeabilityProxy.sol';\n\n/**\n * @title BaseImmutableAdminUpgradeabilityProxy\n * @author Aave, inspired by the OpenZeppelin upgradeability proxy pattern\n * @dev This contract combines an upgradeability proxy with an authorization\n * mechanism for administrative tasks. The admin role is stored in an immutable, which\n * helps saving transactions costs\n * All external functions in this contract must be guarded by the\n * `ifAdmin` modifier. See ethereum/solidity#3864 for a Solidity\n * feature proposal that would enable this to be done automatically.\n */\ncontract BaseImmutableAdminUpgradeabilityProxy is BaseUpgradeabilityProxy {\n  address immutable ADMIN;\n\n  constructor(address admin) public {\n    ADMIN = admin;\n  }\n\n  modifier ifAdmin() {\n    if (msg.sender == ADMIN) {\n      _;\n    } else {\n      _fallback();\n    }\n  }\n\n  /**\n   * @return The address of the proxy admin.\n   */\n  function admin() external ifAdmin returns (address) {\n    return ADMIN;\n  }\n\n  /**\n   * @return The address of the implementation.\n   */\n  function implementation() external ifAdmin returns (address) {\n    return _implementation();\n  }\n\n  /**\n   * @dev Upgrade the backing implementation of the proxy.\n   * Only the admin can call this function.\n   * @param newImplementation Address of the new implementation.\n   */\n  function upgradeTo(address newImplementation) external ifAdmin {\n    _upgradeTo(newImplementation);\n  }\n\n  /**\n   * @dev Upgrade the backing implementation of the proxy and call a function\n   * on the new implementation.\n   * This is useful to initialize the proxied contract.\n   * @param newImplementation Address of the new implementation.\n   * @param data Data to send as msg.data in the low level call.\n   * It should include the signature and the parameters of the function to be called, as described in\n   * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.\n   */\n  function upgradeToAndCall(address newImplementation, bytes calldata data)\n    external\n    payable\n    ifAdmin\n  {\n    _upgradeTo(newImplementation);\n    (bool success, ) = newImplementation.delegatecall(data);\n    require(success);\n  }\n\n  /**\n   * @dev Only fall back when the sender is not the admin.\n   */\n  function _willFallback() internal virtual override {\n    require(msg.sender != ADMIN, 'Cannot call fallback function from the proxy admin');\n    super._willFallback();\n  }\n}\n"
      },
      "contracts/dependencies/openzeppelin/upgradeability/InitializableUpgradeabilityProxy.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport './BaseUpgradeabilityProxy.sol';\n\n/**\n * @title InitializableUpgradeabilityProxy\n * @dev Extends BaseUpgradeabilityProxy with an initializer for initializing\n * implementation and init data.\n */\ncontract InitializableUpgradeabilityProxy is BaseUpgradeabilityProxy {\n  /**\n   * @dev Contract initializer.\n   * @param _logic Address of the initial implementation.\n   * @param _data Data to send as msg.data to the implementation to initialize the proxied contract.\n   * It should include the signature and the parameters of the function to be called, as described in\n   * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.\n   * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped.\n   */\n  function initialize(address _logic, bytes memory _data) public payable {\n    require(_implementation() == address(0));\n    assert(IMPLEMENTATION_SLOT == bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1));\n    _setImplementation(_logic);\n    if (_data.length > 0) {\n      (bool success, ) = _logic.delegatecall(_data);\n      require(success);\n    }\n  }\n}\n"
      },
      "contracts/dependencies/openzeppelin/upgradeability/BaseUpgradeabilityProxy.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport './Proxy.sol';\nimport '../contracts/Address.sol';\n\n/**\n * @title BaseUpgradeabilityProxy\n * @dev This contract implements a proxy that allows to change the\n * implementation address to which it will delegate.\n * Such a change is called an implementation upgrade.\n */\ncontract BaseUpgradeabilityProxy is Proxy {\n  /**\n   * @dev Emitted when the implementation is upgraded.\n   * @param implementation Address of the new implementation.\n   */\n  event Upgraded(address indexed implementation);\n\n  /**\n   * @dev Storage slot with the address of the current implementation.\n   * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n   * validated in the constructor.\n   */\n  bytes32 internal constant IMPLEMENTATION_SLOT =\n    0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n  /**\n   * @dev Returns the current implementation.\n   * @return impl Address of the current implementation\n   */\n  function _implementation() internal view override returns (address impl) {\n    bytes32 slot = IMPLEMENTATION_SLOT;\n    //solium-disable-next-line\n    assembly {\n      impl := sload(slot)\n    }\n  }\n\n  /**\n   * @dev Upgrades the proxy to a new implementation.\n   * @param newImplementation Address of the new implementation.\n   */\n  function _upgradeTo(address newImplementation) internal {\n    _setImplementation(newImplementation);\n    emit Upgraded(newImplementation);\n  }\n\n  /**\n   * @dev Sets the implementation address of the proxy.\n   * @param newImplementation Address of the new implementation.\n   */\n  function _setImplementation(address newImplementation) internal {\n    require(\n      Address.isContract(newImplementation),\n      'Cannot set a proxy implementation to a non-contract address'\n    );\n\n    bytes32 slot = IMPLEMENTATION_SLOT;\n\n    //solium-disable-next-line\n    assembly {\n      sstore(slot, newImplementation)\n    }\n  }\n}\n"
      },
      "contracts/dependencies/openzeppelin/upgradeability/Proxy.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity ^0.6.0;\n\n/**\n * @title Proxy\n * @dev Implements delegation of calls to other contracts, with proper\n * forwarding of return values and bubbling of failures.\n * It defines a fallback function that delegates all calls to the address\n * returned by the abstract _implementation() internal function.\n */\nabstract contract Proxy {\n  /**\n   * @dev Fallback function.\n   * Implemented entirely in `_fallback`.\n   */\n  fallback() external payable {\n    _fallback();\n  }\n\n  /**\n   * @return The Address of the implementation.\n   */\n  function _implementation() internal view virtual returns (address);\n\n  /**\n   * @dev Delegates execution to an implementation contract.\n   * This is a low level function that doesn't return to its internal call site.\n   * It will return to the external caller whatever the implementation returns.\n   * @param implementation Address to delegate.\n   */\n  function _delegate(address implementation) internal {\n    //solium-disable-next-line\n    assembly {\n      // Copy msg.data. We take full control of memory in this inline assembly\n      // block because it will not return to Solidity code. We overwrite the\n      // Solidity scratch pad at memory position 0.\n      calldatacopy(0, 0, calldatasize())\n\n      // Call the implementation.\n      // out and outsize are 0 because we don't know the size yet.\n      let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n      // Copy the returned data.\n      returndatacopy(0, 0, returndatasize())\n\n      switch result\n        // delegatecall returns 0 on error.\n        case 0 {\n          revert(0, returndatasize())\n        }\n        default {\n          return(0, returndatasize())\n        }\n    }\n  }\n\n  /**\n   * @dev Function that is run as the first thing in the fallback function.\n   * Can be redefined in derived contracts to add functionality.\n   * Redefinitions must call super._willFallback().\n   */\n  function _willFallback() internal virtual {}\n\n  /**\n   * @dev fallback implementation.\n   * Extracted to enable manual triggering.\n   */\n  function _fallback() internal {\n    _willFallback();\n    _delegate(_implementation());\n  }\n}\n"
      },
      "contracts/interfaces/ILendingPoolConfigurator.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\n\ninterface ILendingPoolConfigurator {\n  struct InitReserveInput {\n    address aTokenImpl;\n    address stableDebtTokenImpl;\n    address variableDebtTokenImpl;\n    uint8 underlyingAssetDecimals;\n    address interestRateStrategyAddress;\n    address underlyingAsset;\n    address treasury;\n    address incentivesController;\n    string underlyingAssetName;\n    string aTokenName;\n    string aTokenSymbol;\n    string variableDebtTokenName;\n    string variableDebtTokenSymbol;\n    string stableDebtTokenName;\n    string stableDebtTokenSymbol;\n    bytes params;\n  }\n\n  struct UpdateATokenInput {\n    address asset;\n    address treasury;\n    address incentivesController;\n    string name;\n    string symbol;\n    address implementation;\n    bytes params;\n  }\n\n  struct UpdateDebtTokenInput {\n    address asset;\n    address incentivesController;\n    string name;\n    string symbol;\n    address implementation;\n    bytes params;\n  }\n\n  /**\n   * @dev Emitted when a reserve is initialized.\n   * @param asset The address of the underlying asset of the reserve\n   * @param aToken The address of the associated aToken contract\n   * @param stableDebtToken The address of the associated stable rate debt token\n   * @param variableDebtToken The address of the associated variable rate debt token\n   * @param interestRateStrategyAddress The address of the interest rate strategy for the reserve\n   **/\n  event ReserveInitialized(\n    address indexed asset,\n    address indexed aToken,\n    address stableDebtToken,\n    address variableDebtToken,\n    address interestRateStrategyAddress\n  );\n\n  /**\n   * @dev Emitted when borrowing is enabled on a reserve\n   * @param asset The address of the underlying asset of the reserve\n   * @param stableRateEnabled True if stable rate borrowing is enabled, false otherwise\n   **/\n  event BorrowingEnabledOnReserve(address indexed asset, bool stableRateEnabled);\n\n  /**\n   * @dev Emitted when borrowing is disabled on a reserve\n   * @param asset The address of the underlying asset of the reserve\n   **/\n  event BorrowingDisabledOnReserve(address indexed asset);\n\n  /**\n   * @dev Emitted when the collateralization risk parameters for the specified asset are updated.\n   * @param asset The address of the underlying asset of the reserve\n   * @param ltv The loan to value of the asset when used as collateral\n   * @param liquidationThreshold The threshold at which loans using this asset as collateral will be considered undercollateralized\n   * @param liquidationBonus The bonus liquidators receive to liquidate this asset\n   **/\n  event CollateralConfigurationChanged(\n    address indexed asset,\n    uint256 ltv,\n    uint256 liquidationThreshold,\n    uint256 liquidationBonus\n  );\n\n  /**\n   * @dev Emitted when stable rate borrowing is enabled on a reserve\n   * @param asset The address of the underlying asset of the reserve\n   **/\n  event StableRateEnabledOnReserve(address indexed asset);\n\n  /**\n   * @dev Emitted when stable rate borrowing is disabled on a reserve\n   * @param asset The address of the underlying asset of the reserve\n   **/\n  event StableRateDisabledOnReserve(address indexed asset);\n\n  /**\n   * @dev Emitted when a reserve is activated\n   * @param asset The address of the underlying asset of the reserve\n   **/\n  event ReserveActivated(address indexed asset);\n\n  /**\n   * @dev Emitted when a reserve is deactivated\n   * @param asset The address of the underlying asset of the reserve\n   **/\n  event ReserveDeactivated(address indexed asset);\n\n  /**\n   * @dev Emitted when a reserve is frozen\n   * @param asset The address of the underlying asset of the reserve\n   **/\n  event ReserveFrozen(address indexed asset);\n\n  /**\n   * @dev Emitted when a reserve is unfrozen\n   * @param asset The address of the underlying asset of the reserve\n   **/\n  event ReserveUnfrozen(address indexed asset);\n\n  /**\n   * @dev Emitted when a reserve factor is updated\n   * @param asset The address of the underlying asset of the reserve\n   * @param factor The new reserve factor\n   **/\n  event ReserveFactorChanged(address indexed asset, uint256 factor);\n\n  /**\n   * @dev Emitted when the reserve decimals are updated\n   * @param asset The address of the underlying asset of the reserve\n   * @param decimals The new decimals\n   **/\n  event ReserveDecimalsChanged(address indexed asset, uint256 decimals);\n\n  /**\n   * @dev Emitted when a reserve interest strategy contract is updated\n   * @param asset The address of the underlying asset of the reserve\n   * @param strategy The new address of the interest strategy contract\n   **/\n  event ReserveInterestRateStrategyChanged(address indexed asset, address strategy);\n\n  /**\n   * @dev Emitted when an aToken implementation is upgraded\n   * @param asset The address of the underlying asset of the reserve\n   * @param proxy The aToken proxy address\n   * @param implementation The new aToken implementation\n   **/\n  event ATokenUpgraded(\n    address indexed asset,\n    address indexed proxy,\n    address indexed implementation\n  );\n\n  /**\n   * @dev Emitted when the implementation of a stable debt token is upgraded\n   * @param asset The address of the underlying asset of the reserve\n   * @param proxy The stable debt token proxy address\n   * @param implementation The new aToken implementation\n   **/\n  event StableDebtTokenUpgraded(\n    address indexed asset,\n    address indexed proxy,\n    address indexed implementation\n  );\n\n  /**\n   * @dev Emitted when the implementation of a variable debt token is upgraded\n   * @param asset The address of the underlying asset of the reserve\n   * @param proxy The variable debt token proxy address\n   * @param implementation The new aToken implementation\n   **/\n  event VariableDebtTokenUpgraded(\n    address indexed asset,\n    address indexed proxy,\n    address indexed implementation\n  );\n}\n"
      },
      "contracts/misc/WalletBalanceProvider.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\npragma experimental ABIEncoderV2;\n\nimport {Address} from '../dependencies/openzeppelin/contracts/Address.sol';\nimport {IERC20} from '../dependencies/openzeppelin/contracts/IERC20.sol';\n\nimport {ILendingPoolAddressesProvider} from '../interfaces/ILendingPoolAddressesProvider.sol';\nimport {ILendingPool} from '../interfaces/ILendingPool.sol';\nimport {SafeERC20} from '../dependencies/openzeppelin/contracts/SafeERC20.sol';\nimport {ReserveConfiguration} from '../protocol/libraries/configuration/ReserveConfiguration.sol';\nimport {DataTypes} from '../protocol/libraries/types/DataTypes.sol';\n\n/**\n * @title WalletBalanceProvider contract\n * @author Aave, influenced by https://github.com/wbobeirne/eth-balance-checker/blob/master/contracts/BalanceChecker.sol\n * @notice Implements a logic of getting multiple tokens balance for one user address\n * @dev NOTE: THIS CONTRACT IS NOT USED WITHIN THE AAVE PROTOCOL. It's an accessory contract used to reduce the number of calls\n * towards the blockchain from the Aave backend.\n **/\ncontract WalletBalanceProvider {\n  using Address for address payable;\n  using Address for address;\n  using SafeERC20 for IERC20;\n  using ReserveConfiguration for DataTypes.ReserveConfigurationMap;\n\n  address constant MOCK_ETH_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;\n\n  /**\n    @dev Fallback function, don't accept any ETH\n    **/\n  receive() external payable {\n    //only contracts can send ETH to the core\n    require(msg.sender.isContract(), '22');\n  }\n\n  /**\n    @dev Check the token balance of a wallet in a token contract\n\n    Returns the balance of the token for user. Avoids possible errors:\n      - return 0 on non-contract address\n    **/\n  function balanceOf(address user, address token) public view returns (uint256) {\n    if (token == MOCK_ETH_ADDRESS) {\n      return user.balance; // ETH balance\n      // check if token is actually a contract\n    } else if (token.isContract()) {\n      return IERC20(token).balanceOf(user);\n    }\n    revert('INVALID_TOKEN');\n  }\n\n  /**\n   * @notice Fetches, for a list of _users and _tokens (ETH included with mock address), the balances\n   * @param users The list of users\n   * @param tokens The list of tokens\n   * @return And array with the concatenation of, for each user, his/her balances\n   **/\n  function batchBalanceOf(address[] calldata users, address[] calldata tokens)\n    external\n    view\n    returns (uint256[] memory)\n  {\n    uint256[] memory balances = new uint256[](users.length * tokens.length);\n\n    for (uint256 i = 0; i < users.length; i++) {\n      for (uint256 j = 0; j < tokens.length; j++) {\n        balances[i * tokens.length + j] = balanceOf(users[i], tokens[j]);\n      }\n    }\n\n    return balances;\n  }\n\n  /**\n    @dev provides balances of user wallet for all reserves available on the pool\n    */\n  function getUserWalletBalances(address provider, address user)\n    external\n    view\n    returns (address[] memory, uint256[] memory)\n  {\n    ILendingPool pool = ILendingPool(ILendingPoolAddressesProvider(provider).getLendingPool());\n\n    address[] memory reserves = pool.getReservesList();\n    address[] memory reservesWithEth = new address[](reserves.length + 1);\n    for (uint256 i = 0; i < reserves.length; i++) {\n      reservesWithEth[i] = reserves[i];\n    }\n    reservesWithEth[reserves.length] = MOCK_ETH_ADDRESS;\n\n    uint256[] memory balances = new uint256[](reservesWithEth.length);\n\n    for (uint256 j = 0; j < reserves.length; j++) {\n      DataTypes.ReserveConfigurationMap memory configuration =\n        pool.getConfiguration(reservesWithEth[j]);\n\n      (bool isActive, , , ) = configuration.getFlagsMemory();\n\n      if (!isActive) {\n        balances[j] = 0;\n        continue;\n      }\n      balances[j] = balanceOf(user, reservesWithEth[j]);\n    }\n    balances[reserves.length] = balanceOf(user, MOCK_ETH_ADDRESS);\n\n    return (reservesWithEth, balances);\n  }\n}\n"
      },
      "contracts/dependencies/openzeppelin/upgradeability/InitializableAdminUpgradeabilityProxy.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport './BaseAdminUpgradeabilityProxy.sol';\nimport './InitializableUpgradeabilityProxy.sol';\n\n/**\n * @title InitializableAdminUpgradeabilityProxy\n * @dev Extends from BaseAdminUpgradeabilityProxy with an initializer for\n * initializing the implementation, admin, and init data.\n */\ncontract InitializableAdminUpgradeabilityProxy is\n  BaseAdminUpgradeabilityProxy,\n  InitializableUpgradeabilityProxy\n{\n  /**\n   * Contract initializer.\n   * @param logic address of the initial implementation.\n   * @param admin Address of the proxy administrator.\n   * @param data Data to send as msg.data to the implementation to initialize the proxied contract.\n   * It should include the signature and the parameters of the function to be called, as described in\n   * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.\n   * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped.\n   */\n  function initialize(\n    address logic,\n    address admin,\n    bytes memory data\n  ) public payable {\n    require(_implementation() == address(0));\n    InitializableUpgradeabilityProxy.initialize(logic, data);\n    assert(ADMIN_SLOT == bytes32(uint256(keccak256('eip1967.proxy.admin')) - 1));\n    _setAdmin(admin);\n  }\n\n  /**\n   * @dev Only fall back when the sender is not the admin.\n   */\n  function _willFallback() internal override(BaseAdminUpgradeabilityProxy, Proxy) {\n    BaseAdminUpgradeabilityProxy._willFallback();\n  }\n}\n"
      },
      "contracts/dependencies/openzeppelin/upgradeability/BaseAdminUpgradeabilityProxy.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport './UpgradeabilityProxy.sol';\n\n/**\n * @title BaseAdminUpgradeabilityProxy\n * @dev This contract combines an upgradeability proxy with an authorization\n * mechanism for administrative tasks.\n * All external functions in this contract must be guarded by the\n * `ifAdmin` modifier. See ethereum/solidity#3864 for a Solidity\n * feature proposal that would enable this to be done automatically.\n */\ncontract BaseAdminUpgradeabilityProxy is BaseUpgradeabilityProxy {\n  /**\n   * @dev Emitted when the administration has been transferred.\n   * @param previousAdmin Address of the previous admin.\n   * @param newAdmin Address of the new admin.\n   */\n  event AdminChanged(address previousAdmin, address newAdmin);\n\n  /**\n   * @dev Storage slot with the admin of the contract.\n   * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n   * validated in the constructor.\n   */\n  bytes32 internal constant ADMIN_SLOT =\n    0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n  /**\n   * @dev Modifier to check whether the `msg.sender` is the admin.\n   * If it is, it will run the function. Otherwise, it will delegate the call\n   * to the implementation.\n   */\n  modifier ifAdmin() {\n    if (msg.sender == _admin()) {\n      _;\n    } else {\n      _fallback();\n    }\n  }\n\n  /**\n   * @return The address of the proxy admin.\n   */\n  function admin() external ifAdmin returns (address) {\n    return _admin();\n  }\n\n  /**\n   * @return The address of the implementation.\n   */\n  function implementation() external ifAdmin returns (address) {\n    return _implementation();\n  }\n\n  /**\n   * @dev Changes the admin of the proxy.\n   * Only the current admin can call this function.\n   * @param newAdmin Address to transfer proxy administration to.\n   */\n  function changeAdmin(address newAdmin) external ifAdmin {\n    require(newAdmin != address(0), 'Cannot change the admin of a proxy to the zero address');\n    emit AdminChanged(_admin(), newAdmin);\n    _setAdmin(newAdmin);\n  }\n\n  /**\n   * @dev Upgrade the backing implementation of the proxy.\n   * Only the admin can call this function.\n   * @param newImplementation Address of the new implementation.\n   */\n  function upgradeTo(address newImplementation) external ifAdmin {\n    _upgradeTo(newImplementation);\n  }\n\n  /**\n   * @dev Upgrade the backing implementation of the proxy and call a function\n   * on the new implementation.\n   * This is useful to initialize the proxied contract.\n   * @param newImplementation Address of the new implementation.\n   * @param data Data to send as msg.data in the low level call.\n   * It should include the signature and the parameters of the function to be called, as described in\n   * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.\n   */\n  function upgradeToAndCall(address newImplementation, bytes calldata data)\n    external\n    payable\n    ifAdmin\n  {\n    _upgradeTo(newImplementation);\n    (bool success, ) = newImplementation.delegatecall(data);\n    require(success);\n  }\n\n  /**\n   * @return adm The admin slot.\n   */\n  function _admin() internal view returns (address adm) {\n    bytes32 slot = ADMIN_SLOT;\n    //solium-disable-next-line\n    assembly {\n      adm := sload(slot)\n    }\n  }\n\n  /**\n   * @dev Sets the address of the proxy admin.\n   * @param newAdmin Address of the new proxy admin.\n   */\n  function _setAdmin(address newAdmin) internal {\n    bytes32 slot = ADMIN_SLOT;\n    //solium-disable-next-line\n    assembly {\n      sstore(slot, newAdmin)\n    }\n  }\n\n  /**\n   * @dev Only fall back when the sender is not the admin.\n   */\n  function _willFallback() internal virtual override {\n    require(msg.sender != _admin(), 'Cannot call fallback function from the proxy admin');\n    super._willFallback();\n  }\n}\n"
      },
      "contracts/dependencies/openzeppelin/upgradeability/UpgradeabilityProxy.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport './BaseUpgradeabilityProxy.sol';\n\n/**\n * @title UpgradeabilityProxy\n * @dev Extends BaseUpgradeabilityProxy with a constructor for initializing\n * implementation and init data.\n */\ncontract UpgradeabilityProxy is BaseUpgradeabilityProxy {\n  /**\n   * @dev Contract constructor.\n   * @param _logic Address of the initial implementation.\n   * @param _data Data to send as msg.data to the implementation to initialize the proxied contract.\n   * It should include the signature and the parameters of the function to be called, as described in\n   * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.\n   * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped.\n   */\n  constructor(address _logic, bytes memory _data) public payable {\n    assert(IMPLEMENTATION_SLOT == bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1));\n    _setImplementation(_logic);\n    if (_data.length > 0) {\n      (bool success, ) = _logic.delegatecall(_data);\n      require(success);\n    }\n  }\n}\n"
      },
      "contracts/dependencies/openzeppelin/upgradeability/AdminUpgradeabilityProxy.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport './BaseAdminUpgradeabilityProxy.sol';\n\n/**\n * @title AdminUpgradeabilityProxy\n * @dev Extends from BaseAdminUpgradeabilityProxy with a constructor for\n * initializing the implementation, admin, and init data.\n */\ncontract AdminUpgradeabilityProxy is BaseAdminUpgradeabilityProxy, UpgradeabilityProxy {\n  /**\n   * Contract constructor.\n   * @param _logic address of the initial implementation.\n   * @param _admin Address of the proxy administrator.\n   * @param _data Data to send as msg.data to the implementation to initialize the proxied contract.\n   * It should include the signature and the parameters of the function to be called, as described in\n   * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.\n   * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped.\n   */\n  constructor(\n    address _logic,\n    address _admin,\n    bytes memory _data\n  ) public payable UpgradeabilityProxy(_logic, _data) {\n    assert(ADMIN_SLOT == bytes32(uint256(keccak256('eip1967.proxy.admin')) - 1));\n    _setAdmin(_admin);\n  }\n\n  /**\n   * @dev Only fall back when the sender is not the admin.\n   */\n  function _willFallback() internal override(BaseAdminUpgradeabilityProxy, Proxy) {\n    BaseAdminUpgradeabilityProxy._willFallback();\n  }\n}\n"
      },
      "contracts/mocks/tokens/MintableDelegationERC20.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {ERC20} from '../../dependencies/openzeppelin/contracts/ERC20.sol';\n\n/**\n * @title ERC20Mintable\n * @dev ERC20 minting logic\n */\ncontract MintableDelegationERC20 is ERC20 {\n  address public delegatee;\n\n  constructor(\n    string memory name,\n    string memory symbol,\n    uint8 decimals\n  ) public ERC20(name, symbol) {\n    _setupDecimals(decimals);\n  }\n\n  /**\n   * @dev Function to mint tokensp\n   * @param value The amount of tokens to mint.\n   * @return A boolean that indicates if the operation was successful.\n   */\n  function mint(uint256 value) public returns (bool) {\n    _mint(msg.sender, value);\n    return true;\n  }\n\n  function delegate(address delegateeAddress) external {\n    delegatee = delegateeAddress;\n  }\n}\n"
      },
      "contracts/mocks/swap/MockUniswapV2Router02.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {IUniswapV2Router02} from '../../interfaces/IUniswapV2Router02.sol';\nimport {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';\nimport {MintableERC20} from '../tokens/MintableERC20.sol';\n\ncontract MockUniswapV2Router02 is IUniswapV2Router02 {\n  mapping(address => uint256) internal _amountToReturn;\n  mapping(address => uint256) internal _amountToSwap;\n  mapping(address => mapping(address => mapping(uint256 => uint256))) internal _amountsIn;\n  mapping(address => mapping(address => mapping(uint256 => uint256))) internal _amountsOut;\n  uint256 internal defaultMockValue;\n\n  function setAmountToReturn(address reserve, uint256 amount) public {\n    _amountToReturn[reserve] = amount;\n  }\n\n  function setAmountToSwap(address reserve, uint256 amount) public {\n    _amountToSwap[reserve] = amount;\n  }\n\n  function swapExactTokensForTokens(\n    uint256 amountIn,\n    uint256, /* amountOutMin */\n    address[] calldata path,\n    address to,\n    uint256 /* deadline */\n  ) external override returns (uint256[] memory amounts) {\n    IERC20(path[0]).transferFrom(msg.sender, address(this), amountIn);\n\n    MintableERC20(path[1]).mint(_amountToReturn[path[0]]);\n    IERC20(path[1]).transfer(to, _amountToReturn[path[0]]);\n\n    amounts = new uint256[](path.length);\n    amounts[0] = amountIn;\n    amounts[1] = _amountToReturn[path[0]];\n  }\n\n  function swapTokensForExactTokens(\n    uint256 amountOut,\n    uint256, /* amountInMax */\n    address[] calldata path,\n    address to,\n    uint256 /* deadline */\n  ) external override returns (uint256[] memory amounts) {\n    IERC20(path[0]).transferFrom(msg.sender, address(this), _amountToSwap[path[0]]);\n\n    MintableERC20(path[1]).mint(amountOut);\n    IERC20(path[1]).transfer(to, amountOut);\n\n    amounts = new uint256[](path.length);\n    amounts[0] = _amountToSwap[path[0]];\n    amounts[1] = amountOut;\n  }\n\n  function setAmountOut(\n    uint256 amountIn,\n    address reserveIn,\n    address reserveOut,\n    uint256 amountOut\n  ) public {\n    _amountsOut[reserveIn][reserveOut][amountIn] = amountOut;\n  }\n\n  function setAmountIn(\n    uint256 amountOut,\n    address reserveIn,\n    address reserveOut,\n    uint256 amountIn\n  ) public {\n    _amountsIn[reserveIn][reserveOut][amountOut] = amountIn;\n  }\n\n  function setDefaultMockValue(uint256 value) public {\n    defaultMockValue = value;\n  }\n\n  function getAmountsOut(uint256 amountIn, address[] calldata path)\n    external\n    view\n    override\n    returns (uint256[] memory)\n  {\n    uint256[] memory amounts = new uint256[](path.length);\n    amounts[0] = amountIn;\n    amounts[1] = _amountsOut[path[0]][path[1]][amountIn] > 0\n      ? _amountsOut[path[0]][path[1]][amountIn]\n      : defaultMockValue;\n    return amounts;\n  }\n\n  function getAmountsIn(uint256 amountOut, address[] calldata path)\n    external\n    view\n    override\n    returns (uint256[] memory)\n  {\n    uint256[] memory amounts = new uint256[](path.length);\n    amounts[0] = _amountsIn[path[0]][path[1]][amountOut] > 0\n      ? _amountsIn[path[0]][path[1]][amountOut]\n      : defaultMockValue;\n    amounts[1] = amountOut;\n    return amounts;\n  }\n}\n"
      },
      "@openzeppelin/contracts/token/ERC20/IERC20.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.6.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n    /**\n     * @dev Returns the amount of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the amount of tokens owned by `account`.\n     */\n    function balanceOf(address account) external view returns (uint256);\n\n    /**\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transfer(address recipient, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Returns the remaining number of tokens that `spender` will be\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\n     * zero by default.\n     *\n     * This value changes when {approve} or {transferFrom} are called.\n     */\n    function allowance(address owner, address spender) external view returns (uint256);\n\n    /**\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\n     * that someone may use both the old and the new allowance by unfortunate\n     * transaction ordering. One possible solution to mitigate this race\n     * condition is to first reduce the spender's allowance to 0 and set the\n     * desired value afterwards:\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address spender, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\n     * allowance mechanism. `amount` is then deducted from the caller's\n     * allowance.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\n     * another (`to`).\n     *\n     * Note that `value` may be zero.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    /**\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n     * a call to {approve}. `value` is the new allowance.\n     */\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n"
      },
      "contracts/adapters/UniswapLiquiditySwapAdapter.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\n\nimport {BaseUniswapAdapter} from './BaseUniswapAdapter.sol';\nimport {ILendingPoolAddressesProvider} from '../interfaces/ILendingPoolAddressesProvider.sol';\nimport {IUniswapV2Router02} from '../interfaces/IUniswapV2Router02.sol';\nimport {IERC20} from '../dependencies/openzeppelin/contracts/IERC20.sol';\n\n/**\n * @title UniswapLiquiditySwapAdapter\n * @notice Uniswap V2 Adapter to swap liquidity.\n * @author Aave\n **/\ncontract UniswapLiquiditySwapAdapter is BaseUniswapAdapter {\n  struct PermitParams {\n    uint256[] amount;\n    uint256[] deadline;\n    uint8[] v;\n    bytes32[] r;\n    bytes32[] s;\n  }\n\n  struct SwapParams {\n    address[] assetToSwapToList;\n    uint256[] minAmountsToReceive;\n    bool[] swapAllBalance;\n    PermitParams permitParams;\n    bool[] useEthPath;\n  }\n\n  constructor(\n    ILendingPoolAddressesProvider addressesProvider,\n    IUniswapV2Router02 uniswapRouter,\n    address wethAddress\n  ) public BaseUniswapAdapter(addressesProvider, uniswapRouter, wethAddress) {}\n\n  /**\n   * @dev Swaps the received reserve amount from the flash loan into the asset specified in the params.\n   * The received funds from the swap are then deposited into the protocol on behalf of the user.\n   * The user should give this contract allowance to pull the ATokens in order to withdraw the underlying asset and\n   * repay the flash loan.\n   * @param assets Address of asset to be swapped\n   * @param amounts Amount of the asset to be swapped\n   * @param premiums Fee of the flash loan\n   * @param initiator Address of the user\n   * @param params Additional variadic field to include extra params. Expected parameters:\n   *   address[] assetToSwapToList List of the addresses of the reserve to be swapped to and deposited\n   *   uint256[] minAmountsToReceive List of min amounts to be received from the swap\n   *   bool[] swapAllBalance Flag indicating if all the user balance should be swapped\n   *   uint256[] permitAmount List of amounts for the permit signature\n   *   uint256[] deadline List of deadlines for the permit signature\n   *   uint8[] v List of v param for the permit signature\n   *   bytes32[] r List of r param for the permit signature\n   *   bytes32[] s List of s param for the permit signature\n   */\n  function executeOperation(\n    address[] calldata assets,\n    uint256[] calldata amounts,\n    uint256[] calldata premiums,\n    address initiator,\n    bytes calldata params\n  ) external override returns (bool) {\n    require(msg.sender == address(LENDING_POOL), 'CALLER_MUST_BE_LENDING_POOL');\n\n    SwapParams memory decodedParams = _decodeParams(params);\n\n    require(\n      assets.length == decodedParams.assetToSwapToList.length &&\n        assets.length == decodedParams.minAmountsToReceive.length &&\n        assets.length == decodedParams.swapAllBalance.length &&\n        assets.length == decodedParams.permitParams.amount.length &&\n        assets.length == decodedParams.permitParams.deadline.length &&\n        assets.length == decodedParams.permitParams.v.length &&\n        assets.length == decodedParams.permitParams.r.length &&\n        assets.length == decodedParams.permitParams.s.length &&\n        assets.length == decodedParams.useEthPath.length,\n      'INCONSISTENT_PARAMS'\n    );\n\n    for (uint256 i = 0; i < assets.length; i++) {\n      _swapLiquidity(\n        assets[i],\n        decodedParams.assetToSwapToList[i],\n        amounts[i],\n        premiums[i],\n        initiator,\n        decodedParams.minAmountsToReceive[i],\n        decodedParams.swapAllBalance[i],\n        PermitSignature(\n          decodedParams.permitParams.amount[i],\n          decodedParams.permitParams.deadline[i],\n          decodedParams.permitParams.v[i],\n          decodedParams.permitParams.r[i],\n          decodedParams.permitParams.s[i]\n        ),\n        decodedParams.useEthPath[i]\n      );\n    }\n\n    return true;\n  }\n\n  struct SwapAndDepositLocalVars {\n    uint256 i;\n    uint256 aTokenInitiatorBalance;\n    uint256 amountToSwap;\n    uint256 receivedAmount;\n    address aToken;\n  }\n\n  /**\n   * @dev Swaps an amount of an asset to another and deposits the new asset amount on behalf of the user without using\n   * a flash loan. This method can be used when the temporary transfer of the collateral asset to this contract\n   * does not affect the user position.\n   * The user should give this contract allowance to pull the ATokens in order to withdraw the underlying asset and\n   * perform the swap.\n   * @param assetToSwapFromList List of addresses of the underlying asset to be swap from\n   * @param assetToSwapToList List of addresses of the underlying asset to be swap to and deposited\n   * @param amountToSwapList List of amounts to be swapped. If the amount exceeds the balance, the total balance is used for the swap\n   * @param minAmountsToReceive List of min amounts to be received from the swap\n   * @param permitParams List of struct containing the permit signatures\n   *   uint256 permitAmount Amount for the permit signature\n   *   uint256 deadline Deadline for the permit signature\n   *   uint8 v param for the permit signature\n   *   bytes32 r param for the permit signature\n   *   bytes32 s param for the permit signature\n   * @param useEthPath true if the swap needs to occur using ETH in the routing, false otherwise\n   */\n  function swapAndDeposit(\n    address[] calldata assetToSwapFromList,\n    address[] calldata assetToSwapToList,\n    uint256[] calldata amountToSwapList,\n    uint256[] calldata minAmountsToReceive,\n    PermitSignature[] calldata permitParams,\n    bool[] calldata useEthPath\n  ) external {\n    require(\n      assetToSwapFromList.length == assetToSwapToList.length &&\n        assetToSwapFromList.length == amountToSwapList.length &&\n        assetToSwapFromList.length == minAmountsToReceive.length &&\n        assetToSwapFromList.length == permitParams.length,\n      'INCONSISTENT_PARAMS'\n    );\n\n    SwapAndDepositLocalVars memory vars;\n\n    for (vars.i = 0; vars.i < assetToSwapFromList.length; vars.i++) {\n      vars.aToken = _getReserveData(assetToSwapFromList[vars.i]).aTokenAddress;\n\n      vars.aTokenInitiatorBalance = IERC20(vars.aToken).balanceOf(msg.sender);\n      vars.amountToSwap = amountToSwapList[vars.i] > vars.aTokenInitiatorBalance\n        ? vars.aTokenInitiatorBalance\n        : amountToSwapList[vars.i];\n\n      _pullAToken(\n        assetToSwapFromList[vars.i],\n        vars.aToken,\n        msg.sender,\n        vars.amountToSwap,\n        permitParams[vars.i]\n      );\n\n      vars.receivedAmount = _swapExactTokensForTokens(\n        assetToSwapFromList[vars.i],\n        assetToSwapToList[vars.i],\n        vars.amountToSwap,\n        minAmountsToReceive[vars.i],\n        useEthPath[vars.i]\n      );\n\n      // Deposit new reserve\n      IERC20(assetToSwapToList[vars.i]).safeApprove(address(LENDING_POOL), 0);\n      IERC20(assetToSwapToList[vars.i]).safeApprove(address(LENDING_POOL), vars.receivedAmount);\n      LENDING_POOL.deposit(assetToSwapToList[vars.i], vars.receivedAmount, msg.sender, 0);\n    }\n  }\n\n  /**\n   * @dev Swaps an `amountToSwap` of an asset to another and deposits the funds on behalf of the initiator.\n   * @param assetFrom Address of the underlying asset to be swap from\n   * @param assetTo Address of the underlying asset to be swap to and deposited\n   * @param amount Amount from flash loan\n   * @param premium Premium of the flash loan\n   * @param minAmountToReceive Min amount to be received from the swap\n   * @param swapAllBalance Flag indicating if all the user balance should be swapped\n   * @param permitSignature List of struct containing the permit signature\n   * @param useEthPath true if the swap needs to occur using ETH in the routing, false otherwise\n   */\n\n  struct SwapLiquidityLocalVars {\n    address aToken;\n    uint256 aTokenInitiatorBalance;\n    uint256 amountToSwap;\n    uint256 receivedAmount;\n    uint256 flashLoanDebt;\n    uint256 amountToPull;\n  }\n\n  function _swapLiquidity(\n    address assetFrom,\n    address assetTo,\n    uint256 amount,\n    uint256 premium,\n    address initiator,\n    uint256 minAmountToReceive,\n    bool swapAllBalance,\n    PermitSignature memory permitSignature,\n    bool useEthPath\n  ) internal {\n    SwapLiquidityLocalVars memory vars;\n\n    vars.aToken = _getReserveData(assetFrom).aTokenAddress;\n\n    vars.aTokenInitiatorBalance = IERC20(vars.aToken).balanceOf(initiator);\n    vars.amountToSwap = swapAllBalance && vars.aTokenInitiatorBalance.sub(premium) <= amount\n      ? vars.aTokenInitiatorBalance.sub(premium)\n      : amount;\n\n    vars.receivedAmount = _swapExactTokensForTokens(\n      assetFrom,\n      assetTo,\n      vars.amountToSwap,\n      minAmountToReceive,\n      useEthPath\n    );\n\n    // Deposit new reserve\n    IERC20(assetTo).safeApprove(address(LENDING_POOL), 0);\n    IERC20(assetTo).safeApprove(address(LENDING_POOL), vars.receivedAmount);\n    LENDING_POOL.deposit(assetTo, vars.receivedAmount, initiator, 0);\n\n    vars.flashLoanDebt = amount.add(premium);\n    vars.amountToPull = vars.amountToSwap.add(premium);\n\n    _pullAToken(assetFrom, vars.aToken, initiator, vars.amountToPull, permitSignature);\n\n    // Repay flash loan\n    IERC20(assetFrom).safeApprove(address(LENDING_POOL), 0);\n    IERC20(assetFrom).safeApprove(address(LENDING_POOL), vars.flashLoanDebt);\n  }\n\n  /**\n   * @dev Decodes the information encoded in the flash loan params\n   * @param params Additional variadic field to include extra params. Expected parameters:\n   *   address[] assetToSwapToList List of the addresses of the reserve to be swapped to and deposited\n   *   uint256[] minAmountsToReceive List of min amounts to be received from the swap\n   *   bool[] swapAllBalance Flag indicating if all the user balance should be swapped\n   *   uint256[] permitAmount List of amounts for the permit signature\n   *   uint256[] deadline List of deadlines for the permit signature\n   *   uint8[] v List of v param for the permit signature\n   *   bytes32[] r List of r param for the permit signature\n   *   bytes32[] s List of s param for the permit signature\n   *   bool[] useEthPath true if the swap needs to occur using ETH in the routing, false otherwise\n   * @return SwapParams struct containing decoded params\n   */\n  function _decodeParams(bytes memory params) internal pure returns (SwapParams memory) {\n    (\n      address[] memory assetToSwapToList,\n      uint256[] memory minAmountsToReceive,\n      bool[] memory swapAllBalance,\n      uint256[] memory permitAmount,\n      uint256[] memory deadline,\n      uint8[] memory v,\n      bytes32[] memory r,\n      bytes32[] memory s,\n      bool[] memory useEthPath\n    ) =\n      abi.decode(\n        params,\n        (address[], uint256[], bool[], uint256[], uint256[], uint8[], bytes32[], bytes32[], bool[])\n      );\n\n    return\n      SwapParams(\n        assetToSwapToList,\n        minAmountsToReceive,\n        swapAllBalance,\n        PermitParams(permitAmount, deadline, v, r, s),\n        useEthPath\n      );\n  }\n}\n"
      },
      "contracts/adapters/FlashLiquidationAdapter.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\n\nimport {BaseUniswapAdapter} from './BaseUniswapAdapter.sol';\nimport {ILendingPoolAddressesProvider} from '../interfaces/ILendingPoolAddressesProvider.sol';\nimport {IUniswapV2Router02} from '../interfaces/IUniswapV2Router02.sol';\nimport {IERC20} from '../dependencies/openzeppelin/contracts/IERC20.sol';\nimport {DataTypes} from '../protocol/libraries/types/DataTypes.sol';\nimport {Helpers} from '../protocol/libraries/helpers/Helpers.sol';\nimport {IPriceOracleGetter} from '../interfaces/IPriceOracleGetter.sol';\nimport {IAToken} from '../interfaces/IAToken.sol';\nimport {ReserveConfiguration} from '../protocol/libraries/configuration/ReserveConfiguration.sol';\n\n/**\n * @title UniswapLiquiditySwapAdapter\n * @notice Uniswap V2 Adapter to swap liquidity.\n * @author Aave\n **/\ncontract FlashLiquidationAdapter is BaseUniswapAdapter {\n  using ReserveConfiguration for DataTypes.ReserveConfigurationMap;\n  uint256 internal constant LIQUIDATION_CLOSE_FACTOR_PERCENT = 5000;\n\n  struct LiquidationParams {\n    address collateralAsset;\n    address borrowedAsset;\n    address user;\n    uint256 debtToCover;\n    bool useEthPath;\n  }\n\n  struct LiquidationCallLocalVars {\n    uint256 initFlashBorrowedBalance;\n    uint256 diffFlashBorrowedBalance;\n    uint256 initCollateralBalance;\n    uint256 diffCollateralBalance;\n    uint256 flashLoanDebt;\n    uint256 soldAmount;\n    uint256 remainingTokens;\n    uint256 borrowedAssetLeftovers;\n  }\n\n  constructor(\n    ILendingPoolAddressesProvider addressesProvider,\n    IUniswapV2Router02 uniswapRouter,\n    address wethAddress\n  ) public BaseUniswapAdapter(addressesProvider, uniswapRouter, wethAddress) {}\n\n  /**\n   * @dev Liquidate a non-healthy position collateral-wise, with a Health Factor below 1, using Flash Loan and Uniswap to repay flash loan premium.\n   * - The caller (liquidator) with a flash loan covers `debtToCover` amount of debt of the user getting liquidated, and receives\n   *   a proportionally amount of the `collateralAsset` plus a bonus to cover market risk minus the flash loan premium.\n   * @param assets Address of asset to be swapped\n   * @param amounts Amount of the asset to be swapped\n   * @param premiums Fee of the flash loan\n   * @param initiator Address of the caller\n   * @param params Additional variadic field to include extra params. Expected parameters:\n   *   address collateralAsset The collateral asset to release and will be exchanged to pay the flash loan premium\n   *   address borrowedAsset The asset that must be covered\n   *   address user The user address with a Health Factor below 1\n   *   uint256 debtToCover The amount of debt to cover\n   *   bool useEthPath Use WETH as connector path between the collateralAsset and borrowedAsset at Uniswap\n   */\n  function executeOperation(\n    address[] calldata assets,\n    uint256[] calldata amounts,\n    uint256[] calldata premiums,\n    address initiator,\n    bytes calldata params\n  ) external override returns (bool) {\n    require(msg.sender == address(LENDING_POOL), 'CALLER_MUST_BE_LENDING_POOL');\n\n    LiquidationParams memory decodedParams = _decodeParams(params);\n\n    require(assets.length == 1 && assets[0] == decodedParams.borrowedAsset, 'INCONSISTENT_PARAMS');\n\n    _liquidateAndSwap(\n      decodedParams.collateralAsset,\n      decodedParams.borrowedAsset,\n      decodedParams.user,\n      decodedParams.debtToCover,\n      decodedParams.useEthPath,\n      amounts[0],\n      premiums[0],\n      initiator\n    );\n\n    return true;\n  }\n\n  /**\n   * @dev\n   * @param collateralAsset The collateral asset to release and will be exchanged to pay the flash loan premium\n   * @param borrowedAsset The asset that must be covered\n   * @param user The user address with a Health Factor below 1\n   * @param debtToCover The amount of debt to coverage, can be max(-1) to liquidate all possible debt\n   * @param useEthPath true if the swap needs to occur using ETH in the routing, false otherwise\n   * @param flashBorrowedAmount Amount of asset requested at the flash loan to liquidate the user position\n   * @param premium Fee of the requested flash loan\n   * @param initiator Address of the caller\n   */\n  function _liquidateAndSwap(\n    address collateralAsset,\n    address borrowedAsset,\n    address user,\n    uint256 debtToCover,\n    bool useEthPath,\n    uint256 flashBorrowedAmount,\n    uint256 premium,\n    address initiator\n  ) internal {\n    LiquidationCallLocalVars memory vars;\n    vars.initCollateralBalance = IERC20(collateralAsset).balanceOf(address(this));\n    if (collateralAsset != borrowedAsset) {\n      vars.initFlashBorrowedBalance = IERC20(borrowedAsset).balanceOf(address(this));\n\n      // Track leftover balance to rescue funds in case of external transfers into this contract\n      vars.borrowedAssetLeftovers = vars.initFlashBorrowedBalance.sub(flashBorrowedAmount);\n    }\n    vars.flashLoanDebt = flashBorrowedAmount.add(premium);\n\n    // Approve LendingPool to use debt token for liquidation\n    IERC20(borrowedAsset).approve(address(LENDING_POOL), debtToCover);\n\n    // Liquidate the user position and release the underlying collateral\n    LENDING_POOL.liquidationCall(collateralAsset, borrowedAsset, user, debtToCover, false);\n\n    // Discover the liquidated tokens\n    uint256 collateralBalanceAfter = IERC20(collateralAsset).balanceOf(address(this));\n\n    // Track only collateral released, not current asset balance of the contract\n    vars.diffCollateralBalance = collateralBalanceAfter.sub(vars.initCollateralBalance);\n\n    if (collateralAsset != borrowedAsset) {\n      // Discover flash loan balance after the liquidation\n      uint256 flashBorrowedAssetAfter = IERC20(borrowedAsset).balanceOf(address(this));\n\n      // Use only flash loan borrowed assets, not current asset balance of the contract\n      vars.diffFlashBorrowedBalance = flashBorrowedAssetAfter.sub(vars.borrowedAssetLeftovers);\n\n      // Swap released collateral into the debt asset, to repay the flash loan\n      vars.soldAmount = _swapTokensForExactTokens(\n        collateralAsset,\n        borrowedAsset,\n        vars.diffCollateralBalance,\n        vars.flashLoanDebt.sub(vars.diffFlashBorrowedBalance),\n        useEthPath\n      );\n      vars.remainingTokens = vars.diffCollateralBalance.sub(vars.soldAmount);\n    } else {\n      vars.remainingTokens = vars.diffCollateralBalance.sub(premium);\n    }\n\n    // Allow repay of flash loan\n    IERC20(borrowedAsset).approve(address(LENDING_POOL), vars.flashLoanDebt);\n\n    // Transfer remaining tokens to initiator\n    if (vars.remainingTokens > 0) {\n      IERC20(collateralAsset).transfer(initiator, vars.remainingTokens);\n    }\n  }\n\n  /**\n   * @dev Decodes the information encoded in the flash loan params\n   * @param params Additional variadic field to include extra params. Expected parameters:\n   *   address collateralAsset The collateral asset to claim\n   *   address borrowedAsset The asset that must be covered and will be exchanged to pay the flash loan premium\n   *   address user The user address with a Health Factor below 1\n   *   uint256 debtToCover The amount of debt to cover\n   *   bool useEthPath Use WETH as connector path between the collateralAsset and borrowedAsset at Uniswap\n   * @return LiquidationParams struct containing decoded params\n   */\n  function _decodeParams(bytes memory params) internal pure returns (LiquidationParams memory) {\n    (\n      address collateralAsset,\n      address borrowedAsset,\n      address user,\n      uint256 debtToCover,\n      bool useEthPath\n    ) = abi.decode(params, (address, address, address, uint256, bool));\n\n    return LiquidationParams(collateralAsset, borrowedAsset, user, debtToCover, useEthPath);\n  }\n}\n"
      },
      "contracts/misc/AaveProtocolDataProvider.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\n\nimport {IERC20Detailed} from '../dependencies/openzeppelin/contracts/IERC20Detailed.sol';\nimport {ILendingPoolAddressesProvider} from '../interfaces/ILendingPoolAddressesProvider.sol';\nimport {ILendingPool} from '../interfaces/ILendingPool.sol';\nimport {IStableDebtToken} from '../interfaces/IStableDebtToken.sol';\nimport {IVariableDebtToken} from '../interfaces/IVariableDebtToken.sol';\nimport {ReserveConfiguration} from '../protocol/libraries/configuration/ReserveConfiguration.sol';\nimport {UserConfiguration} from '../protocol/libraries/configuration/UserConfiguration.sol';\nimport {DataTypes} from '../protocol/libraries/types/DataTypes.sol';\n\ncontract AaveProtocolDataProvider {\n  using ReserveConfiguration for DataTypes.ReserveConfigurationMap;\n  using UserConfiguration for DataTypes.UserConfigurationMap;\n\n  address constant MKR = 0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2;\n  address constant ETH = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;\n\n  struct TokenData {\n    string symbol;\n    address tokenAddress;\n  }\n\n  ILendingPoolAddressesProvider public immutable ADDRESSES_PROVIDER;\n\n  constructor(ILendingPoolAddressesProvider addressesProvider) public {\n    ADDRESSES_PROVIDER = addressesProvider;\n  }\n\n  function getAllReservesTokens() external view returns (TokenData[] memory) {\n    ILendingPool pool = ILendingPool(ADDRESSES_PROVIDER.getLendingPool());\n    address[] memory reserves = pool.getReservesList();\n    TokenData[] memory reservesTokens = new TokenData[](reserves.length);\n    for (uint256 i = 0; i < reserves.length; i++) {\n      if (reserves[i] == MKR) {\n        reservesTokens[i] = TokenData({symbol: 'MKR', tokenAddress: reserves[i]});\n        continue;\n      }\n      if (reserves[i] == ETH) {\n        reservesTokens[i] = TokenData({symbol: 'ETH', tokenAddress: reserves[i]});\n        continue;\n      }\n      reservesTokens[i] = TokenData({\n        symbol: IERC20Detailed(reserves[i]).symbol(),\n        tokenAddress: reserves[i]\n      });\n    }\n    return reservesTokens;\n  }\n\n  function getAllATokens() external view returns (TokenData[] memory) {\n    ILendingPool pool = ILendingPool(ADDRESSES_PROVIDER.getLendingPool());\n    address[] memory reserves = pool.getReservesList();\n    TokenData[] memory aTokens = new TokenData[](reserves.length);\n    for (uint256 i = 0; i < reserves.length; i++) {\n      DataTypes.ReserveData memory reserveData = pool.getReserveData(reserves[i]);\n      aTokens[i] = TokenData({\n        symbol: IERC20Detailed(reserveData.aTokenAddress).symbol(),\n        tokenAddress: reserveData.aTokenAddress\n      });\n    }\n    return aTokens;\n  }\n\n  function getReserveConfigurationData(address asset)\n    external\n    view\n    returns (\n      uint256 decimals,\n      uint256 ltv,\n      uint256 liquidationThreshold,\n      uint256 liquidationBonus,\n      uint256 reserveFactor,\n      bool usageAsCollateralEnabled,\n      bool borrowingEnabled,\n      bool stableBorrowRateEnabled,\n      bool isActive,\n      bool isFrozen\n    )\n  {\n    DataTypes.ReserveConfigurationMap memory configuration =\n      ILendingPool(ADDRESSES_PROVIDER.getLendingPool()).getConfiguration(asset);\n\n    (ltv, liquidationThreshold, liquidationBonus, decimals, reserveFactor) = configuration\n      .getParamsMemory();\n\n    (isActive, isFrozen, borrowingEnabled, stableBorrowRateEnabled) = configuration\n      .getFlagsMemory();\n\n    usageAsCollateralEnabled = liquidationThreshold > 0;\n  }\n\n  function getReserveData(address asset)\n    external\n    view\n    returns (\n      uint256 availableLiquidity,\n      uint256 totalStableDebt,\n      uint256 totalVariableDebt,\n      uint256 liquidityRate,\n      uint256 variableBorrowRate,\n      uint256 stableBorrowRate,\n      uint256 averageStableBorrowRate,\n      uint256 liquidityIndex,\n      uint256 variableBorrowIndex,\n      uint40 lastUpdateTimestamp\n    )\n  {\n    DataTypes.ReserveData memory reserve =\n      ILendingPool(ADDRESSES_PROVIDER.getLendingPool()).getReserveData(asset);\n\n    return (\n      IERC20Detailed(asset).balanceOf(reserve.aTokenAddress),\n      IERC20Detailed(reserve.stableDebtTokenAddress).totalSupply(),\n      IERC20Detailed(reserve.variableDebtTokenAddress).totalSupply(),\n      reserve.currentLiquidityRate,\n      reserve.currentVariableBorrowRate,\n      reserve.currentStableBorrowRate,\n      IStableDebtToken(reserve.stableDebtTokenAddress).getAverageStableRate(),\n      reserve.liquidityIndex,\n      reserve.variableBorrowIndex,\n      reserve.lastUpdateTimestamp\n    );\n  }\n\n  function getUserReserveData(address asset, address user)\n    external\n    view\n    returns (\n      uint256 currentATokenBalance,\n      uint256 currentStableDebt,\n      uint256 currentVariableDebt,\n      uint256 principalStableDebt,\n      uint256 scaledVariableDebt,\n      uint256 stableBorrowRate,\n      uint256 liquidityRate,\n      uint40 stableRateLastUpdated,\n      bool usageAsCollateralEnabled\n    )\n  {\n    DataTypes.ReserveData memory reserve =\n      ILendingPool(ADDRESSES_PROVIDER.getLendingPool()).getReserveData(asset);\n\n    DataTypes.UserConfigurationMap memory userConfig =\n      ILendingPool(ADDRESSES_PROVIDER.getLendingPool()).getUserConfiguration(user);\n\n    currentATokenBalance = IERC20Detailed(reserve.aTokenAddress).balanceOf(user);\n    currentVariableDebt = IERC20Detailed(reserve.variableDebtTokenAddress).balanceOf(user);\n    currentStableDebt = IERC20Detailed(reserve.stableDebtTokenAddress).balanceOf(user);\n    principalStableDebt = IStableDebtToken(reserve.stableDebtTokenAddress).principalBalanceOf(user);\n    scaledVariableDebt = IVariableDebtToken(reserve.variableDebtTokenAddress).scaledBalanceOf(user);\n    liquidityRate = reserve.currentLiquidityRate;\n    stableBorrowRate = IStableDebtToken(reserve.stableDebtTokenAddress).getUserStableRate(user);\n    stableRateLastUpdated = IStableDebtToken(reserve.stableDebtTokenAddress).getUserLastUpdated(\n      user\n    );\n    usageAsCollateralEnabled = userConfig.isUsingAsCollateral(reserve.id);\n  }\n\n  function getReserveTokensAddresses(address asset)\n    external\n    view\n    returns (\n      address aTokenAddress,\n      address stableDebtTokenAddress,\n      address variableDebtTokenAddress\n    )\n  {\n    DataTypes.ReserveData memory reserve =\n      ILendingPool(ADDRESSES_PROVIDER.getLendingPool()).getReserveData(asset);\n\n    return (\n      reserve.aTokenAddress,\n      reserve.stableDebtTokenAddress,\n      reserve.variableDebtTokenAddress\n    );\n  }\n}\n"
      },
      "contracts/mocks/upgradeability/MockStableDebtToken.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {StableDebtToken} from '../../protocol/tokenization/StableDebtToken.sol';\n\ncontract MockStableDebtToken is StableDebtToken {\n  function getRevision() internal pure override returns (uint256) {\n    return 0x2;\n  }\n}\n"
      },
      "contracts/interfaces/IExchangeAdapter.sol": {
        "content": "// SPDX-License-Identifier: agpl-3.0\npragma solidity 0.6.12;\n\nimport {IERC20} from '../dependencies/openzeppelin/contracts/IERC20.sol';\n\ninterface IExchangeAdapter {\n  event Exchange(\n    address indexed from,\n    address indexed to,\n    address indexed platform,\n    uint256 fromAmount,\n    uint256 toAmount\n  );\n\n  function approveExchange(IERC20[] calldata tokens) external;\n\n  function exchange(\n    address from,\n    address to,\n    uint256 amount,\n    uint256 maxSlippage\n  ) external returns (uint256);\n}\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 200,
        "details": {
          "yul": true,
          "yulDetails": {
            "stackAllocation": true
          }
        }
      },
      "evmVersion": "istanbul",
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers"
          ],
          "": [
            "ast"
          ]
        }
      }
    }
  },
  "output": {
    "contracts": {
      "@openzeppelin/contracts/token/ERC20/IERC20.sol": {
        "IERC20": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "contracts/adapters/BaseUniswapAdapter.sol": {
        "BaseUniswapAdapter": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPoolAddressesProvider",
                  "name": "addressesProvider",
                  "type": "address"
                },
                {
                  "internalType": "contract IUniswapV2Router02",
                  "name": "uniswapRouter",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "wethAddress",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "fromAsset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "toAsset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "fromAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "receivedAmount",
                  "type": "uint256"
                }
              ],
              "name": "Swapped",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "ADDRESSES_PROVIDER",
              "outputs": [
                {
                  "internalType": "contract ILendingPoolAddressesProvider",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "FLASHLOAN_PREMIUM_TOTAL",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LENDING_POOL",
              "outputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "MAX_SLIPPAGE_PERCENT",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "ORACLE",
              "outputs": [
                {
                  "internalType": "contract IPriceOracleGetter",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "UNISWAP_ROUTER",
              "outputs": [
                {
                  "internalType": "contract IUniswapV2Router02",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "USD_ADDRESS",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "WETH_ADDRESS",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "assets",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "premiums",
                  "type": "uint256[]"
                },
                {
                  "internalType": "address",
                  "name": "initiator",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "executeOperation",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "reserveIn",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "reserveOut",
                  "type": "address"
                }
              ],
              "name": "getAmountsIn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "reserveIn",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "reserveOut",
                  "type": "address"
                }
              ],
              "name": "getAmountsOut",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "token",
                  "type": "address"
                }
              ],
              "name": "rescueTokens",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "ADDRESSES_PROVIDER()": "0542975c",
              "FLASHLOAN_PREMIUM_TOTAL()": "074b2e43",
              "LENDING_POOL()": "b4dcfc77",
              "MAX_SLIPPAGE_PERCENT()": "32e4b286",
              "ORACLE()": "38013f02",
              "UNISWAP_ROUTER()": "d8264920",
              "USD_ADDRESS()": "9d1211bf",
              "WETH_ADDRESS()": "040141e5",
              "executeOperation(address[],uint256[],uint256[],address,bytes)": "920f5c84",
              "getAmountsIn(uint256,address,address)": "cdf58cd6",
              "getAmountsOut(uint256,address,address)": "baf7fa99",
              "owner()": "8da5cb5b",
              "renounceOwnership()": "715018a6",
              "rescueTokens(address)": "00ae3bf8",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        }
      },
      "contracts/adapters/FlashLiquidationAdapter.sol": {
        "FlashLiquidationAdapter": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPoolAddressesProvider",
                  "name": "addressesProvider",
                  "type": "address"
                },
                {
                  "internalType": "contract IUniswapV2Router02",
                  "name": "uniswapRouter",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "wethAddress",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "fromAsset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "toAsset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "fromAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "receivedAmount",
                  "type": "uint256"
                }
              ],
              "name": "Swapped",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "ADDRESSES_PROVIDER",
              "outputs": [
                {
                  "internalType": "contract ILendingPoolAddressesProvider",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "FLASHLOAN_PREMIUM_TOTAL",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LENDING_POOL",
              "outputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "MAX_SLIPPAGE_PERCENT",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "ORACLE",
              "outputs": [
                {
                  "internalType": "contract IPriceOracleGetter",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "UNISWAP_ROUTER",
              "outputs": [
                {
                  "internalType": "contract IUniswapV2Router02",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "USD_ADDRESS",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "WETH_ADDRESS",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "assets",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "premiums",
                  "type": "uint256[]"
                },
                {
                  "internalType": "address",
                  "name": "initiator",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "executeOperation",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "reserveIn",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "reserveOut",
                  "type": "address"
                }
              ],
              "name": "getAmountsIn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "reserveIn",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "reserveOut",
                  "type": "address"
                }
              ],
              "name": "getAmountsOut",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "token",
                  "type": "address"
                }
              ],
              "name": "rescueTokens",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6101206040523480156200001257600080fd5b5060405162002ce938038062002ce98339810160408190526200003591620001fd565b82828282806001600160a01b03166080816001600160a01b031660601b81525050806001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009057600080fd5b505afa158015620000a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000cb9190620001d7565b60601b6001600160601b03191660a052506000620000e8620001d3565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350826001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b1580156200016c57600080fd5b505afa15801562000181573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a79190620001d7565b6001600160601b0319606091821b811660e05292811b8316610100521b1660c052506200026992505050565b3390565b600060208284031215620001e9578081fd5b8151620001f68162000250565b9392505050565b60008060006060848603121562000212578182fd5b83516200021f8162000250565b6020850151909350620002328162000250565b6040850151909250620002458162000250565b809150509250925092565b6001600160a01b03811681146200026657600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c6129d262000317600039806106235280610f645280611058528061155a528061158f52806117235280611b605280611c515250806103845280611d9b5250806103315280610e3e5280610e7b5280610ee5528061160d5280611a3a5280611a775280611ae1525080610441528061059e52806108c352806109565280610b9652508061035552506129d26000f3fe608060405234801561001057600080fd5b50600436106100f45760003560e01c80638da5cb5b11610097578063baf7fa9911610066578063baf7fa9914610199578063cdf58cd6146101bd578063d8264920146101d0578063f2fde38b146101d8576100f4565b80638da5cb5b14610161578063920f5c84146101695780639d1211bf14610189578063b4dcfc7714610191576100f4565b8063074b2e43116100d3578063074b2e431461013457806332e4b2861461014957806338013f0214610151578063715018a614610159576100f4565b8062ae3bf8146100f9578063040141e51461010e5780630542975c1461012c575b600080fd5b61010c6101073660046121da565b6101eb565b005b61011661032f565b60405161012391906124e7565b60405180910390f35b610116610353565b61013c610377565b604051610123919061286f565b61013c61037c565b610116610382565b61010c6103a6565b610116610425565b61017c610177366004612260565b610434565b604051610123919061258b565b610116610584565b61011661059c565b6101ac6101a7366004612426565b6105c0565b6040516101239594939291906128cd565b6101ac6101cb366004612426565b610606565b610116610621565b61010c6101e63660046121da565b610645565b6101f36106fb565b6000546001600160a01b039081169116146102295760405162461bcd60e51b815260040161022090612736565b60405180910390fd5b806001600160a01b031663a9059cbb610240610425565b6040516370a0823160e01b81526001600160a01b038516906370a082319061026c9030906004016124e7565b60206040518083038186803b15801561028457600080fd5b505afa158015610298573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bc919061240e565b6040518363ffffffff1660e01b81526004016102d9929190612572565b602060405180830381600087803b1580156102f357600080fd5b505af1158015610307573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032b91906123f2565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600981565b610bb881565b7f000000000000000000000000000000000000000000000000000000000000000081565b6103ae6106fb565b6000546001600160a01b039081169116146103db5760405162461bcd60e51b815260040161022090612736565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461047e5760405162461bcd60e51b8152600401610220906125c9565b6104866120ef565b6104c584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506106ff92505050565b905060018a14801561050d575080602001516001600160a01b03168b8b60008181106104ed57fe5b905060200201602081019061050291906121da565b6001600160a01b0316145b6105295760405162461bcd60e51b81526004016102209061276b565b610573816000015182602001518360400151846060015185608001518e8e600081811061055257fe5b905060200201358d8d600081811061056657fe5b905060200201358c610765565b5060019a9950505050505050505050565b7310f7fc1f91ba351f9c629c5947ad69bd03c05b9681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060008060606105d061211d565b6105db88888b610cac565b8051602082015160408301516060840151608090940151929d919c509a509198509650945050505050565b600080600080606061061661211d565b6105db88888b611269565b7f000000000000000000000000000000000000000000000000000000000000000081565b61064d6106fb565b6000546001600160a01b0390811691161461067a5760405162461bcd60e51b815260040161022090612736565b6001600160a01b0381166106a05760405162461bcd60e51b815260040161022090612600565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6107076120ef565b60008060008060008680602001905181019061072391906121f6565b6040805160a0810182526001600160a01b0396871681529486166020860152929094169183019190915260608201529015156080820152979650505050505050565b61076d61214c565b6040516370a0823160e01b81526001600160a01b038a16906370a08231906107999030906004016124e7565b60206040518083038186803b1580156107b157600080fd5b505afa1580156107c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e9919061240e565b60408201526001600160a01b0389811690891614610890576040516370a0823160e01b81526001600160a01b038916906370a082319061082d9030906004016124e7565b60206040518083038186803b15801561084557600080fd5b505afa158015610859573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087d919061240e565b80825261088a9085611443565b60e08201525b61089a848461148e565b608082015260405163095ea7b360e01b81526001600160a01b0389169063095ea7b3906108ed907f0000000000000000000000000000000000000000000000000000000000000000908a90600401612572565b602060405180830381600087803b15801561090757600080fd5b505af115801561091b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093f91906123f2565b5060405162a718a960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062a718a990610993908c908c908c908c90600090600401612515565b600060405180830381600087803b1580156109ad57600080fd5b505af11580156109c1573d6000803e3d6000fd5b50506040516370a0823160e01b8152600092506001600160a01b038c1691506370a08231906109f49030906004016124e7565b60206040518083038186803b158015610a0c57600080fd5b505afa158015610a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a44919061240e565b9050610a5d82604001518261144390919063ffffffff16565b60608301526001600160a01b038a8116908a1614610b58576040516370a0823160e01b81526000906001600160a01b038b16906370a0823190610aa49030906004016124e7565b60206040518083038186803b158015610abc57600080fd5b505afa158015610ad0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af4919061240e565b9050610b0d8360e001518261144390919063ffffffff16565b6020840181905260608401516080850151610b38928e928e929091610b329190611443565b8b6114b3565b60a084018190526060840151610b4d91611443565b60c084015250610b6d565b6060820151610b679085611443565b60c08301525b608082015160405163095ea7b360e01b81526001600160a01b038b169163095ea7b391610bbe917f000000000000000000000000000000000000000000000000000000000000000091600401612572565b602060405180830381600087803b158015610bd857600080fd5b505af1158015610bec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1091906123f2565b5060c082015115610ca05760c082015160405163a9059cbb60e01b81526001600160a01b038c169163a9059cbb91610c4c918791600401612572565b602060405180830381600087803b158015610c6657600080fd5b505af1158015610c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9e91906123f2565b505b50505050505050505050565b610cb461211d565b6000610cd7610cd0612710610cca866009611847565b90611881565b8490611443565b9050836001600160a01b0316856001600160a01b03161415610da3576000610cfe866118c3565b60408051600180825281830190925291925060609190602080830190803683370190505090508681600081518110610d3257fe5b6001600160a01b039092166020928302919091018201526040805160a08101909152848152908101610d7087610cca87670de0b6b3a7640000611847565b8152602001610d8089888661193f565b8152602001610d9089868661193f565b8152602001828152509350505050611262565b60408051600280825260608083018452926020830190803683370190505090508581600081518110610dd157fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508481600181518110610dff57fe5b6001600160a01b0392909216602092830291909101820152604080516003808252608082019092526060928392839291820183803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b031614158015610eb057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614155b1561101c578881600081518110610ec357fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610f1157fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508781600281518110610f3f57fe5b6001600160a01b03928316602091820292909201015260405163d06ca61f60e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063d06ca61f90610f9d9088908590600401612878565b60006040518083038186803b158015610fb557600080fd5b505afa925050508015610fea57506040513d6000823e601f3d908101601f19168201604052610fe7919081019061235d565b60015b61101457604080516003808252608082019092529060208201606080368337019050509150611017565b91505b61103e565b6040805160038082526080820190925290602082016060803683370190505091505b60405163d06ca61f60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d06ca61f9061108f9089908990600401612878565b60006040518083038186803b1580156110a757600080fd5b505afa9250505080156110dc57506040513d6000823e601f3d908101601f191682016040526110d9919081019061235d565b60015b61111c5760408051600280825260608201835290916020830190803683370190505093508260028151811061110d57fe5b60200260200101519050611182565b8094508460018151811061112c57fe5b60200260200101518460028151811061114157fe5b602002602001015111611168578460018151811061115b57fe5b602002602001015161117e565b8360028151811061117557fe5b60200260200101515b9150505b600061118d8b6118c3565b9050600061119a8b6118c3565b905060006111cf6111af85600a86900a611847565b610cca600a85900a6111c98d670de0b6b3a7640000611847565b90611847565b90506040518060a001604052808581526020018281526020016111f38f8e8761193f565b81526020016112038e878661193f565b81526020018515611236578860018151811061121b57fe5b6020026020010151861461122f5786611231565b895b611254565b60408051600280825260608201835290916020830190803683375050505b905299505050505050505050505b9392505050565b61127161211d565b826001600160a01b0316846001600160a01b031614156113475760006112a86112a1612710610cca866009611847565b849061148e565b905060006112b5866118c3565b604080516001808252818301909252919250606091906020808301908036833701905050905086816000815181106112e957fe5b6001600160a01b039092166020928302919091018201526040805160a0810190915284815290810161132785610cca89670de0b6b3a7640000611847565b815260200161133789868661193f565b8152602001610d9089888661193f565b606080611355868686611998565b9150915060006113af61138c612710610cca60098760008151811061137657fe5b602002602001015161184790919063ffffffff16565b8460008151811061139957fe5b602002602001015161148e90919063ffffffff16565b905060006113bc886118c3565b905060006113c9886118c3565b905060006113f86113de85600a85900a611847565b610cca600a86900a6111c98c670de0b6b3a7640000611847565b90506040518060a0016040528085815260200182815260200161141c8c878761193f565b815260200161142c8b8b8661193f565b815260200195909552509298975050505050505050565b600061148583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d55565b90505b92915050565b6000828201838110156114855760405162461bcd60e51b815260040161022090612646565b6000806114bf876118c3565b905060006114cc876118c3565b905060006114d989611d81565b905060006114e689611d81565b9050600061152a6114fb612710610bb861148e565b61152461150c86600a89900a611847565b610cca61151d87600a8c900a611847565b8d90611847565b90611e20565b905080891061154b5760405162461bcd60e51b8152600401610220906126b2565b6115806001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000006000611e92565b6115b46001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000008b611e92565b6060871561168c576040805160038082526080820190925290602082016060803683370190505090508b816000815181106115eb57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061163957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508a8160028151811061166757fe5b60200260200101906001600160a01b031690816001600160a01b031681525050611709565b60408051600280825260608201835290916020830190803683370190505090508b816000815181106116ba57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508a816001815181106116e857fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b604051634401edf760e11b81526060906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638803dbee90611760908d908f90879030904290600401612891565b600060405180830381600087803b15801561177a57600080fd5b505af115801561178e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117b6919081019061235d565b90507fa078c4190abe07940190effc1846be0ccf03ad6007bc9e93f9697d0b460befbb8d8d836000815181106117e857fe5b60200260200101518460018651038151811061180057fe5b60200260200101516040516118189493929190612549565b60405180910390a18060008151811061182d57fe5b602002602001015197505050505050505095945050505050565b60008261185657506000611488565b8282028284828161186357fe5b04146114855760405162461bcd60e51b8152600401610220906126f5565b600061148583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f91565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156118fe57600080fd5b505afa158015611912573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119369190612467565b60ff1692915050565b60008061195f7310f7fc1f91ba351f9c629c5947ad69bd03c05b96611d81565b9050600061196c86611d81565b905061198e670de0b6b3a7640000610cca846111c9600a89900a838b88611847565b9695505050505050565b60408051600280825260608281019093528291829181602001602082028036833701905050905085816000815181106119cd57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505084816001815181106119fb57fe5b6001600160a01b0392909216602092830291909101820152604080516003808252608082019092526060928392839291820183803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b031614158015611aac57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614155b15611c18578881600081518110611abf57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611b0d57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508781600281518110611b3b57fe5b6001600160a01b0392831660209182029290920101526040516307c0329d60e21b81527f000000000000000000000000000000000000000000000000000000000000000090911690631f00ca7490611b99908a908590600401612878565b60006040518083038186803b158015611bb157600080fd5b505afa925050508015611be657506040513d6000823e601f3d908101601f19168201604052611be3919081019061235d565b60015b611c1057604080516003808252608082019092529060208201606080368337019050509150611c13565b91505b611c3a565b6040805160038082526080820190925290602082016060803683370190505091505b6040516307c0329d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631f00ca7490611c88908a908890600401612878565b60006040518083038186803b158015611ca057600080fd5b505afa925050508015611cd557506040513d6000823e601f3d908101601f19168201604052611cd2919081019061235d565b60015b611ce6579094509250611d4d915050565b80935083600081518110611cf657fe5b602002602001015183600081518110611d0b57fe5b6020026020010151108015611d35575082600081518110611d2857fe5b6020026020010151600014155b611d40578385611d43565b82825b9650965050505050505b935093915050565b60008184841115611d795760405162461bcd60e51b81526004016102209190612596565b505050900390565b60405163b3596f0760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b3596f0790611dd09085906004016124e7565b60206040518083038186803b158015611de857600080fd5b505afa158015611dfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611488919061240e565b6000821580611e2d575081155b15611e3a57506000611488565b816113881981611e4657fe5b0483111560405180604001604052806002815260200161068760f31b81525090611e835760405162461bcd60e51b81526004016102209190612596565b50506127109102611388010490565b801580611f1a5750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e90611ec890309086906004016124fb565b60206040518083038186803b158015611ee057600080fd5b505afa158015611ef4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f18919061240e565b155b611f365760405162461bcd60e51b8152600401610220906127e2565b611f8c8363095ea7b360e01b8484604051602401611f55929190612572565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611fc8565b505050565b60008183611fb25760405162461bcd60e51b81526004016102209190612596565b506000838581611fbe57fe5b0495945050505050565b611fda826001600160a01b03166120b3565b611ff65760405162461bcd60e51b815260040161022090612838565b60006060836001600160a01b03168360405161201291906124cb565b6000604051808303816000865af19150503d806000811461204f576040519150601f19603f3d011682016040523d82523d6000602084013e612054565b606091505b5091509150816120765760405162461bcd60e51b81526004016102209061267d565b8051156120ad578080602001905181019061209191906123f2565b6120ad5760405162461bcd60e51b815260040161022090612798565b50505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906120e757508115155b949350505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001606081525090565b60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008083601f8401126121a2578182fd5b50813567ffffffffffffffff8111156121b9578182fd5b60208301915083602080830285010111156121d357600080fd5b9250929050565b6000602082840312156121eb578081fd5b813561148581612976565b600080600080600060a0868803121561220d578081fd5b855161221881612976565b602087015190955061222981612976565b604087015190945061223a81612976565b6060870151608088015191945092506122528161298e565b809150509295509295909350565b600080600080600080600080600060a08a8c03121561227d578384fd5b893567ffffffffffffffff80821115612294578586fd5b6122a08d838e01612191565b909b50995060208c01359150808211156122b8578586fd5b6122c48d838e01612191565b909950975060408c01359150808211156122dc578586fd5b6122e88d838e01612191565b909750955060608c013591506122fd82612976565b90935060808b01359080821115612312578384fd5b818c0191508c601f830112612325578384fd5b813581811115612333578485fd5b8d6020828501011115612344578485fd5b6020830194508093505050509295985092959850929598565b6000602080838503121561236f578182fd5b825167ffffffffffffffff811115612385578283fd5b8301601f81018513612395578283fd5b80516123a86123a38261292a565b612903565b81815283810190838501858402850186018910156123c4578687fd5b8694505b838510156123e65780518352600194909401939185019185016123c8565b50979650505050505050565b600060208284031215612403578081fd5b81516114858161298e565b60006020828403121561241f578081fd5b5051919050565b60008060006060848603121561243a578283fd5b83359250602084013561244c81612976565b9150604084013561245c81612976565b809150509250925092565b600060208284031215612478578081fd5b815160ff81168114611485578182fd5b6000815180845260208085019450808401835b838110156124c05781516001600160a01b03168752958201959082019060010161249b565b509495945050505050565b600082516124dd81846020870161294a565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252901515608082015260a00190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b60006020825282518060208401526125b581604085016020870161294a565b601f01601f19169190910160400192915050565b6020808252601b908201527f43414c4c45525f4d5553545f42455f4c454e44494e475f504f4f4c0000000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b60208082526023908201527f6d6178416d6f756e74546f5377617020657863656564206d617820736c69707060408201526261676560e81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602080825260139082015272494e434f4e53495354454e545f504152414d5360681b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526036908201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60408201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606082015260800190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b90815260200190565b6000838252604060208301526120e76040830184612488565b600086825285602083015260a060408301526128b060a0830186612488565b6001600160a01b0394909416606083015250608001529392505050565b600086825285602083015284604083015283606083015260a060808301526128f860a0830184612488565b979650505050505050565b60405181810167ffffffffffffffff8111828210171561292257600080fd5b604052919050565b600067ffffffffffffffff821115612940578081fd5b5060209081020190565b60005b8381101561296557818101518382015260200161294d565b838111156120ad5750506000910152565b6001600160a01b038116811461298b57600080fd5b50565b801515811461298b57600080fdfea26469706673582212204b911e965ed3acfb5504b52f2ef45150e8d4c6ab3aa8c1c0f20216e0bb25354664736f6c634300060c0033",
              "opcodes": "PUSH2 0x120 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2CE9 CODESIZE SUB DUP1 PUSH3 0x2CE9 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x1FD JUMP JUMPDEST DUP3 DUP3 DUP3 DUP3 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x261BF8B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xCB SWAP2 SWAP1 PUSH3 0x1D7 JUMP JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE POP PUSH1 0x0 PUSH3 0xE8 PUSH3 0x1D3 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFCA513A8 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x181 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x1A7 SWAP2 SWAP1 PUSH3 0x1D7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xE0 MSTORE SWAP3 DUP2 SHL DUP4 AND PUSH2 0x100 MSTORE SHL AND PUSH1 0xC0 MSTORE POP PUSH3 0x269 SWAP3 POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x1E9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x1F6 DUP2 PUSH3 0x250 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x212 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 MLOAD PUSH3 0x21F DUP2 PUSH3 0x250 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0x232 DUP2 PUSH3 0x250 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x245 DUP2 PUSH3 0x250 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x266 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x29D2 PUSH3 0x317 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x623 MSTORE DUP1 PUSH2 0xF64 MSTORE DUP1 PUSH2 0x1058 MSTORE DUP1 PUSH2 0x155A MSTORE DUP1 PUSH2 0x158F MSTORE DUP1 PUSH2 0x1723 MSTORE DUP1 PUSH2 0x1B60 MSTORE DUP1 PUSH2 0x1C51 MSTORE POP DUP1 PUSH2 0x384 MSTORE DUP1 PUSH2 0x1D9B MSTORE POP DUP1 PUSH2 0x331 MSTORE DUP1 PUSH2 0xE3E MSTORE DUP1 PUSH2 0xE7B MSTORE DUP1 PUSH2 0xEE5 MSTORE DUP1 PUSH2 0x160D MSTORE DUP1 PUSH2 0x1A3A MSTORE DUP1 PUSH2 0x1A77 MSTORE DUP1 PUSH2 0x1AE1 MSTORE POP DUP1 PUSH2 0x441 MSTORE DUP1 PUSH2 0x59E MSTORE DUP1 PUSH2 0x8C3 MSTORE DUP1 PUSH2 0x956 MSTORE DUP1 PUSH2 0xB96 MSTORE POP DUP1 PUSH2 0x355 MSTORE POP PUSH2 0x29D2 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xBAF7FA99 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xBAF7FA99 EQ PUSH2 0x199 JUMPI DUP1 PUSH4 0xCDF58CD6 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0xD8264920 EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1D8 JUMPI PUSH2 0xF4 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x920F5C84 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0x9D1211BF EQ PUSH2 0x189 JUMPI DUP1 PUSH4 0xB4DCFC77 EQ PUSH2 0x191 JUMPI PUSH2 0xF4 JUMP JUMPDEST DUP1 PUSH4 0x74B2E43 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x74B2E43 EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0x32E4B286 EQ PUSH2 0x149 JUMPI DUP1 PUSH4 0x38013F02 EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x159 JUMPI PUSH2 0xF4 JUMP JUMPDEST DUP1 PUSH3 0xAE3BF8 EQ PUSH2 0xF9 JUMPI DUP1 PUSH4 0x40141E5 EQ PUSH2 0x10E JUMPI DUP1 PUSH4 0x542975C EQ PUSH2 0x12C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10C PUSH2 0x107 CALLDATASIZE PUSH1 0x4 PUSH2 0x21DA JUMP JUMPDEST PUSH2 0x1EB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x116 PUSH2 0x32F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x123 SWAP2 SWAP1 PUSH2 0x24E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x116 PUSH2 0x353 JUMP JUMPDEST PUSH2 0x13C PUSH2 0x377 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x123 SWAP2 SWAP1 PUSH2 0x286F JUMP JUMPDEST PUSH2 0x13C PUSH2 0x37C JUMP JUMPDEST PUSH2 0x116 PUSH2 0x382 JUMP JUMPDEST PUSH2 0x10C PUSH2 0x3A6 JUMP JUMPDEST PUSH2 0x116 PUSH2 0x425 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x177 CALLDATASIZE PUSH1 0x4 PUSH2 0x2260 JUMP JUMPDEST PUSH2 0x434 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x123 SWAP2 SWAP1 PUSH2 0x258B JUMP JUMPDEST PUSH2 0x116 PUSH2 0x584 JUMP JUMPDEST PUSH2 0x116 PUSH2 0x59C JUMP JUMPDEST PUSH2 0x1AC PUSH2 0x1A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2426 JUMP JUMPDEST PUSH2 0x5C0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x123 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x28CD JUMP JUMPDEST PUSH2 0x1AC PUSH2 0x1CB CALLDATASIZE PUSH1 0x4 PUSH2 0x2426 JUMP JUMPDEST PUSH2 0x606 JUMP JUMPDEST PUSH2 0x116 PUSH2 0x621 JUMP JUMPDEST PUSH2 0x10C PUSH2 0x1E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x21DA JUMP JUMPDEST PUSH2 0x645 JUMP JUMPDEST PUSH2 0x1F3 PUSH2 0x6FB JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x229 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP1 PUSH2 0x2736 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB PUSH2 0x240 PUSH2 0x425 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x26C SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x24E7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x298 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0x240E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D9 SWAP3 SWAP2 SWAP1 PUSH2 0x2572 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x307 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x32B SWAP2 SWAP1 PUSH2 0x23F2 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x9 DUP2 JUMP JUMPDEST PUSH2 0xBB8 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x3AE PUSH2 0x6FB JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x3DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP1 PUSH2 0x2736 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x47E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP1 PUSH2 0x25C9 JUMP JUMPDEST PUSH2 0x486 PUSH2 0x20EF JUMP JUMPDEST PUSH2 0x4C5 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x6FF SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP11 EQ DUP1 ISZERO PUSH2 0x50D JUMPI POP DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 DUP12 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x4ED JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x502 SWAP2 SWAP1 PUSH2 0x21DA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x529 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP1 PUSH2 0x276B JUMP JUMPDEST PUSH2 0x573 DUP2 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD DUP4 PUSH1 0x40 ADD MLOAD DUP5 PUSH1 0x60 ADD MLOAD DUP6 PUSH1 0x80 ADD MLOAD DUP15 DUP15 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x552 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP14 DUP14 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x566 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP13 PUSH2 0x765 JUMP JUMPDEST POP PUSH1 0x1 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0x10F7FC1F91BA351F9C629C5947AD69BD03C05B96 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 PUSH2 0x5D0 PUSH2 0x211D JUMP JUMPDEST PUSH2 0x5DB DUP9 DUP9 DUP12 PUSH2 0xCAC JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 SWAP1 SWAP5 ADD MLOAD SWAP3 SWAP14 SWAP2 SWAP13 POP SWAP11 POP SWAP2 SWAP9 POP SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 PUSH2 0x616 PUSH2 0x211D JUMP JUMPDEST PUSH2 0x5DB DUP9 DUP9 DUP12 PUSH2 0x1269 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x64D PUSH2 0x6FB JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x67A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP1 PUSH2 0x2736 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x6A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP1 PUSH2 0x2600 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x707 PUSH2 0x20EF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP7 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x723 SWAP2 SWAP1 PUSH2 0x21F6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND DUP2 MSTORE SWAP5 DUP7 AND PUSH1 0x20 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP5 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x80 DUP3 ADD MSTORE SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x76D PUSH2 0x214C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x799 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x24E7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7C5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7E9 SWAP2 SWAP1 PUSH2 0x240E JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND SWAP1 DUP10 AND EQ PUSH2 0x890 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x82D SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x24E7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x845 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x859 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x87D SWAP2 SWAP1 PUSH2 0x240E JUMP JUMPDEST DUP1 DUP3 MSTORE PUSH2 0x88A SWAP1 DUP6 PUSH2 0x1443 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE JUMPDEST PUSH2 0x89A DUP5 DUP5 PUSH2 0x148E JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0x8ED SWAP1 PUSH32 0x0 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x2572 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x907 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x91B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x93F SWAP2 SWAP1 PUSH2 0x23F2 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xA718A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH3 0xA718A9 SWAP1 PUSH2 0x993 SWAP1 DUP13 SWAP1 DUP13 SWAP1 DUP13 SWAP1 DUP13 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x2515 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9C1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0x9F4 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x24E7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA20 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA44 SWAP2 SWAP1 PUSH2 0x240E JUMP JUMPDEST SWAP1 POP PUSH2 0xA5D DUP3 PUSH1 0x40 ADD MLOAD DUP3 PUSH2 0x1443 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP1 DUP11 AND EQ PUSH2 0xB58 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xAA4 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x24E7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xABC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAD0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAF4 SWAP2 SWAP1 PUSH2 0x240E JUMP JUMPDEST SWAP1 POP PUSH2 0xB0D DUP4 PUSH1 0xE0 ADD MLOAD DUP3 PUSH2 0x1443 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x20 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 DUP6 ADD MLOAD PUSH2 0xB38 SWAP3 DUP15 SWAP3 DUP15 SWAP3 SWAP1 SWAP2 PUSH2 0xB32 SWAP2 SWAP1 PUSH2 0x1443 JUMP JUMPDEST DUP12 PUSH2 0x14B3 JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP5 ADD MLOAD PUSH2 0xB4D SWAP2 PUSH2 0x1443 JUMP JUMPDEST PUSH1 0xC0 DUP5 ADD MSTORE POP PUSH2 0xB6D JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0xB67 SWAP1 DUP6 PUSH2 0x1443 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE JUMPDEST PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH2 0xBBE SWAP2 PUSH32 0x0 SWAP2 PUSH1 0x4 ADD PUSH2 0x2572 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBEC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC10 SWAP2 SWAP1 PUSH2 0x23F2 JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD ISZERO PUSH2 0xCA0 JUMPI PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH2 0xC4C SWAP2 DUP8 SWAP2 PUSH1 0x4 ADD PUSH2 0x2572 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC7A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC9E SWAP2 SWAP1 PUSH2 0x23F2 JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xCB4 PUSH2 0x211D JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCD7 PUSH2 0xCD0 PUSH2 0x2710 PUSH2 0xCCA DUP7 PUSH1 0x9 PUSH2 0x1847 JUMP JUMPDEST SWAP1 PUSH2 0x1881 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x1443 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xDA3 JUMPI PUSH1 0x0 PUSH2 0xCFE DUP7 PUSH2 0x18C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP PUSH1 0x60 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP7 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xD32 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP5 DUP2 MSTORE SWAP1 DUP2 ADD PUSH2 0xD70 DUP8 PUSH2 0xCCA DUP8 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1847 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD80 DUP10 DUP9 DUP7 PUSH2 0x193F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD90 DUP10 DUP7 DUP7 PUSH2 0x193F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP SWAP4 POP POP POP POP PUSH2 0x1262 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xDD1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP5 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xDFF JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP3 ADD DUP4 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0xEB0 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x101C JUMPI DUP9 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xEC3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xF11 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP8 DUP2 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0xF3F JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0xD06CA61F PUSH1 0xE0 SHL DUP2 MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xD06CA61F SWAP1 PUSH2 0xF9D SWAP1 DUP9 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2878 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xFEA JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xFE7 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x235D JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1014 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP2 POP PUSH2 0x1017 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x103E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP2 POP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD06CA61F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xD06CA61F SWAP1 PUSH2 0x108F SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x2878 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x10DC JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x10D9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x235D JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x111C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD DUP4 MSTORE SWAP1 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP4 POP DUP3 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x110D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x1182 JUMP JUMPDEST DUP1 SWAP5 POP DUP5 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x112C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x1141 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT PUSH2 0x1168 JUMPI DUP5 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x115B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x117E JUMP JUMPDEST DUP4 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x1175 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD JUMPDEST SWAP2 POP POP JUMPDEST PUSH1 0x0 PUSH2 0x118D DUP12 PUSH2 0x18C3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x119A DUP12 PUSH2 0x18C3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x11CF PUSH2 0x11AF DUP6 PUSH1 0xA DUP7 SWAP1 EXP PUSH2 0x1847 JUMP JUMPDEST PUSH2 0xCCA PUSH1 0xA DUP6 SWAP1 EXP PUSH2 0x11C9 DUP14 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1847 JUMP JUMPDEST SWAP1 PUSH2 0x1847 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11F3 DUP16 DUP15 DUP8 PUSH2 0x193F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1203 DUP15 DUP8 DUP7 PUSH2 0x193F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO PUSH2 0x1236 JUMPI DUP9 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x121B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 EQ PUSH2 0x122F JUMPI DUP7 PUSH2 0x1231 JUMP JUMPDEST DUP10 JUMPDEST PUSH2 0x1254 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD DUP4 MSTORE SWAP1 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP POP JUMPDEST SWAP1 MSTORE SWAP10 POP POP POP POP POP POP POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1271 PUSH2 0x211D JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1347 JUMPI PUSH1 0x0 PUSH2 0x12A8 PUSH2 0x12A1 PUSH2 0x2710 PUSH2 0xCCA DUP7 PUSH1 0x9 PUSH2 0x1847 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x148E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x12B5 DUP7 PUSH2 0x18C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP PUSH1 0x60 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP7 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x12E9 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP5 DUP2 MSTORE SWAP1 DUP2 ADD PUSH2 0x1327 DUP6 PUSH2 0xCCA DUP10 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1847 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1337 DUP10 DUP7 DUP7 PUSH2 0x193F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD90 DUP10 DUP9 DUP7 PUSH2 0x193F JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x1355 DUP7 DUP7 DUP7 PUSH2 0x1998 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x13AF PUSH2 0x138C PUSH2 0x2710 PUSH2 0xCCA PUSH1 0x9 DUP8 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1376 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1847 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1399 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x148E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x13BC DUP9 PUSH2 0x18C3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x13C9 DUP9 PUSH2 0x18C3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x13F8 PUSH2 0x13DE DUP6 PUSH1 0xA DUP6 SWAP1 EXP PUSH2 0x1847 JUMP JUMPDEST PUSH2 0xCCA PUSH1 0xA DUP7 SWAP1 EXP PUSH2 0x11C9 DUP13 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1847 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x141C DUP13 DUP8 DUP8 PUSH2 0x193F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x142C DUP12 DUP12 DUP7 PUSH2 0x193F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP6 SWAP1 SWAP6 MSTORE POP SWAP3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1485 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1D55 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1485 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP1 PUSH2 0x2646 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x14BF DUP8 PUSH2 0x18C3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x14CC DUP8 PUSH2 0x18C3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x14D9 DUP10 PUSH2 0x1D81 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x14E6 DUP10 PUSH2 0x1D81 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x152A PUSH2 0x14FB PUSH2 0x2710 PUSH2 0xBB8 PUSH2 0x148E JUMP JUMPDEST PUSH2 0x1524 PUSH2 0x150C DUP7 PUSH1 0xA DUP10 SWAP1 EXP PUSH2 0x1847 JUMP JUMPDEST PUSH2 0xCCA PUSH2 0x151D DUP8 PUSH1 0xA DUP13 SWAP1 EXP PUSH2 0x1847 JUMP JUMPDEST DUP14 SWAP1 PUSH2 0x1847 JUMP JUMPDEST SWAP1 PUSH2 0x1E20 JUMP JUMPDEST SWAP1 POP DUP1 DUP10 LT PUSH2 0x154B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP1 PUSH2 0x26B2 JUMP JUMPDEST PUSH2 0x1580 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH32 0x0 PUSH1 0x0 PUSH2 0x1E92 JUMP JUMPDEST PUSH2 0x15B4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH32 0x0 DUP12 PUSH2 0x1E92 JUMP JUMPDEST PUSH1 0x60 DUP8 ISZERO PUSH2 0x168C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP12 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x15EB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1639 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP11 DUP2 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x1667 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH2 0x1709 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD DUP4 MSTORE SWAP1 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP12 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x16BA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP11 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x16E8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x4401EDF7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x8803DBEE SWAP1 PUSH2 0x1760 SWAP1 DUP14 SWAP1 DUP16 SWAP1 DUP8 SWAP1 ADDRESS SWAP1 TIMESTAMP SWAP1 PUSH1 0x4 ADD PUSH2 0x2891 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x177A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x178E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x17B6 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x235D JUMP JUMPDEST SWAP1 POP PUSH32 0xA078C4190ABE07940190EFFC1846BE0CCF03AD6007BC9E93F9697D0B460BEFBB DUP14 DUP14 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x17E8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 PUSH1 0x1 DUP7 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1800 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x1818 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2549 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x182D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP8 POP POP POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1856 JUMPI POP PUSH1 0x0 PUSH2 0x1488 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1863 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x1485 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP1 PUSH2 0x26F5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1485 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x1F91 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1912 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1936 SWAP2 SWAP1 PUSH2 0x2467 JUMP JUMPDEST PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x195F PUSH20 0x10F7FC1F91BA351F9C629C5947AD69BD03C05B96 PUSH2 0x1D81 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x196C DUP7 PUSH2 0x1D81 JUMP JUMPDEST SWAP1 POP PUSH2 0x198E PUSH8 0xDE0B6B3A7640000 PUSH2 0xCCA DUP5 PUSH2 0x11C9 PUSH1 0xA DUP10 SWAP1 EXP DUP4 DUP12 DUP9 PUSH2 0x1847 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 DUP2 ADD SWAP1 SWAP4 MSTORE DUP3 SWAP2 DUP3 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x19CD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP5 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x19FB JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP3 ADD DUP4 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0x1AAC JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1C18 JUMPI DUP9 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1ABF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1B0D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP8 DUP2 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x1B3B JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x7C0329D PUSH1 0xE2 SHL DUP2 MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x1F00CA74 SWAP1 PUSH2 0x1B99 SWAP1 DUP11 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2878 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1BE6 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1BE3 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x235D JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1C10 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP2 POP PUSH2 0x1C13 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x1C3A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP2 POP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7C0329D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x1F00CA74 SWAP1 PUSH2 0x1C88 SWAP1 DUP11 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x2878 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1CD5 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1CD2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x235D JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1CE6 JUMPI SWAP1 SWAP5 POP SWAP3 POP PUSH2 0x1D4D SWAP2 POP POP JUMP JUMPDEST DUP1 SWAP4 POP DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1CF6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1D0B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT DUP1 ISZERO PUSH2 0x1D35 JUMPI POP DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1D28 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 EQ ISZERO JUMPDEST PUSH2 0x1D40 JUMPI DUP4 DUP6 PUSH2 0x1D43 JUMP JUMPDEST DUP3 DUP3 JUMPDEST SWAP7 POP SWAP7 POP POP POP POP POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1D79 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP2 SWAP1 PUSH2 0x2596 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xB3596F07 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xB3596F07 SWAP1 PUSH2 0x1DD0 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x24E7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DFC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1488 SWAP2 SWAP1 PUSH2 0x240E JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x1E2D JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x1E3A JUMPI POP PUSH1 0x0 PUSH2 0x1488 JUMP JUMPDEST DUP2 PUSH2 0x1388 NOT DUP2 PUSH2 0x1E46 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1E83 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP2 SWAP1 PUSH2 0x2596 JUMP JUMPDEST POP POP PUSH2 0x2710 SWAP2 MUL PUSH2 0x1388 ADD DIV SWAP1 JUMP JUMPDEST DUP1 ISZERO DUP1 PUSH2 0x1F1A JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x1EC8 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x24FB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EF4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F18 SWAP2 SWAP1 PUSH2 0x240E JUMP JUMPDEST ISZERO JUMPDEST PUSH2 0x1F36 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP1 PUSH2 0x27E2 JUMP JUMPDEST PUSH2 0x1F8C DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1F55 SWAP3 SWAP2 SWAP1 PUSH2 0x2572 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x1FC8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x1FB2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP2 SWAP1 PUSH2 0x2596 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x1FBE JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1FDA DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x20B3 JUMP JUMPDEST PUSH2 0x1FF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP1 PUSH2 0x2838 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x2012 SWAP2 SWAP1 PUSH2 0x24CB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x204F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2054 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2076 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP1 PUSH2 0x267D JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x20AD JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2091 SWAP2 SWAP1 PUSH2 0x23F2 JUMP JUMPDEST PUSH2 0x20AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP1 PUSH2 0x2798 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x20E7 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x21A2 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x21B9 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x21D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x21EB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1485 DUP2 PUSH2 0x2976 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x220D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 MLOAD PUSH2 0x2218 DUP2 PUSH2 0x2976 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD SWAP1 SWAP6 POP PUSH2 0x2229 DUP2 PUSH2 0x2976 JUMP JUMPDEST PUSH1 0x40 DUP8 ADD MLOAD SWAP1 SWAP5 POP PUSH2 0x223A DUP2 PUSH2 0x2976 JUMP JUMPDEST PUSH1 0x60 DUP8 ADD MLOAD PUSH1 0x80 DUP9 ADD MLOAD SWAP2 SWAP5 POP SWAP3 POP PUSH2 0x2252 DUP2 PUSH2 0x298E JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x227D JUMPI DUP4 DUP5 REVERT JUMPDEST DUP10 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2294 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x22A0 DUP14 DUP4 DUP15 ADD PUSH2 0x2191 JUMP JUMPDEST SWAP1 SWAP12 POP SWAP10 POP PUSH1 0x20 DUP13 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x22B8 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x22C4 DUP14 DUP4 DUP15 ADD PUSH2 0x2191 JUMP JUMPDEST SWAP1 SWAP10 POP SWAP8 POP PUSH1 0x40 DUP13 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x22DC JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x22E8 DUP14 DUP4 DUP15 ADD PUSH2 0x2191 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH1 0x60 DUP13 ADD CALLDATALOAD SWAP2 POP PUSH2 0x22FD DUP3 PUSH2 0x2976 JUMP JUMPDEST SWAP1 SWAP4 POP PUSH1 0x80 DUP12 ADD CALLDATALOAD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x2312 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP13 ADD SWAP2 POP DUP13 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2325 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2333 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP14 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2344 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x236F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2385 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x2395 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x23A8 PUSH2 0x23A3 DUP3 PUSH2 0x292A JUMP JUMPDEST PUSH2 0x2903 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP4 DUP6 ADD DUP6 DUP5 MUL DUP6 ADD DUP7 ADD DUP10 LT ISZERO PUSH2 0x23C4 JUMPI DUP7 DUP8 REVERT JUMPDEST DUP7 SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x23E6 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0x23C8 JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2403 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1485 DUP2 PUSH2 0x298E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x241F JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x243A JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x244C DUP2 PUSH2 0x2976 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x245C DUP2 PUSH2 0x2976 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2478 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x1485 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x24C0 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x249B JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x24DD DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x294A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP2 MSTORE SWAP4 DUP6 AND PUSH1 0x20 DUP6 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 ISZERO ISZERO PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x25B5 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x294A JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x43414C4C45525F4D5553545F42455F4C454E44494E475F504F4F4C0000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x40 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x6D6178416D6F756E74546F5377617020657863656564206D617820736C697070 PUSH1 0x40 DUP3 ADD MSTORE PUSH3 0x616765 PUSH1 0xE8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x494E434F4E53495354454E545F504152414D53 PUSH1 0x68 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x40 DUP3 ADD MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x36 SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A20617070726F76652066726F6D206E6F6E2D7A65726F PUSH1 0x40 DUP3 ADD MSTORE PUSH22 0x20746F206E6F6E2D7A65726F20616C6C6F77616E6365 PUSH1 0x50 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x20E7 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2488 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP3 MSTORE DUP6 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x28B0 PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x2488 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP7 DUP3 MSTORE DUP6 PUSH1 0x20 DUP4 ADD MSTORE DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x28F8 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x2488 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2922 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2940 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2965 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x294D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x20AD JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x298B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x298B JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B SWAP2 0x1E SWAP7 0x5E 0xD3 0xAC 0xFB SSTORE DIV 0xB5 0x2F 0x2E DELEGATECALL MLOAD POP 0xE8 0xD4 0xC6 0xAB GASPRICE 0xA8 0xC1 0xC0 CALLCODE MUL AND 0xE0 0xBB 0x25 CALLDATALOAD CHAINID PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "871:6862:2:-:0;;;1525:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1683:17;1702:13;1717:11;2093:17:1;886:8:24;-1:-1:-1;;;;;865:29:24;;;-1:-1:-1;;;;;865:29:24;;;;;;;928:8;-1:-1:-1;;;;;928:23:24;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;900:54;;-1:-1:-1;;;;;;900:54:24;;;-1:-1:-1;844:17:11;864:12;:10;:12::i;:::-;882:6;:18;;-1:-1:-1;;;;;;882:18:11;-1:-1:-1;;;;;882:18:11;;;;;;;911:43;;882:18;;-1:-1:-1;882:18:11;911:43;;882:6;;911:43;815:144;2146:17:1::1;-1:-1:-1::0;;;;;2146:32:1::1;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;2118:63:1::1;::::0;;;;;::::1;::::0;2187:30;;;;;::::1;::::0;2223:26;;::::1;::::0;-1:-1:-1;871:6862:2;;-1:-1:-1;;;871:6862:2;587:98:7;670:10;587:98;:::o;558:263:-1:-;;673:2;661:9;652:7;648:23;644:32;641:2;;;-1:-1;;679:12;641:2;89:6;83:13;101:33;128:5;101:33;:::i;:::-;731:74;635:186;-1:-1;;;635:186::o;828:665::-;;;;1042:2;1030:9;1021:7;1017:23;1013:32;1010:2;;;-1:-1;;1048:12;1010:2;268:6;262:13;280:71;345:5;280:71;:::i;:::-;1249:2;1326:22;;468:13;1100:112;;-1:-1;486:60;468:13;486:60;:::i;:::-;1395:2;1445:22;;83:13;1257:101;;-1:-1;101:33;83:13;101:33;:::i;:::-;1403:74;;;;1004:489;;;;;:::o;1987:117::-;-1:-1;;;;;1921:54;;2046:35;;2036:2;;2095:1;;2085:12;2036:2;2030:74;:::o;:::-;871:6862:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "137": [
                  {
                    "length": 32,
                    "start": 817
                  },
                  {
                    "length": 32,
                    "start": 3646
                  },
                  {
                    "length": 32,
                    "start": 3707
                  },
                  {
                    "length": 32,
                    "start": 3813
                  },
                  {
                    "length": 32,
                    "start": 5645
                  },
                  {
                    "length": 32,
                    "start": 6714
                  },
                  {
                    "length": 32,
                    "start": 6775
                  },
                  {
                    "length": 32,
                    "start": 6881
                  }
                ],
                "140": [
                  {
                    "length": 32,
                    "start": 900
                  },
                  {
                    "length": 32,
                    "start": 7579
                  }
                ],
                "143": [
                  {
                    "length": 32,
                    "start": 1571
                  },
                  {
                    "length": 32,
                    "start": 3940
                  },
                  {
                    "length": 32,
                    "start": 4184
                  },
                  {
                    "length": 32,
                    "start": 5466
                  },
                  {
                    "length": 32,
                    "start": 5519
                  },
                  {
                    "length": 32,
                    "start": 5923
                  },
                  {
                    "length": 32,
                    "start": 7008
                  },
                  {
                    "length": 32,
                    "start": 7249
                  }
                ],
                "5489": [
                  {
                    "length": 32,
                    "start": 853
                  }
                ],
                "5492": [
                  {
                    "length": 32,
                    "start": 1089
                  },
                  {
                    "length": 32,
                    "start": 1438
                  },
                  {
                    "length": 32,
                    "start": 2243
                  },
                  {
                    "length": 32,
                    "start": 2390
                  },
                  {
                    "length": 32,
                    "start": 2966
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100f45760003560e01c80638da5cb5b11610097578063baf7fa9911610066578063baf7fa9914610199578063cdf58cd6146101bd578063d8264920146101d0578063f2fde38b146101d8576100f4565b80638da5cb5b14610161578063920f5c84146101695780639d1211bf14610189578063b4dcfc7714610191576100f4565b8063074b2e43116100d3578063074b2e431461013457806332e4b2861461014957806338013f0214610151578063715018a614610159576100f4565b8062ae3bf8146100f9578063040141e51461010e5780630542975c1461012c575b600080fd5b61010c6101073660046121da565b6101eb565b005b61011661032f565b60405161012391906124e7565b60405180910390f35b610116610353565b61013c610377565b604051610123919061286f565b61013c61037c565b610116610382565b61010c6103a6565b610116610425565b61017c610177366004612260565b610434565b604051610123919061258b565b610116610584565b61011661059c565b6101ac6101a7366004612426565b6105c0565b6040516101239594939291906128cd565b6101ac6101cb366004612426565b610606565b610116610621565b61010c6101e63660046121da565b610645565b6101f36106fb565b6000546001600160a01b039081169116146102295760405162461bcd60e51b815260040161022090612736565b60405180910390fd5b806001600160a01b031663a9059cbb610240610425565b6040516370a0823160e01b81526001600160a01b038516906370a082319061026c9030906004016124e7565b60206040518083038186803b15801561028457600080fd5b505afa158015610298573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bc919061240e565b6040518363ffffffff1660e01b81526004016102d9929190612572565b602060405180830381600087803b1580156102f357600080fd5b505af1158015610307573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032b91906123f2565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600981565b610bb881565b7f000000000000000000000000000000000000000000000000000000000000000081565b6103ae6106fb565b6000546001600160a01b039081169116146103db5760405162461bcd60e51b815260040161022090612736565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461047e5760405162461bcd60e51b8152600401610220906125c9565b6104866120ef565b6104c584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506106ff92505050565b905060018a14801561050d575080602001516001600160a01b03168b8b60008181106104ed57fe5b905060200201602081019061050291906121da565b6001600160a01b0316145b6105295760405162461bcd60e51b81526004016102209061276b565b610573816000015182602001518360400151846060015185608001518e8e600081811061055257fe5b905060200201358d8d600081811061056657fe5b905060200201358c610765565b5060019a9950505050505050505050565b7310f7fc1f91ba351f9c629c5947ad69bd03c05b9681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060008060606105d061211d565b6105db88888b610cac565b8051602082015160408301516060840151608090940151929d919c509a509198509650945050505050565b600080600080606061061661211d565b6105db88888b611269565b7f000000000000000000000000000000000000000000000000000000000000000081565b61064d6106fb565b6000546001600160a01b0390811691161461067a5760405162461bcd60e51b815260040161022090612736565b6001600160a01b0381166106a05760405162461bcd60e51b815260040161022090612600565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6107076120ef565b60008060008060008680602001905181019061072391906121f6565b6040805160a0810182526001600160a01b0396871681529486166020860152929094169183019190915260608201529015156080820152979650505050505050565b61076d61214c565b6040516370a0823160e01b81526001600160a01b038a16906370a08231906107999030906004016124e7565b60206040518083038186803b1580156107b157600080fd5b505afa1580156107c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e9919061240e565b60408201526001600160a01b0389811690891614610890576040516370a0823160e01b81526001600160a01b038916906370a082319061082d9030906004016124e7565b60206040518083038186803b15801561084557600080fd5b505afa158015610859573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087d919061240e565b80825261088a9085611443565b60e08201525b61089a848461148e565b608082015260405163095ea7b360e01b81526001600160a01b0389169063095ea7b3906108ed907f0000000000000000000000000000000000000000000000000000000000000000908a90600401612572565b602060405180830381600087803b15801561090757600080fd5b505af115801561091b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093f91906123f2565b5060405162a718a960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062a718a990610993908c908c908c908c90600090600401612515565b600060405180830381600087803b1580156109ad57600080fd5b505af11580156109c1573d6000803e3d6000fd5b50506040516370a0823160e01b8152600092506001600160a01b038c1691506370a08231906109f49030906004016124e7565b60206040518083038186803b158015610a0c57600080fd5b505afa158015610a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a44919061240e565b9050610a5d82604001518261144390919063ffffffff16565b60608301526001600160a01b038a8116908a1614610b58576040516370a0823160e01b81526000906001600160a01b038b16906370a0823190610aa49030906004016124e7565b60206040518083038186803b158015610abc57600080fd5b505afa158015610ad0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af4919061240e565b9050610b0d8360e001518261144390919063ffffffff16565b6020840181905260608401516080850151610b38928e928e929091610b329190611443565b8b6114b3565b60a084018190526060840151610b4d91611443565b60c084015250610b6d565b6060820151610b679085611443565b60c08301525b608082015160405163095ea7b360e01b81526001600160a01b038b169163095ea7b391610bbe917f000000000000000000000000000000000000000000000000000000000000000091600401612572565b602060405180830381600087803b158015610bd857600080fd5b505af1158015610bec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1091906123f2565b5060c082015115610ca05760c082015160405163a9059cbb60e01b81526001600160a01b038c169163a9059cbb91610c4c918791600401612572565b602060405180830381600087803b158015610c6657600080fd5b505af1158015610c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9e91906123f2565b505b50505050505050505050565b610cb461211d565b6000610cd7610cd0612710610cca866009611847565b90611881565b8490611443565b9050836001600160a01b0316856001600160a01b03161415610da3576000610cfe866118c3565b60408051600180825281830190925291925060609190602080830190803683370190505090508681600081518110610d3257fe5b6001600160a01b039092166020928302919091018201526040805160a08101909152848152908101610d7087610cca87670de0b6b3a7640000611847565b8152602001610d8089888661193f565b8152602001610d9089868661193f565b8152602001828152509350505050611262565b60408051600280825260608083018452926020830190803683370190505090508581600081518110610dd157fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508481600181518110610dff57fe5b6001600160a01b0392909216602092830291909101820152604080516003808252608082019092526060928392839291820183803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b031614158015610eb057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614155b1561101c578881600081518110610ec357fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610f1157fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508781600281518110610f3f57fe5b6001600160a01b03928316602091820292909201015260405163d06ca61f60e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063d06ca61f90610f9d9088908590600401612878565b60006040518083038186803b158015610fb557600080fd5b505afa925050508015610fea57506040513d6000823e601f3d908101601f19168201604052610fe7919081019061235d565b60015b61101457604080516003808252608082019092529060208201606080368337019050509150611017565b91505b61103e565b6040805160038082526080820190925290602082016060803683370190505091505b60405163d06ca61f60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d06ca61f9061108f9089908990600401612878565b60006040518083038186803b1580156110a757600080fd5b505afa9250505080156110dc57506040513d6000823e601f3d908101601f191682016040526110d9919081019061235d565b60015b61111c5760408051600280825260608201835290916020830190803683370190505093508260028151811061110d57fe5b60200260200101519050611182565b8094508460018151811061112c57fe5b60200260200101518460028151811061114157fe5b602002602001015111611168578460018151811061115b57fe5b602002602001015161117e565b8360028151811061117557fe5b60200260200101515b9150505b600061118d8b6118c3565b9050600061119a8b6118c3565b905060006111cf6111af85600a86900a611847565b610cca600a85900a6111c98d670de0b6b3a7640000611847565b90611847565b90506040518060a001604052808581526020018281526020016111f38f8e8761193f565b81526020016112038e878661193f565b81526020018515611236578860018151811061121b57fe5b6020026020010151861461122f5786611231565b895b611254565b60408051600280825260608201835290916020830190803683375050505b905299505050505050505050505b9392505050565b61127161211d565b826001600160a01b0316846001600160a01b031614156113475760006112a86112a1612710610cca866009611847565b849061148e565b905060006112b5866118c3565b604080516001808252818301909252919250606091906020808301908036833701905050905086816000815181106112e957fe5b6001600160a01b039092166020928302919091018201526040805160a0810190915284815290810161132785610cca89670de0b6b3a7640000611847565b815260200161133789868661193f565b8152602001610d9089888661193f565b606080611355868686611998565b9150915060006113af61138c612710610cca60098760008151811061137657fe5b602002602001015161184790919063ffffffff16565b8460008151811061139957fe5b602002602001015161148e90919063ffffffff16565b905060006113bc886118c3565b905060006113c9886118c3565b905060006113f86113de85600a85900a611847565b610cca600a86900a6111c98c670de0b6b3a7640000611847565b90506040518060a0016040528085815260200182815260200161141c8c878761193f565b815260200161142c8b8b8661193f565b815260200195909552509298975050505050505050565b600061148583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d55565b90505b92915050565b6000828201838110156114855760405162461bcd60e51b815260040161022090612646565b6000806114bf876118c3565b905060006114cc876118c3565b905060006114d989611d81565b905060006114e689611d81565b9050600061152a6114fb612710610bb861148e565b61152461150c86600a89900a611847565b610cca61151d87600a8c900a611847565b8d90611847565b90611e20565b905080891061154b5760405162461bcd60e51b8152600401610220906126b2565b6115806001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000006000611e92565b6115b46001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000008b611e92565b6060871561168c576040805160038082526080820190925290602082016060803683370190505090508b816000815181106115eb57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061163957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508a8160028151811061166757fe5b60200260200101906001600160a01b031690816001600160a01b031681525050611709565b60408051600280825260608201835290916020830190803683370190505090508b816000815181106116ba57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508a816001815181106116e857fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b604051634401edf760e11b81526060906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638803dbee90611760908d908f90879030904290600401612891565b600060405180830381600087803b15801561177a57600080fd5b505af115801561178e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117b6919081019061235d565b90507fa078c4190abe07940190effc1846be0ccf03ad6007bc9e93f9697d0b460befbb8d8d836000815181106117e857fe5b60200260200101518460018651038151811061180057fe5b60200260200101516040516118189493929190612549565b60405180910390a18060008151811061182d57fe5b602002602001015197505050505050505095945050505050565b60008261185657506000611488565b8282028284828161186357fe5b04146114855760405162461bcd60e51b8152600401610220906126f5565b600061148583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f91565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156118fe57600080fd5b505afa158015611912573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119369190612467565b60ff1692915050565b60008061195f7310f7fc1f91ba351f9c629c5947ad69bd03c05b96611d81565b9050600061196c86611d81565b905061198e670de0b6b3a7640000610cca846111c9600a89900a838b88611847565b9695505050505050565b60408051600280825260608281019093528291829181602001602082028036833701905050905085816000815181106119cd57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505084816001815181106119fb57fe5b6001600160a01b0392909216602092830291909101820152604080516003808252608082019092526060928392839291820183803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b031614158015611aac57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614155b15611c18578881600081518110611abf57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611b0d57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508781600281518110611b3b57fe5b6001600160a01b0392831660209182029290920101526040516307c0329d60e21b81527f000000000000000000000000000000000000000000000000000000000000000090911690631f00ca7490611b99908a908590600401612878565b60006040518083038186803b158015611bb157600080fd5b505afa925050508015611be657506040513d6000823e601f3d908101601f19168201604052611be3919081019061235d565b60015b611c1057604080516003808252608082019092529060208201606080368337019050509150611c13565b91505b611c3a565b6040805160038082526080820190925290602082016060803683370190505091505b6040516307c0329d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631f00ca7490611c88908a908890600401612878565b60006040518083038186803b158015611ca057600080fd5b505afa925050508015611cd557506040513d6000823e601f3d908101601f19168201604052611cd2919081019061235d565b60015b611ce6579094509250611d4d915050565b80935083600081518110611cf657fe5b602002602001015183600081518110611d0b57fe5b6020026020010151108015611d35575082600081518110611d2857fe5b6020026020010151600014155b611d40578385611d43565b82825b9650965050505050505b935093915050565b60008184841115611d795760405162461bcd60e51b81526004016102209190612596565b505050900390565b60405163b3596f0760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b3596f0790611dd09085906004016124e7565b60206040518083038186803b158015611de857600080fd5b505afa158015611dfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611488919061240e565b6000821580611e2d575081155b15611e3a57506000611488565b816113881981611e4657fe5b0483111560405180604001604052806002815260200161068760f31b81525090611e835760405162461bcd60e51b81526004016102209190612596565b50506127109102611388010490565b801580611f1a5750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e90611ec890309086906004016124fb565b60206040518083038186803b158015611ee057600080fd5b505afa158015611ef4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f18919061240e565b155b611f365760405162461bcd60e51b8152600401610220906127e2565b611f8c8363095ea7b360e01b8484604051602401611f55929190612572565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611fc8565b505050565b60008183611fb25760405162461bcd60e51b81526004016102209190612596565b506000838581611fbe57fe5b0495945050505050565b611fda826001600160a01b03166120b3565b611ff65760405162461bcd60e51b815260040161022090612838565b60006060836001600160a01b03168360405161201291906124cb565b6000604051808303816000865af19150503d806000811461204f576040519150601f19603f3d011682016040523d82523d6000602084013e612054565b606091505b5091509150816120765760405162461bcd60e51b81526004016102209061267d565b8051156120ad578080602001905181019061209191906123f2565b6120ad5760405162461bcd60e51b815260040161022090612798565b50505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906120e757508115155b949350505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001606081525090565b60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008083601f8401126121a2578182fd5b50813567ffffffffffffffff8111156121b9578182fd5b60208301915083602080830285010111156121d357600080fd5b9250929050565b6000602082840312156121eb578081fd5b813561148581612976565b600080600080600060a0868803121561220d578081fd5b855161221881612976565b602087015190955061222981612976565b604087015190945061223a81612976565b6060870151608088015191945092506122528161298e565b809150509295509295909350565b600080600080600080600080600060a08a8c03121561227d578384fd5b893567ffffffffffffffff80821115612294578586fd5b6122a08d838e01612191565b909b50995060208c01359150808211156122b8578586fd5b6122c48d838e01612191565b909950975060408c01359150808211156122dc578586fd5b6122e88d838e01612191565b909750955060608c013591506122fd82612976565b90935060808b01359080821115612312578384fd5b818c0191508c601f830112612325578384fd5b813581811115612333578485fd5b8d6020828501011115612344578485fd5b6020830194508093505050509295985092959850929598565b6000602080838503121561236f578182fd5b825167ffffffffffffffff811115612385578283fd5b8301601f81018513612395578283fd5b80516123a86123a38261292a565b612903565b81815283810190838501858402850186018910156123c4578687fd5b8694505b838510156123e65780518352600194909401939185019185016123c8565b50979650505050505050565b600060208284031215612403578081fd5b81516114858161298e565b60006020828403121561241f578081fd5b5051919050565b60008060006060848603121561243a578283fd5b83359250602084013561244c81612976565b9150604084013561245c81612976565b809150509250925092565b600060208284031215612478578081fd5b815160ff81168114611485578182fd5b6000815180845260208085019450808401835b838110156124c05781516001600160a01b03168752958201959082019060010161249b565b509495945050505050565b600082516124dd81846020870161294a565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252901515608082015260a00190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b60006020825282518060208401526125b581604085016020870161294a565b601f01601f19169190910160400192915050565b6020808252601b908201527f43414c4c45525f4d5553545f42455f4c454e44494e475f504f4f4c0000000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b60208082526023908201527f6d6178416d6f756e74546f5377617020657863656564206d617820736c69707060408201526261676560e81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602080825260139082015272494e434f4e53495354454e545f504152414d5360681b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526036908201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60408201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606082015260800190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b90815260200190565b6000838252604060208301526120e76040830184612488565b600086825285602083015260a060408301526128b060a0830186612488565b6001600160a01b0394909416606083015250608001529392505050565b600086825285602083015284604083015283606083015260a060808301526128f860a0830184612488565b979650505050505050565b60405181810167ffffffffffffffff8111828210171561292257600080fd5b604052919050565b600067ffffffffffffffff821115612940578081fd5b5060209081020190565b60005b8381101561296557818101518382015260200161294d565b838111156120ad5750506000910152565b6001600160a01b038116811461298b57600080fd5b50565b801515811461298b57600080fdfea26469706673582212204b911e965ed3acfb5504b52f2ef45150e8d4c6ab3aa8c1c0f20216e0bb25354664736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xBAF7FA99 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xBAF7FA99 EQ PUSH2 0x199 JUMPI DUP1 PUSH4 0xCDF58CD6 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0xD8264920 EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1D8 JUMPI PUSH2 0xF4 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x920F5C84 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0x9D1211BF EQ PUSH2 0x189 JUMPI DUP1 PUSH4 0xB4DCFC77 EQ PUSH2 0x191 JUMPI PUSH2 0xF4 JUMP JUMPDEST DUP1 PUSH4 0x74B2E43 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x74B2E43 EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0x32E4B286 EQ PUSH2 0x149 JUMPI DUP1 PUSH4 0x38013F02 EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x159 JUMPI PUSH2 0xF4 JUMP JUMPDEST DUP1 PUSH3 0xAE3BF8 EQ PUSH2 0xF9 JUMPI DUP1 PUSH4 0x40141E5 EQ PUSH2 0x10E JUMPI DUP1 PUSH4 0x542975C EQ PUSH2 0x12C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10C PUSH2 0x107 CALLDATASIZE PUSH1 0x4 PUSH2 0x21DA JUMP JUMPDEST PUSH2 0x1EB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x116 PUSH2 0x32F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x123 SWAP2 SWAP1 PUSH2 0x24E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x116 PUSH2 0x353 JUMP JUMPDEST PUSH2 0x13C PUSH2 0x377 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x123 SWAP2 SWAP1 PUSH2 0x286F JUMP JUMPDEST PUSH2 0x13C PUSH2 0x37C JUMP JUMPDEST PUSH2 0x116 PUSH2 0x382 JUMP JUMPDEST PUSH2 0x10C PUSH2 0x3A6 JUMP JUMPDEST PUSH2 0x116 PUSH2 0x425 JUMP JUMPDEST PUSH2 0x17C PUSH2 0x177 CALLDATASIZE PUSH1 0x4 PUSH2 0x2260 JUMP JUMPDEST PUSH2 0x434 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x123 SWAP2 SWAP1 PUSH2 0x258B JUMP JUMPDEST PUSH2 0x116 PUSH2 0x584 JUMP JUMPDEST PUSH2 0x116 PUSH2 0x59C JUMP JUMPDEST PUSH2 0x1AC PUSH2 0x1A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2426 JUMP JUMPDEST PUSH2 0x5C0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x123 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x28CD JUMP JUMPDEST PUSH2 0x1AC PUSH2 0x1CB CALLDATASIZE PUSH1 0x4 PUSH2 0x2426 JUMP JUMPDEST PUSH2 0x606 JUMP JUMPDEST PUSH2 0x116 PUSH2 0x621 JUMP JUMPDEST PUSH2 0x10C PUSH2 0x1E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x21DA JUMP JUMPDEST PUSH2 0x645 JUMP JUMPDEST PUSH2 0x1F3 PUSH2 0x6FB JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x229 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP1 PUSH2 0x2736 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB PUSH2 0x240 PUSH2 0x425 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x26C SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x24E7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x298 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0x240E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D9 SWAP3 SWAP2 SWAP1 PUSH2 0x2572 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x307 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x32B SWAP2 SWAP1 PUSH2 0x23F2 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x9 DUP2 JUMP JUMPDEST PUSH2 0xBB8 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x3AE PUSH2 0x6FB JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x3DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP1 PUSH2 0x2736 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x47E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP1 PUSH2 0x25C9 JUMP JUMPDEST PUSH2 0x486 PUSH2 0x20EF JUMP JUMPDEST PUSH2 0x4C5 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x6FF SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP11 EQ DUP1 ISZERO PUSH2 0x50D JUMPI POP DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 DUP12 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x4ED JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x502 SWAP2 SWAP1 PUSH2 0x21DA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x529 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP1 PUSH2 0x276B JUMP JUMPDEST PUSH2 0x573 DUP2 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD DUP4 PUSH1 0x40 ADD MLOAD DUP5 PUSH1 0x60 ADD MLOAD DUP6 PUSH1 0x80 ADD MLOAD DUP15 DUP15 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x552 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP14 DUP14 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x566 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP13 PUSH2 0x765 JUMP JUMPDEST POP PUSH1 0x1 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0x10F7FC1F91BA351F9C629C5947AD69BD03C05B96 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 PUSH2 0x5D0 PUSH2 0x211D JUMP JUMPDEST PUSH2 0x5DB DUP9 DUP9 DUP12 PUSH2 0xCAC JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 SWAP1 SWAP5 ADD MLOAD SWAP3 SWAP14 SWAP2 SWAP13 POP SWAP11 POP SWAP2 SWAP9 POP SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 PUSH2 0x616 PUSH2 0x211D JUMP JUMPDEST PUSH2 0x5DB DUP9 DUP9 DUP12 PUSH2 0x1269 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x64D PUSH2 0x6FB JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x67A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP1 PUSH2 0x2736 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x6A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP1 PUSH2 0x2600 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x707 PUSH2 0x20EF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP7 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x723 SWAP2 SWAP1 PUSH2 0x21F6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND DUP2 MSTORE SWAP5 DUP7 AND PUSH1 0x20 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP5 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x80 DUP3 ADD MSTORE SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x76D PUSH2 0x214C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x799 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x24E7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7C5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7E9 SWAP2 SWAP1 PUSH2 0x240E JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND SWAP1 DUP10 AND EQ PUSH2 0x890 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x82D SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x24E7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x845 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x859 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x87D SWAP2 SWAP1 PUSH2 0x240E JUMP JUMPDEST DUP1 DUP3 MSTORE PUSH2 0x88A SWAP1 DUP6 PUSH2 0x1443 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE JUMPDEST PUSH2 0x89A DUP5 DUP5 PUSH2 0x148E JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0x8ED SWAP1 PUSH32 0x0 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x2572 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x907 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x91B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x93F SWAP2 SWAP1 PUSH2 0x23F2 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xA718A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH3 0xA718A9 SWAP1 PUSH2 0x993 SWAP1 DUP13 SWAP1 DUP13 SWAP1 DUP13 SWAP1 DUP13 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x2515 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9C1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0x9F4 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x24E7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA20 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA44 SWAP2 SWAP1 PUSH2 0x240E JUMP JUMPDEST SWAP1 POP PUSH2 0xA5D DUP3 PUSH1 0x40 ADD MLOAD DUP3 PUSH2 0x1443 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP1 DUP11 AND EQ PUSH2 0xB58 JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xAA4 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x24E7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xABC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAD0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAF4 SWAP2 SWAP1 PUSH2 0x240E JUMP JUMPDEST SWAP1 POP PUSH2 0xB0D DUP4 PUSH1 0xE0 ADD MLOAD DUP3 PUSH2 0x1443 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x20 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 DUP6 ADD MLOAD PUSH2 0xB38 SWAP3 DUP15 SWAP3 DUP15 SWAP3 SWAP1 SWAP2 PUSH2 0xB32 SWAP2 SWAP1 PUSH2 0x1443 JUMP JUMPDEST DUP12 PUSH2 0x14B3 JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP5 ADD MLOAD PUSH2 0xB4D SWAP2 PUSH2 0x1443 JUMP JUMPDEST PUSH1 0xC0 DUP5 ADD MSTORE POP PUSH2 0xB6D JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0xB67 SWAP1 DUP6 PUSH2 0x1443 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE JUMPDEST PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH2 0xBBE SWAP2 PUSH32 0x0 SWAP2 PUSH1 0x4 ADD PUSH2 0x2572 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBEC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC10 SWAP2 SWAP1 PUSH2 0x23F2 JUMP JUMPDEST POP PUSH1 0xC0 DUP3 ADD MLOAD ISZERO PUSH2 0xCA0 JUMPI PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH2 0xC4C SWAP2 DUP8 SWAP2 PUSH1 0x4 ADD PUSH2 0x2572 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC7A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC9E SWAP2 SWAP1 PUSH2 0x23F2 JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xCB4 PUSH2 0x211D JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCD7 PUSH2 0xCD0 PUSH2 0x2710 PUSH2 0xCCA DUP7 PUSH1 0x9 PUSH2 0x1847 JUMP JUMPDEST SWAP1 PUSH2 0x1881 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x1443 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xDA3 JUMPI PUSH1 0x0 PUSH2 0xCFE DUP7 PUSH2 0x18C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP PUSH1 0x60 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP7 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xD32 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP5 DUP2 MSTORE SWAP1 DUP2 ADD PUSH2 0xD70 DUP8 PUSH2 0xCCA DUP8 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1847 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD80 DUP10 DUP9 DUP7 PUSH2 0x193F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD90 DUP10 DUP7 DUP7 PUSH2 0x193F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP SWAP4 POP POP POP POP PUSH2 0x1262 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xDD1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP5 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xDFF JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP3 ADD DUP4 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0xEB0 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x101C JUMPI DUP9 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xEC3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xF11 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP8 DUP2 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0xF3F JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0xD06CA61F PUSH1 0xE0 SHL DUP2 MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xD06CA61F SWAP1 PUSH2 0xF9D SWAP1 DUP9 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2878 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xFEA JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xFE7 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x235D JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1014 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP2 POP PUSH2 0x1017 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x103E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP2 POP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD06CA61F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xD06CA61F SWAP1 PUSH2 0x108F SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x2878 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x10DC JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x10D9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x235D JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x111C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD DUP4 MSTORE SWAP1 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP4 POP DUP3 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x110D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x1182 JUMP JUMPDEST DUP1 SWAP5 POP DUP5 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x112C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x1141 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT PUSH2 0x1168 JUMPI DUP5 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x115B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x117E JUMP JUMPDEST DUP4 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x1175 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD JUMPDEST SWAP2 POP POP JUMPDEST PUSH1 0x0 PUSH2 0x118D DUP12 PUSH2 0x18C3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x119A DUP12 PUSH2 0x18C3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x11CF PUSH2 0x11AF DUP6 PUSH1 0xA DUP7 SWAP1 EXP PUSH2 0x1847 JUMP JUMPDEST PUSH2 0xCCA PUSH1 0xA DUP6 SWAP1 EXP PUSH2 0x11C9 DUP14 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1847 JUMP JUMPDEST SWAP1 PUSH2 0x1847 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11F3 DUP16 DUP15 DUP8 PUSH2 0x193F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1203 DUP15 DUP8 DUP7 PUSH2 0x193F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO PUSH2 0x1236 JUMPI DUP9 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x121B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 EQ PUSH2 0x122F JUMPI DUP7 PUSH2 0x1231 JUMP JUMPDEST DUP10 JUMPDEST PUSH2 0x1254 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD DUP4 MSTORE SWAP1 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP POP JUMPDEST SWAP1 MSTORE SWAP10 POP POP POP POP POP POP POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1271 PUSH2 0x211D JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1347 JUMPI PUSH1 0x0 PUSH2 0x12A8 PUSH2 0x12A1 PUSH2 0x2710 PUSH2 0xCCA DUP7 PUSH1 0x9 PUSH2 0x1847 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x148E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x12B5 DUP7 PUSH2 0x18C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP PUSH1 0x60 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP7 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x12E9 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP5 DUP2 MSTORE SWAP1 DUP2 ADD PUSH2 0x1327 DUP6 PUSH2 0xCCA DUP10 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1847 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1337 DUP10 DUP7 DUP7 PUSH2 0x193F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD90 DUP10 DUP9 DUP7 PUSH2 0x193F JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x1355 DUP7 DUP7 DUP7 PUSH2 0x1998 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x13AF PUSH2 0x138C PUSH2 0x2710 PUSH2 0xCCA PUSH1 0x9 DUP8 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1376 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1847 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1399 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x148E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x13BC DUP9 PUSH2 0x18C3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x13C9 DUP9 PUSH2 0x18C3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x13F8 PUSH2 0x13DE DUP6 PUSH1 0xA DUP6 SWAP1 EXP PUSH2 0x1847 JUMP JUMPDEST PUSH2 0xCCA PUSH1 0xA DUP7 SWAP1 EXP PUSH2 0x11C9 DUP13 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1847 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x141C DUP13 DUP8 DUP8 PUSH2 0x193F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x142C DUP12 DUP12 DUP7 PUSH2 0x193F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP6 SWAP1 SWAP6 MSTORE POP SWAP3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1485 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1D55 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1485 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP1 PUSH2 0x2646 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x14BF DUP8 PUSH2 0x18C3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x14CC DUP8 PUSH2 0x18C3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x14D9 DUP10 PUSH2 0x1D81 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x14E6 DUP10 PUSH2 0x1D81 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x152A PUSH2 0x14FB PUSH2 0x2710 PUSH2 0xBB8 PUSH2 0x148E JUMP JUMPDEST PUSH2 0x1524 PUSH2 0x150C DUP7 PUSH1 0xA DUP10 SWAP1 EXP PUSH2 0x1847 JUMP JUMPDEST PUSH2 0xCCA PUSH2 0x151D DUP8 PUSH1 0xA DUP13 SWAP1 EXP PUSH2 0x1847 JUMP JUMPDEST DUP14 SWAP1 PUSH2 0x1847 JUMP JUMPDEST SWAP1 PUSH2 0x1E20 JUMP JUMPDEST SWAP1 POP DUP1 DUP10 LT PUSH2 0x154B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP1 PUSH2 0x26B2 JUMP JUMPDEST PUSH2 0x1580 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH32 0x0 PUSH1 0x0 PUSH2 0x1E92 JUMP JUMPDEST PUSH2 0x15B4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH32 0x0 DUP12 PUSH2 0x1E92 JUMP JUMPDEST PUSH1 0x60 DUP8 ISZERO PUSH2 0x168C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP12 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x15EB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1639 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP11 DUP2 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x1667 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH2 0x1709 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD DUP4 MSTORE SWAP1 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP12 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x16BA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP11 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x16E8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x4401EDF7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x8803DBEE SWAP1 PUSH2 0x1760 SWAP1 DUP14 SWAP1 DUP16 SWAP1 DUP8 SWAP1 ADDRESS SWAP1 TIMESTAMP SWAP1 PUSH1 0x4 ADD PUSH2 0x2891 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x177A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x178E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x17B6 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x235D JUMP JUMPDEST SWAP1 POP PUSH32 0xA078C4190ABE07940190EFFC1846BE0CCF03AD6007BC9E93F9697D0B460BEFBB DUP14 DUP14 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x17E8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 PUSH1 0x1 DUP7 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1800 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x1818 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2549 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x182D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP8 POP POP POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1856 JUMPI POP PUSH1 0x0 PUSH2 0x1488 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1863 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x1485 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP1 PUSH2 0x26F5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1485 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x1F91 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1912 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1936 SWAP2 SWAP1 PUSH2 0x2467 JUMP JUMPDEST PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x195F PUSH20 0x10F7FC1F91BA351F9C629C5947AD69BD03C05B96 PUSH2 0x1D81 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x196C DUP7 PUSH2 0x1D81 JUMP JUMPDEST SWAP1 POP PUSH2 0x198E PUSH8 0xDE0B6B3A7640000 PUSH2 0xCCA DUP5 PUSH2 0x11C9 PUSH1 0xA DUP10 SWAP1 EXP DUP4 DUP12 DUP9 PUSH2 0x1847 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 DUP2 ADD SWAP1 SWAP4 MSTORE DUP3 SWAP2 DUP3 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x19CD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP5 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x19FB JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP3 ADD DUP4 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0x1AAC JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1C18 JUMPI DUP9 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1ABF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1B0D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP8 DUP2 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x1B3B JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x7C0329D PUSH1 0xE2 SHL DUP2 MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x1F00CA74 SWAP1 PUSH2 0x1B99 SWAP1 DUP11 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2878 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1BE6 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1BE3 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x235D JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1C10 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP2 POP PUSH2 0x1C13 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x1C3A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP2 POP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7C0329D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x1F00CA74 SWAP1 PUSH2 0x1C88 SWAP1 DUP11 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x2878 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1CD5 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1CD2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x235D JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1CE6 JUMPI SWAP1 SWAP5 POP SWAP3 POP PUSH2 0x1D4D SWAP2 POP POP JUMP JUMPDEST DUP1 SWAP4 POP DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1CF6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1D0B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT DUP1 ISZERO PUSH2 0x1D35 JUMPI POP DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1D28 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 EQ ISZERO JUMPDEST PUSH2 0x1D40 JUMPI DUP4 DUP6 PUSH2 0x1D43 JUMP JUMPDEST DUP3 DUP3 JUMPDEST SWAP7 POP SWAP7 POP POP POP POP POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1D79 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP2 SWAP1 PUSH2 0x2596 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xB3596F07 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xB3596F07 SWAP1 PUSH2 0x1DD0 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x24E7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DFC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1488 SWAP2 SWAP1 PUSH2 0x240E JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x1E2D JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x1E3A JUMPI POP PUSH1 0x0 PUSH2 0x1488 JUMP JUMPDEST DUP2 PUSH2 0x1388 NOT DUP2 PUSH2 0x1E46 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1E83 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP2 SWAP1 PUSH2 0x2596 JUMP JUMPDEST POP POP PUSH2 0x2710 SWAP2 MUL PUSH2 0x1388 ADD DIV SWAP1 JUMP JUMPDEST DUP1 ISZERO DUP1 PUSH2 0x1F1A JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x1EC8 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x24FB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EF4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F18 SWAP2 SWAP1 PUSH2 0x240E JUMP JUMPDEST ISZERO JUMPDEST PUSH2 0x1F36 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP1 PUSH2 0x27E2 JUMP JUMPDEST PUSH2 0x1F8C DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1F55 SWAP3 SWAP2 SWAP1 PUSH2 0x2572 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x1FC8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x1FB2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP2 SWAP1 PUSH2 0x2596 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x1FBE JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1FDA DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x20B3 JUMP JUMPDEST PUSH2 0x1FF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP1 PUSH2 0x2838 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x2012 SWAP2 SWAP1 PUSH2 0x24CB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x204F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2054 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2076 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP1 PUSH2 0x267D JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x20AD JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2091 SWAP2 SWAP1 PUSH2 0x23F2 JUMP JUMPDEST PUSH2 0x20AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x220 SWAP1 PUSH2 0x2798 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x20E7 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x21A2 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x21B9 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x21D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x21EB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1485 DUP2 PUSH2 0x2976 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x220D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 MLOAD PUSH2 0x2218 DUP2 PUSH2 0x2976 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD SWAP1 SWAP6 POP PUSH2 0x2229 DUP2 PUSH2 0x2976 JUMP JUMPDEST PUSH1 0x40 DUP8 ADD MLOAD SWAP1 SWAP5 POP PUSH2 0x223A DUP2 PUSH2 0x2976 JUMP JUMPDEST PUSH1 0x60 DUP8 ADD MLOAD PUSH1 0x80 DUP9 ADD MLOAD SWAP2 SWAP5 POP SWAP3 POP PUSH2 0x2252 DUP2 PUSH2 0x298E JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x227D JUMPI DUP4 DUP5 REVERT JUMPDEST DUP10 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2294 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x22A0 DUP14 DUP4 DUP15 ADD PUSH2 0x2191 JUMP JUMPDEST SWAP1 SWAP12 POP SWAP10 POP PUSH1 0x20 DUP13 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x22B8 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x22C4 DUP14 DUP4 DUP15 ADD PUSH2 0x2191 JUMP JUMPDEST SWAP1 SWAP10 POP SWAP8 POP PUSH1 0x40 DUP13 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x22DC JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x22E8 DUP14 DUP4 DUP15 ADD PUSH2 0x2191 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH1 0x60 DUP13 ADD CALLDATALOAD SWAP2 POP PUSH2 0x22FD DUP3 PUSH2 0x2976 JUMP JUMPDEST SWAP1 SWAP4 POP PUSH1 0x80 DUP12 ADD CALLDATALOAD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x2312 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP13 ADD SWAP2 POP DUP13 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2325 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2333 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP14 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2344 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x236F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2385 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x2395 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x23A8 PUSH2 0x23A3 DUP3 PUSH2 0x292A JUMP JUMPDEST PUSH2 0x2903 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP4 DUP6 ADD DUP6 DUP5 MUL DUP6 ADD DUP7 ADD DUP10 LT ISZERO PUSH2 0x23C4 JUMPI DUP7 DUP8 REVERT JUMPDEST DUP7 SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x23E6 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0x23C8 JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2403 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1485 DUP2 PUSH2 0x298E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x241F JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x243A JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x244C DUP2 PUSH2 0x2976 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x245C DUP2 PUSH2 0x2976 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2478 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x1485 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x24C0 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x249B JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x24DD DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x294A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP2 MSTORE SWAP4 DUP6 AND PUSH1 0x20 DUP6 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 ISZERO ISZERO PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x25B5 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x294A JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x43414C4C45525F4D5553545F42455F4C454E44494E475F504F4F4C0000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x40 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x6D6178416D6F756E74546F5377617020657863656564206D617820736C697070 PUSH1 0x40 DUP3 ADD MSTORE PUSH3 0x616765 PUSH1 0xE8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x494E434F4E53495354454E545F504152414D53 PUSH1 0x68 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x40 DUP3 ADD MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x36 SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A20617070726F76652066726F6D206E6F6E2D7A65726F PUSH1 0x40 DUP3 ADD MSTORE PUSH22 0x20746F206E6F6E2D7A65726F20616C6C6F77616E6365 PUSH1 0x50 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x20E7 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2488 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP3 MSTORE DUP6 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x28B0 PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x2488 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP7 DUP3 MSTORE DUP6 PUSH1 0x20 DUP4 ADD MSTORE DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x28F8 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x2488 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2922 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2940 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2965 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x294D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x20AD JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x298B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x298B JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B SWAP2 0x1E SWAP7 0x5E 0xD3 0xAC 0xFB SSTORE DIV 0xB5 0x2F 0x2E DELEGATECALL MLOAD POP 0xE8 0xD4 0xC6 0xAB GASPRICE 0xA8 0xC1 0xC0 CALLCODE MUL AND 0xE0 0xBB 0x25 CALLDATALOAD CHAINID PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "871:6862:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19152:121:1;;;;;;:::i;:::-;;:::i;:::-;;1763:46;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;666:74:24;;;:::i;1575:60:1:-;;;:::i;:::-;;;;;;;:::i;1464:::-;;;:::i;1813:51::-;;;:::i;1610:135:11:-;;;:::i;1027:71::-;;;:::i;2831:730:2:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1669:89:1:-;;;:::i;744:51:24:-;;;:::i;2848:482:1:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;3927:::-;;;;;;:::i;:::-;;:::i;1868:59::-;;;:::i;1884:226:11:-;;;;;;:::i;:::-;;:::i;19152:121:1:-;1223:12:11;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;-1:-1:-1;;;1205:67:11;;;;;;;:::i;:::-;;;;;;;;;19213:5:1::1;-1:-1:-1::0;;;;;19213:14:1::1;;19228:7;:5;:7::i;:::-;19237:30;::::0;-1:-1:-1;;;19237:30:1;;-1:-1:-1;;;;;19237:15:1;::::1;::::0;::::1;::::0;:30:::1;::::0;19261:4:::1;::::0;19237:30:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19213:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19152:121:::0;:::o;1763:46::-;;;:::o;666:74:24:-;;;:::o;1575:60:1:-;1634:1;1575:60;:::o;1464:::-;1520:4;1464:60;:::o;1813:51::-;;;:::o;1610:135:11:-;1223:12;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;-1:-1:-1;;;1205:67:11;;;;;;;:::i;:::-;1712:1:::1;1696:6:::0;;1675:40:::1;::::0;-1:-1:-1;;;;;1696:6:11;;::::1;::::0;1675:40:::1;::::0;1712:1;;1675:40:::1;1738:1;1721:19:::0;;-1:-1:-1;;;;;;1721:19:11::1;::::0;;1610:135::o;1027:71::-;1065:7;1087:6;-1:-1:-1;;;;;1087:6:11;1027:71;:::o;2831:730:2:-;3034:4;3054:10;-1:-1:-1;;;;;3076:12:2;3054:35;;3046:75;;;;-1:-1:-1;;;3046:75:2;;;;;;;:::i;:::-;3128:38;;:::i;:::-;3169:21;3183:6;;3169:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3169:13:2;;-1:-1:-1;;;3169:21:2:i;:::-;3128:62;-1:-1:-1;3222:1:2;3205:18;;:62;;;;;3240:13;:27;;;-1:-1:-1;;;;;3227:40:2;:6;;3234:1;3227:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3227:40:2;;3205:62;3197:94;;;;-1:-1:-1;;;3197:94:2;;;;;;;:::i;:::-;3298:240;3323:13;:29;;;3360:13;:27;;;3395:13;:18;;;3421:13;:25;;;3454:13;:24;;;3486:7;;3494:1;3486:10;;;;;;;;;;;;;3504:8;;3513:1;3504:11;;;;;;;;;;;;;3523:9;3298:17;:240::i;:::-;-1:-1:-1;3552:4:2;;2831:730;-1:-1:-1;;;;;;;;;;2831:730:2:o;1669:89:1:-;1716:42;1669:89;:::o;744:51:24:-;;;:::o;2848:482:1:-;2999:7;3014;3029;3044;3059:16;3090:25;;:::i;:::-;3118:51;3137:9;3148:10;3160:8;3118:18;:51::i;:::-;3191:24;;3223:21;;;;3252:19;;;;3279:20;;;;3307:12;;;;;3191:24;;3223:21;;-1:-1:-1;3252:19:1;-1:-1:-1;3279:20:1;;-1:-1:-1;3307:12:1;-1:-1:-1;2848:482:1;-1:-1:-1;;;;;2848:482:1:o;3927:::-;4078:7;4093;4108;4123;4138:16;4169:25;;:::i;:::-;4197:51;4215:9;4226:10;4238:9;4197:17;:51::i;1868:59::-;;;:::o;1884:226:11:-;1223:12;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;-1:-1:-1;;;1205:67:11;;;;;;;:::i;:::-;-1:-1:-1;;;;;1968:22:11;::::1;1960:73;;;;-1:-1:-1::0;;;1960:73:11::1;;;;;;;:::i;:::-;2065:6;::::0;;2044:38:::1;::::0;-1:-1:-1;;;;;2044:38:11;;::::1;::::0;2065:6;::::1;::::0;2044:38:::1;::::0;::::1;2088:6;:17:::0;;-1:-1:-1;;;;;;2088:17:11::1;-1:-1:-1::0;;;;;2088:17:11;;;::::1;::::0;;;::::1;::::0;;1884:226::o;587:98:7:-;670:10;587:98;:::o;7332:399:2:-;7399:24;;:::i;:::-;7439:23;7470:21;7499:12;7519:19;7546:15;7581:6;7570:62;;;;;;;;;;;;:::i;:::-;7646:80;;;;;;;;-1:-1:-1;;;;;7646:80:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7332:399;-1:-1:-1;;;;;;;7332:399:2:o;4221:2472::-;4464:36;;:::i;:::-;4535:48;;-1:-1:-1;;;4535:48:2;;-1:-1:-1;;;;;4535:33:2;;;;;:48;;4577:4;;4535:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4506:26;;;:77;-1:-1:-1;;;;;4593:32:2;;;;;;;4589:321;;4667:46;;-1:-1:-1;;;4667:46:2;;-1:-1:-1;;;;;4667:31:2;;;;;:46;;4707:4;;4667:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4635:78;;;4849:54;;4883:19;4849:33;:54::i;:::-;4819:27;;;:84;4589:321;4936:32;:19;4960:7;4936:23;:32::i;:::-;4915:18;;;:53;5036:65;;-1:-1:-1;;;5036:65:2;;-1:-1:-1;;;;;5036:29:2;;;;;:65;;5074:12;;5089:11;;5036:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5181:86:2;;-1:-1:-1;;;5181:86:2;;-1:-1:-1;;;;;5181:12:2;:28;;;;:86;;5210:15;;5227:13;;5242:4;;5248:11;;5261:5;;5181:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5345:48:2;;-1:-1:-1;;;5345:48:2;;5312:30;;-1:-1:-1;;;;;;5345:33:2;;;-1:-1:-1;5345:33:2;;:48;;5387:4;;5345:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5312:81;;5510:54;5537:4;:26;;;5510:22;:26;;:54;;;;:::i;:::-;5481:26;;;:83;-1:-1:-1;;;;;5575:32:2;;;;;;;5571:844;;5710:46;;-1:-1:-1;;;5710:46:2;;5676:31;;-1:-1:-1;;;;;5710:31:2;;;;;:46;;5750:4;;5710:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5676:80;;5885:56;5913:4;:27;;;5885:23;:27;;:56;;;;:::i;:::-;5853:29;;;:88;;;6130:26;;;;6166:18;;;;6047:200;;6082:15;;6107:13;;6130:26;;6166:53;;:18;:22;:53::i;:::-;6229:10;6047:25;:200::i;:::-;6029:15;;;:218;;;6278:26;;;;:47;;:30;:47::i;:::-;6255:20;;;:70;-1:-1:-1;5571:844:2;;;6369:26;;;;:39;;6400:7;6369:30;:39::i;:::-;6346:20;;;:62;5571:844;6507:18;;;;6454:72;;-1:-1:-1;;;6454:72:2;;-1:-1:-1;;;;;6454:29:2;;;;;:72;;6492:12;;6454:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6583:20:2;;;;:24;6579:110;;6661:20;;;;6617:65;;-1:-1:-1;;;6617:65:2;;-1:-1:-1;;;;;6617:32:2;;;;;:65;;6650:9;;6617:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6579:110;4221:2472;;;;;;;;;;:::o;11894:2493:1:-;12018:17;;:::i;:::-;12074:21;12098:62;12111:48;12153:5;12111:37;:8;1634:1;12111:12;:37::i;:::-;:41;;:48::i;:::-;12098:8;;:12;:62::i;:::-;12074:86;;12184:10;-1:-1:-1;;;;;12171:23:1;:9;-1:-1:-1;;;;;12171:23:1;;12167:435;;;12204:23;12230;12243:9;12230:12;:23::i;:::-;12285:16;;;12299:1;12285:16;;;;;;;;;12204:49;;-1:-1:-1;12261:21:1;;12285:16;;;;;;;;;;;;-1:-1:-1;12285:16:1;12261:40;;12319:9;12309:4;12314:1;12309:7;;;;;;;;-1:-1:-1;;;;;12309:19:1;;;:7;;;;;;;;;;:19;12352:243;;;;;;;;;;;;;;;12399:39;12429:8;12399:25;12374:13;12417:6;12399:17;:25::i;:39::-;12352:243;;;;12450:51;12464:9;12475:8;12485:15;12450:13;:51::i;:::-;12352:243;;;;12513:56;12527:9;12538:13;12553:15;12513:13;:56::i;:::-;12352:243;;;;12581:4;12352:243;;;12337:258;;;;;;;12167:435;12638:16;;;12652:1;12638:16;;;12608:27;12638:16;;;;;12608:27;12638:16;;;;;;;;;;-1:-1:-1;12638:16:1;12608:46;;12676:9;12660:10;12671:1;12660:13;;;;;;;;;;;;;:25;-1:-1:-1;;;;;12660:25:1;;;-1:-1:-1;;;;;12660:25:1;;;;;12707:10;12691;12702:1;12691:13;;;;;;;;-1:-1:-1;;;;;12691:26:1;;;;:13;;;;;;;;;;:26;12836:16;;;12850:1;12836:16;;;;;;;;;12724:35;;;;;;12836:16;;;12724:35;;12836:16;;;;;-1:-1:-1;12836:16:1;12804:48;;12875:12;-1:-1:-1;;;;;12862:25:1;:9;-1:-1:-1;;;;;12862:25:1;;;:55;;;;;12905:12;-1:-1:-1;;;;;12891:26:1;:10;-1:-1:-1;;;;;12891:26:1;;;12862:55;12858:473;;;12945:9;12927:12;12940:1;12927:15;;;;;;;;;;;;;:27;-1:-1:-1;;;;;12927:27:1;;;-1:-1:-1;;;;;12927:27:1;;;;;12980:12;12962;12975:1;12962:15;;;;;;;;;;;;;:30;-1:-1:-1;;;;;12962:30:1;;;-1:-1:-1;;;;;12962:30:1;;;;;13018:10;13000:12;13013:1;13000:15;;;;;;;;-1:-1:-1;;;;;13000:28:1;;;:15;;;;;;;;;:28;13041:57;;-1:-1:-1;;;13041:57:1;;:14;:28;;;;;;:57;;13070:13;;13085:12;;13041:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13041:57:1;;;;;;;;;;;;:::i;:::-;;;13037:233;;13245:16;;;13259:1;13245:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13245:16:1;13227:34;;13037:233;;;13186:15;-1:-1:-1;13037:233:1;12858:473;;;13308:16;;;13322:1;13308:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13308:16:1;13290:34;;12858:473;13368:55;;-1:-1:-1;;;13368:55:1;;13337:21;;-1:-1:-1;;;;;13368:14:1;:28;;;;:55;;13397:13;;13412:10;;13368:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13368:55:1;;;;;;;;;;;;:::i;:::-;;;13364:393;;13692:16;;;13706:1;13692:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13692:16:1;13671:37;;13732:15;13748:1;13732:18;;;;;;;;;;;;;;13716:34;;13364:393;;;13506:13;13485:34;;13566:18;13585:1;13566:21;;;;;;;;;;;;;;13545:15;13561:1;13545:18;;;;;;;;;;;;;;:42;13544:105;;13628:18;13647:1;13628:21;;;;;;;;;;;;;;13544:105;;;13599:15;13615:1;13599:18;;;;;;;;;;;;;;13544:105;13528:121;;13424:232;13364:393;13763:25;13791:23;13804:9;13791:12;:23::i;:::-;13763:51;;13820:26;13849:24;13862:10;13849:12;:24::i;:::-;13820:53;-1:-1:-1;13880:21:1;13910:115;13977:40;:13;13995:2;:21;;;13977:17;:40::i;:::-;13910:53;13940:2;:22;;;13910:25;:13;13928:6;13910:17;:25::i;:::-;:29;;:53::i;:115::-;13880:145;;14045:337;;;;;;;;14065:13;14045:337;;;;14088:13;14045:337;;;;14111:53;14125:9;14136:8;14146:17;14111:13;:53::i;:::-;14045:337;;;;14174:60;14188:10;14200:13;14215:18;14174:13;:60::i;:::-;14045:337;;;;14245:18;;14244:130;;14304:18;14323:1;14304:21;;;;;;;;;;;;;;14287:13;:38;14286:88;;14362:12;14286:88;;;14339:10;14286:88;14244:130;;;14267:16;;;14281:1;14267:16;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14244:130:1;14045:337;;14032:350;-1:-1:-1;;;;;;;;;;11894:2493:1;;;;;;:::o;15003:1433::-;15127:17;;:::i;:::-;15169:10;-1:-1:-1;;;;;15156:23:1;:9;-1:-1:-1;;;;;15156:23:1;;15152:541;;;15217:16;15236:64;15250:49;15293:5;15250:38;:9;1634:1;15250:13;:38::i;:49::-;15236:9;;:13;:64::i;:::-;15217:83;;15308:23;15334;15347:9;15334:12;:23::i;:::-;15389:16;;;15403:1;15389:16;;;;;;;;;15308:49;;-1:-1:-1;15365:21:1;;15389:16;;;;;;;;;;;;-1:-1:-1;15389:16:1;15365:40;;15423:9;15413:4;15418:1;15413:7;;;;;;;;-1:-1:-1;;;;;15413:19:1;;;:7;;;;;;;;;;:19;15456:230;;;;;;;;;;;;;;;15498:35;15478:8;15498:21;:9;15512:6;15498:13;:21::i;:35::-;15456:230;;;;15545:51;15559:9;15570:8;15580:15;15545:13;:51::i;:::-;15456:230;;;;15608:52;15622:9;15633;15644:15;15608:13;:52::i;15152:541::-;15700:24;15726:21;15757:54;15778:9;15789:10;15801:9;15757:20;:54::i;:::-;15699:112;;;;15844:21;15868:66;15883:50;15927:5;15883:39;1634:1;15883:7;15891:1;15883:10;;;;;;;;;;;;;;:14;;:39;;;;:::i;:50::-;15868:7;15876:1;15868:10;;;;;;;;;;;;;;:14;;:66;;;;:::i;:::-;15844:90;;15941:25;15969:23;15982:9;15969:12;:23::i;:::-;15941:51;;15998:26;16027:24;16040:10;16027:12;:24::i;:::-;15998:53;-1:-1:-1;16058:21:1;16088:111;16150:41;:13;16168:2;:22;;;16150:17;:41::i;:::-;16088:48;16114:2;:21;;;16088;:9;16102:6;16088:13;:21::i;:111::-;16058:141;;16219:212;;;;;;;;16239:13;16219:212;;;;16262:13;16219:212;;;;16285:58;16299:9;16310:13;16325:17;16285:13;:58::i;:::-;16219:212;;;;16353:56;16367:10;16379:9;16390:18;16353:13;:56::i;:::-;16219:212;;;;;;;;-1:-1:-1;16206:225:1;;15003:1433;-1:-1:-1;;;;;;;;15003:1433:1:o;1257:128:13:-;1315:7;1337:43;1341:1;1344;1337:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1330:50;;1257:128;;;;;:::o;851:162::-;909:7;936:5;;;955:6;;;;947:46;;;;-1:-1:-1;;;947:46:13;;;;;;;:::i;6864:1679:1:-;7056:7;7071:25;7099:29;7112:15;7099:12;:29::i;:::-;7071:57;;7134:23;7160:27;7173:13;7160:12;:27::i;:::-;7134:53;;7194:22;7219:26;7229:15;7219:9;:26::i;:::-;7194:51;;7251:20;7274:24;7284:13;7274:9;:24::i;:::-;7251:47;-1:-1:-1;7305:31:1;7345:203;7489:58;466:3:84;1520:4:1;7489:36;:58::i;:::-;7345:123;7428:39;:14;7447:2;:19;;;7428:18;:39::i;:::-;7345:69;7374:39;:12;7391:2;:21;;;7374:16;:39::i;:::-;7345:15;;:28;:69::i;:123::-;:143;;:203::i;:::-;7305:243;;7581:23;7563:15;:41;7555:89;;;;-1:-1:-1;;;7555:89:1;;;;;;;:::i;:::-;7788:63;-1:-1:-1;;;;;7788:35:1;;7832:14;7849:1;7788:35;:63::i;:::-;7857:77;-1:-1:-1;;;;;7857:35:1;;7901:14;7918:15;7857:35;:77::i;:::-;7941:21;7972:10;7968:256;;;7999:16;;;8013:1;7999:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7999:16:1;7992:23;;8033:15;8023:4;8028:1;8023:7;;;;;;;;;;;;;:25;-1:-1:-1;;;;;8023:25:1;;;-1:-1:-1;;;;;8023:25:1;;;;;8066:12;8056:4;8061:1;8056:7;;;;;;;;;;;;;:22;-1:-1:-1;;;;;8056:22:1;;;-1:-1:-1;;;;;8056:22:1;;;;;8096:13;8086:4;8091:1;8086:7;;;;;;;;;;;;;:23;-1:-1:-1;;;;;8086:23:1;;;-1:-1:-1;;;;;8086:23:1;;;;;7968:256;;;8137:16;;;8151:1;8137:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8137:16:1;8130:23;;8171:15;8161:4;8166:1;8161:7;;;;;;;;;;;;;:25;-1:-1:-1;;;;;8161:25:1;;;-1:-1:-1;;;;;8161:25:1;;;;;8204:13;8194:4;8199:1;8194:7;;;;;;;;;;;;;:23;-1:-1:-1;;;;;8194:23:1;;;-1:-1:-1;;;;;8194:23:1;;;;;7968:256;8263:159;;-1:-1:-1;;;8263:159:1;;8230:24;;-1:-1:-1;;;;;8263:14:1;:39;;;;:159;;8312:15;;8337;;8362:4;;8384;;8399:15;;8263:159;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8263:159:1;;;;;;;;;;;;:::i;:::-;8230:192;;8434:80;8442:15;8459:13;8474:7;8482:1;8474:10;;;;;;;;;;;;;;8486:7;8511:1;8494:7;:14;:18;8486:27;;;;;;;;;;;;;;8434:80;;;;;;;;;:::i;:::-;;;;;;;;8528:7;8536:1;8528:10;;;;;;;;;;;;;;8521:17;;;;;;;;;6864:1679;;;;;;;:::o;2058:419:13:-;2116:7;2341:6;2337:35;;-1:-1:-1;2364:1:13;2357:8;;2337:35;2390:5;;;2394:1;2390;:5;:1;2409:5;;;;;:10;2401:56;;;;-1:-1:-1;;;2401:56:13;;;;;;;:::i;2908:124::-;2966:7;2988:39;2992:1;2995;2988:39;;;;;;;;;;;;;;;;;:3;:39::i;8905:119:1:-;8965:7;9002:5;-1:-1:-1;;;;;8987:30:1;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8980:39;;;8905:119;-1:-1:-1;;8905:119:1:o;10972:309::-;11085:7;11100:19;11122:22;1716:42;11122:9;:22::i;:::-;11100:44;;11150:20;11173:18;11183:7;11173:9;:18::i;:::-;11150:41;-1:-1:-1;11205:71:1;11269:6;11205:59;11252:11;11205:42;11234:2;:12;;;11205:59;:6;11150:41;11205:10;:24::i;:71::-;11198:78;10972:309;-1:-1:-1;;;;;;10972:309:1:o;16788:1298::-;16987:16;;;17001:1;16987:16;;;16915;16987;;;;;;16915;;;;16987;;;;;;;;;;;;-1:-1:-1;16987:16:1;16957:46;;17025:9;17009:10;17020:1;17009:13;;;;;;;;;;;;;:25;-1:-1:-1;;;;;17009:25:1;;;-1:-1:-1;;;;;17009:25:1;;;;;17056:10;17040;17051:1;17040:13;;;;;;;;-1:-1:-1;;;;;17040:26:1;;;;:13;;;;;;;;;;:26;17184:16;;;17198:1;17184:16;;;;;;;;;17073:35;;;;;;17184:16;;;17073:35;;17184:16;;;;;-1:-1:-1;17184:16:1;17152:48;;17224:12;-1:-1:-1;;;;;17211:25:1;:9;-1:-1:-1;;;;;17211:25:1;;;:55;;;;;17254:12;-1:-1:-1;;;;;17240:26:1;:10;-1:-1:-1;;;;;17240:26:1;;;17211:55;17207:468;;;17294:9;17276:12;17289:1;17276:15;;;;;;;;;;;;;:27;-1:-1:-1;;;;;17276:27:1;;;-1:-1:-1;;;;;17276:27:1;;;;;17329:12;17311;17324:1;17311:15;;;;;;;;;;;;;:30;-1:-1:-1;;;;;17311:30:1;;;-1:-1:-1;;;;;17311:30:1;;;;;17367:10;17349:12;17362:1;17349:15;;;;;;;;-1:-1:-1;;;;;17349:28:1;;;:15;;;;;;;;;:28;17390:52;;-1:-1:-1;;;17390:52:1;;:14;:27;;;;;;:52;;17418:9;;17429:12;;17390:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17390:52:1;;;;;;;;;;;;:::i;:::-;;;17386:228;;17589:16;;;17603:1;17589:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17589:16:1;17571:34;;17386:228;;;17530:15;-1:-1:-1;17386:228:1;17207:468;;;17652:16;;;17666:1;17652:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17652:16:1;17634:34;;17207:468;17685:50;;-1:-1:-1;;;17685:50:1;;-1:-1:-1;;;;;17685:14:1;:27;;;;:50;;17713:9;;17724:10;;17685:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17685:50:1;;;;;;;;;;;;:::i;:::-;;;17681:401;;18045:15;;-1:-1:-1;18062:12:1;-1:-1:-1;18037:38:1;;-1:-1:-1;;18037:38:1;17681:401;17818:13;17797:34;;17877:18;17896:1;17877:21;;;;;;;;;;;;;;17856:15;17872:1;17856:18;;;;;;;;;;;;;;:42;:69;;;;;17902:15;17918:1;17902:18;;;;;;;;;;;;;;17924:1;17902:23;;17856:69;17855:160;;17984:18;18004:10;17855:160;;;17940:15;17957:12;17855:160;17840:175;;;;;;;;;16788:1298;;;;;;;:::o;1649:189:13:-;1751:7;1782:12;1774:6;;;;1766:29;;;;-1:-1:-1;;;1766:29:13;;;;;;;;:::i;:::-;-1:-1:-1;;;1813:5:13;;;1649:189::o;8694:111:1:-;8773:27;;-1:-1:-1;;;8773:27:1;;8751:7;;-1:-1:-1;;;;;8773:6:1;:20;;;;:27;;8794:5;;8773:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;802:351:84:-;880:7;899:10;;;:29;;-1:-1:-1;913:15:84;;899:29;895:58;;;-1:-1:-1;945:1:84;938:8;;895:58;1020:10;-1:-1:-1;;1020:10:84;983:47;;;;;974:5;:56;;1038:35;;;;;;;;;;;;;-1:-1:-1;;;1038:35:84;;;959:120;;;;;-1:-1:-1;;;959:120:84;;;;;;;;:::i;:::-;-1:-1:-1;;466:3:84;1094:18;;536:21;1094:33;1093:55;;802:351::o;1124:345:12:-;1238:10;;;1237:62;;-1:-1:-1;1254:39:12;;-1:-1:-1;;;1254:39:12;;-1:-1:-1;;;;;1254:15:12;;;;;:39;;1278:4;;1285:7;;1254:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;1237:62;1222:147;;;;-1:-1:-1;;;1222:147:12;;;;;;;:::i;:::-;1375:89;1394:5;1424:22;;;1448:7;1457:5;1401:62;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1401:62:12;;;;;;;;;;;;;;-1:-1:-1;;;;;1401:62:12;-1:-1:-1;;;;;;1401:62:12;;;;;;;;;;1375:18;:89::i;:::-;1124:345;;;:::o;3483:332:13:-;3585:7;3677:12;3670:5;3662:28;;;;-1:-1:-1;;;3662:28:13;;;;;;;;:::i;:::-;;3696:9;3712:1;3708;:5;;;;;;;3483:332;-1:-1:-1;;;;;3483:332:13:o;1473:555:12:-;1556:27;1564:5;-1:-1:-1;;;;;1556:25:12;;:27::i;:::-;1548:71;;;;-1:-1:-1;;;1548:71:12;;;;;;;:::i;:::-;1682:12;1696:23;1731:5;-1:-1:-1;;;;;1723:19:12;1743:4;1723:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1681:67;;;;1762:7;1754:52;;;;-1:-1:-1;;;1754:52:12;;;;;;;:::i;:::-;1817:17;;:21;1813:211;;1951:10;1940:30;;;;;;;;;;;;:::i;:::-;1932:85;;;;-1:-1:-1;;;1932:85:12;;;;;;;:::i;:::-;1473:555;;;;:::o;686:586:6:-;746:4;1185:20;;1032:66;1224:23;;;;;;:42;;-1:-1:-1;1251:15:6;;;1224:42;1216:51;686:586;-1:-1:-1;;;;686:586:6:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;317:352::-;;;447:3;440:4;432:6;428:17;424:27;414:2;;-1:-1;;455:12;414:2;-1:-1;485:20;;525:18;514:30;;511:2;;;-1:-1;;547:12;511:2;591:4;583:6;579:17;567:29;;642:3;591:4;;626:6;622:17;583:6;608:32;;605:41;602:2;;;659:1;;649:12;602:2;407:262;;;;;:::o;2878:241::-;;2982:2;2970:9;2961:7;2957:23;2953:32;2950:2;;;-1:-1;;2988:12;2950:2;85:6;72:20;97:33;124:5;97:33;:::i;3126:851::-;;;;;;3330:3;3318:9;3309:7;3305:23;3301:33;3298:2;;;-1:-1;;3337:12;3298:2;234:6;228:13;246:41;281:5;246:41;:::i;:::-;3508:2;3566:22;;228:13;3389:82;;-1:-1;246:41;228:13;246:41;:::i;:::-;3635:2;3693:22;;228:13;3516:82;;-1:-1;246:41;228:13;246:41;:::i;:::-;3762:2;3812:22;;2678:13;3881:3;3929:22;;1878:13;3643:82;;-1:-1;2678:13;-1:-1;1896:30;1878:13;1896:30;:::i;:::-;3890:71;;;;3292:685;;;;;;;;:::o;3984:1335::-;;;;;;;;;;4280:3;4268:9;4259:7;4255:23;4251:33;4248:2;;;-1:-1;;4287:12;4248:2;4345:17;4332:31;4383:18;;4375:6;4372:30;4369:2;;;-1:-1;;4405:12;4369:2;4443:80;4515:7;4506:6;4495:9;4491:22;4443:80;:::i;:::-;4425:98;;-1:-1;4425:98;-1:-1;4588:2;4573:18;;4560:32;;-1:-1;4601:30;;;4598:2;;;-1:-1;;4634:12;4598:2;4672:80;4744:7;4735:6;4724:9;4720:22;4672:80;:::i;:::-;4654:98;;-1:-1;4654:98;-1:-1;4817:2;4802:18;;4789:32;;-1:-1;4830:30;;;4827:2;;;-1:-1;;4863:12;4827:2;4901:80;4973:7;4964:6;4953:9;4949:22;4901:80;:::i;:::-;4883:98;;-1:-1;4883:98;-1:-1;5018:2;5057:22;;72:20;;-1:-1;97:33;72:20;97:33;:::i;:::-;5026:63;;-1:-1;5154:3;5139:19;;5126:33;;5168:30;;;5165:2;;;-1:-1;;5201:12;5165:2;5286:6;5275:9;5271:22;;;2066:3;2059:4;2051:6;2047:17;2043:27;2033:2;;-1:-1;;2074:12;2033:2;2117:6;2104:20;4383:18;2136:6;2133:30;2130:2;;;-1:-1;;2166:12;2130:2;2261:3;4588:2;2241:17;2202:6;2227:32;;2224:41;2221:2;;;-1:-1;;2268:12;2221:2;4588;2202:6;2198:17;5221:82;;;;;;;;4242:1077;;;;;;;;;;;:::o;5326:392::-;;5466:2;;5454:9;5445:7;5441:23;5437:32;5434:2;;;-1:-1;;5472:12;5434:2;5523:17;5517:24;5561:18;5553:6;5550:30;5547:2;;;-1:-1;;5583:12;5547:2;5670:22;;1194:4;1182:17;;1178:27;-1:-1;1168:2;;-1:-1;;1209:12;1168:2;1249:6;1243:13;1271:80;1286:64;1343:6;1286:64;:::i;:::-;1271:80;:::i;:::-;1379:21;;;1436:14;;;;1411:17;;;1525;;;1516:27;;;;1513:36;-1:-1;1510:2;;;-1:-1;;1552:12;1510:2;-1:-1;1578:10;;1572:217;1597:6;1594:1;1591:13;1572:217;;;2678:13;;1665:61;;1619:1;1612:9;;;;;1740:14;;;;1768;;1572:217;;;-1:-1;5603:99;5428:290;-1:-1;;;;;;;5428:290::o;5725:257::-;;5837:2;5825:9;5816:7;5812:23;5808:32;5805:2;;;-1:-1;;5843:12;5805:2;1884:6;1878:13;1896:30;1920:5;1896:30;:::i;6267:263::-;;6382:2;6370:9;6361:7;6357:23;6353:32;6350:2;;;-1:-1;;6388:12;6350:2;-1:-1;2678:13;;6344:186;-1:-1;6344:186::o;6537:491::-;;;;6675:2;6663:9;6654:7;6650:23;6646:32;6643:2;;;-1:-1;;6681:12;6643:2;2543:6;2530:20;6733:63;;6833:2;6876:9;6872:22;72:20;97:33;124:5;97:33;:::i;:::-;6841:63;-1:-1;6941:2;6980:22;;72:20;97:33;72:20;97:33;:::i;:::-;6949:63;;;;6637:391;;;;;:::o;7035:259::-;;7148:2;7136:9;7127:7;7123:23;7119:32;7116:2;;;-1:-1;;7154:12;7116:2;2823:6;2817:13;27654:4;30107:5;27643:16;30084:5;30081:33;30071:2;;-1:-1;;30118:12;7744:690;;7937:5;26042:12;26586:6;26581:3;26574:19;26623:4;;26618:3;26614:14;7949:93;;26623:4;8113:5;25896:14;-1:-1;8152:260;8177:6;8174:1;8171:13;8152:260;;;8238:13;;-1:-1;;;;;27438:54;7544:37;;7455:14;;;;26429;;;;525:18;8192:9;8152:260;;;-1:-1;8418:10;;7868:566;-1:-1;;;;;7868:566::o;14102:271::-;;8713:5;26042:12;8824:52;8869:6;8864:3;8857:4;8850:5;8846:16;8824:52;:::i;:::-;8888:16;;;;;14236:137;-1:-1;;14236:137::o;14380:222::-;-1:-1;;;;;27438:54;;;;7544:37;;14507:2;14492:18;;14478:124::o;14609:333::-;-1:-1;;;;;27438:54;;;7544:37;;27438:54;;14928:2;14913:18;;7544:37;14764:2;14749:18;;14735:207::o;14949:656::-;-1:-1;;;;;27438:54;;;7544:37;;27438:54;;;15347:2;15332:18;;7544:37;27438:54;;;;15430:2;15415:18;;7544:37;15513:2;15498:18;;14053:37;;;;27237:13;;27230:21;15590:3;15575:19;;8507:34;15182:3;15167:19;;15153:452::o;15612:556::-;-1:-1;;;;;27438:54;;;7544:37;;27438:54;;;;15988:2;15973:18;;7544:37;16071:2;16056:18;;14053:37;16154:2;16139:18;;14053:37;;;;15823:3;15808:19;;15794:374::o;16175:333::-;-1:-1;;;;;27438:54;;;;7544:37;;16494:2;16479:18;;14053:37;16330:2;16315:18;;16301:207::o;16515:210::-;27237:13;;27230:21;8507:34;;16636:2;16621:18;;16607:118::o;17874:310::-;;18021:2;18042:17;18035:47;9819:5;26042:12;26586:6;18021:2;18010:9;18006:18;26574:19;9913:52;9958:6;26614:14;18010:9;26614:14;18021:2;9939:5;9935:16;9913:52;:::i;:::-;29343:7;29327:14;-1:-1;;29323:28;9977:39;;;;26614:14;9977:39;;17992:192;-1:-1;;17992:192::o;18191:416::-;18391:2;18405:47;;;10253:2;18376:18;;;26574:19;10289:29;26614:14;;;10269:50;10338:12;;;18362:245::o;18614:416::-;18814:2;18828:47;;;10589:2;18799:18;;;26574:19;10625:34;26614:14;;;10605:55;-1:-1;;;10680:12;;;10673:30;10722:12;;;18785:245::o;19037:416::-;19237:2;19251:47;;;10973:2;19222:18;;;26574:19;11009:29;26614:14;;;10989:50;11058:12;;;19208:245::o;19460:416::-;19660:2;19674:47;;;19645:18;;;26574:19;11345:34;26614:14;;;11325:55;11399:12;;;19631:245::o;19883:416::-;20083:2;20097:47;;;11650:2;20068:18;;;26574:19;11686:34;26614:14;;;11666:55;-1:-1;;;11741:12;;;11734:27;11780:12;;;20054:245::o;20306:416::-;20506:2;20520:47;;;12031:2;20491:18;;;26574:19;12067:34;26614:14;;;12047:55;-1:-1;;;12122:12;;;12115:25;12159:12;;;20477:245::o;20729:416::-;20929:2;20943:47;;;20914:18;;;26574:19;12446:34;26614:14;;;12426:55;12500:12;;;20900:245::o;21152:416::-;21352:2;21366:47;;;12751:2;21337:18;;;26574:19;-1:-1;;;26614:14;;;12767:42;12828:12;;;21323:245::o;21575:416::-;21775:2;21789:47;;;13079:2;21760:18;;;26574:19;13115:34;26614:14;;;13095:55;-1:-1;;;13170:12;;;13163:34;13216:12;;;21746:245::o;21998:416::-;22198:2;22212:47;;;13467:2;22183:18;;;26574:19;13503:34;26614:14;;;13483:55;-1:-1;;;13558:12;;;13551:46;13616:12;;;22169:245::o;22421:416::-;22621:2;22635:47;;;13867:2;22606:18;;;26574:19;13903:33;26614:14;;;13883:54;13956:12;;;22592:245::o;22844:222::-;14053:37;;;22971:2;22956:18;;22942:124::o;23073:481::-;;14083:5;14060:3;14053:37;23278:2;23396;23385:9;23381:18;23374:48;23436:108;23278:2;23267:9;23263:18;23530:6;23436:108;:::i;23561:816::-;;14083:5;14060:3;14053:37;14083:5;24015:2;24004:9;24000:18;14053:37;23850:3;24052:2;24041:9;24037:18;24030:48;24092:108;23850:3;23839:9;23835:19;24186:6;24092:108;:::i;:::-;-1:-1;;;;;27438:54;;;;24279:2;24264:18;;7544:37;-1:-1;24362:3;24347:19;14053:37;24084:116;23821:556;-1:-1;;;23821:556::o;24384:816::-;;14083:5;14060:3;14053:37;14083:5;24838:2;24827:9;24823:18;14053:37;14083:5;24921:2;24910:9;24906:18;14053:37;14083:5;25004:2;24993:9;24989:18;14053:37;24673:3;25041;25030:9;25026:19;25019:49;25082:108;24673:3;24662:9;24658:19;25176:6;25082:108;:::i;:::-;25074:116;24644:556;-1:-1;;;;;;;24644:556::o;25207:256::-;25269:2;25263:9;25295:17;;;25370:18;25355:34;;25391:22;;;25352:62;25349:2;;;25427:1;;25417:12;25349:2;25269;25436:22;25247:216;;-1:-1;25247:216::o;25470:304::-;;25629:18;25621:6;25618:30;25615:2;;;-1:-1;;25651:12;25615:2;-1:-1;25696:4;25684:17;;;25749:15;;25552:222::o;28983:268::-;29048:1;29055:101;29069:6;29066:1;29063:13;29055:101;;;29136:11;;;29130:18;29117:11;;;29110:39;29091:2;29084:10;29055:101;;;29171:6;29168:1;29165:13;29162:2;;;-1:-1;;29048:1;29218:16;;29211:27;29032:219::o;29364:117::-;-1:-1;;;;;27438:54;;29423:35;;29413:2;;29472:1;;29462:12;29413:2;29407:74;:::o;29628:111::-;29709:5;27237:13;27230:21;29687:5;29684:32;29674:2;;29730:1;;29720:12"
            },
            "methodIdentifiers": {
              "ADDRESSES_PROVIDER()": "0542975c",
              "FLASHLOAN_PREMIUM_TOTAL()": "074b2e43",
              "LENDING_POOL()": "b4dcfc77",
              "MAX_SLIPPAGE_PERCENT()": "32e4b286",
              "ORACLE()": "38013f02",
              "UNISWAP_ROUTER()": "d8264920",
              "USD_ADDRESS()": "9d1211bf",
              "WETH_ADDRESS()": "040141e5",
              "executeOperation(address[],uint256[],uint256[],address,bytes)": "920f5c84",
              "getAmountsIn(uint256,address,address)": "cdf58cd6",
              "getAmountsOut(uint256,address,address)": "baf7fa99",
              "owner()": "8da5cb5b",
              "renounceOwnership()": "715018a6",
              "rescueTokens(address)": "00ae3bf8",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        }
      },
      "contracts/adapters/UniswapLiquiditySwapAdapter.sol": {
        "UniswapLiquiditySwapAdapter": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPoolAddressesProvider",
                  "name": "addressesProvider",
                  "type": "address"
                },
                {
                  "internalType": "contract IUniswapV2Router02",
                  "name": "uniswapRouter",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "wethAddress",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "fromAsset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "toAsset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "fromAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "receivedAmount",
                  "type": "uint256"
                }
              ],
              "name": "Swapped",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "ADDRESSES_PROVIDER",
              "outputs": [
                {
                  "internalType": "contract ILendingPoolAddressesProvider",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "FLASHLOAN_PREMIUM_TOTAL",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LENDING_POOL",
              "outputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "MAX_SLIPPAGE_PERCENT",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "ORACLE",
              "outputs": [
                {
                  "internalType": "contract IPriceOracleGetter",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "UNISWAP_ROUTER",
              "outputs": [
                {
                  "internalType": "contract IUniswapV2Router02",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "USD_ADDRESS",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "WETH_ADDRESS",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "assets",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "premiums",
                  "type": "uint256[]"
                },
                {
                  "internalType": "address",
                  "name": "initiator",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "executeOperation",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "reserveIn",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "reserveOut",
                  "type": "address"
                }
              ],
              "name": "getAmountsIn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "reserveIn",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "reserveOut",
                  "type": "address"
                }
              ],
              "name": "getAmountsOut",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "token",
                  "type": "address"
                }
              ],
              "name": "rescueTokens",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "assetToSwapFromList",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "assetToSwapToList",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amountToSwapList",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "minAmountsToReceive",
                  "type": "uint256[]"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "deadline",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint8",
                      "name": "v",
                      "type": "uint8"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "r",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "s",
                      "type": "bytes32"
                    }
                  ],
                  "internalType": "struct IBaseUniswapAdapter.PermitSignature[]",
                  "name": "permitParams",
                  "type": "tuple[]"
                },
                {
                  "internalType": "bool[]",
                  "name": "useEthPath",
                  "type": "bool[]"
                }
              ],
              "name": "swapAndDeposit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6101206040523480156200001257600080fd5b50604051620038dd380380620038dd8339810160408190526200003591620001fd565b82828282806001600160a01b03166080816001600160a01b031660601b81525050806001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009057600080fd5b505afa158015620000a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000cb9190620001d7565b60601b6001600160601b03191660a052506000620000e8620001d3565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350826001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b1580156200016c57600080fd5b505afa15801562000181573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a79190620001d7565b6001600160601b0319606091821b811660e05292811b8316610100521b1660c052506200026992505050565b3390565b600060208284031215620001e9578081fd5b8151620001f68162000250565b9392505050565b60008060006060848603121562000212578182fd5b83516200021f8162000250565b6020850151909350620002328162000250565b6040850151909250620002458162000250565b809150509250925092565b6001600160a01b03811681146200026657600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c6135a36200033a60003980610b605280611217528061130b528061199452806119c95280611b5d528061210352806121f45250806103a2528061235e52508061034f52806110f1528061112e52806111985280611a475280611fdd528061201a528061208452508061045f52806107355280610a075280610a615280610a975280610dbb5280610df75280610e385280610ef25280610f2e5280611715528061185a52508061037352506135a36000f3fe608060405234801561001057600080fd5b50600436106100ff5760003560e01c8063920f5c8411610097578063cdf58cd611610066578063cdf58cd6146101c8578063d51c9ed7146101db578063d8264920146101ee578063f2fde38b146101f6576100ff565b8063920f5c84146101745780639d1211bf14610194578063b4dcfc771461019c578063baf7fa99146101a4576100ff565b806332e4b286116100d357806332e4b2861461015457806338013f021461015c578063715018a6146101645780638da5cb5b1461016c576100ff565b8062ae3bf814610104578063040141e5146101195780630542975c14610137578063074b2e431461013f575b600080fd5b6101176101123660046129fe565b610209565b005b61012161034d565b60405161012e9190613038565b60405180910390f35b610121610371565b610147610395565b60405161012e9190613433565b61014761039a565b6101216103a0565b6101176103c4565b610121610443565b610187610182366004612b50565b610452565b60405161012e919061315d565b61012161071b565b610121610733565b6101b76101b2366004612f7c565b610757565b60405161012e959493929190613491565b6101b76101d6366004612f7c565b61079d565b6101176101e9366004612a1a565b6107b8565b610121610b5e565b6101176102043660046129fe565b610b82565b610211610c38565b6000546001600160a01b039081169116146102475760405162461bcd60e51b815260040161023e906132fa565b60405180910390fd5b806001600160a01b031663a9059cbb61025e610443565b6040516370a0823160e01b81526001600160a01b038516906370a082319061028a903090600401613038565b60206040518083038186803b1580156102a257600080fd5b505afa1580156102b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102da9190612f64565b6040518363ffffffff1660e01b81526004016102f79291906130f4565b602060405180830381600087803b15801561031157600080fd5b505af1158015610325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103499190612df4565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600981565b610bb881565b7f000000000000000000000000000000000000000000000000000000000000000081565b6103cc610c38565b6000546001600160a01b039081169116146103f95760405162461bcd60e51b815260040161023e906132fa565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461049c5760405162461bcd60e51b815260040161023e9061319b565b6104a46125d9565b6104e384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c3c92505050565b8051519091508a1480156104fb57506020810151518a145b801561050b57506040810151518a145b801561051c5750606081015151518a145b80156105305750606081015160200151518a145b80156105445750606081015160400151518a145b801561055757506060808201510151518a145b801561056b5750606081015160800151518a145b801561057b57506080810151518a145b6105975760405162461bcd60e51b815260040161023e9061332f565b60005b8a811015610709576107018c8c838181106105b157fe5b90506020020160208101906105c691906129fe565b83518051849081106105d457fe5b60200260200101518c8c858181106105e857fe5b905060200201358b8b868181106105fb57fe5b905060200201358a8760200151878151811061061357fe5b60200260200101518860400151888151811061062b57fe5b60200260200101516040518060a001604052808b60600151600001518b8151811061065257fe5b602002602001015181526020018b60600151602001518b8151811061067357fe5b602002602001015181526020018b60600151604001518b8151811061069457fe5b602002602001015160ff1681526020018b60600151606001518b815181106106b857fe5b602002602001015181526020018b60600151608001518b815181106106d957fe5b60200260200101518152508a608001518a815181106106f457fe5b6020026020010151610cc5565b60010161059a565b5060019b9a5050505050505050505050565b7310f7fc1f91ba351f9c629c5947ad69bd03c05b9681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080600080606061076761260e565b61077288888b610f5f565b8051602082015160408301516060840151608090940151929d919c509a509198509650945050505050565b60008060008060606107ad61260e565b61077288888b61151c565b8a891480156107c657508a87145b80156107d157508a85145b80156107dc57508a83145b6107f85760405162461bcd60e51b815260040161023e9061332f565b61080061263d565b600081525b80518c1115610b4f5761083b8d8d836000015181811061082157fe5b905060200201602081019061083691906129fe565b6116f6565b60e001516001600160a01b0316608082018190526040516370a0823160e01b81526370a0823190610870903390600401613038565b60206040518083038186803b15801561088857600080fd5b505afa15801561089c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c09190612f64565b6020820181905281518a908a908181106108d657fe5b90506020020135116108fe57888882600001518181106108f257fe5b90506020020135610904565b80602001515b60408201528051610967908e908e9081811061091c57fe5b905060200201602081019061093191906129fe565b82608001513384604001518989876000015181811061094c57fe5b905060a002018036038101906109629190612e10565b6117a1565b6109fa8d8d836000015181811061097a57fe5b905060200201602081019061098f91906129fe565b8c8c846000015181811061099f57fe5b90506020020160208101906109b491906129fe565b83604001518a8a86600001518181106109c957fe5b90506020020135878787600001518181106109e057fe5b90506020020160208101906109f59190612dd8565b6118ed565b60608201528051610a5c907f0000000000000000000000000000000000000000000000000000000000000000906000908e908e90818110610a3757fe5b9050602002016020810190610a4c91906129fe565b6001600160a01b03169190611c84565b610a957f000000000000000000000000000000000000000000000000000000000000000082606001518d8d8560000151818110610a3757fe5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e8eda9df8c8c8460000151818110610ad457fe5b9050602002016020810190610ae991906129fe565b83606001513360006040518563ffffffff1660e01b8152600401610b109493929190613130565b600060405180830381600087803b158015610b2a57600080fd5b505af1158015610b3e573d6000803e3d6000fd5b505082516001018352506108059050565b50505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610b8a610c38565b6000546001600160a01b03908116911614610bb75760405162461bcd60e51b815260040161023e906132fa565b6001600160a01b038116610bdd5760405162461bcd60e51b815260040161023e906131d2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b610c446125d9565b60608060608060608060608060608a806020019051810190610c669190612c4c565b6040805160a080820183529a815260208082019a909a52808201989098528051998a018152958952968801939093529286015260608086019290925260808086019190915290820193909352918201529b9a5050505050505050505050565b610ccd612675565b610cd68a6116f6565b60e001516001600160a01b03168082526040516370a0823160e01b81526370a0823190610d07908990600401613038565b60206040518083038186803b158015610d1f57600080fd5b505afa158015610d33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d579190612f64565b6020820152838015610d78575060208101518890610d759089611d83565b11155b610d825787610d91565b6020810151610d919088611d83565b60408201819052610da7908b908b9088866118ed565b6060820152610de16001600160a01b038a167f00000000000000000000000000000000000000000000000000000000000000006000611c84565b6060810151610e1c906001600160a01b038b16907f000000000000000000000000000000000000000000000000000000000000000090611c84565b606081015160405163e8eda9df60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163e8eda9df91610e72918d918b90600090600401613130565b600060405180830381600087803b158015610e8c57600080fd5b505af1158015610ea0573d6000803e3d6000fd5b50505050610eb78789611dc590919063ffffffff16565b60808201526040810151610ecb9088611dc5565b60a082018190528151610ee3918c91908990876117a1565b610f186001600160a01b038b167f00000000000000000000000000000000000000000000000000000000000000006000611c84565b6080810151610f53906001600160a01b038c16907f000000000000000000000000000000000000000000000000000000000000000090611c84565b50505050505050505050565b610f6761260e565b6000610f8a610f83612710610f7d866009611dea565b90611e24565b8490611d83565b9050836001600160a01b0316856001600160a01b03161415611056576000610fb186611e66565b60408051600180825281830190925291925060609190602080830190803683370190505090508681600081518110610fe557fe5b6001600160a01b039092166020928302919091018201526040805160a0810190915284815290810161102387610f7d87670de0b6b3a7640000611dea565b8152602001611033898886611ee2565b8152602001611043898686611ee2565b8152602001828152509350505050611515565b6040805160028082526060808301845292602083019080368337019050509050858160008151811061108457fe5b60200260200101906001600160a01b031690816001600160a01b03168152505084816001815181106110b257fe5b6001600160a01b0392909216602092830291909101820152604080516003808252608082019092526060928392839291820183803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b03161415801561116357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614155b156112cf57888160008151811061117657fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106111c457fe5b60200260200101906001600160a01b031690816001600160a01b03168152505087816002815181106111f257fe5b6001600160a01b03928316602091820292909201015260405163d06ca61f60e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063d06ca61f90611250908890859060040161343c565b60006040518083038186803b15801561126857600080fd5b505afa92505050801561129d57506040513d6000823e601f3d908101601f1916820160405261129a9190810190612da6565b60015b6112c7576040805160038082526080820190925290602082016060803683370190505091506112ca565b91505b6112f1565b6040805160038082526080820190925290602082016060803683370190505091505b60405163d06ca61f60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d06ca61f90611342908990899060040161343c565b60006040518083038186803b15801561135a57600080fd5b505afa92505050801561138f57506040513d6000823e601f3d908101601f1916820160405261138c9190810190612da6565b60015b6113cf576040805160028082526060820183529091602083019080368337019050509350826002815181106113c057fe5b60200260200101519050611435565b809450846001815181106113df57fe5b6020026020010151846002815181106113f457fe5b60200260200101511161141b578460018151811061140e57fe5b6020026020010151611431565b8360028151811061142857fe5b60200260200101515b9150505b60006114408b611e66565b9050600061144d8b611e66565b9050600061148261146285600a86900a611dea565b610f7d600a85900a61147c8d670de0b6b3a7640000611dea565b90611dea565b90506040518060a001604052808581526020018281526020016114a68f8e87611ee2565b81526020016114b68e8786611ee2565b815260200185156114e957886001815181106114ce57fe5b602002602001015186146114e257866114e4565b895b611507565b60408051600280825260608201835290916020830190803683375050505b905299505050505050505050505b9392505050565b61152461260e565b826001600160a01b0316846001600160a01b031614156115fa57600061155b611554612710610f7d866009611dea565b8490611dc5565b9050600061156886611e66565b6040805160018082528183019092529192506060919060208083019080368337019050509050868160008151811061159c57fe5b6001600160a01b039092166020928302919091018201526040805160a081019091528481529081016115da85610f7d89670de0b6b3a7640000611dea565b81526020016115ea898686611ee2565b8152602001611043898886611ee2565b606080611608868686611f3b565b91509150600061166261163f612710610f7d60098760008151811061162957fe5b6020026020010151611dea90919063ffffffff16565b8460008151811061164c57fe5b6020026020010151611dc590919063ffffffff16565b9050600061166f88611e66565b9050600061167c88611e66565b905060006116ab61169185600a85900a611dea565b610f7d600a86900a61147c8c670de0b6b3a7640000611dea565b90506040518060a001604052808581526020018281526020016116cf8c8787611ee2565b81526020016116df8b8b86611ee2565b815260200195909552509298975050505050505050565b6116fe6126b4565b6040516335ea6a7560e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906335ea6a759061174a908590600401613038565b6101806040518083038186803b15801561176357600080fd5b505afa158015611777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179b9190612e69565b92915050565b6117aa816122f8565b1561182e57836001600160a01b031663d505accf8430846000015185602001518660400151876060015188608001516040518863ffffffff1660e01b81526004016117fb97969594939291906130b3565b600060405180830381600087803b15801561181557600080fd5b505af1158015611829573d6000803e3d6000fd5b505050505b6118436001600160a01b03851684308561231d565b604051631a4ca37b60e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906369328dec906118939088908690309060040161310d565b602060405180830381600087803b1580156118ad57600080fd5b505af11580156118c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e59190612f64565b505050505050565b6000806118f987611e66565b9050600061190687611e66565b9050600061191389612344565b9050600061192089612344565b90506000611964611935612710610bb8611d83565b61195e61194685600a8a900a611dea565b610f7d61195788600a8b900a611dea565b8e90611dea565b906123e3565b90508781106119855760405162461bcd60e51b815260040161023e90613284565b6119ba6001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000006000611c84565b6119ee6001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000008b611c84565b60608715611ac6576040805160038082526080820190925290602082016060803683370190505090508b81600081518110611a2557fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611a7357fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508a81600281518110611aa157fe5b60200260200101906001600160a01b031690816001600160a01b031681525050611b43565b60408051600280825260608201835290916020830190803683370190505090508b81600081518110611af457fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508a81600181518110611b2257fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6040516338ed173960e01b81526060906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906338ed173990611b9a908e908e90879030904290600401613455565b600060405180830381600087803b158015611bb457600080fd5b505af1158015611bc8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611bf09190810190612da6565b90507fa078c4190abe07940190effc1846be0ccf03ad6007bc9e93f9697d0b460befbb8d8d83600081518110611c2257fe5b602002602001015184600186510381518110611c3a57fe5b6020026020010151604051611c52949392919061308a565b60405180910390a180600182510381518110611c6a57fe5b602002602001015197505050505050505095945050505050565b801580611d0c5750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e90611cba903090869060040161304c565b60206040518083038186803b158015611cd257600080fd5b505afa158015611ce6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0a9190612f64565b155b611d285760405162461bcd60e51b815260040161023e906133a6565b611d7e8363095ea7b360e01b8484604051602401611d479291906130f4565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612455565b505050565b600061151583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061253a565b6000828201838110156115155760405162461bcd60e51b815260040161023e90613218565b600082611df95750600061179b565b82820282848281611e0657fe5b04146115155760405162461bcd60e51b815260040161023e906132b9565b600061151583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612566565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611ea157600080fd5b505afa158015611eb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed99190612fbd565b60ff1692915050565b600080611f027310f7fc1f91ba351f9c629c5947ad69bd03c05b96612344565b90506000611f0f86612344565b9050611f31670de0b6b3a7640000610f7d8461147c600a89900a838b88611dea565b9695505050505050565b6040805160028082526060828101909352829182918160200160208202803683370190505090508581600081518110611f7057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508481600181518110611f9e57fe5b6001600160a01b0392909216602092830291909101820152604080516003808252608082019092526060928392839291820183803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b03161415801561204f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614155b156121bb57888160008151811061206257fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106120b057fe5b60200260200101906001600160a01b031690816001600160a01b03168152505087816002815181106120de57fe5b6001600160a01b0392831660209182029290920101526040516307c0329d60e21b81527f000000000000000000000000000000000000000000000000000000000000000090911690631f00ca749061213c908a90859060040161343c565b60006040518083038186803b15801561215457600080fd5b505afa92505050801561218957506040513d6000823e601f3d908101601f191682016040526121869190810190612da6565b60015b6121b3576040805160038082526080820190925290602082016060803683370190505091506121b6565b91505b6121dd565b6040805160038082526080820190925290602082016060803683370190505091505b6040516307c0329d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631f00ca749061222b908a90889060040161343c565b60006040518083038186803b15801561224357600080fd5b505afa92505050801561227857506040513d6000823e601f3d908101601f191682016040526122759190810190612da6565b60015b6122895790945092506122f0915050565b8093508360008151811061229957fe5b6020026020010151836000815181106122ae57fe5b60200260200101511080156122d85750826000815181106122cb57fe5b6020026020010151600014155b6122e35783856122e6565b82825b9650965050505050505b935093915050565b6000816040015160ff16826020015114801561231657506020820151155b1592915050565b61233e846323b872dd60e01b858585604051602401611d4793929190613066565b50505050565b60405163b3596f0760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b3596f0790612393908590600401613038565b60206040518083038186803b1580156123ab57600080fd5b505afa1580156123bf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179b9190612f64565b60008215806123f0575081155b156123fd5750600061179b565b81611388198161240957fe5b0483111560405180604001604052806002815260200161068760f31b815250906124465760405162461bcd60e51b815260040161023e9190613168565b50506127109102611388010490565b612467826001600160a01b031661259d565b6124835760405162461bcd60e51b815260040161023e906133fc565b60006060836001600160a01b03168360405161249f919061301c565b6000604051808303816000865af19150503d80600081146124dc576040519150601f19603f3d011682016040523d82523d6000602084013e6124e1565b606091505b5091509150816125035760405162461bcd60e51b815260040161023e9061324f565b80511561233e578080602001905181019061251e9190612df4565b61233e5760405162461bcd60e51b815260040161023e9061335c565b6000818484111561255e5760405162461bcd60e51b815260040161023e9190613168565b505050900390565b600081836125875760405162461bcd60e51b815260040161023e9190613168565b50600083858161259357fe5b0495945050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906125d157508115155b949350505050565b6040518060a0016040528060608152602001606081526020016060815260200161260161271f565b8152602001606081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001606081525090565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b6040518060c0016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518061018001604052806126c861274e565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6040518060200160405280600081525090565b805161179b81613538565b60008083601f84011261277d578182fd5b5081356001600160401b03811115612793578182fd5b60208301915083602080830285010111156127ad57600080fd5b9250929050565b600082601f8301126127c4578081fd5b81516127d76127d2826134ed565b6134c7565b8181529150602080830190848101818402860182018710156127f857600080fd5b60005b8481101561282057815161280e81613538565b845292820192908201906001016127fb565b505050505092915050565b600082601f83011261283b578081fd5b81516128496127d2826134ed565b81815291506020808301908481018184028601820187101561286a57600080fd5b60005b8481101561282057815161288081613550565b8452928201929082019060010161286d565b600082601f8301126128a2578081fd5b81516128b06127d2826134ed565b8181529150602080830190848101818402860182018710156128d157600080fd5b60005b84811015612820578151845292820192908201906001016128d4565b60008083601f840112612901578182fd5b5081356001600160401b03811115612917578182fd5b60208301915083602060a0830285010111156127ad57600080fd5b600082601f830112612942578081fd5b81516129506127d2826134ed565b81815291506020808301908481018184028601820187101561297157600080fd5b60005b848110156128205781516129878161355e565b84529282019290820190600101612974565b6000602082840312156129aa578081fd5b6129b460206134c7565b9151825250919050565b80516fffffffffffffffffffffffffffffffff8116811461179b57600080fd5b805164ffffffffff8116811461179b57600080fd5b805161179b8161355e565b600060208284031215612a0f578081fd5b813561151581613538565b60008060008060008060008060008060008060c08d8f031215612a3b578788fd5b6001600160401b038d351115612a4f578788fd5b612a5c8e8e358f0161276c565b909c509a506001600160401b0360208e01351115612a78578788fd5b612a888e60208f01358f0161276c565b909a5098506001600160401b0360408e01351115612aa4578788fd5b612ab48e60408f01358f0161276c565b90985096506001600160401b0360608e01351115612ad0578586fd5b612ae08e60608f01358f0161276c565b90965094506001600160401b0360808e01351115612afc578384fd5b612b0c8e60808f01358f016128f0565b90945092506001600160401b0360a08e01351115612b28578081fd5b612b388e60a08f01358f0161276c565b81935080925050509295989b509295989b509295989b565b600080600080600080600080600060a08a8c031215612b6d578283fd5b89356001600160401b0380821115612b83578485fd5b612b8f8d838e0161276c565b909b50995060208c0135915080821115612ba7578485fd5b612bb38d838e0161276c565b909950975060408c0135915080821115612bcb578485fd5b612bd78d838e0161276c565b909750955060608c01359150612bec82613538565b90935060808b01359080821115612c01578384fd5b818c0191508c601f830112612c14578384fd5b813581811115612c22578485fd5b8d6020828501011115612c33578485fd5b6020830194508093505050509295985092959850929598565b60008060008060008060008060006101208a8c031215612c6a578283fd5b89516001600160401b0380821115612c80578485fd5b612c8c8d838e016127b4565b9a5060208c0151915080821115612ca1578485fd5b612cad8d838e01612892565b995060408c0151915080821115612cc2578485fd5b612cce8d838e0161282b565b985060608c0151915080821115612ce3578485fd5b612cef8d838e01612892565b975060808c0151915080821115612d04578485fd5b612d108d838e01612892565b965060a08c0151915080821115612d25578485fd5b612d318d838e01612932565b955060c08c0151915080821115612d46578485fd5b612d528d838e01612892565b945060e08c0151915080821115612d67578384fd5b612d738d838e01612892565b93506101008c0151915080821115612d89578283fd5b50612d968c828d0161282b565b9150509295985092959850929598565b600060208284031215612db7578081fd5b81516001600160401b03811115612dcc578182fd5b6125d184828501612892565b600060208284031215612de9578081fd5b813561151581613550565b600060208284031215612e05578081fd5b815161151581613550565b600060a08284031215612e21578081fd5b612e2b60a06134c7565b82358152602083013560208201526040830135612e478161355e565b6040820152606083810135908201526080928301359281019290925250919050565b6000610180808385031215612e7c578182fd5b612e85816134c7565b9050612e918484612999565b8152612ea084602085016129be565b6020820152612eb284604085016129be565b6040820152612ec484606085016129be565b6060820152612ed684608085016129be565b6080820152612ee88460a085016129be565b60a0820152612efa8460c085016129de565b60c0820152612f0c8460e08501612761565b60e0820152610100612f2085828601612761565b90820152610120612f3385858301612761565b90820152610140612f4685858301612761565b90820152610160612f59858583016129f3565b908201529392505050565b600060208284031215612f75578081fd5b5051919050565b600080600060608486031215612f90578081fd5b833592506020840135612fa281613538565b91506040840135612fb281613538565b809150509250925092565b600060208284031215612fce578081fd5b81516115158161355e565b6000815180845260208085019450808401835b838110156130115781516001600160a01b031687529582019590820190600101612fec565b509495945050505050565b6000825161302e81846020870161350c565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6001600160a01b03948516815260208101939093529216604082015261ffff909116606082015260800190565b901515815260200190565b600060208252825180602084015261318781604085016020870161350c565b601f01601f19169190910160400192915050565b6020808252601b908201527f43414c4c45525f4d5553545f42455f4c454e44494e475f504f4f4c0000000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b6020808252818101527f6d696e416d6f756e744f757420657863656564206d617820736c697070616765604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602080825260139082015272494e434f4e53495354454e545f504152414d5360681b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526036908201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60408201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606082015260800190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b90815260200190565b6000838252604060208301526125d16040830184612fd9565b600086825285602083015260a0604083015261347460a0830186612fd9565b6001600160a01b0394909416606083015250608001529392505050565b600086825285602083015284604083015283606083015260a060808301526134bc60a0830184612fd9565b979650505050505050565b6040518181016001600160401b03811182821017156134e557600080fd5b604052919050565b60006001600160401b03821115613502578081fd5b5060209081020190565b60005b8381101561352757818101518382015260200161350f565b8381111561233e5750506000910152565b6001600160a01b038116811461354d57600080fd5b50565b801515811461354d57600080fd5b60ff8116811461354d57600080fdfea2646970667358221220def7fdf1490df5ba55d300fb2007044d28b4d90edf7ebe22c7a7039c52ac25b764736f6c634300060c0033",
              "opcodes": "PUSH2 0x120 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x38DD CODESIZE SUB DUP1 PUSH3 0x38DD DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x1FD JUMP JUMPDEST DUP3 DUP3 DUP3 DUP3 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x261BF8B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xCB SWAP2 SWAP1 PUSH3 0x1D7 JUMP JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE POP PUSH1 0x0 PUSH3 0xE8 PUSH3 0x1D3 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFCA513A8 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x181 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x1A7 SWAP2 SWAP1 PUSH3 0x1D7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xE0 MSTORE SWAP3 DUP2 SHL DUP4 AND PUSH2 0x100 MSTORE SHL AND PUSH1 0xC0 MSTORE POP PUSH3 0x269 SWAP3 POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x1E9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x1F6 DUP2 PUSH3 0x250 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x212 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 MLOAD PUSH3 0x21F DUP2 PUSH3 0x250 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0x232 DUP2 PUSH3 0x250 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x245 DUP2 PUSH3 0x250 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x266 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x35A3 PUSH3 0x33A PUSH1 0x0 CODECOPY DUP1 PUSH2 0xB60 MSTORE DUP1 PUSH2 0x1217 MSTORE DUP1 PUSH2 0x130B MSTORE DUP1 PUSH2 0x1994 MSTORE DUP1 PUSH2 0x19C9 MSTORE DUP1 PUSH2 0x1B5D MSTORE DUP1 PUSH2 0x2103 MSTORE DUP1 PUSH2 0x21F4 MSTORE POP DUP1 PUSH2 0x3A2 MSTORE DUP1 PUSH2 0x235E MSTORE POP DUP1 PUSH2 0x34F MSTORE DUP1 PUSH2 0x10F1 MSTORE DUP1 PUSH2 0x112E MSTORE DUP1 PUSH2 0x1198 MSTORE DUP1 PUSH2 0x1A47 MSTORE DUP1 PUSH2 0x1FDD MSTORE DUP1 PUSH2 0x201A MSTORE DUP1 PUSH2 0x2084 MSTORE POP DUP1 PUSH2 0x45F MSTORE DUP1 PUSH2 0x735 MSTORE DUP1 PUSH2 0xA07 MSTORE DUP1 PUSH2 0xA61 MSTORE DUP1 PUSH2 0xA97 MSTORE DUP1 PUSH2 0xDBB MSTORE DUP1 PUSH2 0xDF7 MSTORE DUP1 PUSH2 0xE38 MSTORE DUP1 PUSH2 0xEF2 MSTORE DUP1 PUSH2 0xF2E MSTORE DUP1 PUSH2 0x1715 MSTORE DUP1 PUSH2 0x185A MSTORE POP DUP1 PUSH2 0x373 MSTORE POP PUSH2 0x35A3 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xFF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x920F5C84 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xCDF58CD6 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xCDF58CD6 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0xD51C9ED7 EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0xD8264920 EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1F6 JUMPI PUSH2 0xFF JUMP JUMPDEST DUP1 PUSH4 0x920F5C84 EQ PUSH2 0x174 JUMPI DUP1 PUSH4 0x9D1211BF EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0xB4DCFC77 EQ PUSH2 0x19C JUMPI DUP1 PUSH4 0xBAF7FA99 EQ PUSH2 0x1A4 JUMPI PUSH2 0xFF JUMP JUMPDEST DUP1 PUSH4 0x32E4B286 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x32E4B286 EQ PUSH2 0x154 JUMPI DUP1 PUSH4 0x38013F02 EQ PUSH2 0x15C JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x16C JUMPI PUSH2 0xFF JUMP JUMPDEST DUP1 PUSH3 0xAE3BF8 EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x40141E5 EQ PUSH2 0x119 JUMPI DUP1 PUSH4 0x542975C EQ PUSH2 0x137 JUMPI DUP1 PUSH4 0x74B2E43 EQ PUSH2 0x13F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x117 PUSH2 0x112 CALLDATASIZE PUSH1 0x4 PUSH2 0x29FE JUMP JUMPDEST PUSH2 0x209 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x121 PUSH2 0x34D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x3038 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x121 PUSH2 0x371 JUMP JUMPDEST PUSH2 0x147 PUSH2 0x395 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x3433 JUMP JUMPDEST PUSH2 0x147 PUSH2 0x39A JUMP JUMPDEST PUSH2 0x121 PUSH2 0x3A0 JUMP JUMPDEST PUSH2 0x117 PUSH2 0x3C4 JUMP JUMPDEST PUSH2 0x121 PUSH2 0x443 JUMP JUMPDEST PUSH2 0x187 PUSH2 0x182 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B50 JUMP JUMPDEST PUSH2 0x452 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x315D JUMP JUMPDEST PUSH2 0x121 PUSH2 0x71B JUMP JUMPDEST PUSH2 0x121 PUSH2 0x733 JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x1B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F7C JUMP JUMPDEST PUSH2 0x757 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3491 JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x1D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F7C JUMP JUMPDEST PUSH2 0x79D JUMP JUMPDEST PUSH2 0x117 PUSH2 0x1E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A1A JUMP JUMPDEST PUSH2 0x7B8 JUMP JUMPDEST PUSH2 0x121 PUSH2 0xB5E JUMP JUMPDEST PUSH2 0x117 PUSH2 0x204 CALLDATASIZE PUSH1 0x4 PUSH2 0x29FE JUMP JUMPDEST PUSH2 0xB82 JUMP JUMPDEST PUSH2 0x211 PUSH2 0xC38 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x247 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x32FA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB PUSH2 0x25E PUSH2 0x443 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x28A SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3038 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2DA SWAP2 SWAP1 PUSH2 0x2F64 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F7 SWAP3 SWAP2 SWAP1 PUSH2 0x30F4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x325 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x349 SWAP2 SWAP1 PUSH2 0x2DF4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x9 DUP2 JUMP JUMPDEST PUSH2 0xBB8 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x3CC PUSH2 0xC38 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x3F9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x32FA JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x49C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x319B JUMP JUMPDEST PUSH2 0x4A4 PUSH2 0x25D9 JUMP JUMPDEST PUSH2 0x4E3 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xC3C SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD MLOAD SWAP1 SWAP2 POP DUP11 EQ DUP1 ISZERO PUSH2 0x4FB JUMPI POP PUSH1 0x20 DUP2 ADD MLOAD MLOAD DUP11 EQ JUMPDEST DUP1 ISZERO PUSH2 0x50B JUMPI POP PUSH1 0x40 DUP2 ADD MLOAD MLOAD DUP11 EQ JUMPDEST DUP1 ISZERO PUSH2 0x51C JUMPI POP PUSH1 0x60 DUP2 ADD MLOAD MLOAD MLOAD DUP11 EQ JUMPDEST DUP1 ISZERO PUSH2 0x530 JUMPI POP PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x20 ADD MLOAD MLOAD DUP11 EQ JUMPDEST DUP1 ISZERO PUSH2 0x544 JUMPI POP PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x40 ADD MLOAD MLOAD DUP11 EQ JUMPDEST DUP1 ISZERO PUSH2 0x557 JUMPI POP PUSH1 0x60 DUP1 DUP3 ADD MLOAD ADD MLOAD MLOAD DUP11 EQ JUMPDEST DUP1 ISZERO PUSH2 0x56B JUMPI POP PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x80 ADD MLOAD MLOAD DUP11 EQ JUMPDEST DUP1 ISZERO PUSH2 0x57B JUMPI POP PUSH1 0x80 DUP2 ADD MLOAD MLOAD DUP11 EQ JUMPDEST PUSH2 0x597 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x332F JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP11 DUP2 LT ISZERO PUSH2 0x709 JUMPI PUSH2 0x701 DUP13 DUP13 DUP4 DUP2 DUP2 LT PUSH2 0x5B1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x5C6 SWAP2 SWAP1 PUSH2 0x29FE JUMP JUMPDEST DUP4 MLOAD DUP1 MLOAD DUP5 SWAP1 DUP2 LT PUSH2 0x5D4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP13 DUP13 DUP6 DUP2 DUP2 LT PUSH2 0x5E8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP12 DUP12 DUP7 DUP2 DUP2 LT PUSH2 0x5FB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP11 DUP8 PUSH1 0x20 ADD MLOAD DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x613 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP9 PUSH1 0x40 ADD MLOAD DUP9 DUP2 MLOAD DUP2 LT PUSH2 0x62B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP12 PUSH1 0x60 ADD MLOAD PUSH1 0x0 ADD MLOAD DUP12 DUP2 MLOAD DUP2 LT PUSH2 0x652 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP12 PUSH1 0x60 ADD MLOAD PUSH1 0x20 ADD MLOAD DUP12 DUP2 MLOAD DUP2 LT PUSH2 0x673 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP12 PUSH1 0x60 ADD MLOAD PUSH1 0x40 ADD MLOAD DUP12 DUP2 MLOAD DUP2 LT PUSH2 0x694 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 PUSH1 0x60 ADD MLOAD PUSH1 0x60 ADD MLOAD DUP12 DUP2 MLOAD DUP2 LT PUSH2 0x6B8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP12 PUSH1 0x60 ADD MLOAD PUSH1 0x80 ADD MLOAD DUP12 DUP2 MLOAD DUP2 LT PUSH2 0x6D9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE POP DUP11 PUSH1 0x80 ADD MLOAD DUP11 DUP2 MLOAD DUP2 LT PUSH2 0x6F4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xCC5 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x59A JUMP JUMPDEST POP PUSH1 0x1 SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0x10F7FC1F91BA351F9C629C5947AD69BD03C05B96 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 PUSH2 0x767 PUSH2 0x260E JUMP JUMPDEST PUSH2 0x772 DUP9 DUP9 DUP12 PUSH2 0xF5F JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 SWAP1 SWAP5 ADD MLOAD SWAP3 SWAP14 SWAP2 SWAP13 POP SWAP11 POP SWAP2 SWAP9 POP SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 PUSH2 0x7AD PUSH2 0x260E JUMP JUMPDEST PUSH2 0x772 DUP9 DUP9 DUP12 PUSH2 0x151C JUMP JUMPDEST DUP11 DUP10 EQ DUP1 ISZERO PUSH2 0x7C6 JUMPI POP DUP11 DUP8 EQ JUMPDEST DUP1 ISZERO PUSH2 0x7D1 JUMPI POP DUP11 DUP6 EQ JUMPDEST DUP1 ISZERO PUSH2 0x7DC JUMPI POP DUP11 DUP4 EQ JUMPDEST PUSH2 0x7F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x332F JUMP JUMPDEST PUSH2 0x800 PUSH2 0x263D JUMP JUMPDEST PUSH1 0x0 DUP2 MSTORE JUMPDEST DUP1 MLOAD DUP13 GT ISZERO PUSH2 0xB4F JUMPI PUSH2 0x83B DUP14 DUP14 DUP4 PUSH1 0x0 ADD MLOAD DUP2 DUP2 LT PUSH2 0x821 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x836 SWAP2 SWAP1 PUSH2 0x29FE JUMP JUMPDEST PUSH2 0x16F6 JUMP JUMPDEST PUSH1 0xE0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH4 0x70A08231 SWAP1 PUSH2 0x870 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x3038 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x888 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x89C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8C0 SWAP2 SWAP1 PUSH2 0x2F64 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE DUP2 MLOAD DUP11 SWAP1 DUP11 SWAP1 DUP2 DUP2 LT PUSH2 0x8D6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD GT PUSH2 0x8FE JUMPI DUP9 DUP9 DUP3 PUSH1 0x0 ADD MLOAD DUP2 DUP2 LT PUSH2 0x8F2 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x904 JUMP JUMPDEST DUP1 PUSH1 0x20 ADD MLOAD JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE DUP1 MLOAD PUSH2 0x967 SWAP1 DUP15 SWAP1 DUP15 SWAP1 DUP2 DUP2 LT PUSH2 0x91C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x931 SWAP2 SWAP1 PUSH2 0x29FE JUMP JUMPDEST DUP3 PUSH1 0x80 ADD MLOAD CALLER DUP5 PUSH1 0x40 ADD MLOAD DUP10 DUP10 DUP8 PUSH1 0x0 ADD MLOAD DUP2 DUP2 LT PUSH2 0x94C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xA0 MUL ADD DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x962 SWAP2 SWAP1 PUSH2 0x2E10 JUMP JUMPDEST PUSH2 0x17A1 JUMP JUMPDEST PUSH2 0x9FA DUP14 DUP14 DUP4 PUSH1 0x0 ADD MLOAD DUP2 DUP2 LT PUSH2 0x97A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x98F SWAP2 SWAP1 PUSH2 0x29FE JUMP JUMPDEST DUP13 DUP13 DUP5 PUSH1 0x0 ADD MLOAD DUP2 DUP2 LT PUSH2 0x99F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x9B4 SWAP2 SWAP1 PUSH2 0x29FE JUMP JUMPDEST DUP4 PUSH1 0x40 ADD MLOAD DUP11 DUP11 DUP7 PUSH1 0x0 ADD MLOAD DUP2 DUP2 LT PUSH2 0x9C9 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP8 DUP8 DUP8 PUSH1 0x0 ADD MLOAD DUP2 DUP2 LT PUSH2 0x9E0 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x9F5 SWAP2 SWAP1 PUSH2 0x2DD8 JUMP JUMPDEST PUSH2 0x18ED JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE DUP1 MLOAD PUSH2 0xA5C SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x0 SWAP1 DUP15 SWAP1 DUP15 SWAP1 DUP2 DUP2 LT PUSH2 0xA37 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xA4C SWAP2 SWAP1 PUSH2 0x29FE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x1C84 JUMP JUMPDEST PUSH2 0xA95 PUSH32 0x0 DUP3 PUSH1 0x60 ADD MLOAD DUP14 DUP14 DUP6 PUSH1 0x0 ADD MLOAD DUP2 DUP2 LT PUSH2 0xA37 JUMPI INVALID JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8EDA9DF DUP13 DUP13 DUP5 PUSH1 0x0 ADD MLOAD DUP2 DUP2 LT PUSH2 0xAD4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xAE9 SWAP2 SWAP1 PUSH2 0x29FE JUMP JUMPDEST DUP4 PUSH1 0x60 ADD MLOAD CALLER PUSH1 0x0 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB10 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3130 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB3E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP DUP3 MLOAD PUSH1 0x1 ADD DUP4 MSTORE POP PUSH2 0x805 SWAP1 POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0xB8A PUSH2 0xC38 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xBB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x32FA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xBDD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x31D2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0xC44 PUSH2 0x25D9 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x60 DUP11 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xC66 SWAP2 SWAP1 PUSH2 0x2C4C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP1 DUP3 ADD DUP4 MSTORE SWAP11 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP11 SWAP1 SWAP11 MSTORE DUP1 DUP3 ADD SWAP9 SWAP1 SWAP9 MSTORE DUP1 MLOAD SWAP10 DUP11 ADD DUP2 MSTORE SWAP6 DUP10 MSTORE SWAP7 DUP9 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP3 DUP7 ADD MSTORE PUSH1 0x60 DUP1 DUP7 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 DUP3 ADD MSTORE SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xCCD PUSH2 0x2675 JUMP JUMPDEST PUSH2 0xCD6 DUP11 PUSH2 0x16F6 JUMP JUMPDEST PUSH1 0xE0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 DUP3 MSTORE PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH4 0x70A08231 SWAP1 PUSH2 0xD07 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x3038 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD33 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD57 SWAP2 SWAP1 PUSH2 0x2F64 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE DUP4 DUP1 ISZERO PUSH2 0xD78 JUMPI POP PUSH1 0x20 DUP2 ADD MLOAD DUP9 SWAP1 PUSH2 0xD75 SWAP1 DUP10 PUSH2 0x1D83 JUMP JUMPDEST GT ISZERO JUMPDEST PUSH2 0xD82 JUMPI DUP8 PUSH2 0xD91 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH2 0xD91 SWAP1 DUP9 PUSH2 0x1D83 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0xDA7 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP9 DUP7 PUSH2 0x18ED JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0xDE1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH32 0x0 PUSH1 0x0 PUSH2 0x1C84 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD MLOAD PUSH2 0xE1C SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP1 PUSH32 0x0 SWAP1 PUSH2 0x1C84 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xE8EDA9DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH4 0xE8EDA9DF SWAP2 PUSH2 0xE72 SWAP2 DUP14 SWAP2 DUP12 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x3130 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xEB7 DUP8 DUP10 PUSH2 0x1DC5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD PUSH2 0xECB SWAP1 DUP9 PUSH2 0x1DC5 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE DUP2 MLOAD PUSH2 0xEE3 SWAP2 DUP13 SWAP2 SWAP1 DUP10 SWAP1 DUP8 PUSH2 0x17A1 JUMP JUMPDEST PUSH2 0xF18 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH32 0x0 PUSH1 0x0 PUSH2 0x1C84 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD PUSH2 0xF53 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP1 PUSH32 0x0 SWAP1 PUSH2 0x1C84 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xF67 PUSH2 0x260E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF8A PUSH2 0xF83 PUSH2 0x2710 PUSH2 0xF7D DUP7 PUSH1 0x9 PUSH2 0x1DEA JUMP JUMPDEST SWAP1 PUSH2 0x1E24 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x1D83 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1056 JUMPI PUSH1 0x0 PUSH2 0xFB1 DUP7 PUSH2 0x1E66 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP PUSH1 0x60 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP7 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xFE5 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP5 DUP2 MSTORE SWAP1 DUP2 ADD PUSH2 0x1023 DUP8 PUSH2 0xF7D DUP8 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1DEA JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1033 DUP10 DUP9 DUP7 PUSH2 0x1EE2 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1043 DUP10 DUP7 DUP7 PUSH2 0x1EE2 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP SWAP4 POP POP POP POP PUSH2 0x1515 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1084 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP5 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x10B2 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP3 ADD DUP4 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0x1163 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x12CF JUMPI DUP9 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1176 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x11C4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP8 DUP2 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x11F2 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0xD06CA61F PUSH1 0xE0 SHL DUP2 MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xD06CA61F SWAP1 PUSH2 0x1250 SWAP1 DUP9 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x343C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x129D JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x129A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2DA6 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x12C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP2 POP PUSH2 0x12CA JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x12F1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP2 POP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD06CA61F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xD06CA61F SWAP1 PUSH2 0x1342 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x343C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x135A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x138F JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x138C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2DA6 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x13CF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD DUP4 MSTORE SWAP1 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP4 POP DUP3 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x13C0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x1435 JUMP JUMPDEST DUP1 SWAP5 POP DUP5 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x13DF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x13F4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT PUSH2 0x141B JUMPI DUP5 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x140E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1431 JUMP JUMPDEST DUP4 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x1428 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD JUMPDEST SWAP2 POP POP JUMPDEST PUSH1 0x0 PUSH2 0x1440 DUP12 PUSH2 0x1E66 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x144D DUP12 PUSH2 0x1E66 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1482 PUSH2 0x1462 DUP6 PUSH1 0xA DUP7 SWAP1 EXP PUSH2 0x1DEA JUMP JUMPDEST PUSH2 0xF7D PUSH1 0xA DUP6 SWAP1 EXP PUSH2 0x147C DUP14 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1DEA JUMP JUMPDEST SWAP1 PUSH2 0x1DEA JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14A6 DUP16 DUP15 DUP8 PUSH2 0x1EE2 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14B6 DUP15 DUP8 DUP7 PUSH2 0x1EE2 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO PUSH2 0x14E9 JUMPI DUP9 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x14CE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 EQ PUSH2 0x14E2 JUMPI DUP7 PUSH2 0x14E4 JUMP JUMPDEST DUP10 JUMPDEST PUSH2 0x1507 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD DUP4 MSTORE SWAP1 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP POP JUMPDEST SWAP1 MSTORE SWAP10 POP POP POP POP POP POP POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1524 PUSH2 0x260E JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x15FA JUMPI PUSH1 0x0 PUSH2 0x155B PUSH2 0x1554 PUSH2 0x2710 PUSH2 0xF7D DUP7 PUSH1 0x9 PUSH2 0x1DEA JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x1DC5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1568 DUP7 PUSH2 0x1E66 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP PUSH1 0x60 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP7 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x159C JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP5 DUP2 MSTORE SWAP1 DUP2 ADD PUSH2 0x15DA DUP6 PUSH2 0xF7D DUP10 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1DEA JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15EA DUP10 DUP7 DUP7 PUSH2 0x1EE2 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1043 DUP10 DUP9 DUP7 PUSH2 0x1EE2 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x1608 DUP7 DUP7 DUP7 PUSH2 0x1F3B JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x1662 PUSH2 0x163F PUSH2 0x2710 PUSH2 0xF7D PUSH1 0x9 DUP8 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1629 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1DEA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x164C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1DC5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x166F DUP9 PUSH2 0x1E66 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x167C DUP9 PUSH2 0x1E66 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x16AB PUSH2 0x1691 DUP6 PUSH1 0xA DUP6 SWAP1 EXP PUSH2 0x1DEA JUMP JUMPDEST PUSH2 0xF7D PUSH1 0xA DUP7 SWAP1 EXP PUSH2 0x147C DUP13 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1DEA JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x16CF DUP13 DUP8 DUP8 PUSH2 0x1EE2 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x16DF DUP12 DUP12 DUP7 PUSH2 0x1EE2 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP6 SWAP1 SWAP6 MSTORE POP SWAP3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x16FE PUSH2 0x26B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x35EA6A75 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x35EA6A75 SWAP1 PUSH2 0x174A SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x3038 JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1763 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1777 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x179B SWAP2 SWAP1 PUSH2 0x2E69 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x17AA DUP2 PUSH2 0x22F8 JUMP JUMPDEST ISZERO PUSH2 0x182E JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD505ACCF DUP5 ADDRESS DUP5 PUSH1 0x0 ADD MLOAD DUP6 PUSH1 0x20 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH1 0x60 ADD MLOAD DUP9 PUSH1 0x80 ADD MLOAD PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17FB SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x30B3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1815 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1829 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x1843 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 ADDRESS DUP6 PUSH2 0x231D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH2 0x1893 SWAP1 DUP9 SWAP1 DUP7 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x310D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x18C1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18E5 SWAP2 SWAP1 PUSH2 0x2F64 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x18F9 DUP8 PUSH2 0x1E66 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1906 DUP8 PUSH2 0x1E66 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1913 DUP10 PUSH2 0x2344 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1920 DUP10 PUSH2 0x2344 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1964 PUSH2 0x1935 PUSH2 0x2710 PUSH2 0xBB8 PUSH2 0x1D83 JUMP JUMPDEST PUSH2 0x195E PUSH2 0x1946 DUP6 PUSH1 0xA DUP11 SWAP1 EXP PUSH2 0x1DEA JUMP JUMPDEST PUSH2 0xF7D PUSH2 0x1957 DUP9 PUSH1 0xA DUP12 SWAP1 EXP PUSH2 0x1DEA JUMP JUMPDEST DUP15 SWAP1 PUSH2 0x1DEA JUMP JUMPDEST SWAP1 PUSH2 0x23E3 JUMP JUMPDEST SWAP1 POP DUP8 DUP2 LT PUSH2 0x1985 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x3284 JUMP JUMPDEST PUSH2 0x19BA PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH32 0x0 PUSH1 0x0 PUSH2 0x1C84 JUMP JUMPDEST PUSH2 0x19EE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH32 0x0 DUP12 PUSH2 0x1C84 JUMP JUMPDEST PUSH1 0x60 DUP8 ISZERO PUSH2 0x1AC6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP12 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1A25 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1A73 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP11 DUP2 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x1AA1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH2 0x1B43 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD DUP4 MSTORE SWAP1 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP12 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1AF4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP11 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1B22 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x38ED1739 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x38ED1739 SWAP1 PUSH2 0x1B9A SWAP1 DUP15 SWAP1 DUP15 SWAP1 DUP8 SWAP1 ADDRESS SWAP1 TIMESTAMP SWAP1 PUSH1 0x4 ADD PUSH2 0x3455 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1BC8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1BF0 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2DA6 JUMP JUMPDEST SWAP1 POP PUSH32 0xA078C4190ABE07940190EFFC1846BE0CCF03AD6007BC9E93F9697D0B460BEFBB DUP14 DUP14 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1C22 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 PUSH1 0x1 DUP7 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1C3A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x1C52 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x308A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 PUSH1 0x1 DUP3 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1C6A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP8 POP POP POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 PUSH2 0x1D0C JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x1CBA SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x304C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CE6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D0A SWAP2 SWAP1 PUSH2 0x2F64 JUMP JUMPDEST ISZERO JUMPDEST PUSH2 0x1D28 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x33A6 JUMP JUMPDEST PUSH2 0x1D7E DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1D47 SWAP3 SWAP2 SWAP1 PUSH2 0x30F4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x2455 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1515 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x253A JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1515 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x3218 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1DF9 JUMPI POP PUSH1 0x0 PUSH2 0x179B JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1E06 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x1515 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x32B9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1515 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x2566 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EB5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1ED9 SWAP2 SWAP1 PUSH2 0x2FBD JUMP JUMPDEST PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F02 PUSH20 0x10F7FC1F91BA351F9C629C5947AD69BD03C05B96 PUSH2 0x2344 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1F0F DUP7 PUSH2 0x2344 JUMP JUMPDEST SWAP1 POP PUSH2 0x1F31 PUSH8 0xDE0B6B3A7640000 PUSH2 0xF7D DUP5 PUSH2 0x147C PUSH1 0xA DUP10 SWAP1 EXP DUP4 DUP12 DUP9 PUSH2 0x1DEA JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 DUP2 ADD SWAP1 SWAP4 MSTORE DUP3 SWAP2 DUP3 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1F70 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP5 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1F9E JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP3 ADD DUP4 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0x204F JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x21BB JUMPI DUP9 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2062 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x20B0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP8 DUP2 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x20DE JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x7C0329D PUSH1 0xE2 SHL DUP2 MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x1F00CA74 SWAP1 PUSH2 0x213C SWAP1 DUP11 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x343C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2154 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x2189 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x2186 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2DA6 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x21B3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP2 POP PUSH2 0x21B6 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x21DD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP2 POP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7C0329D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x1F00CA74 SWAP1 PUSH2 0x222B SWAP1 DUP11 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x343C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x2278 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x2275 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2DA6 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2289 JUMPI SWAP1 SWAP5 POP SWAP3 POP PUSH2 0x22F0 SWAP2 POP POP JUMP JUMPDEST DUP1 SWAP4 POP DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2299 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x22AE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT DUP1 ISZERO PUSH2 0x22D8 JUMPI POP DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x22CB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 EQ ISZERO JUMPDEST PUSH2 0x22E3 JUMPI DUP4 DUP6 PUSH2 0x22E6 JUMP JUMPDEST DUP3 DUP3 JUMPDEST SWAP7 POP SWAP7 POP POP POP POP POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 ADD MLOAD PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD EQ DUP1 ISZERO PUSH2 0x2316 JUMPI POP PUSH1 0x20 DUP3 ADD MLOAD ISZERO JUMPDEST ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x233E DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1D47 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3066 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xB3596F07 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xB3596F07 SWAP1 PUSH2 0x2393 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x3038 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x23AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x179B SWAP2 SWAP1 PUSH2 0x2F64 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x23F0 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x23FD JUMPI POP PUSH1 0x0 PUSH2 0x179B JUMP JUMPDEST DUP2 PUSH2 0x1388 NOT DUP2 PUSH2 0x2409 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x2446 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP2 SWAP1 PUSH2 0x3168 JUMP JUMPDEST POP POP PUSH2 0x2710 SWAP2 MUL PUSH2 0x1388 ADD DIV SWAP1 JUMP JUMPDEST PUSH2 0x2467 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x259D JUMP JUMPDEST PUSH2 0x2483 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x33FC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x249F SWAP2 SWAP1 PUSH2 0x301C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x24DC JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x24E1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2503 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x324F JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x233E JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x251E SWAP2 SWAP1 PUSH2 0x2DF4 JUMP JUMPDEST PUSH2 0x233E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x335C JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x255E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP2 SWAP1 PUSH2 0x3168 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x2587 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP2 SWAP1 PUSH2 0x3168 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x2593 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x25D1 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2601 PUSH2 0x271F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x26C8 PUSH2 0x274E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x100 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x140 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x160 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x179B DUP2 PUSH2 0x3538 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x277D JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2793 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x27AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x27C4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x27D7 PUSH2 0x27D2 DUP3 PUSH2 0x34ED JUMP JUMPDEST PUSH2 0x34C7 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x27F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x2820 JUMPI DUP2 MLOAD PUSH2 0x280E DUP2 PUSH2 0x3538 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x27FB JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x283B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2849 PUSH2 0x27D2 DUP3 PUSH2 0x34ED JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x286A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x2820 JUMPI DUP2 MLOAD PUSH2 0x2880 DUP2 PUSH2 0x3550 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x286D JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x28A2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x28B0 PUSH2 0x27D2 DUP3 PUSH2 0x34ED JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x28D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x2820 JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x28D4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2901 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2917 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 PUSH1 0xA0 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x27AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2942 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2950 PUSH2 0x27D2 DUP3 PUSH2 0x34ED JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x2971 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x2820 JUMPI DUP2 MLOAD PUSH2 0x2987 DUP2 PUSH2 0x355E JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2974 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x29AA JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x29B4 PUSH1 0x20 PUSH2 0x34C7 JUMP JUMPDEST SWAP2 MLOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x179B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x179B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x179B DUP2 PUSH2 0x355E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A0F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1515 DUP2 PUSH2 0x3538 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP14 DUP16 SUB SLT ISZERO PUSH2 0x2A3B JUMPI DUP8 DUP9 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP14 CALLDATALOAD GT ISZERO PUSH2 0x2A4F JUMPI DUP8 DUP9 REVERT JUMPDEST PUSH2 0x2A5C DUP15 DUP15 CALLDATALOAD DUP16 ADD PUSH2 0x276C JUMP JUMPDEST SWAP1 SWAP13 POP SWAP11 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x20 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x2A78 JUMPI DUP8 DUP9 REVERT JUMPDEST PUSH2 0x2A88 DUP15 PUSH1 0x20 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x276C JUMP JUMPDEST SWAP1 SWAP11 POP SWAP9 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x2AA4 JUMPI DUP8 DUP9 REVERT JUMPDEST PUSH2 0x2AB4 DUP15 PUSH1 0x40 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x276C JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x60 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x2AD0 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x2AE0 DUP15 PUSH1 0x60 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x276C JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x2AFC JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x2B0C DUP15 PUSH1 0x80 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x28F0 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xA0 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x2B28 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x2B38 DUP15 PUSH1 0xA0 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x276C JUMP JUMPDEST DUP2 SWAP4 POP DUP1 SWAP3 POP POP POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x2B6D JUMPI DUP3 DUP4 REVERT JUMPDEST DUP10 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x2B83 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2B8F DUP14 DUP4 DUP15 ADD PUSH2 0x276C JUMP JUMPDEST SWAP1 SWAP12 POP SWAP10 POP PUSH1 0x20 DUP13 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2BA7 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2BB3 DUP14 DUP4 DUP15 ADD PUSH2 0x276C JUMP JUMPDEST SWAP1 SWAP10 POP SWAP8 POP PUSH1 0x40 DUP13 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2BCB JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2BD7 DUP14 DUP4 DUP15 ADD PUSH2 0x276C JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH1 0x60 DUP13 ADD CALLDATALOAD SWAP2 POP PUSH2 0x2BEC DUP3 PUSH2 0x3538 JUMP JUMPDEST SWAP1 SWAP4 POP PUSH1 0x80 DUP12 ADD CALLDATALOAD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x2C01 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP13 ADD SWAP2 POP DUP13 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2C14 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2C22 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP14 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2C33 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x2C6A JUMPI DUP3 DUP4 REVERT JUMPDEST DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x2C80 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2C8C DUP14 DUP4 DUP15 ADD PUSH2 0x27B4 JUMP JUMPDEST SWAP11 POP PUSH1 0x20 DUP13 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2CA1 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2CAD DUP14 DUP4 DUP15 ADD PUSH2 0x2892 JUMP JUMPDEST SWAP10 POP PUSH1 0x40 DUP13 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2CC2 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2CCE DUP14 DUP4 DUP15 ADD PUSH2 0x282B JUMP JUMPDEST SWAP9 POP PUSH1 0x60 DUP13 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2CE3 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2CEF DUP14 DUP4 DUP15 ADD PUSH2 0x2892 JUMP JUMPDEST SWAP8 POP PUSH1 0x80 DUP13 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2D04 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2D10 DUP14 DUP4 DUP15 ADD PUSH2 0x2892 JUMP JUMPDEST SWAP7 POP PUSH1 0xA0 DUP13 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2D25 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2D31 DUP14 DUP4 DUP15 ADD PUSH2 0x2932 JUMP JUMPDEST SWAP6 POP PUSH1 0xC0 DUP13 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2D46 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2D52 DUP14 DUP4 DUP15 ADD PUSH2 0x2892 JUMP JUMPDEST SWAP5 POP PUSH1 0xE0 DUP13 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2D67 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x2D73 DUP14 DUP4 DUP15 ADD PUSH2 0x2892 JUMP JUMPDEST SWAP4 POP PUSH2 0x100 DUP13 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2D89 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x2D96 DUP13 DUP3 DUP14 ADD PUSH2 0x282B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2DB7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2DCC JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x25D1 DUP5 DUP3 DUP6 ADD PUSH2 0x2892 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2DE9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1515 DUP2 PUSH2 0x3550 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E05 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1515 DUP2 PUSH2 0x3550 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E21 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x2E2B PUSH1 0xA0 PUSH2 0x34C7 JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH2 0x2E47 DUP2 PUSH2 0x355E JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x80 SWAP3 DUP4 ADD CALLDATALOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2E7C JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x2E85 DUP2 PUSH2 0x34C7 JUMP JUMPDEST SWAP1 POP PUSH2 0x2E91 DUP5 DUP5 PUSH2 0x2999 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x2EA0 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x29BE JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x2EB2 DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x29BE JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x2EC4 DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x29BE JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x2ED6 DUP5 PUSH1 0x80 DUP6 ADD PUSH2 0x29BE JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x2EE8 DUP5 PUSH1 0xA0 DUP6 ADD PUSH2 0x29BE JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x2EFA DUP5 PUSH1 0xC0 DUP6 ADD PUSH2 0x29DE JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x2F0C DUP5 PUSH1 0xE0 DUP6 ADD PUSH2 0x2761 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 PUSH2 0x2F20 DUP6 DUP3 DUP7 ADD PUSH2 0x2761 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x120 PUSH2 0x2F33 DUP6 DUP6 DUP4 ADD PUSH2 0x2761 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x140 PUSH2 0x2F46 DUP6 DUP6 DUP4 ADD PUSH2 0x2761 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x160 PUSH2 0x2F59 DUP6 DUP6 DUP4 ADD PUSH2 0x29F3 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2F75 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2F90 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2FA2 DUP2 PUSH2 0x3538 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x2FB2 DUP2 PUSH2 0x3538 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2FCE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1515 DUP2 PUSH2 0x355E JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3011 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2FEC JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x302E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x350C JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP3 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0xFFFF SWAP1 SWAP2 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x3187 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x350C JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x43414C4C45525F4D5553545F42455F4C454E44494E475F504F4F4C0000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x40 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x6D696E416D6F756E744F757420657863656564206D617820736C697070616765 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x494E434F4E53495354454E545F504152414D53 PUSH1 0x68 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x40 DUP3 ADD MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x36 SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A20617070726F76652066726F6D206E6F6E2D7A65726F PUSH1 0x40 DUP3 ADD MSTORE PUSH22 0x20746F206E6F6E2D7A65726F20616C6C6F77616E6365 PUSH1 0x50 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x25D1 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2FD9 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP3 MSTORE DUP6 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3474 PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x2FD9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP7 DUP3 MSTORE DUP6 PUSH1 0x20 DUP4 ADD MSTORE DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x34BC PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x2FD9 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x34E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x3502 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3527 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x350F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x233E JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x354D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x354D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x354D JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDE 0xF7 REVERT CALL 0x49 0xD CREATE2 0xBA SSTORE 0xD3 STOP 0xFB KECCAK256 SMOD DIV 0x4D 0x28 0xB4 0xD9 0xE 0xDF PUSH31 0xBE22C7A7039C52AC25B764736F6C634300060C003300000000000000000000 ",
              "sourceMap": "512:10473:3:-:0;;;875:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1033:17;1052:13;1067:11;2093:17:1;886:8:24;-1:-1:-1;;;;;865:29:24;;;-1:-1:-1;;;;;865:29:24;;;;;;;928:8;-1:-1:-1;;;;;928:23:24;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;900:54;;-1:-1:-1;;;;;;900:54:24;;;-1:-1:-1;844:17:11;864:12;:10;:12::i;:::-;882:6;:18;;-1:-1:-1;;;;;;882:18:11;-1:-1:-1;;;;;882:18:11;;;;;;;911:43;;882:18;;-1:-1:-1;882:18:11;911:43;;882:6;;911:43;815:144;2146:17:1::1;-1:-1:-1::0;;;;;2146:32:1::1;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;2118:63:1::1;::::0;;;;;::::1;::::0;2187:30;;;;;::::1;::::0;2223:26;;::::1;::::0;-1:-1:-1;512:10473:3;;-1:-1:-1;;;512:10473:3;587:98:7;670:10;587:98;:::o;558:263:-1:-;;673:2;661:9;652:7;648:23;644:32;641:2;;;-1:-1;;679:12;641:2;89:6;83:13;101:33;128:5;101:33;:::i;:::-;731:74;635:186;-1:-1;;;635:186::o;828:665::-;;;;1042:2;1030:9;1021:7;1017:23;1013:32;1010:2;;;-1:-1;;1048:12;1010:2;268:6;262:13;280:71;345:5;280:71;:::i;:::-;1249:2;1326:22;;468:13;1100:112;;-1:-1;486:60;468:13;486:60;:::i;:::-;1395:2;1445:22;;83:13;1257:101;;-1:-1;101:33;83:13;101:33;:::i;:::-;1403:74;;;;1004:489;;;;;:::o;1987:117::-;-1:-1;;;;;1921:54;;2046:35;;2036:2;;2095:1;;2085:12;2036:2;2030:74;:::o;:::-;512:10473:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "137": [
                  {
                    "length": 32,
                    "start": 847
                  },
                  {
                    "length": 32,
                    "start": 4337
                  },
                  {
                    "length": 32,
                    "start": 4398
                  },
                  {
                    "length": 32,
                    "start": 4504
                  },
                  {
                    "length": 32,
                    "start": 6727
                  },
                  {
                    "length": 32,
                    "start": 8157
                  },
                  {
                    "length": 32,
                    "start": 8218
                  },
                  {
                    "length": 32,
                    "start": 8324
                  }
                ],
                "140": [
                  {
                    "length": 32,
                    "start": 930
                  },
                  {
                    "length": 32,
                    "start": 9054
                  }
                ],
                "143": [
                  {
                    "length": 32,
                    "start": 2912
                  },
                  {
                    "length": 32,
                    "start": 4631
                  },
                  {
                    "length": 32,
                    "start": 4875
                  },
                  {
                    "length": 32,
                    "start": 6548
                  },
                  {
                    "length": 32,
                    "start": 6601
                  },
                  {
                    "length": 32,
                    "start": 7005
                  },
                  {
                    "length": 32,
                    "start": 8451
                  },
                  {
                    "length": 32,
                    "start": 8692
                  }
                ],
                "5489": [
                  {
                    "length": 32,
                    "start": 883
                  }
                ],
                "5492": [
                  {
                    "length": 32,
                    "start": 1119
                  },
                  {
                    "length": 32,
                    "start": 1845
                  },
                  {
                    "length": 32,
                    "start": 2567
                  },
                  {
                    "length": 32,
                    "start": 2657
                  },
                  {
                    "length": 32,
                    "start": 2711
                  },
                  {
                    "length": 32,
                    "start": 3515
                  },
                  {
                    "length": 32,
                    "start": 3575
                  },
                  {
                    "length": 32,
                    "start": 3640
                  },
                  {
                    "length": 32,
                    "start": 3826
                  },
                  {
                    "length": 32,
                    "start": 3886
                  },
                  {
                    "length": 32,
                    "start": 5909
                  },
                  {
                    "length": 32,
                    "start": 6234
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100ff5760003560e01c8063920f5c8411610097578063cdf58cd611610066578063cdf58cd6146101c8578063d51c9ed7146101db578063d8264920146101ee578063f2fde38b146101f6576100ff565b8063920f5c84146101745780639d1211bf14610194578063b4dcfc771461019c578063baf7fa99146101a4576100ff565b806332e4b286116100d357806332e4b2861461015457806338013f021461015c578063715018a6146101645780638da5cb5b1461016c576100ff565b8062ae3bf814610104578063040141e5146101195780630542975c14610137578063074b2e431461013f575b600080fd5b6101176101123660046129fe565b610209565b005b61012161034d565b60405161012e9190613038565b60405180910390f35b610121610371565b610147610395565b60405161012e9190613433565b61014761039a565b6101216103a0565b6101176103c4565b610121610443565b610187610182366004612b50565b610452565b60405161012e919061315d565b61012161071b565b610121610733565b6101b76101b2366004612f7c565b610757565b60405161012e959493929190613491565b6101b76101d6366004612f7c565b61079d565b6101176101e9366004612a1a565b6107b8565b610121610b5e565b6101176102043660046129fe565b610b82565b610211610c38565b6000546001600160a01b039081169116146102475760405162461bcd60e51b815260040161023e906132fa565b60405180910390fd5b806001600160a01b031663a9059cbb61025e610443565b6040516370a0823160e01b81526001600160a01b038516906370a082319061028a903090600401613038565b60206040518083038186803b1580156102a257600080fd5b505afa1580156102b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102da9190612f64565b6040518363ffffffff1660e01b81526004016102f79291906130f4565b602060405180830381600087803b15801561031157600080fd5b505af1158015610325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103499190612df4565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600981565b610bb881565b7f000000000000000000000000000000000000000000000000000000000000000081565b6103cc610c38565b6000546001600160a01b039081169116146103f95760405162461bcd60e51b815260040161023e906132fa565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461049c5760405162461bcd60e51b815260040161023e9061319b565b6104a46125d9565b6104e384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c3c92505050565b8051519091508a1480156104fb57506020810151518a145b801561050b57506040810151518a145b801561051c5750606081015151518a145b80156105305750606081015160200151518a145b80156105445750606081015160400151518a145b801561055757506060808201510151518a145b801561056b5750606081015160800151518a145b801561057b57506080810151518a145b6105975760405162461bcd60e51b815260040161023e9061332f565b60005b8a811015610709576107018c8c838181106105b157fe5b90506020020160208101906105c691906129fe565b83518051849081106105d457fe5b60200260200101518c8c858181106105e857fe5b905060200201358b8b868181106105fb57fe5b905060200201358a8760200151878151811061061357fe5b60200260200101518860400151888151811061062b57fe5b60200260200101516040518060a001604052808b60600151600001518b8151811061065257fe5b602002602001015181526020018b60600151602001518b8151811061067357fe5b602002602001015181526020018b60600151604001518b8151811061069457fe5b602002602001015160ff1681526020018b60600151606001518b815181106106b857fe5b602002602001015181526020018b60600151608001518b815181106106d957fe5b60200260200101518152508a608001518a815181106106f457fe5b6020026020010151610cc5565b60010161059a565b5060019b9a5050505050505050505050565b7310f7fc1f91ba351f9c629c5947ad69bd03c05b9681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080600080606061076761260e565b61077288888b610f5f565b8051602082015160408301516060840151608090940151929d919c509a509198509650945050505050565b60008060008060606107ad61260e565b61077288888b61151c565b8a891480156107c657508a87145b80156107d157508a85145b80156107dc57508a83145b6107f85760405162461bcd60e51b815260040161023e9061332f565b61080061263d565b600081525b80518c1115610b4f5761083b8d8d836000015181811061082157fe5b905060200201602081019061083691906129fe565b6116f6565b60e001516001600160a01b0316608082018190526040516370a0823160e01b81526370a0823190610870903390600401613038565b60206040518083038186803b15801561088857600080fd5b505afa15801561089c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c09190612f64565b6020820181905281518a908a908181106108d657fe5b90506020020135116108fe57888882600001518181106108f257fe5b90506020020135610904565b80602001515b60408201528051610967908e908e9081811061091c57fe5b905060200201602081019061093191906129fe565b82608001513384604001518989876000015181811061094c57fe5b905060a002018036038101906109629190612e10565b6117a1565b6109fa8d8d836000015181811061097a57fe5b905060200201602081019061098f91906129fe565b8c8c846000015181811061099f57fe5b90506020020160208101906109b491906129fe565b83604001518a8a86600001518181106109c957fe5b90506020020135878787600001518181106109e057fe5b90506020020160208101906109f59190612dd8565b6118ed565b60608201528051610a5c907f0000000000000000000000000000000000000000000000000000000000000000906000908e908e90818110610a3757fe5b9050602002016020810190610a4c91906129fe565b6001600160a01b03169190611c84565b610a957f000000000000000000000000000000000000000000000000000000000000000082606001518d8d8560000151818110610a3757fe5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e8eda9df8c8c8460000151818110610ad457fe5b9050602002016020810190610ae991906129fe565b83606001513360006040518563ffffffff1660e01b8152600401610b109493929190613130565b600060405180830381600087803b158015610b2a57600080fd5b505af1158015610b3e573d6000803e3d6000fd5b505082516001018352506108059050565b50505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610b8a610c38565b6000546001600160a01b03908116911614610bb75760405162461bcd60e51b815260040161023e906132fa565b6001600160a01b038116610bdd5760405162461bcd60e51b815260040161023e906131d2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b610c446125d9565b60608060608060608060608060608a806020019051810190610c669190612c4c565b6040805160a080820183529a815260208082019a909a52808201989098528051998a018152958952968801939093529286015260608086019290925260808086019190915290820193909352918201529b9a5050505050505050505050565b610ccd612675565b610cd68a6116f6565b60e001516001600160a01b03168082526040516370a0823160e01b81526370a0823190610d07908990600401613038565b60206040518083038186803b158015610d1f57600080fd5b505afa158015610d33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d579190612f64565b6020820152838015610d78575060208101518890610d759089611d83565b11155b610d825787610d91565b6020810151610d919088611d83565b60408201819052610da7908b908b9088866118ed565b6060820152610de16001600160a01b038a167f00000000000000000000000000000000000000000000000000000000000000006000611c84565b6060810151610e1c906001600160a01b038b16907f000000000000000000000000000000000000000000000000000000000000000090611c84565b606081015160405163e8eda9df60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163e8eda9df91610e72918d918b90600090600401613130565b600060405180830381600087803b158015610e8c57600080fd5b505af1158015610ea0573d6000803e3d6000fd5b50505050610eb78789611dc590919063ffffffff16565b60808201526040810151610ecb9088611dc5565b60a082018190528151610ee3918c91908990876117a1565b610f186001600160a01b038b167f00000000000000000000000000000000000000000000000000000000000000006000611c84565b6080810151610f53906001600160a01b038c16907f000000000000000000000000000000000000000000000000000000000000000090611c84565b50505050505050505050565b610f6761260e565b6000610f8a610f83612710610f7d866009611dea565b90611e24565b8490611d83565b9050836001600160a01b0316856001600160a01b03161415611056576000610fb186611e66565b60408051600180825281830190925291925060609190602080830190803683370190505090508681600081518110610fe557fe5b6001600160a01b039092166020928302919091018201526040805160a0810190915284815290810161102387610f7d87670de0b6b3a7640000611dea565b8152602001611033898886611ee2565b8152602001611043898686611ee2565b8152602001828152509350505050611515565b6040805160028082526060808301845292602083019080368337019050509050858160008151811061108457fe5b60200260200101906001600160a01b031690816001600160a01b03168152505084816001815181106110b257fe5b6001600160a01b0392909216602092830291909101820152604080516003808252608082019092526060928392839291820183803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b03161415801561116357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614155b156112cf57888160008151811061117657fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106111c457fe5b60200260200101906001600160a01b031690816001600160a01b03168152505087816002815181106111f257fe5b6001600160a01b03928316602091820292909201015260405163d06ca61f60e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063d06ca61f90611250908890859060040161343c565b60006040518083038186803b15801561126857600080fd5b505afa92505050801561129d57506040513d6000823e601f3d908101601f1916820160405261129a9190810190612da6565b60015b6112c7576040805160038082526080820190925290602082016060803683370190505091506112ca565b91505b6112f1565b6040805160038082526080820190925290602082016060803683370190505091505b60405163d06ca61f60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d06ca61f90611342908990899060040161343c565b60006040518083038186803b15801561135a57600080fd5b505afa92505050801561138f57506040513d6000823e601f3d908101601f1916820160405261138c9190810190612da6565b60015b6113cf576040805160028082526060820183529091602083019080368337019050509350826002815181106113c057fe5b60200260200101519050611435565b809450846001815181106113df57fe5b6020026020010151846002815181106113f457fe5b60200260200101511161141b578460018151811061140e57fe5b6020026020010151611431565b8360028151811061142857fe5b60200260200101515b9150505b60006114408b611e66565b9050600061144d8b611e66565b9050600061148261146285600a86900a611dea565b610f7d600a85900a61147c8d670de0b6b3a7640000611dea565b90611dea565b90506040518060a001604052808581526020018281526020016114a68f8e87611ee2565b81526020016114b68e8786611ee2565b815260200185156114e957886001815181106114ce57fe5b602002602001015186146114e257866114e4565b895b611507565b60408051600280825260608201835290916020830190803683375050505b905299505050505050505050505b9392505050565b61152461260e565b826001600160a01b0316846001600160a01b031614156115fa57600061155b611554612710610f7d866009611dea565b8490611dc5565b9050600061156886611e66565b6040805160018082528183019092529192506060919060208083019080368337019050509050868160008151811061159c57fe5b6001600160a01b039092166020928302919091018201526040805160a081019091528481529081016115da85610f7d89670de0b6b3a7640000611dea565b81526020016115ea898686611ee2565b8152602001611043898886611ee2565b606080611608868686611f3b565b91509150600061166261163f612710610f7d60098760008151811061162957fe5b6020026020010151611dea90919063ffffffff16565b8460008151811061164c57fe5b6020026020010151611dc590919063ffffffff16565b9050600061166f88611e66565b9050600061167c88611e66565b905060006116ab61169185600a85900a611dea565b610f7d600a86900a61147c8c670de0b6b3a7640000611dea565b90506040518060a001604052808581526020018281526020016116cf8c8787611ee2565b81526020016116df8b8b86611ee2565b815260200195909552509298975050505050505050565b6116fe6126b4565b6040516335ea6a7560e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906335ea6a759061174a908590600401613038565b6101806040518083038186803b15801561176357600080fd5b505afa158015611777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179b9190612e69565b92915050565b6117aa816122f8565b1561182e57836001600160a01b031663d505accf8430846000015185602001518660400151876060015188608001516040518863ffffffff1660e01b81526004016117fb97969594939291906130b3565b600060405180830381600087803b15801561181557600080fd5b505af1158015611829573d6000803e3d6000fd5b505050505b6118436001600160a01b03851684308561231d565b604051631a4ca37b60e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906369328dec906118939088908690309060040161310d565b602060405180830381600087803b1580156118ad57600080fd5b505af11580156118c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e59190612f64565b505050505050565b6000806118f987611e66565b9050600061190687611e66565b9050600061191389612344565b9050600061192089612344565b90506000611964611935612710610bb8611d83565b61195e61194685600a8a900a611dea565b610f7d61195788600a8b900a611dea565b8e90611dea565b906123e3565b90508781106119855760405162461bcd60e51b815260040161023e90613284565b6119ba6001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000006000611c84565b6119ee6001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000008b611c84565b60608715611ac6576040805160038082526080820190925290602082016060803683370190505090508b81600081518110611a2557fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611a7357fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508a81600281518110611aa157fe5b60200260200101906001600160a01b031690816001600160a01b031681525050611b43565b60408051600280825260608201835290916020830190803683370190505090508b81600081518110611af457fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508a81600181518110611b2257fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6040516338ed173960e01b81526060906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906338ed173990611b9a908e908e90879030904290600401613455565b600060405180830381600087803b158015611bb457600080fd5b505af1158015611bc8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611bf09190810190612da6565b90507fa078c4190abe07940190effc1846be0ccf03ad6007bc9e93f9697d0b460befbb8d8d83600081518110611c2257fe5b602002602001015184600186510381518110611c3a57fe5b6020026020010151604051611c52949392919061308a565b60405180910390a180600182510381518110611c6a57fe5b602002602001015197505050505050505095945050505050565b801580611d0c5750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e90611cba903090869060040161304c565b60206040518083038186803b158015611cd257600080fd5b505afa158015611ce6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0a9190612f64565b155b611d285760405162461bcd60e51b815260040161023e906133a6565b611d7e8363095ea7b360e01b8484604051602401611d479291906130f4565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612455565b505050565b600061151583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061253a565b6000828201838110156115155760405162461bcd60e51b815260040161023e90613218565b600082611df95750600061179b565b82820282848281611e0657fe5b04146115155760405162461bcd60e51b815260040161023e906132b9565b600061151583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612566565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611ea157600080fd5b505afa158015611eb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed99190612fbd565b60ff1692915050565b600080611f027310f7fc1f91ba351f9c629c5947ad69bd03c05b96612344565b90506000611f0f86612344565b9050611f31670de0b6b3a7640000610f7d8461147c600a89900a838b88611dea565b9695505050505050565b6040805160028082526060828101909352829182918160200160208202803683370190505090508581600081518110611f7057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508481600181518110611f9e57fe5b6001600160a01b0392909216602092830291909101820152604080516003808252608082019092526060928392839291820183803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b03161415801561204f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614155b156121bb57888160008151811061206257fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106120b057fe5b60200260200101906001600160a01b031690816001600160a01b03168152505087816002815181106120de57fe5b6001600160a01b0392831660209182029290920101526040516307c0329d60e21b81527f000000000000000000000000000000000000000000000000000000000000000090911690631f00ca749061213c908a90859060040161343c565b60006040518083038186803b15801561215457600080fd5b505afa92505050801561218957506040513d6000823e601f3d908101601f191682016040526121869190810190612da6565b60015b6121b3576040805160038082526080820190925290602082016060803683370190505091506121b6565b91505b6121dd565b6040805160038082526080820190925290602082016060803683370190505091505b6040516307c0329d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631f00ca749061222b908a90889060040161343c565b60006040518083038186803b15801561224357600080fd5b505afa92505050801561227857506040513d6000823e601f3d908101601f191682016040526122759190810190612da6565b60015b6122895790945092506122f0915050565b8093508360008151811061229957fe5b6020026020010151836000815181106122ae57fe5b60200260200101511080156122d85750826000815181106122cb57fe5b6020026020010151600014155b6122e35783856122e6565b82825b9650965050505050505b935093915050565b6000816040015160ff16826020015114801561231657506020820151155b1592915050565b61233e846323b872dd60e01b858585604051602401611d4793929190613066565b50505050565b60405163b3596f0760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b3596f0790612393908590600401613038565b60206040518083038186803b1580156123ab57600080fd5b505afa1580156123bf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179b9190612f64565b60008215806123f0575081155b156123fd5750600061179b565b81611388198161240957fe5b0483111560405180604001604052806002815260200161068760f31b815250906124465760405162461bcd60e51b815260040161023e9190613168565b50506127109102611388010490565b612467826001600160a01b031661259d565b6124835760405162461bcd60e51b815260040161023e906133fc565b60006060836001600160a01b03168360405161249f919061301c565b6000604051808303816000865af19150503d80600081146124dc576040519150601f19603f3d011682016040523d82523d6000602084013e6124e1565b606091505b5091509150816125035760405162461bcd60e51b815260040161023e9061324f565b80511561233e578080602001905181019061251e9190612df4565b61233e5760405162461bcd60e51b815260040161023e9061335c565b6000818484111561255e5760405162461bcd60e51b815260040161023e9190613168565b505050900390565b600081836125875760405162461bcd60e51b815260040161023e9190613168565b50600083858161259357fe5b0495945050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906125d157508115155b949350505050565b6040518060a0016040528060608152602001606081526020016060815260200161260161271f565b8152602001606081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001606081525090565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b6040518060c0016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518061018001604052806126c861274e565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6040518060200160405280600081525090565b805161179b81613538565b60008083601f84011261277d578182fd5b5081356001600160401b03811115612793578182fd5b60208301915083602080830285010111156127ad57600080fd5b9250929050565b600082601f8301126127c4578081fd5b81516127d76127d2826134ed565b6134c7565b8181529150602080830190848101818402860182018710156127f857600080fd5b60005b8481101561282057815161280e81613538565b845292820192908201906001016127fb565b505050505092915050565b600082601f83011261283b578081fd5b81516128496127d2826134ed565b81815291506020808301908481018184028601820187101561286a57600080fd5b60005b8481101561282057815161288081613550565b8452928201929082019060010161286d565b600082601f8301126128a2578081fd5b81516128b06127d2826134ed565b8181529150602080830190848101818402860182018710156128d157600080fd5b60005b84811015612820578151845292820192908201906001016128d4565b60008083601f840112612901578182fd5b5081356001600160401b03811115612917578182fd5b60208301915083602060a0830285010111156127ad57600080fd5b600082601f830112612942578081fd5b81516129506127d2826134ed565b81815291506020808301908481018184028601820187101561297157600080fd5b60005b848110156128205781516129878161355e565b84529282019290820190600101612974565b6000602082840312156129aa578081fd5b6129b460206134c7565b9151825250919050565b80516fffffffffffffffffffffffffffffffff8116811461179b57600080fd5b805164ffffffffff8116811461179b57600080fd5b805161179b8161355e565b600060208284031215612a0f578081fd5b813561151581613538565b60008060008060008060008060008060008060c08d8f031215612a3b578788fd5b6001600160401b038d351115612a4f578788fd5b612a5c8e8e358f0161276c565b909c509a506001600160401b0360208e01351115612a78578788fd5b612a888e60208f01358f0161276c565b909a5098506001600160401b0360408e01351115612aa4578788fd5b612ab48e60408f01358f0161276c565b90985096506001600160401b0360608e01351115612ad0578586fd5b612ae08e60608f01358f0161276c565b90965094506001600160401b0360808e01351115612afc578384fd5b612b0c8e60808f01358f016128f0565b90945092506001600160401b0360a08e01351115612b28578081fd5b612b388e60a08f01358f0161276c565b81935080925050509295989b509295989b509295989b565b600080600080600080600080600060a08a8c031215612b6d578283fd5b89356001600160401b0380821115612b83578485fd5b612b8f8d838e0161276c565b909b50995060208c0135915080821115612ba7578485fd5b612bb38d838e0161276c565b909950975060408c0135915080821115612bcb578485fd5b612bd78d838e0161276c565b909750955060608c01359150612bec82613538565b90935060808b01359080821115612c01578384fd5b818c0191508c601f830112612c14578384fd5b813581811115612c22578485fd5b8d6020828501011115612c33578485fd5b6020830194508093505050509295985092959850929598565b60008060008060008060008060006101208a8c031215612c6a578283fd5b89516001600160401b0380821115612c80578485fd5b612c8c8d838e016127b4565b9a5060208c0151915080821115612ca1578485fd5b612cad8d838e01612892565b995060408c0151915080821115612cc2578485fd5b612cce8d838e0161282b565b985060608c0151915080821115612ce3578485fd5b612cef8d838e01612892565b975060808c0151915080821115612d04578485fd5b612d108d838e01612892565b965060a08c0151915080821115612d25578485fd5b612d318d838e01612932565b955060c08c0151915080821115612d46578485fd5b612d528d838e01612892565b945060e08c0151915080821115612d67578384fd5b612d738d838e01612892565b93506101008c0151915080821115612d89578283fd5b50612d968c828d0161282b565b9150509295985092959850929598565b600060208284031215612db7578081fd5b81516001600160401b03811115612dcc578182fd5b6125d184828501612892565b600060208284031215612de9578081fd5b813561151581613550565b600060208284031215612e05578081fd5b815161151581613550565b600060a08284031215612e21578081fd5b612e2b60a06134c7565b82358152602083013560208201526040830135612e478161355e565b6040820152606083810135908201526080928301359281019290925250919050565b6000610180808385031215612e7c578182fd5b612e85816134c7565b9050612e918484612999565b8152612ea084602085016129be565b6020820152612eb284604085016129be565b6040820152612ec484606085016129be565b6060820152612ed684608085016129be565b6080820152612ee88460a085016129be565b60a0820152612efa8460c085016129de565b60c0820152612f0c8460e08501612761565b60e0820152610100612f2085828601612761565b90820152610120612f3385858301612761565b90820152610140612f4685858301612761565b90820152610160612f59858583016129f3565b908201529392505050565b600060208284031215612f75578081fd5b5051919050565b600080600060608486031215612f90578081fd5b833592506020840135612fa281613538565b91506040840135612fb281613538565b809150509250925092565b600060208284031215612fce578081fd5b81516115158161355e565b6000815180845260208085019450808401835b838110156130115781516001600160a01b031687529582019590820190600101612fec565b509495945050505050565b6000825161302e81846020870161350c565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6001600160a01b03948516815260208101939093529216604082015261ffff909116606082015260800190565b901515815260200190565b600060208252825180602084015261318781604085016020870161350c565b601f01601f19169190910160400192915050565b6020808252601b908201527f43414c4c45525f4d5553545f42455f4c454e44494e475f504f4f4c0000000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b6020808252818101527f6d696e416d6f756e744f757420657863656564206d617820736c697070616765604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602080825260139082015272494e434f4e53495354454e545f504152414d5360681b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526036908201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60408201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606082015260800190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b90815260200190565b6000838252604060208301526125d16040830184612fd9565b600086825285602083015260a0604083015261347460a0830186612fd9565b6001600160a01b0394909416606083015250608001529392505050565b600086825285602083015284604083015283606083015260a060808301526134bc60a0830184612fd9565b979650505050505050565b6040518181016001600160401b03811182821017156134e557600080fd5b604052919050565b60006001600160401b03821115613502578081fd5b5060209081020190565b60005b8381101561352757818101518382015260200161350f565b8381111561233e5750506000910152565b6001600160a01b038116811461354d57600080fd5b50565b801515811461354d57600080fd5b60ff8116811461354d57600080fdfea2646970667358221220def7fdf1490df5ba55d300fb2007044d28b4d90edf7ebe22c7a7039c52ac25b764736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xFF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x920F5C84 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xCDF58CD6 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xCDF58CD6 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0xD51C9ED7 EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0xD8264920 EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1F6 JUMPI PUSH2 0xFF JUMP JUMPDEST DUP1 PUSH4 0x920F5C84 EQ PUSH2 0x174 JUMPI DUP1 PUSH4 0x9D1211BF EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0xB4DCFC77 EQ PUSH2 0x19C JUMPI DUP1 PUSH4 0xBAF7FA99 EQ PUSH2 0x1A4 JUMPI PUSH2 0xFF JUMP JUMPDEST DUP1 PUSH4 0x32E4B286 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x32E4B286 EQ PUSH2 0x154 JUMPI DUP1 PUSH4 0x38013F02 EQ PUSH2 0x15C JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x16C JUMPI PUSH2 0xFF JUMP JUMPDEST DUP1 PUSH3 0xAE3BF8 EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x40141E5 EQ PUSH2 0x119 JUMPI DUP1 PUSH4 0x542975C EQ PUSH2 0x137 JUMPI DUP1 PUSH4 0x74B2E43 EQ PUSH2 0x13F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x117 PUSH2 0x112 CALLDATASIZE PUSH1 0x4 PUSH2 0x29FE JUMP JUMPDEST PUSH2 0x209 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x121 PUSH2 0x34D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x3038 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x121 PUSH2 0x371 JUMP JUMPDEST PUSH2 0x147 PUSH2 0x395 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x3433 JUMP JUMPDEST PUSH2 0x147 PUSH2 0x39A JUMP JUMPDEST PUSH2 0x121 PUSH2 0x3A0 JUMP JUMPDEST PUSH2 0x117 PUSH2 0x3C4 JUMP JUMPDEST PUSH2 0x121 PUSH2 0x443 JUMP JUMPDEST PUSH2 0x187 PUSH2 0x182 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B50 JUMP JUMPDEST PUSH2 0x452 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x315D JUMP JUMPDEST PUSH2 0x121 PUSH2 0x71B JUMP JUMPDEST PUSH2 0x121 PUSH2 0x733 JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x1B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F7C JUMP JUMPDEST PUSH2 0x757 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3491 JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x1D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F7C JUMP JUMPDEST PUSH2 0x79D JUMP JUMPDEST PUSH2 0x117 PUSH2 0x1E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A1A JUMP JUMPDEST PUSH2 0x7B8 JUMP JUMPDEST PUSH2 0x121 PUSH2 0xB5E JUMP JUMPDEST PUSH2 0x117 PUSH2 0x204 CALLDATASIZE PUSH1 0x4 PUSH2 0x29FE JUMP JUMPDEST PUSH2 0xB82 JUMP JUMPDEST PUSH2 0x211 PUSH2 0xC38 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x247 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x32FA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB PUSH2 0x25E PUSH2 0x443 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x28A SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3038 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2DA SWAP2 SWAP1 PUSH2 0x2F64 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F7 SWAP3 SWAP2 SWAP1 PUSH2 0x30F4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x325 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x349 SWAP2 SWAP1 PUSH2 0x2DF4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x9 DUP2 JUMP JUMPDEST PUSH2 0xBB8 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x3CC PUSH2 0xC38 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x3F9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x32FA JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x49C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x319B JUMP JUMPDEST PUSH2 0x4A4 PUSH2 0x25D9 JUMP JUMPDEST PUSH2 0x4E3 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xC3C SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD MLOAD SWAP1 SWAP2 POP DUP11 EQ DUP1 ISZERO PUSH2 0x4FB JUMPI POP PUSH1 0x20 DUP2 ADD MLOAD MLOAD DUP11 EQ JUMPDEST DUP1 ISZERO PUSH2 0x50B JUMPI POP PUSH1 0x40 DUP2 ADD MLOAD MLOAD DUP11 EQ JUMPDEST DUP1 ISZERO PUSH2 0x51C JUMPI POP PUSH1 0x60 DUP2 ADD MLOAD MLOAD MLOAD DUP11 EQ JUMPDEST DUP1 ISZERO PUSH2 0x530 JUMPI POP PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x20 ADD MLOAD MLOAD DUP11 EQ JUMPDEST DUP1 ISZERO PUSH2 0x544 JUMPI POP PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x40 ADD MLOAD MLOAD DUP11 EQ JUMPDEST DUP1 ISZERO PUSH2 0x557 JUMPI POP PUSH1 0x60 DUP1 DUP3 ADD MLOAD ADD MLOAD MLOAD DUP11 EQ JUMPDEST DUP1 ISZERO PUSH2 0x56B JUMPI POP PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x80 ADD MLOAD MLOAD DUP11 EQ JUMPDEST DUP1 ISZERO PUSH2 0x57B JUMPI POP PUSH1 0x80 DUP2 ADD MLOAD MLOAD DUP11 EQ JUMPDEST PUSH2 0x597 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x332F JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP11 DUP2 LT ISZERO PUSH2 0x709 JUMPI PUSH2 0x701 DUP13 DUP13 DUP4 DUP2 DUP2 LT PUSH2 0x5B1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x5C6 SWAP2 SWAP1 PUSH2 0x29FE JUMP JUMPDEST DUP4 MLOAD DUP1 MLOAD DUP5 SWAP1 DUP2 LT PUSH2 0x5D4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP13 DUP13 DUP6 DUP2 DUP2 LT PUSH2 0x5E8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP12 DUP12 DUP7 DUP2 DUP2 LT PUSH2 0x5FB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP11 DUP8 PUSH1 0x20 ADD MLOAD DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x613 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP9 PUSH1 0x40 ADD MLOAD DUP9 DUP2 MLOAD DUP2 LT PUSH2 0x62B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP12 PUSH1 0x60 ADD MLOAD PUSH1 0x0 ADD MLOAD DUP12 DUP2 MLOAD DUP2 LT PUSH2 0x652 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP12 PUSH1 0x60 ADD MLOAD PUSH1 0x20 ADD MLOAD DUP12 DUP2 MLOAD DUP2 LT PUSH2 0x673 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP12 PUSH1 0x60 ADD MLOAD PUSH1 0x40 ADD MLOAD DUP12 DUP2 MLOAD DUP2 LT PUSH2 0x694 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 PUSH1 0x60 ADD MLOAD PUSH1 0x60 ADD MLOAD DUP12 DUP2 MLOAD DUP2 LT PUSH2 0x6B8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP12 PUSH1 0x60 ADD MLOAD PUSH1 0x80 ADD MLOAD DUP12 DUP2 MLOAD DUP2 LT PUSH2 0x6D9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE POP DUP11 PUSH1 0x80 ADD MLOAD DUP11 DUP2 MLOAD DUP2 LT PUSH2 0x6F4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xCC5 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x59A JUMP JUMPDEST POP PUSH1 0x1 SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0x10F7FC1F91BA351F9C629C5947AD69BD03C05B96 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 PUSH2 0x767 PUSH2 0x260E JUMP JUMPDEST PUSH2 0x772 DUP9 DUP9 DUP12 PUSH2 0xF5F JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 SWAP1 SWAP5 ADD MLOAD SWAP3 SWAP14 SWAP2 SWAP13 POP SWAP11 POP SWAP2 SWAP9 POP SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 PUSH2 0x7AD PUSH2 0x260E JUMP JUMPDEST PUSH2 0x772 DUP9 DUP9 DUP12 PUSH2 0x151C JUMP JUMPDEST DUP11 DUP10 EQ DUP1 ISZERO PUSH2 0x7C6 JUMPI POP DUP11 DUP8 EQ JUMPDEST DUP1 ISZERO PUSH2 0x7D1 JUMPI POP DUP11 DUP6 EQ JUMPDEST DUP1 ISZERO PUSH2 0x7DC JUMPI POP DUP11 DUP4 EQ JUMPDEST PUSH2 0x7F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x332F JUMP JUMPDEST PUSH2 0x800 PUSH2 0x263D JUMP JUMPDEST PUSH1 0x0 DUP2 MSTORE JUMPDEST DUP1 MLOAD DUP13 GT ISZERO PUSH2 0xB4F JUMPI PUSH2 0x83B DUP14 DUP14 DUP4 PUSH1 0x0 ADD MLOAD DUP2 DUP2 LT PUSH2 0x821 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x836 SWAP2 SWAP1 PUSH2 0x29FE JUMP JUMPDEST PUSH2 0x16F6 JUMP JUMPDEST PUSH1 0xE0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH4 0x70A08231 SWAP1 PUSH2 0x870 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x3038 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x888 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x89C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8C0 SWAP2 SWAP1 PUSH2 0x2F64 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE DUP2 MLOAD DUP11 SWAP1 DUP11 SWAP1 DUP2 DUP2 LT PUSH2 0x8D6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD GT PUSH2 0x8FE JUMPI DUP9 DUP9 DUP3 PUSH1 0x0 ADD MLOAD DUP2 DUP2 LT PUSH2 0x8F2 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x904 JUMP JUMPDEST DUP1 PUSH1 0x20 ADD MLOAD JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE DUP1 MLOAD PUSH2 0x967 SWAP1 DUP15 SWAP1 DUP15 SWAP1 DUP2 DUP2 LT PUSH2 0x91C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x931 SWAP2 SWAP1 PUSH2 0x29FE JUMP JUMPDEST DUP3 PUSH1 0x80 ADD MLOAD CALLER DUP5 PUSH1 0x40 ADD MLOAD DUP10 DUP10 DUP8 PUSH1 0x0 ADD MLOAD DUP2 DUP2 LT PUSH2 0x94C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xA0 MUL ADD DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x962 SWAP2 SWAP1 PUSH2 0x2E10 JUMP JUMPDEST PUSH2 0x17A1 JUMP JUMPDEST PUSH2 0x9FA DUP14 DUP14 DUP4 PUSH1 0x0 ADD MLOAD DUP2 DUP2 LT PUSH2 0x97A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x98F SWAP2 SWAP1 PUSH2 0x29FE JUMP JUMPDEST DUP13 DUP13 DUP5 PUSH1 0x0 ADD MLOAD DUP2 DUP2 LT PUSH2 0x99F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x9B4 SWAP2 SWAP1 PUSH2 0x29FE JUMP JUMPDEST DUP4 PUSH1 0x40 ADD MLOAD DUP11 DUP11 DUP7 PUSH1 0x0 ADD MLOAD DUP2 DUP2 LT PUSH2 0x9C9 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP8 DUP8 DUP8 PUSH1 0x0 ADD MLOAD DUP2 DUP2 LT PUSH2 0x9E0 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x9F5 SWAP2 SWAP1 PUSH2 0x2DD8 JUMP JUMPDEST PUSH2 0x18ED JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE DUP1 MLOAD PUSH2 0xA5C SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x0 SWAP1 DUP15 SWAP1 DUP15 SWAP1 DUP2 DUP2 LT PUSH2 0xA37 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xA4C SWAP2 SWAP1 PUSH2 0x29FE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x1C84 JUMP JUMPDEST PUSH2 0xA95 PUSH32 0x0 DUP3 PUSH1 0x60 ADD MLOAD DUP14 DUP14 DUP6 PUSH1 0x0 ADD MLOAD DUP2 DUP2 LT PUSH2 0xA37 JUMPI INVALID JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8EDA9DF DUP13 DUP13 DUP5 PUSH1 0x0 ADD MLOAD DUP2 DUP2 LT PUSH2 0xAD4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xAE9 SWAP2 SWAP1 PUSH2 0x29FE JUMP JUMPDEST DUP4 PUSH1 0x60 ADD MLOAD CALLER PUSH1 0x0 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB10 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3130 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB3E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP DUP3 MLOAD PUSH1 0x1 ADD DUP4 MSTORE POP PUSH2 0x805 SWAP1 POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0xB8A PUSH2 0xC38 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xBB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x32FA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xBDD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x31D2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0xC44 PUSH2 0x25D9 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x60 DUP11 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xC66 SWAP2 SWAP1 PUSH2 0x2C4C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP1 DUP3 ADD DUP4 MSTORE SWAP11 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP11 SWAP1 SWAP11 MSTORE DUP1 DUP3 ADD SWAP9 SWAP1 SWAP9 MSTORE DUP1 MLOAD SWAP10 DUP11 ADD DUP2 MSTORE SWAP6 DUP10 MSTORE SWAP7 DUP9 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP3 DUP7 ADD MSTORE PUSH1 0x60 DUP1 DUP7 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 DUP3 ADD MSTORE SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xCCD PUSH2 0x2675 JUMP JUMPDEST PUSH2 0xCD6 DUP11 PUSH2 0x16F6 JUMP JUMPDEST PUSH1 0xE0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 DUP3 MSTORE PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH4 0x70A08231 SWAP1 PUSH2 0xD07 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x3038 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD33 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD57 SWAP2 SWAP1 PUSH2 0x2F64 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE DUP4 DUP1 ISZERO PUSH2 0xD78 JUMPI POP PUSH1 0x20 DUP2 ADD MLOAD DUP9 SWAP1 PUSH2 0xD75 SWAP1 DUP10 PUSH2 0x1D83 JUMP JUMPDEST GT ISZERO JUMPDEST PUSH2 0xD82 JUMPI DUP8 PUSH2 0xD91 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH2 0xD91 SWAP1 DUP9 PUSH2 0x1D83 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0xDA7 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP9 DUP7 PUSH2 0x18ED JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0xDE1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH32 0x0 PUSH1 0x0 PUSH2 0x1C84 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD MLOAD PUSH2 0xE1C SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP1 PUSH32 0x0 SWAP1 PUSH2 0x1C84 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xE8EDA9DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH4 0xE8EDA9DF SWAP2 PUSH2 0xE72 SWAP2 DUP14 SWAP2 DUP12 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x3130 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xEB7 DUP8 DUP10 PUSH2 0x1DC5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD PUSH2 0xECB SWAP1 DUP9 PUSH2 0x1DC5 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE DUP2 MLOAD PUSH2 0xEE3 SWAP2 DUP13 SWAP2 SWAP1 DUP10 SWAP1 DUP8 PUSH2 0x17A1 JUMP JUMPDEST PUSH2 0xF18 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH32 0x0 PUSH1 0x0 PUSH2 0x1C84 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD PUSH2 0xF53 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP1 PUSH32 0x0 SWAP1 PUSH2 0x1C84 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xF67 PUSH2 0x260E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF8A PUSH2 0xF83 PUSH2 0x2710 PUSH2 0xF7D DUP7 PUSH1 0x9 PUSH2 0x1DEA JUMP JUMPDEST SWAP1 PUSH2 0x1E24 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x1D83 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1056 JUMPI PUSH1 0x0 PUSH2 0xFB1 DUP7 PUSH2 0x1E66 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP PUSH1 0x60 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP7 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xFE5 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP5 DUP2 MSTORE SWAP1 DUP2 ADD PUSH2 0x1023 DUP8 PUSH2 0xF7D DUP8 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1DEA JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1033 DUP10 DUP9 DUP7 PUSH2 0x1EE2 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1043 DUP10 DUP7 DUP7 PUSH2 0x1EE2 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP SWAP4 POP POP POP POP PUSH2 0x1515 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1084 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP5 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x10B2 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP3 ADD DUP4 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0x1163 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x12CF JUMPI DUP9 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1176 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x11C4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP8 DUP2 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x11F2 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0xD06CA61F PUSH1 0xE0 SHL DUP2 MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xD06CA61F SWAP1 PUSH2 0x1250 SWAP1 DUP9 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x343C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x129D JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x129A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2DA6 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x12C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP2 POP PUSH2 0x12CA JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x12F1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP2 POP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD06CA61F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xD06CA61F SWAP1 PUSH2 0x1342 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x343C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x135A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x138F JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x138C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2DA6 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x13CF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD DUP4 MSTORE SWAP1 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP4 POP DUP3 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x13C0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x1435 JUMP JUMPDEST DUP1 SWAP5 POP DUP5 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x13DF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x13F4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT PUSH2 0x141B JUMPI DUP5 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x140E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1431 JUMP JUMPDEST DUP4 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x1428 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD JUMPDEST SWAP2 POP POP JUMPDEST PUSH1 0x0 PUSH2 0x1440 DUP12 PUSH2 0x1E66 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x144D DUP12 PUSH2 0x1E66 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1482 PUSH2 0x1462 DUP6 PUSH1 0xA DUP7 SWAP1 EXP PUSH2 0x1DEA JUMP JUMPDEST PUSH2 0xF7D PUSH1 0xA DUP6 SWAP1 EXP PUSH2 0x147C DUP14 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1DEA JUMP JUMPDEST SWAP1 PUSH2 0x1DEA JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14A6 DUP16 DUP15 DUP8 PUSH2 0x1EE2 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14B6 DUP15 DUP8 DUP7 PUSH2 0x1EE2 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO PUSH2 0x14E9 JUMPI DUP9 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x14CE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 EQ PUSH2 0x14E2 JUMPI DUP7 PUSH2 0x14E4 JUMP JUMPDEST DUP10 JUMPDEST PUSH2 0x1507 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD DUP4 MSTORE SWAP1 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP POP JUMPDEST SWAP1 MSTORE SWAP10 POP POP POP POP POP POP POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1524 PUSH2 0x260E JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x15FA JUMPI PUSH1 0x0 PUSH2 0x155B PUSH2 0x1554 PUSH2 0x2710 PUSH2 0xF7D DUP7 PUSH1 0x9 PUSH2 0x1DEA JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x1DC5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1568 DUP7 PUSH2 0x1E66 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP PUSH1 0x60 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP7 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x159C JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP5 DUP2 MSTORE SWAP1 DUP2 ADD PUSH2 0x15DA DUP6 PUSH2 0xF7D DUP10 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1DEA JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15EA DUP10 DUP7 DUP7 PUSH2 0x1EE2 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1043 DUP10 DUP9 DUP7 PUSH2 0x1EE2 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x1608 DUP7 DUP7 DUP7 PUSH2 0x1F3B JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x1662 PUSH2 0x163F PUSH2 0x2710 PUSH2 0xF7D PUSH1 0x9 DUP8 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1629 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1DEA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x164C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1DC5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x166F DUP9 PUSH2 0x1E66 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x167C DUP9 PUSH2 0x1E66 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x16AB PUSH2 0x1691 DUP6 PUSH1 0xA DUP6 SWAP1 EXP PUSH2 0x1DEA JUMP JUMPDEST PUSH2 0xF7D PUSH1 0xA DUP7 SWAP1 EXP PUSH2 0x147C DUP13 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1DEA JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x16CF DUP13 DUP8 DUP8 PUSH2 0x1EE2 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x16DF DUP12 DUP12 DUP7 PUSH2 0x1EE2 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP6 SWAP1 SWAP6 MSTORE POP SWAP3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x16FE PUSH2 0x26B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x35EA6A75 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x35EA6A75 SWAP1 PUSH2 0x174A SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x3038 JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1763 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1777 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x179B SWAP2 SWAP1 PUSH2 0x2E69 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x17AA DUP2 PUSH2 0x22F8 JUMP JUMPDEST ISZERO PUSH2 0x182E JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD505ACCF DUP5 ADDRESS DUP5 PUSH1 0x0 ADD MLOAD DUP6 PUSH1 0x20 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH1 0x60 ADD MLOAD DUP9 PUSH1 0x80 ADD MLOAD PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17FB SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x30B3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1815 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1829 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x1843 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 ADDRESS DUP6 PUSH2 0x231D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH2 0x1893 SWAP1 DUP9 SWAP1 DUP7 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x310D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x18C1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18E5 SWAP2 SWAP1 PUSH2 0x2F64 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x18F9 DUP8 PUSH2 0x1E66 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1906 DUP8 PUSH2 0x1E66 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1913 DUP10 PUSH2 0x2344 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1920 DUP10 PUSH2 0x2344 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1964 PUSH2 0x1935 PUSH2 0x2710 PUSH2 0xBB8 PUSH2 0x1D83 JUMP JUMPDEST PUSH2 0x195E PUSH2 0x1946 DUP6 PUSH1 0xA DUP11 SWAP1 EXP PUSH2 0x1DEA JUMP JUMPDEST PUSH2 0xF7D PUSH2 0x1957 DUP9 PUSH1 0xA DUP12 SWAP1 EXP PUSH2 0x1DEA JUMP JUMPDEST DUP15 SWAP1 PUSH2 0x1DEA JUMP JUMPDEST SWAP1 PUSH2 0x23E3 JUMP JUMPDEST SWAP1 POP DUP8 DUP2 LT PUSH2 0x1985 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x3284 JUMP JUMPDEST PUSH2 0x19BA PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH32 0x0 PUSH1 0x0 PUSH2 0x1C84 JUMP JUMPDEST PUSH2 0x19EE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH32 0x0 DUP12 PUSH2 0x1C84 JUMP JUMPDEST PUSH1 0x60 DUP8 ISZERO PUSH2 0x1AC6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP12 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1A25 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1A73 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP11 DUP2 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x1AA1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH2 0x1B43 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD DUP4 MSTORE SWAP1 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP12 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1AF4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP11 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1B22 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x38ED1739 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x38ED1739 SWAP1 PUSH2 0x1B9A SWAP1 DUP15 SWAP1 DUP15 SWAP1 DUP8 SWAP1 ADDRESS SWAP1 TIMESTAMP SWAP1 PUSH1 0x4 ADD PUSH2 0x3455 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1BC8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1BF0 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2DA6 JUMP JUMPDEST SWAP1 POP PUSH32 0xA078C4190ABE07940190EFFC1846BE0CCF03AD6007BC9E93F9697D0B460BEFBB DUP14 DUP14 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1C22 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 PUSH1 0x1 DUP7 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1C3A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x1C52 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x308A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 PUSH1 0x1 DUP3 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1C6A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP8 POP POP POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 PUSH2 0x1D0C JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x1CBA SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x304C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CE6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D0A SWAP2 SWAP1 PUSH2 0x2F64 JUMP JUMPDEST ISZERO JUMPDEST PUSH2 0x1D28 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x33A6 JUMP JUMPDEST PUSH2 0x1D7E DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1D47 SWAP3 SWAP2 SWAP1 PUSH2 0x30F4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x2455 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1515 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x253A JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1515 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x3218 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1DF9 JUMPI POP PUSH1 0x0 PUSH2 0x179B JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1E06 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x1515 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x32B9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1515 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x2566 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EB5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1ED9 SWAP2 SWAP1 PUSH2 0x2FBD JUMP JUMPDEST PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F02 PUSH20 0x10F7FC1F91BA351F9C629C5947AD69BD03C05B96 PUSH2 0x2344 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1F0F DUP7 PUSH2 0x2344 JUMP JUMPDEST SWAP1 POP PUSH2 0x1F31 PUSH8 0xDE0B6B3A7640000 PUSH2 0xF7D DUP5 PUSH2 0x147C PUSH1 0xA DUP10 SWAP1 EXP DUP4 DUP12 DUP9 PUSH2 0x1DEA JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 DUP2 ADD SWAP1 SWAP4 MSTORE DUP3 SWAP2 DUP3 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1F70 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP5 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1F9E JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP3 ADD DUP4 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0x204F JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x21BB JUMPI DUP9 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2062 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x20B0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP8 DUP2 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x20DE JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x7C0329D PUSH1 0xE2 SHL DUP2 MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x1F00CA74 SWAP1 PUSH2 0x213C SWAP1 DUP11 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x343C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2154 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x2189 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x2186 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2DA6 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x21B3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP2 POP PUSH2 0x21B6 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x21DD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP2 POP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7C0329D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x1F00CA74 SWAP1 PUSH2 0x222B SWAP1 DUP11 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x343C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x2278 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x2275 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2DA6 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2289 JUMPI SWAP1 SWAP5 POP SWAP3 POP PUSH2 0x22F0 SWAP2 POP POP JUMP JUMPDEST DUP1 SWAP4 POP DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2299 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x22AE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT DUP1 ISZERO PUSH2 0x22D8 JUMPI POP DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x22CB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 EQ ISZERO JUMPDEST PUSH2 0x22E3 JUMPI DUP4 DUP6 PUSH2 0x22E6 JUMP JUMPDEST DUP3 DUP3 JUMPDEST SWAP7 POP SWAP7 POP POP POP POP POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 ADD MLOAD PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD EQ DUP1 ISZERO PUSH2 0x2316 JUMPI POP PUSH1 0x20 DUP3 ADD MLOAD ISZERO JUMPDEST ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x233E DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1D47 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3066 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xB3596F07 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xB3596F07 SWAP1 PUSH2 0x2393 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x3038 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x23AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x179B SWAP2 SWAP1 PUSH2 0x2F64 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x23F0 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x23FD JUMPI POP PUSH1 0x0 PUSH2 0x179B JUMP JUMPDEST DUP2 PUSH2 0x1388 NOT DUP2 PUSH2 0x2409 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x2446 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP2 SWAP1 PUSH2 0x3168 JUMP JUMPDEST POP POP PUSH2 0x2710 SWAP2 MUL PUSH2 0x1388 ADD DIV SWAP1 JUMP JUMPDEST PUSH2 0x2467 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x259D JUMP JUMPDEST PUSH2 0x2483 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x33FC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x249F SWAP2 SWAP1 PUSH2 0x301C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x24DC JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x24E1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2503 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x324F JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x233E JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x251E SWAP2 SWAP1 PUSH2 0x2DF4 JUMP JUMPDEST PUSH2 0x233E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x335C JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x255E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP2 SWAP1 PUSH2 0x3168 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x2587 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP2 SWAP1 PUSH2 0x3168 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x2593 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x25D1 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2601 PUSH2 0x271F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x26C8 PUSH2 0x274E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x100 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x140 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x160 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x179B DUP2 PUSH2 0x3538 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x277D JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2793 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x27AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x27C4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x27D7 PUSH2 0x27D2 DUP3 PUSH2 0x34ED JUMP JUMPDEST PUSH2 0x34C7 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x27F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x2820 JUMPI DUP2 MLOAD PUSH2 0x280E DUP2 PUSH2 0x3538 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x27FB JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x283B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2849 PUSH2 0x27D2 DUP3 PUSH2 0x34ED JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x286A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x2820 JUMPI DUP2 MLOAD PUSH2 0x2880 DUP2 PUSH2 0x3550 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x286D JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x28A2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x28B0 PUSH2 0x27D2 DUP3 PUSH2 0x34ED JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x28D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x2820 JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x28D4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2901 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2917 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 PUSH1 0xA0 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x27AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2942 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2950 PUSH2 0x27D2 DUP3 PUSH2 0x34ED JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x2971 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x2820 JUMPI DUP2 MLOAD PUSH2 0x2987 DUP2 PUSH2 0x355E JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2974 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x29AA JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x29B4 PUSH1 0x20 PUSH2 0x34C7 JUMP JUMPDEST SWAP2 MLOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x179B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x179B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x179B DUP2 PUSH2 0x355E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A0F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1515 DUP2 PUSH2 0x3538 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP14 DUP16 SUB SLT ISZERO PUSH2 0x2A3B JUMPI DUP8 DUP9 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP14 CALLDATALOAD GT ISZERO PUSH2 0x2A4F JUMPI DUP8 DUP9 REVERT JUMPDEST PUSH2 0x2A5C DUP15 DUP15 CALLDATALOAD DUP16 ADD PUSH2 0x276C JUMP JUMPDEST SWAP1 SWAP13 POP SWAP11 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x20 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x2A78 JUMPI DUP8 DUP9 REVERT JUMPDEST PUSH2 0x2A88 DUP15 PUSH1 0x20 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x276C JUMP JUMPDEST SWAP1 SWAP11 POP SWAP9 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x2AA4 JUMPI DUP8 DUP9 REVERT JUMPDEST PUSH2 0x2AB4 DUP15 PUSH1 0x40 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x276C JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x60 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x2AD0 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x2AE0 DUP15 PUSH1 0x60 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x276C JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x2AFC JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x2B0C DUP15 PUSH1 0x80 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x28F0 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xA0 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x2B28 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x2B38 DUP15 PUSH1 0xA0 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x276C JUMP JUMPDEST DUP2 SWAP4 POP DUP1 SWAP3 POP POP POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x2B6D JUMPI DUP3 DUP4 REVERT JUMPDEST DUP10 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x2B83 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2B8F DUP14 DUP4 DUP15 ADD PUSH2 0x276C JUMP JUMPDEST SWAP1 SWAP12 POP SWAP10 POP PUSH1 0x20 DUP13 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2BA7 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2BB3 DUP14 DUP4 DUP15 ADD PUSH2 0x276C JUMP JUMPDEST SWAP1 SWAP10 POP SWAP8 POP PUSH1 0x40 DUP13 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2BCB JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2BD7 DUP14 DUP4 DUP15 ADD PUSH2 0x276C JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH1 0x60 DUP13 ADD CALLDATALOAD SWAP2 POP PUSH2 0x2BEC DUP3 PUSH2 0x3538 JUMP JUMPDEST SWAP1 SWAP4 POP PUSH1 0x80 DUP12 ADD CALLDATALOAD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x2C01 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP13 ADD SWAP2 POP DUP13 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2C14 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2C22 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP14 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2C33 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x2C6A JUMPI DUP3 DUP4 REVERT JUMPDEST DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x2C80 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2C8C DUP14 DUP4 DUP15 ADD PUSH2 0x27B4 JUMP JUMPDEST SWAP11 POP PUSH1 0x20 DUP13 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2CA1 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2CAD DUP14 DUP4 DUP15 ADD PUSH2 0x2892 JUMP JUMPDEST SWAP10 POP PUSH1 0x40 DUP13 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2CC2 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2CCE DUP14 DUP4 DUP15 ADD PUSH2 0x282B JUMP JUMPDEST SWAP9 POP PUSH1 0x60 DUP13 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2CE3 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2CEF DUP14 DUP4 DUP15 ADD PUSH2 0x2892 JUMP JUMPDEST SWAP8 POP PUSH1 0x80 DUP13 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2D04 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2D10 DUP14 DUP4 DUP15 ADD PUSH2 0x2892 JUMP JUMPDEST SWAP7 POP PUSH1 0xA0 DUP13 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2D25 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2D31 DUP14 DUP4 DUP15 ADD PUSH2 0x2932 JUMP JUMPDEST SWAP6 POP PUSH1 0xC0 DUP13 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2D46 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2D52 DUP14 DUP4 DUP15 ADD PUSH2 0x2892 JUMP JUMPDEST SWAP5 POP PUSH1 0xE0 DUP13 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2D67 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x2D73 DUP14 DUP4 DUP15 ADD PUSH2 0x2892 JUMP JUMPDEST SWAP4 POP PUSH2 0x100 DUP13 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2D89 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x2D96 DUP13 DUP3 DUP14 ADD PUSH2 0x282B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2DB7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2DCC JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x25D1 DUP5 DUP3 DUP6 ADD PUSH2 0x2892 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2DE9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1515 DUP2 PUSH2 0x3550 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E05 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1515 DUP2 PUSH2 0x3550 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E21 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x2E2B PUSH1 0xA0 PUSH2 0x34C7 JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH2 0x2E47 DUP2 PUSH2 0x355E JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x80 SWAP3 DUP4 ADD CALLDATALOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2E7C JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x2E85 DUP2 PUSH2 0x34C7 JUMP JUMPDEST SWAP1 POP PUSH2 0x2E91 DUP5 DUP5 PUSH2 0x2999 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x2EA0 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x29BE JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x2EB2 DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x29BE JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x2EC4 DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x29BE JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x2ED6 DUP5 PUSH1 0x80 DUP6 ADD PUSH2 0x29BE JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x2EE8 DUP5 PUSH1 0xA0 DUP6 ADD PUSH2 0x29BE JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x2EFA DUP5 PUSH1 0xC0 DUP6 ADD PUSH2 0x29DE JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x2F0C DUP5 PUSH1 0xE0 DUP6 ADD PUSH2 0x2761 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 PUSH2 0x2F20 DUP6 DUP3 DUP7 ADD PUSH2 0x2761 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x120 PUSH2 0x2F33 DUP6 DUP6 DUP4 ADD PUSH2 0x2761 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x140 PUSH2 0x2F46 DUP6 DUP6 DUP4 ADD PUSH2 0x2761 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x160 PUSH2 0x2F59 DUP6 DUP6 DUP4 ADD PUSH2 0x29F3 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2F75 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2F90 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2FA2 DUP2 PUSH2 0x3538 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x2FB2 DUP2 PUSH2 0x3538 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2FCE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1515 DUP2 PUSH2 0x355E JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3011 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2FEC JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x302E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x350C JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP3 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0xFFFF SWAP1 SWAP2 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x3187 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x350C JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x43414C4C45525F4D5553545F42455F4C454E44494E475F504F4F4C0000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x40 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x6D696E416D6F756E744F757420657863656564206D617820736C697070616765 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x494E434F4E53495354454E545F504152414D53 PUSH1 0x68 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x40 DUP3 ADD MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x36 SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A20617070726F76652066726F6D206E6F6E2D7A65726F PUSH1 0x40 DUP3 ADD MSTORE PUSH22 0x20746F206E6F6E2D7A65726F20616C6C6F77616E6365 PUSH1 0x50 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x25D1 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2FD9 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP3 MSTORE DUP6 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3474 PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x2FD9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP7 DUP3 MSTORE DUP6 PUSH1 0x20 DUP4 ADD MSTORE DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x34BC PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x2FD9 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x34E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x3502 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3527 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x350F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x233E JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x354D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x354D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x354D JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDE 0xF7 REVERT CALL 0x49 0xD CREATE2 0xBA SSTORE 0xD3 STOP 0xFB KECCAK256 SMOD DIV 0x4D 0x28 0xB4 0xD9 0xE 0xDF PUSH31 0xBE22C7A7039C52AC25B764736F6C634300060C003300000000000000000000 ",
              "sourceMap": "512:10473:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19152:121:1;;;;;;:::i;:::-;;:::i;:::-;;1763:46;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;666:74:24;;;:::i;1575:60:1:-;;;:::i;:::-;;;;;;;:::i;1464:::-;;;:::i;1813:51::-;;;:::i;1610:135:11:-;;;:::i;1027:71::-;;;:::i;2317:1608:3:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1669:89:1:-;;;:::i;744:51:24:-;;;:::i;2848:482:1:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;3927:::-;;;;;;:::i;:::-;;:::i;5351:1716:3:-;;;;;;:::i;:::-;;:::i;1868:59:1:-;;;:::i;1884:226:11:-;;;;;;:::i;:::-;;:::i;19152:121:1:-;1223:12:11;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;-1:-1:-1;;;1205:67:11;;;;;;;:::i;:::-;;;;;;;;;19213:5:1::1;-1:-1:-1::0;;;;;19213:14:1::1;;19228:7;:5;:7::i;:::-;19237:30;::::0;-1:-1:-1;;;19237:30:1;;-1:-1:-1;;;;;19237:15:1;::::1;::::0;::::1;::::0;:30:::1;::::0;19261:4:::1;::::0;19237:30:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19213:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19152:121:::0;:::o;1763:46::-;;;:::o;666:74:24:-;;;:::o;1575:60:1:-;1634:1;1575:60;:::o;1464:::-;1520:4;1464:60;:::o;1813:51::-;;;:::o;1610:135:11:-;1223:12;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;-1:-1:-1;;;1205:67:11;;;;;;;:::i;:::-;1712:1:::1;1696:6:::0;;1675:40:::1;::::0;-1:-1:-1;;;;;1696:6:11;;::::1;::::0;1675:40:::1;::::0;1712:1;;1675:40:::1;1738:1;1721:19:::0;;-1:-1:-1;;;;;;1721:19:11::1;::::0;;1610:135::o;1027:71::-;1065:7;1087:6;-1:-1:-1;;;;;1087:6:11;1027:71;:::o;2317:1608:3:-;2520:4;2540:10;-1:-1:-1;;;;;2562:12:3;2540:35;;2532:75;;;;-1:-1:-1;;;2532:75:3;;;;;;;:::i;:::-;2614:31;;:::i;:::-;2648:21;2662:6;;2648:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2648:13:3;;-1:-1:-1;;;2648:21:3:i;:::-;2708:31;;:38;2614:55;;-1:-1:-1;2691:55:3;;:124;;;;-1:-1:-1;2775:33:3;;;;:40;2758:57;;2691:124;:188;;;;-1:-1:-1;2844:28:3;;;;:35;2827:52;;2691:188;:257;;;;-1:-1:-1;2908:26:3;;;;:33;:40;2891:57;;2691:257;:328;;;;-1:-1:-1;2977:26:3;;;;:35;;;:42;2960:59;;2691:328;:392;;;;-1:-1:-1;3048:26:3;;;;:28;;;:35;3031:52;;2691:392;:456;;;;-1:-1:-1;3112:26:3;;;;;:28;;:35;3095:52;;2691:456;:520;;;;-1:-1:-1;3176:26:3;;;;:28;;;:35;3159:52;;2691:520;:580;;;;-1:-1:-1;3240:24:3;;;;:31;3223:48;;2691:580;2676:630;;;;-1:-1:-1;;;2676:630:3;;;;;;;:::i;:::-;3318:9;3313:590;3333:17;;;3313:590;;;3365:531;3389:6;;3396:1;3389:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;3408:31;;:34;;3440:1;;3408:34;;;;;;;;;;;;3452:7;;3460:1;3452:10;;;;;;;;;;;;;3472:8;;3481:1;3472:11;;;;;;;;;;;;;3493:9;3512:13;:33;;;3546:1;3512:36;;;;;;;;;;;;;;3558:13;:28;;;3587:1;3558:31;;;;;;;;;;;;;;3599:252;;;;;;;;3626:13;:26;;;:33;;;3660:1;3626:36;;;;;;;;;;;;;;3599:252;;;;3674:13;:26;;;:35;;;3710:1;3674:38;;;;;;;;;;;;;;3599:252;;;;3724:13;:26;;;:28;;;3753:1;3724:31;;;;;;;;;;;;;;3599:252;;;;;;3767:13;:26;;;:28;;;3796:1;3767:31;;;;;;;;;;;;;;3599:252;;;;3810:13;:26;;;:28;;;3839:1;3810:31;;;;;;;;;;;;;;3599:252;;;3861:13;:24;;;3886:1;3861:27;;;;;;;;;;;;;;3365:14;:531::i;:::-;3352:3;;3313:590;;;-1:-1:-1;3916:4:3;;2317:1608;-1:-1:-1;;;;;;;;;;;2317:1608:3:o;1669:89:1:-;1716:42;1669:89;:::o;744:51:24:-;;;:::o;2848:482:1:-;2999:7;3014;3029;3044;3059:16;3090:25;;:::i;:::-;3118:51;3137:9;3148:10;3160:8;3118:18;:51::i;:::-;3191:24;;3223:21;;;;3252:19;;;;3279:20;;;;3307:12;;;;;3191:24;;3223:21;;-1:-1:-1;3252:19:1;-1:-1:-1;3279:20:1;;-1:-1:-1;3307:12:1;-1:-1:-1;2848:482:1;-1:-1:-1;;;;;2848:482:1:o;3927:::-;4078:7;4093;4108;4123;4138:16;4169:25;;:::i;:::-;4197:51;4215:9;4226:10;4238:9;4197:17;:51::i;5351:1716:3:-;5657:54;;;:119;;;;-1:-1:-1;5723:53:3;;;5657:119;:187;;;;-1:-1:-1;5788:56:3;;;5657:187;:248;;;;-1:-1:-1;5856:49:3;;;5657:248;5642:298;;;;-1:-1:-1;;;5642:298:3;;;;;;;:::i;:::-;5947:35;;:::i;:::-;6003:1;5994:10;;5989:1074;6006:6;;:35;-1:-1:-1;5989:1074:3;;;6075:44;6091:19;;6111:4;:6;;;6091:27;;;;;;;;;;;;;;;;;;;;:::i;:::-;6075:15;:44::i;:::-;:58;;;-1:-1:-1;;;;;6061:72:3;:11;;;:72;;;6172:41;;-1:-1:-1;;;6172:41:3;;:29;;:41;;6202:10;;6172:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6142:27;;;:71;;;6258:6;;6241:16;;;;:24;;;;;;;;;;;;;:54;:127;;6344:16;;6361:4;:6;;;6344:24;;;;;;;;;;;;;6241:127;;;6306:4;:27;;;6241:127;6221:17;;;:147;6418:6;;6377:154;;6398:19;;;;:27;;;;;;;;;;;;;;;;;;;;:::i;:::-;6435:4;:11;;;6456:10;6476:4;:17;;;6503:12;;6516:4;:6;;;6503:20;;;;;;;;;;;;6377:154;;;;;;;;;;:::i;:::-;:11;:154::i;:::-;6562:197;6597:19;;6617:4;:6;;;6597:27;;;;;;;;;;;;;;;;;;;;:::i;:::-;6634:17;;6652:4;:6;;;6634:25;;;;;;;;;;;;;;;;;;;;:::i;:::-;6669:4;:17;;;6696:19;;6716:4;:6;;;6696:27;;;;;;;;;;;;;6733:10;;6744:4;:6;;;6733:18;;;;;;;;;;;;;;;;;;;;:::i;:::-;6562:25;:197::i;:::-;6540:19;;;:219;6822:6;;6797:71;;6851:12;;6866:1;;6804:17;;;;:25;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6797:45:3;;:71;:45;:71::i;:::-;6876:89;6930:12;6945:4;:19;;;6883:17;;6901:4;:6;;;6883:25;;;;;;6876:89;6973:12;-1:-1:-1;;;;;6973:20:3;;6994:17;;7012:4;:6;;;6994:25;;;;;;;;;;;;;;;;;;;;:::i;:::-;7021:4;:19;;;7042:10;7054:1;6973:83;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6043:8:3;;;;;;-1:-1:-1;5989:1074:3;;-1:-1:-1;5989:1074:3;;5351:1716;;;;;;;;;;;;;:::o;1868:59:1:-;;;:::o;1884:226:11:-;1223:12;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;-1:-1:-1;;;1205:67:11;;;;;;;:::i;:::-;-1:-1:-1;;;;;1968:22:11;::::1;1960:73;;;;-1:-1:-1::0;;;1960:73:11::1;;;;;;;:::i;:::-;2065:6;::::0;;2044:38:::1;::::0;-1:-1:-1;;;;;2044:38:11;;::::1;::::0;2065:6;::::1;::::0;2044:38:::1;::::0;::::1;2088:6;:17:::0;;-1:-1:-1;;;;;;2088:17:11::1;-1:-1:-1::0;;;;;2088:17:11;;;::::1;::::0;;;::::1;::::0;;1884:226::o;587:98:7:-;670:10;587:98;:::o;10243:740:3:-;10310:17;;:::i;:::-;10343:34;10385:36;10429:28;10465:29;10502:25;10535:16;10559:18;10585;10611:24;10670:6;10650:135;;;;;;;;;;;;:::i;:::-;10805:173;;;;;;;;;;;;;;;;;;;;;;;;;;;10905:45;;;;;;;;;;;;;;;;;;;;;10805:173;10905:45;;;;;;;;;;;;;;;10805:173;;;;;;;;;;;;10243:740;-1:-1:-1;;;;;;;;;;;10243:740:3:o;7960:1359::-;8233:34;;:::i;:::-;8288:26;8304:9;8288:15;:26::i;:::-;:40;;;-1:-1:-1;;;;;8274:54:3;;;;8365:40;;-1:-1:-1;;;8365:40:3;;:29;;:40;;8395:9;;8365:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8335:27;;;:70;8431:14;:68;;;;-1:-1:-1;8449:27:3;;;;8493:6;;8449:40;;8481:7;8449:31;:40::i;:::-;:50;;8431:68;:132;;8557:6;8431:132;;;8508:27;;;;:40;;8540:7;8508:31;:40::i;:::-;8411:17;;;:152;;;8592:132;;8625:9;;8642:7;;8682:18;8708:10;8592:25;:132::i;:::-;8570:19;;;:154;8758:53;-1:-1:-1;;;;;8758:27:3;;8794:12;8809:1;8758:27;:53::i;:::-;8868:19;;;;8817:71;;-1:-1:-1;;;;;8817:27:3;;;8853:12;;8817:27;:71::i;:::-;8924:19;;;;8894:64;;-1:-1:-1;;;8894:64:3;;-1:-1:-1;;;;;8894:12:3;:20;;;;:64;;8915:7;;8945:9;;8956:1;;8894:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8986:19;8997:7;8986:6;:10;;:19;;;;:::i;:::-;8965:18;;;:40;9031:17;;;;:30;;9053:7;9031:21;:30::i;:::-;9011:17;;;:50;;;9091:11;;9068:82;;9080:9;;9091:11;9104:9;;9134:15;9068:11;:82::i;:::-;9181:55;-1:-1:-1;;;;;9181:29:3;;9219:12;9234:1;9181:29;:55::i;:::-;9295:18;;;;9242:72;;-1:-1:-1;;;;;9242:29:3;;;9280:12;;9242:29;:72::i;:::-;7960:1359;;;;;;;;;;:::o;11894:2493:1:-;12018:17;;:::i;:::-;12074:21;12098:62;12111:48;12153:5;12111:37;:8;1634:1;12111:12;:37::i;:::-;:41;;:48::i;:::-;12098:8;;:12;:62::i;:::-;12074:86;;12184:10;-1:-1:-1;;;;;12171:23:1;:9;-1:-1:-1;;;;;12171:23:1;;12167:435;;;12204:23;12230;12243:9;12230:12;:23::i;:::-;12285:16;;;12299:1;12285:16;;;;;;;;;12204:49;;-1:-1:-1;12261:21:1;;12285:16;;;;;;;;;;;;-1:-1:-1;12285:16:1;12261:40;;12319:9;12309:4;12314:1;12309:7;;;;;;;;-1:-1:-1;;;;;12309:19:1;;;:7;;;;;;;;;;:19;12352:243;;;;;;;;;;;;;;;12399:39;12429:8;12399:25;12374:13;12417:6;12399:17;:25::i;:39::-;12352:243;;;;12450:51;12464:9;12475:8;12485:15;12450:13;:51::i;:::-;12352:243;;;;12513:56;12527:9;12538:13;12553:15;12513:13;:56::i;:::-;12352:243;;;;12581:4;12352:243;;;12337:258;;;;;;;12167:435;12638:16;;;12652:1;12638:16;;;12608:27;12638:16;;;;;12608:27;12638:16;;;;;;;;;;-1:-1:-1;12638:16:1;12608:46;;12676:9;12660:10;12671:1;12660:13;;;;;;;;;;;;;:25;-1:-1:-1;;;;;12660:25:1;;;-1:-1:-1;;;;;12660:25:1;;;;;12707:10;12691;12702:1;12691:13;;;;;;;;-1:-1:-1;;;;;12691:26:1;;;;:13;;;;;;;;;;:26;12836:16;;;12850:1;12836:16;;;;;;;;;12724:35;;;;;;12836:16;;;12724:35;;12836:16;;;;;-1:-1:-1;12836:16:1;12804:48;;12875:12;-1:-1:-1;;;;;12862:25:1;:9;-1:-1:-1;;;;;12862:25:1;;;:55;;;;;12905:12;-1:-1:-1;;;;;12891:26:1;:10;-1:-1:-1;;;;;12891:26:1;;;12862:55;12858:473;;;12945:9;12927:12;12940:1;12927:15;;;;;;;;;;;;;:27;-1:-1:-1;;;;;12927:27:1;;;-1:-1:-1;;;;;12927:27:1;;;;;12980:12;12962;12975:1;12962:15;;;;;;;;;;;;;:30;-1:-1:-1;;;;;12962:30:1;;;-1:-1:-1;;;;;12962:30:1;;;;;13018:10;13000:12;13013:1;13000:15;;;;;;;;-1:-1:-1;;;;;13000:28:1;;;:15;;;;;;;;;:28;13041:57;;-1:-1:-1;;;13041:57:1;;:14;:28;;;;;;:57;;13070:13;;13085:12;;13041:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13041:57:1;;;;;;;;;;;;:::i;:::-;;;13037:233;;13245:16;;;13259:1;13245:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13245:16:1;13227:34;;13037:233;;;13186:15;-1:-1:-1;13037:233:1;12858:473;;;13308:16;;;13322:1;13308:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13308:16:1;13290:34;;12858:473;13368:55;;-1:-1:-1;;;13368:55:1;;13337:21;;-1:-1:-1;;;;;13368:14:1;:28;;;;:55;;13397:13;;13412:10;;13368:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13368:55:1;;;;;;;;;;;;:::i;:::-;;;13364:393;;13692:16;;;13706:1;13692:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13692:16:1;13671:37;;13732:15;13748:1;13732:18;;;;;;;;;;;;;;13716:34;;13364:393;;;13506:13;13485:34;;13566:18;13585:1;13566:21;;;;;;;;;;;;;;13545:15;13561:1;13545:18;;;;;;;;;;;;;;:42;13544:105;;13628:18;13647:1;13628:21;;;;;;;;;;;;;;13544:105;;;13599:15;13615:1;13599:18;;;;;;;;;;;;;;13544:105;13528:121;;13424:232;13364:393;13763:25;13791:23;13804:9;13791:12;:23::i;:::-;13763:51;;13820:26;13849:24;13862:10;13849:12;:24::i;:::-;13820:53;-1:-1:-1;13880:21:1;13910:115;13977:40;:13;13995:2;:21;;;13977:17;:40::i;:::-;13910:53;13940:2;:22;;;13910:25;:13;13928:6;13910:17;:25::i;:::-;:29;;:53::i;:115::-;13880:145;;14045:337;;;;;;;;14065:13;14045:337;;;;14088:13;14045:337;;;;14111:53;14125:9;14136:8;14146:17;14111:13;:53::i;:::-;14045:337;;;;14174:60;14188:10;14200:13;14215:18;14174:13;:60::i;:::-;14045:337;;;;14245:18;;14244:130;;14304:18;14323:1;14304:21;;;;;;;;;;;;;;14287:13;:38;14286:88;;14362:12;14286:88;;;14339:10;14286:88;14244:130;;;14267:16;;;14281:1;14267:16;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14244:130:1;14045:337;;14032:350;-1:-1:-1;;;;;;;;;;11894:2493:1;;;;;;:::o;15003:1433::-;15127:17;;:::i;:::-;15169:10;-1:-1:-1;;;;;15156:23:1;:9;-1:-1:-1;;;;;15156:23:1;;15152:541;;;15217:16;15236:64;15250:49;15293:5;15250:38;:9;1634:1;15250:13;:38::i;:49::-;15236:9;;:13;:64::i;:::-;15217:83;;15308:23;15334;15347:9;15334:12;:23::i;:::-;15389:16;;;15403:1;15389:16;;;;;;;;;15308:49;;-1:-1:-1;15365:21:1;;15389:16;;;;;;;;;;;;-1:-1:-1;15389:16:1;15365:40;;15423:9;15413:4;15418:1;15413:7;;;;;;;;-1:-1:-1;;;;;15413:19:1;;;:7;;;;;;;;;;:19;15456:230;;;;;;;;;;;;;;;15498:35;15478:8;15498:21;:9;15512:6;15498:13;:21::i;:35::-;15456:230;;;;15545:51;15559:9;15570:8;15580:15;15545:13;:51::i;:::-;15456:230;;;;15608:52;15622:9;15633;15644:15;15608:13;:52::i;15152:541::-;15700:24;15726:21;15757:54;15778:9;15789:10;15801:9;15757:20;:54::i;:::-;15699:112;;;;15844:21;15868:66;15883:50;15927:5;15883:39;1634:1;15883:7;15891:1;15883:10;;;;;;;;;;;;;;:14;;:39;;;;:::i;:50::-;15868:7;15876:1;15868:10;;;;;;;;;;;;;;:14;;:66;;;;:::i;:::-;15844:90;;15941:25;15969:23;15982:9;15969:12;:23::i;:::-;15941:51;;15998:26;16027:24;16040:10;16027:12;:24::i;:::-;15998:53;-1:-1:-1;16058:21:1;16088:111;16150:41;:13;16168:2;:22;;;16150:17;:41::i;:::-;16088:48;16114:2;:21;;;16088;:9;16102:6;16088:13;:21::i;:111::-;16058:141;;16219:212;;;;;;;;16239:13;16219:212;;;;16262:13;16219:212;;;;16285:58;16299:9;16310:13;16325:17;16285:13;:58::i;:::-;16219:212;;;;16353:56;16367:10;16379:9;16390:18;16353:13;:56::i;:::-;16219:212;;;;;;;;-1:-1:-1;16206:225:1;;15003:1433;-1:-1:-1;;;;;;;;15003:1433:1:o;9124:145::-;9187:28;;:::i;:::-;9230:34;;-1:-1:-1;;;9230:34:1;;-1:-1:-1;;;;;9230:12:1;:27;;;;:34;;9258:5;;9230:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9223:41;9124:145;-1:-1:-1;;9124:145:1:o;9585:647::-;9759:27;9770:15;9759:10;:27::i;:::-;9755:278;;;9813:13;-1:-1:-1;;;;;9796:38:1;;9844:4;9866;9881:15;:22;;;9913:15;:24;;;9947:15;:17;;;9974:15;:17;;;10001:15;:17;;;9796:230;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9755:278;10076:67;-1:-1:-1;;;;;10076:38:1;;10115:4;10129;10136:6;10076:38;:67::i;:::-;10174:53;;-1:-1:-1;;;10174:53:1;;-1:-1:-1;;;;;10174:12:1;:21;;;;:53;;10196:7;;10205:6;;10221:4;;10174:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9585:647;;;;;:::o;4781:1665::-;4967:7;4982:25;5010:29;5023:15;5010:12;:29::i;:::-;4982:57;;5045:23;5071:27;5084:13;5071:12;:27::i;:::-;5045:53;;5105:22;5130:26;5140:15;5130:9;:26::i;:::-;5105:51;;5162:20;5185:24;5195:13;5185:9;:24::i;:::-;5162:47;-1:-1:-1;5216:28:1;5253:200;5394:58;466:3:84;1520:4:1;5394:36;:58::i;:::-;5253:120;5333:39;:12;5350:2;:21;;;5333:16;:39::i;:::-;5253:66;5279:39;:14;5298:2;:19;;;5279:18;:39::i;:::-;5253:12;;:25;:66::i;:120::-;:140;;:200::i;:::-;5216:237;;5491:12;5468:20;:35;5460:80;;;;-1:-1:-1;;;5460:80:1;;;;;;;:::i;:::-;5684:63;-1:-1:-1;;;;;5684:35:1;;5728:14;5745:1;5684:35;:63::i;:::-;5753:74;-1:-1:-1;;;;;5753:35:1;;5797:14;5814:12;5753:35;:74::i;:::-;5834:21;5865:10;5861:256;;;5892:16;;;5906:1;5892:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5892:16:1;5885:23;;5926:15;5916:4;5921:1;5916:7;;;;;;;;;;;;;:25;-1:-1:-1;;;;;5916:25:1;;;-1:-1:-1;;;;;5916:25:1;;;;;5959:12;5949:4;5954:1;5949:7;;;;;;;;;;;;;:22;-1:-1:-1;;;;;5949:22:1;;;-1:-1:-1;;;;;5949:22:1;;;;;5989:13;5979:4;5984:1;5979:7;;;;;;;;;;;;;:23;-1:-1:-1;;;;;5979:23:1;;;-1:-1:-1;;;;;5979:23:1;;;;;5861:256;;;6030:16;;;6044:1;6030:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6030:16:1;6023:23;;6064:15;6054:4;6059:1;6054:7;;;;;;;;;;;;;:25;-1:-1:-1;;;;;6054:25:1;;;-1:-1:-1;;;;;6054:25:1;;;;;6097:13;6087:4;6092:1;6087:7;;;;;;;;;;;;;:23;-1:-1:-1;;;;;6087:23:1;;;-1:-1:-1;;;;;6087:23:1;;;;;5861:256;6155:153;;-1:-1:-1;;;6155:153:1;;6122:24;;-1:-1:-1;;;;;6155:14:1;:39;;;;:153;;6204:12;;6226;;6248:4;;6270;;6285:15;;6155:153;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6155:153:1;;;;;;;;;;;;:::i;:::-;6122:186;;6320:80;6328:15;6345:13;6360:7;6368:1;6360:10;;;;;;;;;;;;;;6372:7;6397:1;6380:7;:14;:18;6372:27;;;;;;;;;;;;;;6320:80;;;;;;;;;:::i;:::-;;;;;;;;6414:7;6439:1;6422:7;:14;:18;6414:27;;;;;;;;;;;;;;6407:34;;;;;;;;;4781:1665;;;;;;;:::o;1124:345:12:-;1238:10;;;1237:62;;-1:-1:-1;1254:39:12;;-1:-1:-1;;;1254:39:12;;-1:-1:-1;;;;;1254:15:12;;;;;:39;;1278:4;;1285:7;;1254:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;1237:62;1222:147;;;;-1:-1:-1;;;1222:147:12;;;;;;;:::i;:::-;1375:89;1394:5;1424:22;;;1448:7;1457:5;1401:62;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1401:62:12;;;;;;;;;;;;;;-1:-1:-1;;;;;1401:62:12;-1:-1:-1;;;;;;1401:62:12;;;;;;;;;;1375:18;:89::i;:::-;1124:345;;;:::o;1257:128:13:-;1315:7;1337:43;1341:1;1344;1337:43;;;;;;;;;;;;;;;;;:3;:43::i;851:162::-;909:7;936:5;;;955:6;;;;947:46;;;;-1:-1:-1;;;947:46:13;;;;;;;:::i;2058:419::-;2116:7;2341:6;2337:35;;-1:-1:-1;2364:1:13;2357:8;;2337:35;2390:5;;;2394:1;2390;:5;:1;2409:5;;;;;:10;2401:56;;;;-1:-1:-1;;;2401:56:13;;;;;;;:::i;2908:124::-;2966:7;2988:39;2992:1;2995;2988:39;;;;;;;;;;;;;;;;;:3;:39::i;8905:119:1:-;8965:7;9002:5;-1:-1:-1;;;;;8987:30:1;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8980:39;;;8905:119;-1:-1:-1;;8905:119:1:o;10972:309::-;11085:7;11100:19;11122:22;1716:42;11122:9;:22::i;:::-;11100:44;;11150:20;11173:18;11183:7;11173:9;:18::i;:::-;11150:41;-1:-1:-1;11205:71:1;11269:6;11205:59;11252:11;11205:42;11234:2;:12;;;11205:59;:6;11150:41;11205:10;:24::i;:71::-;11198:78;10972:309;-1:-1:-1;;;;;;10972:309:1:o;16788:1298::-;16987:16;;;17001:1;16987:16;;;16915;16987;;;;;;16915;;;;16987;;;;;;;;;;;;-1:-1:-1;16987:16:1;16957:46;;17025:9;17009:10;17020:1;17009:13;;;;;;;;;;;;;:25;-1:-1:-1;;;;;17009:25:1;;;-1:-1:-1;;;;;17009:25:1;;;;;17056:10;17040;17051:1;17040:13;;;;;;;;-1:-1:-1;;;;;17040:26:1;;;;:13;;;;;;;;;;:26;17184:16;;;17198:1;17184:16;;;;;;;;;17073:35;;;;;;17184:16;;;17073:35;;17184:16;;;;;-1:-1:-1;17184:16:1;17152:48;;17224:12;-1:-1:-1;;;;;17211:25:1;:9;-1:-1:-1;;;;;17211:25:1;;;:55;;;;;17254:12;-1:-1:-1;;;;;17240:26:1;:10;-1:-1:-1;;;;;17240:26:1;;;17211:55;17207:468;;;17294:9;17276:12;17289:1;17276:15;;;;;;;;;;;;;:27;-1:-1:-1;;;;;17276:27:1;;;-1:-1:-1;;;;;17276:27:1;;;;;17329:12;17311;17324:1;17311:15;;;;;;;;;;;;;:30;-1:-1:-1;;;;;17311:30:1;;;-1:-1:-1;;;;;17311:30:1;;;;;17367:10;17349:12;17362:1;17349:15;;;;;;;;-1:-1:-1;;;;;17349:28:1;;;:15;;;;;;;;;:28;17390:52;;-1:-1:-1;;;17390:52:1;;:14;:27;;;;;;:52;;17418:9;;17429:12;;17390:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17390:52:1;;;;;;;;;;;;:::i;:::-;;;17386:228;;17589:16;;;17603:1;17589:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17589:16:1;17571:34;;17386:228;;;17530:15;-1:-1:-1;17386:228:1;17207:468;;;17652:16;;;17666:1;17652:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17652:16:1;17634:34;;17207:468;17685:50;;-1:-1:-1;;;17685:50:1;;-1:-1:-1;;;;;17685:14:1;:27;;;;:50;;17713:9;;17724:10;;17685:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17685:50:1;;;;;;;;;;;;:::i;:::-;;;17681:401;;18045:15;;-1:-1:-1;18062:12:1;-1:-1:-1;18037:38:1;;-1:-1:-1;;18037:38:1;17681:401;17818:13;17797:34;;17877:18;17896:1;17877:21;;;;;;;;;;;;;;17856:15;17872:1;17856:18;;;;;;;;;;;;;;:42;:69;;;;;17902:15;17918:1;17902:18;;;;;;;;;;;;;;17924:1;17902:23;;17856:69;17855:160;;17984:18;18004:10;17855:160;;;17940:15;17957:12;17855:160;17840:175;;;;;;;;;16788:1298;;;;;;;:::o;10528:197::-;10605:4;10671:9;:11;;;10663:20;;10640:9;:18;;;10632:51;:87;;;;-1:-1:-1;10695:18:1;;;;10687:32;10632:87;10630:90;;10528:197;-1:-1:-1;;10528:197:1:o;904:216:12:-;1020:95;1039:5;1069:27;;;1098:4;1104:2;1108:5;1046:68;;;;;;;;;;:::i;1020:95::-;904:216;;;;:::o;8694:111:1:-;8773:27;;-1:-1:-1;;;8773:27:1;;8751:7;;-1:-1:-1;;;;;8773:6:1;:20;;;;:27;;8794:5;;8773:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;802:351:84:-;880:7;899:10;;;:29;;-1:-1:-1;913:15:84;;899:29;895:58;;;-1:-1:-1;945:1:84;938:8;;895:58;1020:10;-1:-1:-1;;1020:10:84;983:47;;;;;974:5;:56;;1038:35;;;;;;;;;;;;;-1:-1:-1;;;1038:35:84;;;959:120;;;;;-1:-1:-1;;;959:120:84;;;;;;;;:::i;:::-;-1:-1:-1;;466:3:84;1094:18;;536:21;1094:33;1093:55;;802:351::o;1473:555:12:-;1556:27;1564:5;-1:-1:-1;;;;;1556:25:12;;:27::i;:::-;1548:71;;;;-1:-1:-1;;;1548:71:12;;;;;;;:::i;:::-;1682:12;1696:23;1731:5;-1:-1:-1;;;;;1723:19:12;1743:4;1723:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1681:67;;;;1762:7;1754:52;;;;-1:-1:-1;;;1754:52:12;;;;;;;:::i;:::-;1817:17;;:21;1813:211;;1951:10;1940:30;;;;;;;;;;;;:::i;:::-;1932:85;;;;-1:-1:-1;;;1932:85:12;;;;;;;:::i;1649:189:13:-;1751:7;1782:12;1774:6;;;;1766:29;;;;-1:-1:-1;;;1766:29:13;;;;;;;;:::i;:::-;-1:-1:-1;;;1813:5:13;;;1649:189::o;3483:332::-;3585:7;3677:12;3670:5;3662:28;;;;-1:-1:-1;;;3662:28:13;;;;;;;;:::i;:::-;;3696:9;3712:1;3708;:5;;;;;;;3483:332;-1:-1:-1;;;;;3483:332:13:o;686:586:6:-;746:4;1185:20;;1032:66;1224:23;;;;;;:42;;-1:-1:-1;1251:15:6;;;1224:42;1216:51;686:586;-1:-1:-1;;;;686:586:6:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;142:134::-;220:13;;238:33;220:13;238:33;:::i;301:352::-;;;431:3;424:4;416:6;412:17;408:27;398:2;;-1:-1;;439:12;398:2;-1:-1;469:20;;-1:-1;;;;;498:30;;495:2;;;-1:-1;;531:12;495:2;575:4;567:6;563:17;551:29;;626:3;575:4;;610:6;606:17;567:6;592:32;;589:41;586:2;;;643:1;;633:12;586:2;391:262;;;;;:::o;679:722::-;;807:3;800:4;792:6;788:17;784:27;774:2;;-1:-1;;815:12;774:2;855:6;849:13;877:80;892:64;949:6;892:64;:::i;:::-;877:80;:::i;:::-;985:21;;;868:89;-1:-1;1029:4;1042:14;;;;1017:17;;;1131;;;1122:27;;;;1119:36;-1:-1;1116:2;;;1168:1;;1158:12;1116:2;1193:1;1178:217;1203:6;1200:1;1197:13;1178:217;;;226:6;220:13;238:33;265:5;238:33;:::i;:::-;1271:61;;1346:14;;;;1374;;;;1225:1;1218:9;1178:217;;;1182:14;;;;;767:634;;;;:::o;1796:713::-;;1921:3;1914:4;1906:6;1902:17;1898:27;1888:2;;-1:-1;;1929:12;1888:2;1969:6;1963:13;1991:77;2006:61;2060:6;2006:61;:::i;1991:77::-;2096:21;;;1982:86;-1:-1;2140:4;2153:14;;;;2128:17;;;2242;;;2233:27;;;;2230:36;-1:-1;2227:2;;;2279:1;;2269:12;2227:2;2304:1;2289:214;2314:6;2311:1;2308:13;2289:214;;;5791:6;5785:13;5803:30;5827:5;5803:30;:::i;:::-;2382:58;;2454:14;;;;2482;;;;2336:1;2329:9;2289:214;;2535:722;;2663:3;2656:4;2648:6;2644:17;2640:27;2630:2;;-1:-1;;2671:12;2630:2;2711:6;2705:13;2733:80;2748:64;2805:6;2748:64;:::i;2733:80::-;2841:21;;;2724:89;-1:-1;2885:4;2898:14;;;;2873:17;;;2987;;;2978:27;;;;2975:36;-1:-1;2972:2;;;3024:1;;3014:12;2972:2;3049:1;3034:217;3059:6;3056:1;3053:13;3034:217;;;6060:13;;3127:61;;3202:14;;;;3230;;;;3081:1;3074:9;3034:217;;3318:387;;;3483:3;3476:4;3468:6;3464:17;3460:27;3450:2;;-1:-1;;3491:12;3450:2;-1:-1;3521:20;;-1:-1;;;;;3550:30;;3547:2;;;-1:-1;;3583:12;3547:2;3627:4;3619:6;3615:17;3603:29;;3678:3;3627:4;3670;3662:6;3658:17;3619:6;3644:32;;3641:41;3638:2;;;3695:1;;3685:12;4855:716;;4981:3;4974:4;4966:6;4962:17;4958:27;4948:2;;-1:-1;;4989:12;4948:2;5029:6;5023:13;5051:78;5066:62;5121:6;5066:62;:::i;5051:78::-;5157:21;;;5042:87;-1:-1;5201:4;5214:14;;;;5189:17;;;5303;;;5294:27;;;;5291:36;-1:-1;5288:2;;;5340:1;;5330:12;5288:2;5365:1;5350:215;5375:6;5372:1;5369:13;5350:215;;;11125:6;11119:13;11137:31;11162:5;11137:31;:::i;:::-;5443:59;;5516:14;;;;5544;;;;5397:1;5390:9;5350:215;;7654:362;;7796:4;7784:9;7779:3;7775:19;7771:30;7768:2;;;-1:-1;;7804:12;7768:2;7832:20;7796:4;7832:20;:::i;:::-;10708:13;;7909:86;;-1:-1;7823:29;7762:254;-1:-1;7762:254::o;10352:134::-;10430:13;;44417:34;44406:46;;47719:35;;47709:2;;47768:1;;47758:12;10771:132;10848:13;;44834:12;44823:24;;47966:34;;47956:2;;48014:1;;48004:12;11043:130;11119:13;;11137:31;11119:13;11137:31;:::i;11180:241::-;;11284:2;11272:9;11263:7;11259:23;11255:32;11252:2;;;-1:-1;;11290:12;11252:2;85:6;72:20;97:33;124:5;97:33;:::i;11428:1873::-;;;;;;;;;;;;;11861:3;11849:9;11840:7;11836:23;11832:33;11829:2;;;-1:-1;;11868:12;11829:2;-1:-1;;;;;11926:17;11913:31;11953:30;11950:2;;;-1:-1;;11986:12;11950:2;12024:80;12096:7;11926:17;11913:31;12076:9;12072:22;12024:80;:::i;:::-;12006:98;;-1:-1;12006:98;-1:-1;;;;;;12169:2;12154:18;;12141:32;12182:30;12179:2;;;-1:-1;;12215:12;12179:2;12253:80;12325:7;12169:2;12158:9;12154:18;12141:32;12305:9;12301:22;12253:80;:::i;:::-;12235:98;;-1:-1;12235:98;-1:-1;;;;;;12398:2;12383:18;;12370:32;12411:30;12408:2;;;-1:-1;;12444:12;12408:2;12482:80;12554:7;12398:2;12387:9;12383:18;12370:32;12534:9;12530:22;12482:80;:::i;:::-;12464:98;;-1:-1;12464:98;-1:-1;;;;;;12627:2;12612:18;;12599:32;12640:30;12637:2;;;-1:-1;;12673:12;12637:2;12711:80;12783:7;12627:2;12616:9;12612:18;12599:32;12763:9;12759:22;12711:80;:::i;:::-;12693:98;;-1:-1;12693:98;-1:-1;;;;;;12856:3;12841:19;;12828:33;12870:30;12867:2;;;-1:-1;;12903:12;12867:2;12941:115;13048:7;12856:3;12845:9;12841:19;12828:33;13028:9;13024:22;12941:115;:::i;:::-;12923:133;;-1:-1;12923:133;-1:-1;;;;;;13121:3;13106:19;;13093:33;13135:30;13132:2;;;-1:-1;;13168:12;13132:2;13208:77;13277:7;13121:3;13110:9;13106:19;13093:33;13257:9;13253:22;13208:77;:::i;:::-;13188:97;;;;;;;;11823:1478;;;;;;;;;;;;;;:::o;13308:1335::-;;;;;;;;;;13604:3;13592:9;13583:7;13579:23;13575:33;13572:2;;;-1:-1;;13611:12;13572:2;13669:17;13656:31;-1:-1;;;;;13707:18;13699:6;13696:30;13693:2;;;-1:-1;;13729:12;13693:2;13767:80;13839:7;13830:6;13819:9;13815:22;13767:80;:::i;:::-;13749:98;;-1:-1;13749:98;-1:-1;13912:2;13897:18;;13884:32;;-1:-1;13925:30;;;13922:2;;;-1:-1;;13958:12;13922:2;13996:80;14068:7;14059:6;14048:9;14044:22;13996:80;:::i;:::-;13978:98;;-1:-1;13978:98;-1:-1;14141:2;14126:18;;14113:32;;-1:-1;14154:30;;;14151:2;;;-1:-1;;14187:12;14151:2;14225:80;14297:7;14288:6;14277:9;14273:22;14225:80;:::i;:::-;14207:98;;-1:-1;14207:98;-1:-1;14342:2;14381:22;;72:20;;-1:-1;97:33;72:20;97:33;:::i;:::-;14350:63;;-1:-1;14478:3;14463:19;;14450:33;;14492:30;;;14489:2;;;-1:-1;;14525:12;14489:2;14610:6;14599:9;14595:22;;;6251:3;6244:4;6236:6;6232:17;6228:27;6218:2;;-1:-1;;6259:12;6218:2;6302:6;6289:20;13707:18;6321:6;6318:30;6315:2;;;-1:-1;;6351:12;6315:2;6446:3;13912:2;6426:17;6387:6;6412:32;;6409:41;6406:2;;;-1:-1;;6453:12;6406:2;13912;6387:6;6383:17;14545:82;;;;;;;;13566:1077;;;;;;;;;;;:::o;14650:2502::-;;;;;;;;;;15118:3;15106:9;15097:7;15093:23;15089:33;15086:2;;;-1:-1;;15125:12;15086:2;15176:17;15170:24;-1:-1;;;;;15214:18;15206:6;15203:30;15200:2;;;-1:-1;;15236:12;15200:2;15266:89;15347:7;15338:6;15327:9;15323:22;15266:89;:::i;:::-;15256:99;;15413:2;15402:9;15398:18;15392:25;15378:39;;15214:18;15429:6;15426:30;15423:2;;;-1:-1;;15459:12;15423:2;15489:89;15570:7;15561:6;15550:9;15546:22;15489:89;:::i;:::-;15479:99;;15636:2;15625:9;15621:18;15615:25;15601:39;;15214:18;15652:6;15649:30;15646:2;;;-1:-1;;15682:12;15646:2;15712:86;15790:7;15781:6;15770:9;15766:22;15712:86;:::i;:::-;15702:96;;15856:2;15845:9;15841:18;15835:25;15821:39;;15214:18;15872:6;15869:30;15866:2;;;-1:-1;;15902:12;15866:2;15932:89;16013:7;16004:6;15993:9;15989:22;15932:89;:::i;:::-;15922:99;;16079:3;16068:9;16064:19;16058:26;16044:40;;15214:18;16096:6;16093:30;16090:2;;;-1:-1;;16126:12;16090:2;16156:89;16237:7;16228:6;16217:9;16213:22;16156:89;:::i;:::-;16146:99;;16303:3;16292:9;16288:19;16282:26;16268:40;;15214:18;16320:6;16317:30;16314:2;;;-1:-1;;16350:12;16314:2;16380:87;16459:7;16450:6;16439:9;16435:22;16380:87;:::i;:::-;16370:97;;16525:3;16514:9;16510:19;16504:26;16490:40;;15214:18;16542:6;16539:30;16536:2;;;-1:-1;;16572:12;16536:2;16602:89;16683:7;16674:6;16663:9;16659:22;16602:89;:::i;:::-;16592:99;;16749:3;16738:9;16734:19;16728:26;16714:40;;15214:18;16766:6;16763:30;16760:2;;;-1:-1;;16796:12;16760:2;16826:89;16907:7;16898:6;16887:9;16883:22;16826:89;:::i;:::-;16816:99;;16973:3;16962:9;16958:19;16952:26;16938:40;;15214:18;16990:6;16987:30;16984:2;;;-1:-1;;17020:12;16984:2;;17050:86;17128:7;17119:6;17108:9;17104:22;17050:86;:::i;:::-;17040:96;;;15080:2072;;;;;;;;;;;:::o;17159:392::-;;17299:2;17287:9;17278:7;17274:23;17270:32;17267:2;;;-1:-1;;17305:12;17267:2;17356:17;17350:24;-1:-1;;;;;17386:6;17383:30;17380:2;;;-1:-1;;17416:12;17380:2;17446:89;17527:7;17518:6;17507:9;17503:22;17446:89;:::i;17558:235::-;;17659:2;17647:9;17638:7;17634:23;17630:32;17627:2;;;-1:-1;;17665:12;17627:2;5656:6;5643:20;5668:30;5692:5;5668:30;:::i;17800:257::-;;17912:2;17900:9;17891:7;17887:23;17883:32;17880:2;;;-1:-1;;17918:12;17880:2;5791:6;5785:13;5803:30;5827:5;5803:30;:::i;18342:308::-;;18479:3;18467:9;18458:7;18454:23;18450:33;18447:2;;;-1:-1;;18486:12;18447:2;6855:20;18479:3;6855:20;:::i;:::-;10573:6;10560:20;6941:16;6934:75;7074:2;7132:9;7128:22;10560:20;7074:2;7093:5;7089:16;7082:75;7215:2;7271:9;7267:22;10975:20;11000:31;11025:5;11000:31;:::i;:::-;7215:2;7230:16;;7223:73;7354:2;7408:22;;;5912:20;7369:16;;;7362:75;7495:3;7550:22;;;5912:20;7511:16;;;7504:75;;;;-1:-1;7234:5;18441:209;-1:-1;18441:209::o;18657:324::-;;18802:3;;18790:9;18781:7;18777:23;18773:33;18770:2;;;-1:-1;;18809:12;18770:2;8226:22;18802:3;8226:22;:::i;:::-;8217:31;;8339:102;8437:3;8413:22;8339:102;:::i;:::-;8321:16;8314:128;8546:60;8602:3;8513:2;8582:9;8578:22;8546:60;:::i;:::-;8513:2;8532:5;8528:16;8521:86;8716:60;8772:3;8683:2;8752:9;8748:22;8716:60;:::i;:::-;8683:2;8702:5;8698:16;8691:86;8887:60;8943:3;8854:2;8923:9;8919:22;8887:60;:::i;:::-;8854:2;8873:5;8869:16;8862:86;9064:60;9120:3;9030;9100:9;9096:22;9064:60;:::i;:::-;9030:3;9050:5;9046:16;9039:86;9239:60;9295:3;9205;9275:9;9271:22;9239:60;:::i;:::-;9205:3;9225:5;9221:16;9214:86;9410:59;9465:3;9376;9445:9;9441:22;9410:59;:::i;:::-;9376:3;9396:5;9392:16;9385:85;9574:60;9630:3;9540;9610:9;9606:22;9574:60;:::i;:::-;9540:3;9560:5;9556:16;9549:86;9714:3;9750:60;9806:3;9714;9786:9;9782:22;9750:60;:::i;:::-;9730:18;;;9723:88;9892:3;9928:60;9984:3;9960:22;;;9928:60;:::i;:::-;9908:18;;;9901:88;10073:3;10109:60;10165:3;10141:22;;;10109:60;:::i;:::-;10089:18;;;10082:88;10229:3;10265:58;10319:3;10295:22;;;10265:58;:::i;:::-;10245:18;;;10238:86;10249:5;18764:217;-1:-1;;;18764:217::o;18988:263::-;;19103:2;19091:9;19082:7;19078:23;19074:32;19071:2;;;-1:-1;;19109:12;19071:2;-1:-1;10708:13;;19065:186;-1:-1;19065:186::o;19258:491::-;;;;19396:2;19384:9;19375:7;19371:23;19367:32;19364:2;;;-1:-1;;19402:12;19364:2;10573:6;10560:20;19454:63;;19554:2;19597:9;19593:22;72:20;97:33;124:5;97:33;:::i;:::-;19562:63;-1:-1;19662:2;19701:22;;72:20;97:33;72:20;97:33;:::i;:::-;19670:63;;;;19358:391;;;;;:::o;19756:259::-;;19869:2;19857:9;19848:7;19844:23;19840:32;19837:2;;;-1:-1;;19875:12;19837:2;11125:6;11119:13;11137:31;11162:5;11137:31;:::i;20614:690::-;;20807:5;43037:12;43581:6;43576:3;43569:19;43618:4;;43613:3;43609:14;20819:93;;43618:4;20983:5;42891:14;-1:-1;21022:260;21047:6;21044:1;21041:13;21022:260;;;21108:13;;-1:-1;;;;;44617:54;20414:37;;20176:14;;;;43424;;;;509:18;21062:9;21022:260;;;-1:-1;21288:10;;20738:566;-1:-1;;;;;20738:566::o;27313:271::-;;21703:5;43037:12;21814:52;21859:6;21854:3;21847:4;21840:5;21836:16;21814:52;:::i;:::-;21878:16;;;;;27447:137;-1:-1;;27447:137::o;27591:222::-;-1:-1;;;;;44617:54;;;;20414:37;;27718:2;27703:18;;27689:124::o;28065:333::-;-1:-1;;;;;44617:54;;;20414:37;;44617:54;;28384:2;28369:18;;20414:37;28220:2;28205:18;;28191:207::o;28405:444::-;-1:-1;;;;;44617:54;;;20414:37;;44617:54;;;;28752:2;28737:18;;20414:37;28835:2;28820:18;;21494:37;;;;28588:2;28573:18;;28559:290::o;28856:556::-;-1:-1;;;;;44617:54;;;20414:37;;44617:54;;;;29232:2;29217:18;;20414:37;29315:2;29300:18;;21494:37;29398:2;29383:18;;21494:37;;;;29067:3;29052:19;;29038:374::o;29419:884::-;-1:-1;;;;;44617:54;;;20414:37;;44617:54;;;;29875:2;29860:18;;20414:37;29958:2;29943:18;;21494:37;;;;30041:2;30026:18;;21494:37;;;;44930:4;44919:16;30120:3;30105:19;;27266:35;44628:42;30189:19;;21494:37;30288:3;30273:19;;21494:37;;;;29710:3;29695:19;;29681:622::o;30310:333::-;-1:-1;;;;;44617:54;;;;20414:37;;30629:2;30614:18;;21494:37;30465:2;30450:18;;30436:207::o;30650:444::-;-1:-1;;;;;44617:54;;;20414:37;;30997:2;30982:18;;21494:37;;;;44617:54;;;31080:2;31065:18;;20414:37;30833:2;30818:18;;30804:290::o;31101:586::-;-1:-1;;;;;44617:54;;;20414:37;;31492:2;31477:18;;21494:37;;;;44617:54;;31583:2;31568:18;;20283:58;44536:6;44525:18;;;31673:2;31658:18;;22742:57;31327:3;31312:19;;31298:389::o;32271:210::-;44126:13;;44119:21;21377:34;;32392:2;32377:18;;32363:118::o;33630:310::-;;33777:2;33798:17;33791:47;22956:5;43037:12;43581:6;33777:2;33766:9;33762:18;43569:19;23050:52;23095:6;43609:14;33766:9;43609:14;33777:2;23076:5;23072:16;23050:52;:::i;:::-;47119:7;47103:14;-1:-1;;47099:28;23114:39;;;;43609:14;23114:39;;33748:192;-1:-1;;33748:192::o;33947:416::-;34147:2;34161:47;;;23390:2;34132:18;;;43569:19;23426:29;43609:14;;;23406:50;23475:12;;;34118:245::o;34370:416::-;34570:2;34584:47;;;23726:2;34555:18;;;43569:19;23762:34;43609:14;;;23742:55;-1:-1;;;23817:12;;;23810:30;23859:12;;;34541:245::o;34793:416::-;34993:2;35007:47;;;24110:2;34978:18;;;43569:19;24146:29;43609:14;;;24126:50;24195:12;;;34964:245::o;35216:416::-;35416:2;35430:47;;;35401:18;;;43569:19;24482:34;43609:14;;;24462:55;24536:12;;;35387:245::o;35639:416::-;35839:2;35853:47;;;35824:18;;;43569:19;24823:34;43609:14;;;24803:55;24877:12;;;35810:245::o;36062:416::-;36262:2;36276:47;;;25128:2;36247:18;;;43569:19;25164:34;43609:14;;;25144:55;-1:-1;;;25219:12;;;25212:25;25256:12;;;36233:245::o;36485:416::-;36685:2;36699:47;;;36670:18;;;43569:19;25543:34;43609:14;;;25523:55;25597:12;;;36656:245::o;36908:416::-;37108:2;37122:47;;;25848:2;37093:18;;;43569:19;-1:-1;;;43609:14;;;25864:42;25925:12;;;37079:245::o;37331:416::-;37531:2;37545:47;;;26176:2;37516:18;;;43569:19;26212:34;43609:14;;;26192:55;-1:-1;;;26267:12;;;26260:34;26313:12;;;37502:245::o;37754:416::-;37954:2;37968:47;;;26564:2;37939:18;;;43569:19;26600:34;43609:14;;;26580:55;-1:-1;;;26655:12;;;26648:46;26713:12;;;37925:245::o;38177:416::-;38377:2;38391:47;;;26964:2;38362:18;;;43569:19;27000:33;43609:14;;;26980:54;27053:12;;;38348:245::o;38600:222::-;21494:37;;;38727:2;38712:18;;38698:124::o;38829:481::-;;21524:5;21501:3;21494:37;39034:2;39152;39141:9;39137:18;39130:48;39192:108;39034:2;39023:9;39019:18;39286:6;39192:108;:::i;39317:816::-;;21524:5;21501:3;21494:37;21524:5;39771:2;39760:9;39756:18;21494:37;39606:3;39808:2;39797:9;39793:18;39786:48;39848:108;39606:3;39595:9;39591:19;39942:6;39848:108;:::i;:::-;-1:-1;;;;;44617:54;;;;40035:2;40020:18;;20414:37;-1:-1;40118:3;40103:19;21494:37;39840:116;39577:556;-1:-1;;;39577:556::o;40140:816::-;;21524:5;21501:3;21494:37;21524:5;40594:2;40583:9;40579:18;21494:37;21524:5;40677:2;40666:9;40662:18;21494:37;21524:5;40760:2;40749:9;40745:18;21494:37;40429:3;40797;40786:9;40782:19;40775:49;40838:108;40429:3;40418:9;40414:19;40932:6;40838:108;:::i;:::-;40830:116;40400:556;-1:-1;;;;;;;40400:556::o;40963:256::-;41025:2;41019:9;41051:17;;;-1:-1;;;;;41111:34;;41147:22;;;41108:62;41105:2;;;41183:1;;41173:12;41105:2;41025;41192:22;41003:216;;-1:-1;41003:216::o;41226:304::-;;-1:-1;;;;;41377:6;41374:30;41371:2;;;-1:-1;;41407:12;41371:2;-1:-1;41452:4;41440:17;;;41505:15;;41308:222::o;46759:268::-;46824:1;46831:101;46845:6;46842:1;46839:13;46831:101;;;46912:11;;;46906:18;46893:11;;;46886:39;46867:2;46860:10;46831:101;;;46947:6;46944:1;46941:13;46938:2;;;-1:-1;;46824:1;46994:16;;46987:27;46808:219::o;47140:117::-;-1:-1;;;;;44617:54;;47199:35;;47189:2;;47248:1;;47238:12;47189:2;47183:74;:::o;47264:111::-;47345:5;44126:13;44119:21;47323:5;47320:32;47310:2;;47366:1;;47356:12;48030:113;44930:4;48113:5;44919:16;48090:5;48087:33;48077:2;;48134:1;;48124:12"
            },
            "methodIdentifiers": {
              "ADDRESSES_PROVIDER()": "0542975c",
              "FLASHLOAN_PREMIUM_TOTAL()": "074b2e43",
              "LENDING_POOL()": "b4dcfc77",
              "MAX_SLIPPAGE_PERCENT()": "32e4b286",
              "ORACLE()": "38013f02",
              "UNISWAP_ROUTER()": "d8264920",
              "USD_ADDRESS()": "9d1211bf",
              "WETH_ADDRESS()": "040141e5",
              "executeOperation(address[],uint256[],uint256[],address,bytes)": "920f5c84",
              "getAmountsIn(uint256,address,address)": "cdf58cd6",
              "getAmountsOut(uint256,address,address)": "baf7fa99",
              "owner()": "8da5cb5b",
              "renounceOwnership()": "715018a6",
              "rescueTokens(address)": "00ae3bf8",
              "swapAndDeposit(address[],address[],uint256[],uint256[],(uint256,uint256,uint8,bytes32,bytes32)[],bool[])": "d51c9ed7",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        }
      },
      "contracts/adapters/UniswapRepayAdapter.sol": {
        "UniswapRepayAdapter": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPoolAddressesProvider",
                  "name": "addressesProvider",
                  "type": "address"
                },
                {
                  "internalType": "contract IUniswapV2Router02",
                  "name": "uniswapRouter",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "wethAddress",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "fromAsset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "toAsset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "fromAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "receivedAmount",
                  "type": "uint256"
                }
              ],
              "name": "Swapped",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "ADDRESSES_PROVIDER",
              "outputs": [
                {
                  "internalType": "contract ILendingPoolAddressesProvider",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "FLASHLOAN_PREMIUM_TOTAL",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LENDING_POOL",
              "outputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "MAX_SLIPPAGE_PERCENT",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "ORACLE",
              "outputs": [
                {
                  "internalType": "contract IPriceOracleGetter",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "UNISWAP_ROUTER",
              "outputs": [
                {
                  "internalType": "contract IUniswapV2Router02",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "USD_ADDRESS",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "WETH_ADDRESS",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "assets",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "premiums",
                  "type": "uint256[]"
                },
                {
                  "internalType": "address",
                  "name": "initiator",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "executeOperation",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "reserveIn",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "reserveOut",
                  "type": "address"
                }
              ],
              "name": "getAmountsIn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "reserveIn",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "reserveOut",
                  "type": "address"
                }
              ],
              "name": "getAmountsOut",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "token",
                  "type": "address"
                }
              ],
              "name": "rescueTokens",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "collateralAsset",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "debtAsset",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "debtRepayAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "debtRateMode",
                  "type": "uint256"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "deadline",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint8",
                      "name": "v",
                      "type": "uint8"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "r",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "s",
                      "type": "bytes32"
                    }
                  ],
                  "internalType": "struct IBaseUniswapAdapter.PermitSignature",
                  "name": "permitSignature",
                  "type": "tuple"
                },
                {
                  "internalType": "bool",
                  "name": "useEthPath",
                  "type": "bool"
                }
              ],
              "name": "swapAndRepay",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6101206040523480156200001257600080fd5b5060405162003618380380620036188339810160408190526200003591620001fd565b82828282806001600160a01b03166080816001600160a01b031660601b81525050806001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009057600080fd5b505afa158015620000a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000cb9190620001d7565b60601b6001600160601b03191660a052506000620000e8620001d3565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350826001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b1580156200016c57600080fd5b505afa15801562000181573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a79190620001d7565b6001600160601b0319606091821b811660e05292811b8316610100521b1660c052506200026992505050565b3390565b600060208284031215620001e9578081fd5b8151620001f68162000250565b9392505050565b60008060006060848603121562000212578182fd5b83516200021f8162000250565b6020850151909350620002328162000250565b6040850151909250620002458162000250565b809150509250925092565b6001600160a01b03811681146200026657600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c6132d4620003446000398061060152806110d452806111c852806118475280611acf5280611b045280611c9852806121b552806122a65250806103a2528061244752508061034f5280610fae5280610feb528061105552806117345280611b82528061208f52806120cc528061213652508061045f528061057c5280610817528061084c52806108885280610aa75280610adc5280610b9a5280610db05280610ddb52806115d2528061199552508061037352506132d46000f3fe608060405234801561001057600080fd5b50600436106100ff5760003560e01c8063920f5c8411610097578063cdf58cd611610066578063cdf58cd6146101c8578063d8264920146101db578063e6813563146101e3578063f2fde38b146101f6576100ff565b8063920f5c84146101745780639d1211bf14610194578063b4dcfc771461019c578063baf7fa99146101a4576100ff565b806332e4b286116100d357806332e4b2861461015457806338013f021461015c578063715018a6146101645780638da5cb5b1461016c576100ff565b8062ae3bf814610104578063040141e5146101195780630542975c14610137578063074b2e431461013f575b600080fd5b61011761011236600461285d565b610209565b005b61012161034d565b60405161012e9190612d5d565b60405180910390f35b610121610371565b610147610395565b60405161012e9190613162565b61014761039a565b6101216103a0565b6101176103c4565b610121610443565b610187610182366004612987565b610452565b60405161012e9190612e80565b610121610562565b61012161057a565b6101b76101b2366004612ca1565b61059e565b60405161012e9594939291906131c0565b6101b76101d6366004612ca1565b6105e4565b6101216105ff565b6101176101f1366004612902565b610623565b61011761020436600461285d565b610924565b6102116109da565b6000546001600160a01b039081169116146102475760405162461bcd60e51b815260040161023e9061302b565b60405180910390fd5b806001600160a01b031663a9059cbb61025e610443565b6040516370a0823160e01b81526001600160a01b038516906370a082319061028a903090600401612d5d565b60206040518083038186803b1580156102a257600080fd5b505afa1580156102b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102da9190612c89565b6040518363ffffffff1660e01b81526004016102f7929190612e19565b602060405180830381600087803b15801561031157600080fd5b505af1158015610325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103499190612b19565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600981565b610bb881565b7f000000000000000000000000000000000000000000000000000000000000000081565b6103cc6109da565b6000546001600160a01b039081169116146103f95760405162461bcd60e51b815260040161023e9061302b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461049c5760405162461bcd60e51b815260040161023e90612ebe565b6104a461268b565b6104e384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109de92505050565b905061055181600001518c8c60008181106104fa57fe5b905060200201602081019061050f919061285d565b8b8b600081811061051c57fe5b90506020020135846020015185604001518a8d8d600081811061053b57fe5b9050602002013588606001518960800151610a85565b5060019a9950505050505050505050565b7310f7fc1f91ba351f9c629c5947ad69bd03c05b9681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060008060606105ae6126c9565b6105b988888b610e22565b8051602082015160408301516060840151608090940151929d919c509a509198509650945050505050565b60008060008060606105f46126c9565b6105b988888b6113d9565b7f000000000000000000000000000000000000000000000000000000000000000081565b61062b6126f8565b610634886115b3565b905061063e6126f8565b610647886115b3565b90506000600186600281111561065957fe5b600281111561066457fe5b146106745781610120015161067b565b8161010001515b90506000816001600160a01b03166370a08231336040518263ffffffff1660e01b81526004016106ab9190612d5d565b60206040518083038186803b1580156106c357600080fd5b505afa1580156106d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106fb9190612c89565b905060008189111561070d578161070f565b885b90508a6001600160a01b03168c6001600160a01b0316146107ec57898982101561074a576107478a610741838561165e565b90611698565b90505b60606107588e8e858b6116da565b9050818160008151811061076857fe5b6020026020010151111561078e5760405162461bcd60e51b815260040161023e90613060565b6107c38e8860e0015133846000815181106107a557fe5b60200260200101518d8036038101906107be9190612b35565b6118dc565b6107e48e8e836000815181106107d557fe5b6020026020010151868c611a28565b505050610808565b6108088c8660e0015133848b8036038101906107be9190612b35565b61083d6001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000006000611dbc565b6108716001600160a01b038c167f000000000000000000000000000000000000000000000000000000000000000083611dbc565b60405163573ade8160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063573ade81906108c3908e9085908d903390600401612e55565b602060405180830381600087803b1580156108dd57600080fd5b505af11580156108f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109159190612c89565b50505050505050505050505050565b61092c6109da565b6000546001600160a01b039081169116146109595760405162461bcd60e51b815260040161023e9061302b565b6001600160a01b03811661097f5760405162461bcd60e51b815260040161023e90612ef5565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6109e661268b565b60008060008060008060008060008a806020019051810190610a089190612879565b9850985098509850985098509850985098506040518060a001604052808a6001600160a01b031681526020018981526020018881526020016040518060a001604052808981526020018881526020018760ff1681526020018681526020018581525081526020018215158152509950505050505050505050919050565b610a8d6126f8565b610a968a6115b3565b9050610acd6001600160a01b038a167f00000000000000000000000000000000000000000000000000000000000000006000611dbc565b610b016001600160a01b038a167f00000000000000000000000000000000000000000000000000000000000000008a611dbc565b6040516370a0823160e01b81526000906001600160a01b038b16906370a0823190610b30903090600401612d5d565b60206040518083038186803b158015610b4857600080fd5b505afa158015610b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b809190612c89565b60405163573ade8160e01b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063573ade8190610bd5908d908d908c908c90600401612e55565b602060405180830381600087803b158015610bef57600080fd5b505af1158015610c03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c279190612c89565b506040516370a0823160e01b8152610caf906001600160a01b038c16906370a0823190610c58903090600401612d5d565b60206040518083038186803b158015610c7057600080fd5b505afa158015610c84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca89190612c89565b8290611ebb565b9050896001600160a01b03168b6001600160a01b031614610d85578789821015610ce457610ce18a610741838561165e565b90505b6000610cf08388611efd565b90506060610d008e8e84896116da565b90508281600081518110610d1057fe5b60200260200101511115610d365760405162461bcd60e51b815260040161023e90613060565b610d5b8e8660e001518b84600081518110610d4d57fe5b60200260200101518b6118dc565b610d7c8e8e83600081518110610d6d57fe5b6020026020010151858a611a28565b50505050610da1565b60e0820151610da1908c9088610d9b858a611efd565b886118dc565b610dd66001600160a01b038b167f00000000000000000000000000000000000000000000000000000000000000006000611dbc565b610e157f0000000000000000000000000000000000000000000000000000000000000000610e048b88611efd565b6001600160a01b038d169190611dbc565b5050505050505050505050565b610e2a6126c9565b6000610e47610e4061271061074186600961165e565b8490611ebb565b9050836001600160a01b0316856001600160a01b03161415610f13576000610e6e86611f22565b60408051600180825281830190925291925060609190602080830190803683370190505090508681600081518110610ea257fe5b6001600160a01b039092166020928302919091018201526040805160a08101909152848152908101610ee08761074187670de0b6b3a764000061165e565b8152602001610ef0898886611f9e565b8152602001610f00898686611f9e565b81526020018281525093505050506113d2565b60408051600280825260608083018452926020830190803683370190505090508581600081518110610f4157fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508481600181518110610f6f57fe5b6001600160a01b0392909216602092830291909101820152604080516003808252608082019092526060928392839291820183803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b03161415801561102057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614155b1561118c57888160008151811061103357fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061108157fe5b60200260200101906001600160a01b031690816001600160a01b03168152505087816002815181106110af57fe5b6001600160a01b03928316602091820292909201015260405163d06ca61f60e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063d06ca61f9061110d908890859060040161316b565b60006040518083038186803b15801561112557600080fd5b505afa92505050801561115a57506040513d6000823e601f3d908101601f191682016040526111579190810190612a84565b60015b61118457604080516003808252608082019092529060208201606080368337019050509150611187565b91505b6111ae565b6040805160038082526080820190925290602082016060803683370190505091505b60405163d06ca61f60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d06ca61f906111ff908990899060040161316b565b60006040518083038186803b15801561121757600080fd5b505afa92505050801561124c57506040513d6000823e601f3d908101601f191682016040526112499190810190612a84565b60015b61128c5760408051600280825260608201835290916020830190803683370190505093508260028151811061127d57fe5b602002602001015190506112f2565b8094508460018151811061129c57fe5b6020026020010151846002815181106112b157fe5b6020026020010151116112d857846001815181106112cb57fe5b60200260200101516112ee565b836002815181106112e557fe5b60200260200101515b9150505b60006112fd8b611f22565b9050600061130a8b611f22565b9050600061133f61131f85600a86900a61165e565b610741600a85900a6113398d670de0b6b3a764000061165e565b9061165e565b90506040518060a001604052808581526020018281526020016113638f8e87611f9e565b81526020016113738e8786611f9e565b815260200185156113a6578860018151811061138b57fe5b6020026020010151861461139f57866113a1565b895b6113c4565b60408051600280825260608201835290916020830190803683375050505b905299505050505050505050505b9392505050565b6113e16126c9565b826001600160a01b0316846001600160a01b031614156114b757600061141861141161271061074186600961165e565b8490611efd565b9050600061142586611f22565b6040805160018082528183019092529192506060919060208083019080368337019050509050868160008151811061145957fe5b6001600160a01b039092166020928302919091018201526040805160a081019091528481529081016114978561074189670de0b6b3a764000061165e565b81526020016114a7898686611f9e565b8152602001610f00898886611f9e565b6060806114c5868686611fed565b91509150600061151f6114fc6127106107416009876000815181106114e657fe5b602002602001015161165e90919063ffffffff16565b8460008151811061150957fe5b6020026020010151611efd90919063ffffffff16565b9050600061152c88611f22565b9050600061153988611f22565b9050600061156861154e85600a85900a61165e565b610741600a86900a6113398c670de0b6b3a764000061165e565b90506040518060a0016040528085815260200182815260200161158c8c8787611f9e565b815260200161159c8b8b86611f9e565b815260200195909552509298975050505050505050565b6115bb6126f8565b6040516335ea6a7560e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906335ea6a7590611607908590600401612d5d565b6101806040518083038186803b15801561162057600080fd5b505afa158015611634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116589190612b8e565b92915050565b60008261166d57506000611658565b8282028284828161167a57fe5b04146113d25760405162461bcd60e51b815260040161023e90612fea565b60006113d283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123aa565b60608082156117b357604080516003808252608082019092529060208201606080368337019050509050858160008151811061171257fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061176057fe5b60200260200101906001600160a01b031690816001600160a01b031681525050848160028151811061178e57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050611830565b604080516002808252606082018352909160208301908036833701905050905085816000815181106117e157fe5b60200260200101906001600160a01b031690816001600160a01b031681525050848160018151811061180f57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6040516307c0329d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631f00ca749061187e908790859060040161316b565b60006040518083038186803b15801561189657600080fd5b505afa1580156118aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118d29190810190612a84565b9695505050505050565b6118e5816123e1565b1561196957836001600160a01b031663d505accf8430846000015185602001518660400151876060015188608001516040518863ffffffff1660e01b81526004016119369796959493929190612dd8565b600060405180830381600087803b15801561195057600080fd5b505af1158015611964573d6000803e3d6000fd5b505050505b61197e6001600160a01b038516843085612406565b604051631a4ca37b60e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906369328dec906119ce90889086903090600401612e32565b602060405180830381600087803b1580156119e857600080fd5b505af11580156119fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a209190612c89565b505050505050565b600080611a3487611f22565b90506000611a4187611f22565b90506000611a4e8961242d565b90506000611a5b8961242d565b90506000611a9f611a70612710610bb8611efd565b611a99611a8186600a89900a61165e565b610741611a9287600a8c900a61165e565b8d9061165e565b906124cc565b9050808910611ac05760405162461bcd60e51b815260040161023e90612fa7565b611af56001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000006000611dbc565b611b296001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000008b611dbc565b60608715611c01576040805160038082526080820190925290602082016060803683370190505090508b81600081518110611b6057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611bae57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508a81600281518110611bdc57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050611c7e565b60408051600280825260608201835290916020830190803683370190505090508b81600081518110611c2f57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508a81600181518110611c5d57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b604051634401edf760e11b81526060906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638803dbee90611cd5908d908f90879030904290600401613184565b600060405180830381600087803b158015611cef57600080fd5b505af1158015611d03573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2b9190810190612a84565b90507fa078c4190abe07940190effc1846be0ccf03ad6007bc9e93f9697d0b460befbb8d8d83600081518110611d5d57fe5b602002602001015184600186510381518110611d7557fe5b6020026020010151604051611d8d9493929190612daf565b60405180910390a180600081518110611da257fe5b602002602001015197505050505050505095945050505050565b801580611e445750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e90611df29030908690600401612d71565b60206040518083038186803b158015611e0a57600080fd5b505afa158015611e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e429190612c89565b155b611e605760405162461bcd60e51b815260040161023e906130d5565b611eb68363095ea7b360e01b8484604051602401611e7f929190612e19565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261253e565b505050565b60006113d283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612623565b6000828201838110156113d25760405162461bcd60e51b815260040161023e90612f3b565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611f5d57600080fd5b505afa158015611f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f959190612ce2565b60ff1692915050565b600080611fbe7310f7fc1f91ba351f9c629c5947ad69bd03c05b9661242d565b90506000611fcb8661242d565b90506118d2670de0b6b3a764000061074184611339600a89900a838b8861165e565b604080516002808252606082810190935282918291816020016020820280368337019050509050858160008151811061202257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050848160018151811061205057fe5b6001600160a01b0392909216602092830291909101820152604080516003808252608082019092526060928392839291820183803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b03161415801561210157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614155b1561226d57888160008151811061211457fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061216257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050878160028151811061219057fe5b6001600160a01b0392831660209182029290920101526040516307c0329d60e21b81527f000000000000000000000000000000000000000000000000000000000000000090911690631f00ca74906121ee908a90859060040161316b565b60006040518083038186803b15801561220657600080fd5b505afa92505050801561223b57506040513d6000823e601f3d908101601f191682016040526122389190810190612a84565b60015b61226557604080516003808252608082019092529060208201606080368337019050509150612268565b91505b61228f565b6040805160038082526080820190925290602082016060803683370190505091505b6040516307c0329d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631f00ca74906122dd908a90889060040161316b565b60006040518083038186803b1580156122f557600080fd5b505afa92505050801561232a57506040513d6000823e601f3d908101601f191682016040526123279190810190612a84565b60015b61233b5790945092506123a2915050565b8093508360008151811061234b57fe5b60200260200101518360008151811061236057fe5b602002602001015110801561238a57508260008151811061237d57fe5b6020026020010151600014155b612395578385612398565b82825b9650965050505050505b935093915050565b600081836123cb5760405162461bcd60e51b815260040161023e9190612e8b565b5060008385816123d757fe5b0495945050505050565b6000816040015160ff1682602001511480156123ff57506020820151155b1592915050565b612427846323b872dd60e01b858585604051602401611e7f93929190612d8b565b50505050565b60405163b3596f0760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b3596f079061247c908590600401612d5d565b60206040518083038186803b15801561249457600080fd5b505afa1580156124a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116589190612c89565b60008215806124d9575081155b156124e657506000611658565b8161138819816124f257fe5b0483111560405180604001604052806002815260200161068760f31b8152509061252f5760405162461bcd60e51b815260040161023e9190612e8b565b50506127109102611388010490565b612550826001600160a01b031661264f565b61256c5760405162461bcd60e51b815260040161023e9061312b565b60006060836001600160a01b0316836040516125889190612d41565b6000604051808303816000865af19150503d80600081146125c5576040519150601f19603f3d011682016040523d82523d6000602084013e6125ca565b606091505b5091509150816125ec5760405162461bcd60e51b815260040161023e90612f72565b80511561242757808060200190518101906126079190612b19565b6124275760405162461bcd60e51b815260040161023e9061308b565b600081848411156126475760405162461bcd60e51b815260040161023e9190612e8b565b505050900390565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061268357508115155b949350505050565b6040518060a0016040528060006001600160a01b0316815260200160008152602001600081526020016126bc612763565b8152600060209091015290565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001606081525090565b60405180610180016040528061270c612791565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b6040518060200160405280600081525090565b805161165881613269565b60008083601f8401126127c0578182fd5b50813567ffffffffffffffff8111156127d7578182fd5b60208301915083602080830285010111156127f157600080fd5b9250929050565b600060208284031215612809578081fd5b61281360206131f6565b9151825250919050565b80516fffffffffffffffffffffffffffffffff8116811461165857600080fd5b805164ffffffffff8116811461165857600080fd5b80516116588161328f565b60006020828403121561286e578081fd5b81356113d281613269565b60008060008060008060008060006101208a8c031215612897578485fd5b89516128a281613269565b8099505060208a0151975060408a0151965060608a0151955060808a0151945060a08a01516128d08161328f565b8094505060c08a0151925060e08a015191506101008a01516128f181613281565b809150509295985092959850929598565b600080600080600080600087890361016081121561291e578182fd5b883561292981613269565b9750602089013561293981613269565b965060408901359550606089013594506080890135935060a0609f1982011215612961578182fd5b5060a08801915061014088013561297781613281565b8091505092959891949750929550565b600080600080600080600080600060a08a8c0312156129a4578283fd5b893567ffffffffffffffff808211156129bb578485fd5b6129c78d838e016127af565b909b50995060208c01359150808211156129df578485fd5b6129eb8d838e016127af565b909950975060408c0135915080821115612a03578485fd5b612a0f8d838e016127af565b909750955060608c01359150612a2482613269565b90935060808b01359080821115612a39578384fd5b818c0191508c601f830112612a4c578384fd5b813581811115612a5a578485fd5b8d6020828501011115612a6b578485fd5b6020830194508093505050509295985092959850929598565b60006020808385031215612a96578182fd5b825167ffffffffffffffff811115612aac578283fd5b8301601f81018513612abc578283fd5b8051612acf612aca8261321d565b6131f6565b8181528381019083850185840285018601891015612aeb578687fd5b8694505b83851015612b0d578051835260019490940193918501918501612aef565b50979650505050505050565b600060208284031215612b2a578081fd5b81516113d281613281565b600060a08284031215612b46578081fd5b612b5060a06131f6565b82358152602083013560208201526040830135612b6c8161328f565b6040820152606083810135908201526080928301359281019290925250919050565b6000610180808385031215612ba1578182fd5b612baa816131f6565b9050612bb684846127f8565b8152612bc5846020850161281d565b6020820152612bd7846040850161281d565b6040820152612be9846060850161281d565b6060820152612bfb846080850161281d565b6080820152612c0d8460a0850161281d565b60a0820152612c1f8460c0850161283d565b60c0820152612c318460e085016127a4565b60e0820152610100612c45858286016127a4565b90820152610120612c58858583016127a4565b90820152610140612c6b858583016127a4565b90820152610160612c7e85858301612852565b908201529392505050565b600060208284031215612c9a578081fd5b5051919050565b600080600060608486031215612cb5578081fd5b833592506020840135612cc781613269565b91506040840135612cd781613269565b809150509250925092565b600060208284031215612cf3578081fd5b81516113d28161328f565b6000815180845260208085019450808401835b83811015612d365781516001600160a01b031687529582019590820190600101612d11565b509495945050505050565b60008251612d5381846020870161323d565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6001600160a01b03948516815260208101939093526040830191909152909116606082015260800190565b901515815260200190565b6000602082528251806020840152612eaa81604085016020870161323d565b601f01601f19169190910160400192915050565b6020808252601b908201527f43414c4c45525f4d5553545f42455f4c454e44494e475f504f4f4c0000000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b60208082526023908201527f6d6178416d6f756e74546f5377617020657863656564206d617820736c69707060408201526261676560e81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601190820152700e6d8d2e0e0c2ceca40e8dede40d0d2ced607b1b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526036908201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60408201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606082015260800190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b90815260200190565b6000838252604060208301526126836040830184612cfe565b600086825285602083015260a060408301526131a360a0830186612cfe565b6001600160a01b0394909416606083015250608001529392505050565b600086825285602083015284604083015283606083015260a060808301526131eb60a0830184612cfe565b979650505050505050565b60405181810167ffffffffffffffff8111828210171561321557600080fd5b604052919050565b600067ffffffffffffffff821115613233578081fd5b5060209081020190565b60005b83811015613258578181015183820152602001613240565b838111156124275750506000910152565b6001600160a01b038116811461327e57600080fd5b50565b801515811461327e57600080fd5b60ff8116811461327e57600080fdfea264697066735822122088d723a5af4f75f58bcb4401863bc7d118a5b6e7b33e169f602a92e48802593264736f6c634300060c0033",
              "opcodes": "PUSH2 0x120 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x3618 CODESIZE SUB DUP1 PUSH3 0x3618 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x1FD JUMP JUMPDEST DUP3 DUP3 DUP3 DUP3 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x261BF8B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xCB SWAP2 SWAP1 PUSH3 0x1D7 JUMP JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE POP PUSH1 0x0 PUSH3 0xE8 PUSH3 0x1D3 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFCA513A8 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x181 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x1A7 SWAP2 SWAP1 PUSH3 0x1D7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xE0 MSTORE SWAP3 DUP2 SHL DUP4 AND PUSH2 0x100 MSTORE SHL AND PUSH1 0xC0 MSTORE POP PUSH3 0x269 SWAP3 POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x1E9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x1F6 DUP2 PUSH3 0x250 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x212 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 MLOAD PUSH3 0x21F DUP2 PUSH3 0x250 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0x232 DUP2 PUSH3 0x250 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x245 DUP2 PUSH3 0x250 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x266 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x32D4 PUSH3 0x344 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x601 MSTORE DUP1 PUSH2 0x10D4 MSTORE DUP1 PUSH2 0x11C8 MSTORE DUP1 PUSH2 0x1847 MSTORE DUP1 PUSH2 0x1ACF MSTORE DUP1 PUSH2 0x1B04 MSTORE DUP1 PUSH2 0x1C98 MSTORE DUP1 PUSH2 0x21B5 MSTORE DUP1 PUSH2 0x22A6 MSTORE POP DUP1 PUSH2 0x3A2 MSTORE DUP1 PUSH2 0x2447 MSTORE POP DUP1 PUSH2 0x34F MSTORE DUP1 PUSH2 0xFAE MSTORE DUP1 PUSH2 0xFEB MSTORE DUP1 PUSH2 0x1055 MSTORE DUP1 PUSH2 0x1734 MSTORE DUP1 PUSH2 0x1B82 MSTORE DUP1 PUSH2 0x208F MSTORE DUP1 PUSH2 0x20CC MSTORE DUP1 PUSH2 0x2136 MSTORE POP DUP1 PUSH2 0x45F MSTORE DUP1 PUSH2 0x57C MSTORE DUP1 PUSH2 0x817 MSTORE DUP1 PUSH2 0x84C MSTORE DUP1 PUSH2 0x888 MSTORE DUP1 PUSH2 0xAA7 MSTORE DUP1 PUSH2 0xADC MSTORE DUP1 PUSH2 0xB9A MSTORE DUP1 PUSH2 0xDB0 MSTORE DUP1 PUSH2 0xDDB MSTORE DUP1 PUSH2 0x15D2 MSTORE DUP1 PUSH2 0x1995 MSTORE POP DUP1 PUSH2 0x373 MSTORE POP PUSH2 0x32D4 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xFF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x920F5C84 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xCDF58CD6 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xCDF58CD6 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0xD8264920 EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0xE6813563 EQ PUSH2 0x1E3 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1F6 JUMPI PUSH2 0xFF JUMP JUMPDEST DUP1 PUSH4 0x920F5C84 EQ PUSH2 0x174 JUMPI DUP1 PUSH4 0x9D1211BF EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0xB4DCFC77 EQ PUSH2 0x19C JUMPI DUP1 PUSH4 0xBAF7FA99 EQ PUSH2 0x1A4 JUMPI PUSH2 0xFF JUMP JUMPDEST DUP1 PUSH4 0x32E4B286 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x32E4B286 EQ PUSH2 0x154 JUMPI DUP1 PUSH4 0x38013F02 EQ PUSH2 0x15C JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x16C JUMPI PUSH2 0xFF JUMP JUMPDEST DUP1 PUSH3 0xAE3BF8 EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x40141E5 EQ PUSH2 0x119 JUMPI DUP1 PUSH4 0x542975C EQ PUSH2 0x137 JUMPI DUP1 PUSH4 0x74B2E43 EQ PUSH2 0x13F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x117 PUSH2 0x112 CALLDATASIZE PUSH1 0x4 PUSH2 0x285D JUMP JUMPDEST PUSH2 0x209 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x121 PUSH2 0x34D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x2D5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x121 PUSH2 0x371 JUMP JUMPDEST PUSH2 0x147 PUSH2 0x395 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x3162 JUMP JUMPDEST PUSH2 0x147 PUSH2 0x39A JUMP JUMPDEST PUSH2 0x121 PUSH2 0x3A0 JUMP JUMPDEST PUSH2 0x117 PUSH2 0x3C4 JUMP JUMPDEST PUSH2 0x121 PUSH2 0x443 JUMP JUMPDEST PUSH2 0x187 PUSH2 0x182 CALLDATASIZE PUSH1 0x4 PUSH2 0x2987 JUMP JUMPDEST PUSH2 0x452 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x2E80 JUMP JUMPDEST PUSH2 0x121 PUSH2 0x562 JUMP JUMPDEST PUSH2 0x121 PUSH2 0x57A JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x1B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CA1 JUMP JUMPDEST PUSH2 0x59E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x31C0 JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x1D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CA1 JUMP JUMPDEST PUSH2 0x5E4 JUMP JUMPDEST PUSH2 0x121 PUSH2 0x5FF JUMP JUMPDEST PUSH2 0x117 PUSH2 0x1F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2902 JUMP JUMPDEST PUSH2 0x623 JUMP JUMPDEST PUSH2 0x117 PUSH2 0x204 CALLDATASIZE PUSH1 0x4 PUSH2 0x285D JUMP JUMPDEST PUSH2 0x924 JUMP JUMPDEST PUSH2 0x211 PUSH2 0x9DA JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x247 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x302B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB PUSH2 0x25E PUSH2 0x443 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x28A SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2D5D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2DA SWAP2 SWAP1 PUSH2 0x2C89 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F7 SWAP3 SWAP2 SWAP1 PUSH2 0x2E19 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x325 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x349 SWAP2 SWAP1 PUSH2 0x2B19 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x9 DUP2 JUMP JUMPDEST PUSH2 0xBB8 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x3CC PUSH2 0x9DA JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x3F9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x302B JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x49C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x2EBE JUMP JUMPDEST PUSH2 0x4A4 PUSH2 0x268B JUMP JUMPDEST PUSH2 0x4E3 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x9DE SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH2 0x551 DUP2 PUSH1 0x0 ADD MLOAD DUP13 DUP13 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x4FA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x50F SWAP2 SWAP1 PUSH2 0x285D JUMP JUMPDEST DUP12 DUP12 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x51C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP5 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0x40 ADD MLOAD DUP11 DUP14 DUP14 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x53B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 PUSH1 0x60 ADD MLOAD DUP10 PUSH1 0x80 ADD MLOAD PUSH2 0xA85 JUMP JUMPDEST POP PUSH1 0x1 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0x10F7FC1F91BA351F9C629C5947AD69BD03C05B96 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 PUSH2 0x5AE PUSH2 0x26C9 JUMP JUMPDEST PUSH2 0x5B9 DUP9 DUP9 DUP12 PUSH2 0xE22 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 SWAP1 SWAP5 ADD MLOAD SWAP3 SWAP14 SWAP2 SWAP13 POP SWAP11 POP SWAP2 SWAP9 POP SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 PUSH2 0x5F4 PUSH2 0x26C9 JUMP JUMPDEST PUSH2 0x5B9 DUP9 DUP9 DUP12 PUSH2 0x13D9 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x62B PUSH2 0x26F8 JUMP JUMPDEST PUSH2 0x634 DUP9 PUSH2 0x15B3 JUMP JUMPDEST SWAP1 POP PUSH2 0x63E PUSH2 0x26F8 JUMP JUMPDEST PUSH2 0x647 DUP9 PUSH2 0x15B3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP7 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x659 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x664 JUMPI INVALID JUMPDEST EQ PUSH2 0x674 JUMPI DUP2 PUSH2 0x120 ADD MLOAD PUSH2 0x67B JUMP JUMPDEST DUP2 PUSH2 0x100 ADD MLOAD JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6AB SWAP2 SWAP1 PUSH2 0x2D5D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6D7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6FB SWAP2 SWAP1 PUSH2 0x2C89 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP10 GT ISZERO PUSH2 0x70D JUMPI DUP2 PUSH2 0x70F JUMP JUMPDEST DUP9 JUMPDEST SWAP1 POP DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x7EC JUMPI DUP10 DUP10 DUP3 LT ISZERO PUSH2 0x74A JUMPI PUSH2 0x747 DUP11 PUSH2 0x741 DUP4 DUP6 PUSH2 0x165E JUMP JUMPDEST SWAP1 PUSH2 0x1698 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x60 PUSH2 0x758 DUP15 DUP15 DUP6 DUP12 PUSH2 0x16DA JUMP JUMPDEST SWAP1 POP DUP2 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x768 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x78E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x3060 JUMP JUMPDEST PUSH2 0x7C3 DUP15 DUP9 PUSH1 0xE0 ADD MLOAD CALLER DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x7A5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP14 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x7BE SWAP2 SWAP1 PUSH2 0x2B35 JUMP JUMPDEST PUSH2 0x18DC JUMP JUMPDEST PUSH2 0x7E4 DUP15 DUP15 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x7D5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 DUP13 PUSH2 0x1A28 JUMP JUMPDEST POP POP POP PUSH2 0x808 JUMP JUMPDEST PUSH2 0x808 DUP13 DUP7 PUSH1 0xE0 ADD MLOAD CALLER DUP5 DUP12 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x7BE SWAP2 SWAP1 PUSH2 0x2B35 JUMP JUMPDEST PUSH2 0x83D PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH32 0x0 PUSH1 0x0 PUSH2 0x1DBC JUMP JUMPDEST PUSH2 0x871 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH32 0x0 DUP4 PUSH2 0x1DBC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x573ADE81 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x573ADE81 SWAP1 PUSH2 0x8C3 SWAP1 DUP15 SWAP1 DUP6 SWAP1 DUP14 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x2E55 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x915 SWAP2 SWAP1 PUSH2 0x2C89 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x92C PUSH2 0x9DA JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x959 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x302B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x97F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x2EF5 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x9E6 PUSH2 0x268B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP11 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xA08 SWAP2 SWAP1 PUSH2 0x2879 JUMP JUMPDEST SWAP9 POP SWAP9 POP SWAP9 POP SWAP9 POP SWAP9 POP SWAP9 POP SWAP9 POP SWAP9 POP SWAP9 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP10 DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE POP DUP2 MSTORE PUSH1 0x20 ADD DUP3 ISZERO ISZERO DUP2 MSTORE POP SWAP10 POP POP POP POP POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xA8D PUSH2 0x26F8 JUMP JUMPDEST PUSH2 0xA96 DUP11 PUSH2 0x15B3 JUMP JUMPDEST SWAP1 POP PUSH2 0xACD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH32 0x0 PUSH1 0x0 PUSH2 0x1DBC JUMP JUMPDEST PUSH2 0xB01 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH32 0x0 DUP11 PUSH2 0x1DBC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xB30 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2D5D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB5C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB80 SWAP2 SWAP1 PUSH2 0x2C89 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x573ADE81 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x573ADE81 SWAP1 PUSH2 0xBD5 SWAP1 DUP14 SWAP1 DUP14 SWAP1 DUP13 SWAP1 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x2E55 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC03 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC27 SWAP2 SWAP1 PUSH2 0x2C89 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xCAF SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xC58 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2D5D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC84 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCA8 SWAP2 SWAP1 PUSH2 0x2C89 JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x1EBB JUMP JUMPDEST SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xD85 JUMPI DUP8 DUP10 DUP3 LT ISZERO PUSH2 0xCE4 JUMPI PUSH2 0xCE1 DUP11 PUSH2 0x741 DUP4 DUP6 PUSH2 0x165E JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 PUSH2 0xCF0 DUP4 DUP9 PUSH2 0x1EFD JUMP JUMPDEST SWAP1 POP PUSH1 0x60 PUSH2 0xD00 DUP15 DUP15 DUP5 DUP10 PUSH2 0x16DA JUMP JUMPDEST SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xD10 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0xD36 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x3060 JUMP JUMPDEST PUSH2 0xD5B DUP15 DUP7 PUSH1 0xE0 ADD MLOAD DUP12 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xD4D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP12 PUSH2 0x18DC JUMP JUMPDEST PUSH2 0xD7C DUP15 DUP15 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xD6D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP11 PUSH2 0x1A28 JUMP JUMPDEST POP POP POP POP PUSH2 0xDA1 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0xDA1 SWAP1 DUP13 SWAP1 DUP9 PUSH2 0xD9B DUP6 DUP11 PUSH2 0x1EFD JUMP JUMPDEST DUP9 PUSH2 0x18DC JUMP JUMPDEST PUSH2 0xDD6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH32 0x0 PUSH1 0x0 PUSH2 0x1DBC JUMP JUMPDEST PUSH2 0xE15 PUSH32 0x0 PUSH2 0xE04 DUP12 DUP9 PUSH2 0x1EFD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND SWAP2 SWAP1 PUSH2 0x1DBC JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE2A PUSH2 0x26C9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE47 PUSH2 0xE40 PUSH2 0x2710 PUSH2 0x741 DUP7 PUSH1 0x9 PUSH2 0x165E JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x1EBB JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xF13 JUMPI PUSH1 0x0 PUSH2 0xE6E DUP7 PUSH2 0x1F22 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP PUSH1 0x60 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP7 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xEA2 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP5 DUP2 MSTORE SWAP1 DUP2 ADD PUSH2 0xEE0 DUP8 PUSH2 0x741 DUP8 PUSH8 0xDE0B6B3A7640000 PUSH2 0x165E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xEF0 DUP10 DUP9 DUP7 PUSH2 0x1F9E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF00 DUP10 DUP7 DUP7 PUSH2 0x1F9E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP SWAP4 POP POP POP POP PUSH2 0x13D2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xF41 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP5 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xF6F JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP3 ADD DUP4 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0x1020 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x118C JUMPI DUP9 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1033 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1081 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP8 DUP2 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x10AF JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0xD06CA61F PUSH1 0xE0 SHL DUP2 MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xD06CA61F SWAP1 PUSH2 0x110D SWAP1 DUP9 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x316B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x115A JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1157 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2A84 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1184 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP2 POP PUSH2 0x1187 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x11AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP2 POP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD06CA61F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xD06CA61F SWAP1 PUSH2 0x11FF SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x316B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x124C JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1249 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2A84 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x128C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD DUP4 MSTORE SWAP1 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP4 POP DUP3 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x127D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x12F2 JUMP JUMPDEST DUP1 SWAP5 POP DUP5 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x129C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x12B1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT PUSH2 0x12D8 JUMPI DUP5 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x12CB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x12EE JUMP JUMPDEST DUP4 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x12E5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD JUMPDEST SWAP2 POP POP JUMPDEST PUSH1 0x0 PUSH2 0x12FD DUP12 PUSH2 0x1F22 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x130A DUP12 PUSH2 0x1F22 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x133F PUSH2 0x131F DUP6 PUSH1 0xA DUP7 SWAP1 EXP PUSH2 0x165E JUMP JUMPDEST PUSH2 0x741 PUSH1 0xA DUP6 SWAP1 EXP PUSH2 0x1339 DUP14 PUSH8 0xDE0B6B3A7640000 PUSH2 0x165E JUMP JUMPDEST SWAP1 PUSH2 0x165E JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1363 DUP16 DUP15 DUP8 PUSH2 0x1F9E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1373 DUP15 DUP8 DUP7 PUSH2 0x1F9E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO PUSH2 0x13A6 JUMPI DUP9 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x138B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 EQ PUSH2 0x139F JUMPI DUP7 PUSH2 0x13A1 JUMP JUMPDEST DUP10 JUMPDEST PUSH2 0x13C4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD DUP4 MSTORE SWAP1 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP POP JUMPDEST SWAP1 MSTORE SWAP10 POP POP POP POP POP POP POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x13E1 PUSH2 0x26C9 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x14B7 JUMPI PUSH1 0x0 PUSH2 0x1418 PUSH2 0x1411 PUSH2 0x2710 PUSH2 0x741 DUP7 PUSH1 0x9 PUSH2 0x165E JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x1EFD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1425 DUP7 PUSH2 0x1F22 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP PUSH1 0x60 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP7 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1459 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP5 DUP2 MSTORE SWAP1 DUP2 ADD PUSH2 0x1497 DUP6 PUSH2 0x741 DUP10 PUSH8 0xDE0B6B3A7640000 PUSH2 0x165E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14A7 DUP10 DUP7 DUP7 PUSH2 0x1F9E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF00 DUP10 DUP9 DUP7 PUSH2 0x1F9E JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x14C5 DUP7 DUP7 DUP7 PUSH2 0x1FED JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x151F PUSH2 0x14FC PUSH2 0x2710 PUSH2 0x741 PUSH1 0x9 DUP8 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x14E6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x165E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1509 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1EFD SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x152C DUP9 PUSH2 0x1F22 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1539 DUP9 PUSH2 0x1F22 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1568 PUSH2 0x154E DUP6 PUSH1 0xA DUP6 SWAP1 EXP PUSH2 0x165E JUMP JUMPDEST PUSH2 0x741 PUSH1 0xA DUP7 SWAP1 EXP PUSH2 0x1339 DUP13 PUSH8 0xDE0B6B3A7640000 PUSH2 0x165E JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x158C DUP13 DUP8 DUP8 PUSH2 0x1F9E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x159C DUP12 DUP12 DUP7 PUSH2 0x1F9E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP6 SWAP1 SWAP6 MSTORE POP SWAP3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x15BB PUSH2 0x26F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x35EA6A75 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x35EA6A75 SWAP1 PUSH2 0x1607 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2D5D JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1620 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1634 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1658 SWAP2 SWAP1 PUSH2 0x2B8E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x166D JUMPI POP PUSH1 0x0 PUSH2 0x1658 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x167A JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x13D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x2FEA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13D2 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x23AA JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 ISZERO PUSH2 0x17B3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1712 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1760 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP5 DUP2 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x178E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH2 0x1830 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD DUP4 MSTORE SWAP1 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x17E1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP5 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x180F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7C0329D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x1F00CA74 SWAP1 PUSH2 0x187E SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x316B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1896 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x18D2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2A84 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x18E5 DUP2 PUSH2 0x23E1 JUMP JUMPDEST ISZERO PUSH2 0x1969 JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD505ACCF DUP5 ADDRESS DUP5 PUSH1 0x0 ADD MLOAD DUP6 PUSH1 0x20 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH1 0x60 ADD MLOAD DUP9 PUSH1 0x80 ADD MLOAD PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1936 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2DD8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1950 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1964 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x197E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 ADDRESS DUP6 PUSH2 0x2406 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH2 0x19CE SWAP1 DUP9 SWAP1 DUP7 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2E32 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x19FC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A20 SWAP2 SWAP1 PUSH2 0x2C89 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1A34 DUP8 PUSH2 0x1F22 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1A41 DUP8 PUSH2 0x1F22 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1A4E DUP10 PUSH2 0x242D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1A5B DUP10 PUSH2 0x242D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1A9F PUSH2 0x1A70 PUSH2 0x2710 PUSH2 0xBB8 PUSH2 0x1EFD JUMP JUMPDEST PUSH2 0x1A99 PUSH2 0x1A81 DUP7 PUSH1 0xA DUP10 SWAP1 EXP PUSH2 0x165E JUMP JUMPDEST PUSH2 0x741 PUSH2 0x1A92 DUP8 PUSH1 0xA DUP13 SWAP1 EXP PUSH2 0x165E JUMP JUMPDEST DUP14 SWAP1 PUSH2 0x165E JUMP JUMPDEST SWAP1 PUSH2 0x24CC JUMP JUMPDEST SWAP1 POP DUP1 DUP10 LT PUSH2 0x1AC0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x2FA7 JUMP JUMPDEST PUSH2 0x1AF5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH32 0x0 PUSH1 0x0 PUSH2 0x1DBC JUMP JUMPDEST PUSH2 0x1B29 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH32 0x0 DUP12 PUSH2 0x1DBC JUMP JUMPDEST PUSH1 0x60 DUP8 ISZERO PUSH2 0x1C01 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP12 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1B60 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1BAE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP11 DUP2 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x1BDC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH2 0x1C7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD DUP4 MSTORE SWAP1 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP12 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1C2F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP11 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1C5D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x4401EDF7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x8803DBEE SWAP1 PUSH2 0x1CD5 SWAP1 DUP14 SWAP1 DUP16 SWAP1 DUP8 SWAP1 ADDRESS SWAP1 TIMESTAMP SWAP1 PUSH1 0x4 ADD PUSH2 0x3184 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D03 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1D2B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2A84 JUMP JUMPDEST SWAP1 POP PUSH32 0xA078C4190ABE07940190EFFC1846BE0CCF03AD6007BC9E93F9697D0B460BEFBB DUP14 DUP14 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1D5D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 PUSH1 0x1 DUP7 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1D75 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x1D8D SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2DAF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1DA2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP8 POP POP POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 PUSH2 0x1E44 JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x1DF2 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2D71 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E1E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1E42 SWAP2 SWAP1 PUSH2 0x2C89 JUMP JUMPDEST ISZERO JUMPDEST PUSH2 0x1E60 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x30D5 JUMP JUMPDEST PUSH2 0x1EB6 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1E7F SWAP3 SWAP2 SWAP1 PUSH2 0x2E19 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x253E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13D2 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x2623 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x13D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x2F3B JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F71 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F95 SWAP2 SWAP1 PUSH2 0x2CE2 JUMP JUMPDEST PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1FBE PUSH20 0x10F7FC1F91BA351F9C629C5947AD69BD03C05B96 PUSH2 0x242D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1FCB DUP7 PUSH2 0x242D JUMP JUMPDEST SWAP1 POP PUSH2 0x18D2 PUSH8 0xDE0B6B3A7640000 PUSH2 0x741 DUP5 PUSH2 0x1339 PUSH1 0xA DUP10 SWAP1 EXP DUP4 DUP12 DUP9 PUSH2 0x165E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 DUP2 ADD SWAP1 SWAP4 MSTORE DUP3 SWAP2 DUP3 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2022 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP5 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x2050 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP3 ADD DUP4 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0x2101 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x226D JUMPI DUP9 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2114 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x2162 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP8 DUP2 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x2190 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x7C0329D PUSH1 0xE2 SHL DUP2 MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x1F00CA74 SWAP1 PUSH2 0x21EE SWAP1 DUP11 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x316B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2206 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x223B JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x2238 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2A84 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2265 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP2 POP PUSH2 0x2268 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x228F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP2 POP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7C0329D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x1F00CA74 SWAP1 PUSH2 0x22DD SWAP1 DUP11 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x316B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x232A JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x2327 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2A84 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x233B JUMPI SWAP1 SWAP5 POP SWAP3 POP PUSH2 0x23A2 SWAP2 POP POP JUMP JUMPDEST DUP1 SWAP4 POP DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x234B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2360 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT DUP1 ISZERO PUSH2 0x238A JUMPI POP DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x237D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 EQ ISZERO JUMPDEST PUSH2 0x2395 JUMPI DUP4 DUP6 PUSH2 0x2398 JUMP JUMPDEST DUP3 DUP3 JUMPDEST SWAP7 POP SWAP7 POP POP POP POP POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x23CB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP2 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x23D7 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 ADD MLOAD PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD EQ DUP1 ISZERO PUSH2 0x23FF JUMPI POP PUSH1 0x20 DUP3 ADD MLOAD ISZERO JUMPDEST ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2427 DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1E7F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D8B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xB3596F07 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xB3596F07 SWAP1 PUSH2 0x247C SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2D5D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2494 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x24A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1658 SWAP2 SWAP1 PUSH2 0x2C89 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x24D9 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x24E6 JUMPI POP PUSH1 0x0 PUSH2 0x1658 JUMP JUMPDEST DUP2 PUSH2 0x1388 NOT DUP2 PUSH2 0x24F2 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x252F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP2 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST POP POP PUSH2 0x2710 SWAP2 MUL PUSH2 0x1388 ADD DIV SWAP1 JUMP JUMPDEST PUSH2 0x2550 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x264F JUMP JUMPDEST PUSH2 0x256C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x312B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x2588 SWAP2 SWAP1 PUSH2 0x2D41 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x25C5 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x25CA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x25EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x2F72 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2427 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2607 SWAP2 SWAP1 PUSH2 0x2B19 JUMP JUMPDEST PUSH2 0x2427 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x308B JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x2647 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP2 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2683 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x26BC PUSH2 0x2763 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x270C PUSH2 0x2791 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x100 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x140 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x160 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1658 DUP2 PUSH2 0x3269 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x27C0 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x27D7 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x27F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2809 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x2813 PUSH1 0x20 PUSH2 0x31F6 JUMP JUMPDEST SWAP2 MLOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1658 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1658 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1658 DUP2 PUSH2 0x328F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x286E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x13D2 DUP2 PUSH2 0x3269 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x2897 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP10 MLOAD PUSH2 0x28A2 DUP2 PUSH2 0x3269 JUMP JUMPDEST DUP1 SWAP10 POP POP PUSH1 0x20 DUP11 ADD MLOAD SWAP8 POP PUSH1 0x40 DUP11 ADD MLOAD SWAP7 POP PUSH1 0x60 DUP11 ADD MLOAD SWAP6 POP PUSH1 0x80 DUP11 ADD MLOAD SWAP5 POP PUSH1 0xA0 DUP11 ADD MLOAD PUSH2 0x28D0 DUP2 PUSH2 0x328F JUMP JUMPDEST DUP1 SWAP5 POP POP PUSH1 0xC0 DUP11 ADD MLOAD SWAP3 POP PUSH1 0xE0 DUP11 ADD MLOAD SWAP2 POP PUSH2 0x100 DUP11 ADD MLOAD PUSH2 0x28F1 DUP2 PUSH2 0x3281 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP8 DUP10 SUB PUSH2 0x160 DUP2 SLT ISZERO PUSH2 0x291E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x2929 DUP2 PUSH2 0x3269 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x2939 DUP2 PUSH2 0x3269 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 PUSH1 0x9F NOT DUP3 ADD SLT ISZERO PUSH2 0x2961 JUMPI DUP2 DUP3 REVERT JUMPDEST POP PUSH1 0xA0 DUP9 ADD SWAP2 POP PUSH2 0x140 DUP9 ADD CALLDATALOAD PUSH2 0x2977 DUP2 PUSH2 0x3281 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x29A4 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP10 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x29BB JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x29C7 DUP14 DUP4 DUP15 ADD PUSH2 0x27AF JUMP JUMPDEST SWAP1 SWAP12 POP SWAP10 POP PUSH1 0x20 DUP13 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x29DF JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x29EB DUP14 DUP4 DUP15 ADD PUSH2 0x27AF JUMP JUMPDEST SWAP1 SWAP10 POP SWAP8 POP PUSH1 0x40 DUP13 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2A03 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2A0F DUP14 DUP4 DUP15 ADD PUSH2 0x27AF JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH1 0x60 DUP13 ADD CALLDATALOAD SWAP2 POP PUSH2 0x2A24 DUP3 PUSH2 0x3269 JUMP JUMPDEST SWAP1 SWAP4 POP PUSH1 0x80 DUP12 ADD CALLDATALOAD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x2A39 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP13 ADD SWAP2 POP DUP13 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2A4C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2A5A JUMPI DUP5 DUP6 REVERT JUMPDEST DUP14 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2A6B JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A96 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2AAC JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x2ABC JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x2ACF PUSH2 0x2ACA DUP3 PUSH2 0x321D JUMP JUMPDEST PUSH2 0x31F6 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP4 DUP6 ADD DUP6 DUP5 MUL DUP6 ADD DUP7 ADD DUP10 LT ISZERO PUSH2 0x2AEB JUMPI DUP7 DUP8 REVERT JUMPDEST DUP7 SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x2B0D JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0x2AEF JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B2A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x13D2 DUP2 PUSH2 0x3281 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B46 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x2B50 PUSH1 0xA0 PUSH2 0x31F6 JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH2 0x2B6C DUP2 PUSH2 0x328F JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x80 SWAP3 DUP4 ADD CALLDATALOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2BA1 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x2BAA DUP2 PUSH2 0x31F6 JUMP JUMPDEST SWAP1 POP PUSH2 0x2BB6 DUP5 DUP5 PUSH2 0x27F8 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x2BC5 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x281D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x2BD7 DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x281D JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x2BE9 DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x281D JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x2BFB DUP5 PUSH1 0x80 DUP6 ADD PUSH2 0x281D JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x2C0D DUP5 PUSH1 0xA0 DUP6 ADD PUSH2 0x281D JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x2C1F DUP5 PUSH1 0xC0 DUP6 ADD PUSH2 0x283D JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x2C31 DUP5 PUSH1 0xE0 DUP6 ADD PUSH2 0x27A4 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 PUSH2 0x2C45 DUP6 DUP3 DUP7 ADD PUSH2 0x27A4 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x120 PUSH2 0x2C58 DUP6 DUP6 DUP4 ADD PUSH2 0x27A4 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x140 PUSH2 0x2C6B DUP6 DUP6 DUP4 ADD PUSH2 0x27A4 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x160 PUSH2 0x2C7E DUP6 DUP6 DUP4 ADD PUSH2 0x2852 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C9A JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2CB5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2CC7 DUP2 PUSH2 0x3269 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x2CD7 DUP2 PUSH2 0x3269 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2CF3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x13D2 DUP2 PUSH2 0x328F JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2D36 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2D11 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2D53 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x323D JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP2 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2EAA DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x323D JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x43414C4C45525F4D5553545F42455F4C454E44494E475F504F4F4C0000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x40 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x6D6178416D6F756E74546F5377617020657863656564206D617820736C697070 PUSH1 0x40 DUP3 ADD MSTORE PUSH3 0x616765 PUSH1 0xE8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x11 SWAP1 DUP3 ADD MSTORE PUSH17 0xE6D8D2E0E0C2CECA40E8DEDE40D0D2CED PUSH1 0x7B SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x40 DUP3 ADD MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x36 SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A20617070726F76652066726F6D206E6F6E2D7A65726F PUSH1 0x40 DUP3 ADD MSTORE PUSH22 0x20746F206E6F6E2D7A65726F20616C6C6F77616E6365 PUSH1 0x50 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x2683 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2CFE JUMP JUMPDEST PUSH1 0x0 DUP7 DUP3 MSTORE DUP6 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x31A3 PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x2CFE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP7 DUP3 MSTORE DUP6 PUSH1 0x20 DUP4 ADD MSTORE DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x31EB PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x2CFE JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3233 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3258 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3240 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2427 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x327E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x327E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x327E JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP9 0xD7 0x23 0xA5 0xAF 0x4F PUSH22 0xF58BCB4401863BC7D118A5B6E7B33E169F602A92E488 MUL MSIZE ORIGIN PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "600:9340:4:-:0;;;822:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;980:17;999:13;1014:11;2093:17:1;886:8:24;-1:-1:-1;;;;;865:29:24;;;-1:-1:-1;;;;;865:29:24;;;;;;;928:8;-1:-1:-1;;;;;928:23:24;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;900:54;;-1:-1:-1;;;;;;900:54:24;;;-1:-1:-1;844:17:11;864:12;:10;:12::i;:::-;882:6;:18;;-1:-1:-1;;;;;;882:18:11;-1:-1:-1;;;;;882:18:11;;;;;;;911:43;;882:18;;-1:-1:-1;882:18:11;911:43;;882:6;;911:43;815:144;2146:17:1::1;-1:-1:-1::0;;;;;2146:32:1::1;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;2118:63:1::1;::::0;;;;;::::1;::::0;2187:30;;;;;::::1;::::0;2223:26;;::::1;::::0;-1:-1:-1;600:9340:4;;-1:-1:-1;;;600:9340:4;587:98:7;670:10;587:98;:::o;558:263:-1:-;;673:2;661:9;652:7;648:23;644:32;641:2;;;-1:-1;;679:12;641:2;89:6;83:13;101:33;128:5;101:33;:::i;:::-;731:74;635:186;-1:-1;;;635:186::o;828:665::-;;;;1042:2;1030:9;1021:7;1017:23;1013:32;1010:2;;;-1:-1;;1048:12;1010:2;268:6;262:13;280:71;345:5;280:71;:::i;:::-;1249:2;1326:22;;468:13;1100:112;;-1:-1;486:60;468:13;486:60;:::i;:::-;1395:2;1445:22;;83:13;1257:101;;-1:-1;101:33;83:13;101:33;:::i;:::-;1403:74;;;;1004:489;;;;;:::o;1987:117::-;-1:-1;;;;;1921:54;;2046:35;;2036:2;;2095:1;;2085:12;2036:2;2030:74;:::o;:::-;600:9340:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "137": [
                  {
                    "length": 32,
                    "start": 847
                  },
                  {
                    "length": 32,
                    "start": 4014
                  },
                  {
                    "length": 32,
                    "start": 4075
                  },
                  {
                    "length": 32,
                    "start": 4181
                  },
                  {
                    "length": 32,
                    "start": 5940
                  },
                  {
                    "length": 32,
                    "start": 7042
                  },
                  {
                    "length": 32,
                    "start": 8335
                  },
                  {
                    "length": 32,
                    "start": 8396
                  },
                  {
                    "length": 32,
                    "start": 8502
                  }
                ],
                "140": [
                  {
                    "length": 32,
                    "start": 930
                  },
                  {
                    "length": 32,
                    "start": 9287
                  }
                ],
                "143": [
                  {
                    "length": 32,
                    "start": 1537
                  },
                  {
                    "length": 32,
                    "start": 4308
                  },
                  {
                    "length": 32,
                    "start": 4552
                  },
                  {
                    "length": 32,
                    "start": 6215
                  },
                  {
                    "length": 32,
                    "start": 6863
                  },
                  {
                    "length": 32,
                    "start": 6916
                  },
                  {
                    "length": 32,
                    "start": 7320
                  },
                  {
                    "length": 32,
                    "start": 8629
                  },
                  {
                    "length": 32,
                    "start": 8870
                  }
                ],
                "5489": [
                  {
                    "length": 32,
                    "start": 883
                  }
                ],
                "5492": [
                  {
                    "length": 32,
                    "start": 1119
                  },
                  {
                    "length": 32,
                    "start": 1404
                  },
                  {
                    "length": 32,
                    "start": 2071
                  },
                  {
                    "length": 32,
                    "start": 2124
                  },
                  {
                    "length": 32,
                    "start": 2184
                  },
                  {
                    "length": 32,
                    "start": 2727
                  },
                  {
                    "length": 32,
                    "start": 2780
                  },
                  {
                    "length": 32,
                    "start": 2970
                  },
                  {
                    "length": 32,
                    "start": 3504
                  },
                  {
                    "length": 32,
                    "start": 3547
                  },
                  {
                    "length": 32,
                    "start": 5586
                  },
                  {
                    "length": 32,
                    "start": 6549
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100ff5760003560e01c8063920f5c8411610097578063cdf58cd611610066578063cdf58cd6146101c8578063d8264920146101db578063e6813563146101e3578063f2fde38b146101f6576100ff565b8063920f5c84146101745780639d1211bf14610194578063b4dcfc771461019c578063baf7fa99146101a4576100ff565b806332e4b286116100d357806332e4b2861461015457806338013f021461015c578063715018a6146101645780638da5cb5b1461016c576100ff565b8062ae3bf814610104578063040141e5146101195780630542975c14610137578063074b2e431461013f575b600080fd5b61011761011236600461285d565b610209565b005b61012161034d565b60405161012e9190612d5d565b60405180910390f35b610121610371565b610147610395565b60405161012e9190613162565b61014761039a565b6101216103a0565b6101176103c4565b610121610443565b610187610182366004612987565b610452565b60405161012e9190612e80565b610121610562565b61012161057a565b6101b76101b2366004612ca1565b61059e565b60405161012e9594939291906131c0565b6101b76101d6366004612ca1565b6105e4565b6101216105ff565b6101176101f1366004612902565b610623565b61011761020436600461285d565b610924565b6102116109da565b6000546001600160a01b039081169116146102475760405162461bcd60e51b815260040161023e9061302b565b60405180910390fd5b806001600160a01b031663a9059cbb61025e610443565b6040516370a0823160e01b81526001600160a01b038516906370a082319061028a903090600401612d5d565b60206040518083038186803b1580156102a257600080fd5b505afa1580156102b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102da9190612c89565b6040518363ffffffff1660e01b81526004016102f7929190612e19565b602060405180830381600087803b15801561031157600080fd5b505af1158015610325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103499190612b19565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600981565b610bb881565b7f000000000000000000000000000000000000000000000000000000000000000081565b6103cc6109da565b6000546001600160a01b039081169116146103f95760405162461bcd60e51b815260040161023e9061302b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461049c5760405162461bcd60e51b815260040161023e90612ebe565b6104a461268b565b6104e384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109de92505050565b905061055181600001518c8c60008181106104fa57fe5b905060200201602081019061050f919061285d565b8b8b600081811061051c57fe5b90506020020135846020015185604001518a8d8d600081811061053b57fe5b9050602002013588606001518960800151610a85565b5060019a9950505050505050505050565b7310f7fc1f91ba351f9c629c5947ad69bd03c05b9681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060008060606105ae6126c9565b6105b988888b610e22565b8051602082015160408301516060840151608090940151929d919c509a509198509650945050505050565b60008060008060606105f46126c9565b6105b988888b6113d9565b7f000000000000000000000000000000000000000000000000000000000000000081565b61062b6126f8565b610634886115b3565b905061063e6126f8565b610647886115b3565b90506000600186600281111561065957fe5b600281111561066457fe5b146106745781610120015161067b565b8161010001515b90506000816001600160a01b03166370a08231336040518263ffffffff1660e01b81526004016106ab9190612d5d565b60206040518083038186803b1580156106c357600080fd5b505afa1580156106d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106fb9190612c89565b905060008189111561070d578161070f565b885b90508a6001600160a01b03168c6001600160a01b0316146107ec57898982101561074a576107478a610741838561165e565b90611698565b90505b60606107588e8e858b6116da565b9050818160008151811061076857fe5b6020026020010151111561078e5760405162461bcd60e51b815260040161023e90613060565b6107c38e8860e0015133846000815181106107a557fe5b60200260200101518d8036038101906107be9190612b35565b6118dc565b6107e48e8e836000815181106107d557fe5b6020026020010151868c611a28565b505050610808565b6108088c8660e0015133848b8036038101906107be9190612b35565b61083d6001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000006000611dbc565b6108716001600160a01b038c167f000000000000000000000000000000000000000000000000000000000000000083611dbc565b60405163573ade8160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063573ade81906108c3908e9085908d903390600401612e55565b602060405180830381600087803b1580156108dd57600080fd5b505af11580156108f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109159190612c89565b50505050505050505050505050565b61092c6109da565b6000546001600160a01b039081169116146109595760405162461bcd60e51b815260040161023e9061302b565b6001600160a01b03811661097f5760405162461bcd60e51b815260040161023e90612ef5565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6109e661268b565b60008060008060008060008060008a806020019051810190610a089190612879565b9850985098509850985098509850985098506040518060a001604052808a6001600160a01b031681526020018981526020018881526020016040518060a001604052808981526020018881526020018760ff1681526020018681526020018581525081526020018215158152509950505050505050505050919050565b610a8d6126f8565b610a968a6115b3565b9050610acd6001600160a01b038a167f00000000000000000000000000000000000000000000000000000000000000006000611dbc565b610b016001600160a01b038a167f00000000000000000000000000000000000000000000000000000000000000008a611dbc565b6040516370a0823160e01b81526000906001600160a01b038b16906370a0823190610b30903090600401612d5d565b60206040518083038186803b158015610b4857600080fd5b505afa158015610b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b809190612c89565b60405163573ade8160e01b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063573ade8190610bd5908d908d908c908c90600401612e55565b602060405180830381600087803b158015610bef57600080fd5b505af1158015610c03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c279190612c89565b506040516370a0823160e01b8152610caf906001600160a01b038c16906370a0823190610c58903090600401612d5d565b60206040518083038186803b158015610c7057600080fd5b505afa158015610c84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca89190612c89565b8290611ebb565b9050896001600160a01b03168b6001600160a01b031614610d85578789821015610ce457610ce18a610741838561165e565b90505b6000610cf08388611efd565b90506060610d008e8e84896116da565b90508281600081518110610d1057fe5b60200260200101511115610d365760405162461bcd60e51b815260040161023e90613060565b610d5b8e8660e001518b84600081518110610d4d57fe5b60200260200101518b6118dc565b610d7c8e8e83600081518110610d6d57fe5b6020026020010151858a611a28565b50505050610da1565b60e0820151610da1908c9088610d9b858a611efd565b886118dc565b610dd66001600160a01b038b167f00000000000000000000000000000000000000000000000000000000000000006000611dbc565b610e157f0000000000000000000000000000000000000000000000000000000000000000610e048b88611efd565b6001600160a01b038d169190611dbc565b5050505050505050505050565b610e2a6126c9565b6000610e47610e4061271061074186600961165e565b8490611ebb565b9050836001600160a01b0316856001600160a01b03161415610f13576000610e6e86611f22565b60408051600180825281830190925291925060609190602080830190803683370190505090508681600081518110610ea257fe5b6001600160a01b039092166020928302919091018201526040805160a08101909152848152908101610ee08761074187670de0b6b3a764000061165e565b8152602001610ef0898886611f9e565b8152602001610f00898686611f9e565b81526020018281525093505050506113d2565b60408051600280825260608083018452926020830190803683370190505090508581600081518110610f4157fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508481600181518110610f6f57fe5b6001600160a01b0392909216602092830291909101820152604080516003808252608082019092526060928392839291820183803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b03161415801561102057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614155b1561118c57888160008151811061103357fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061108157fe5b60200260200101906001600160a01b031690816001600160a01b03168152505087816002815181106110af57fe5b6001600160a01b03928316602091820292909201015260405163d06ca61f60e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063d06ca61f9061110d908890859060040161316b565b60006040518083038186803b15801561112557600080fd5b505afa92505050801561115a57506040513d6000823e601f3d908101601f191682016040526111579190810190612a84565b60015b61118457604080516003808252608082019092529060208201606080368337019050509150611187565b91505b6111ae565b6040805160038082526080820190925290602082016060803683370190505091505b60405163d06ca61f60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d06ca61f906111ff908990899060040161316b565b60006040518083038186803b15801561121757600080fd5b505afa92505050801561124c57506040513d6000823e601f3d908101601f191682016040526112499190810190612a84565b60015b61128c5760408051600280825260608201835290916020830190803683370190505093508260028151811061127d57fe5b602002602001015190506112f2565b8094508460018151811061129c57fe5b6020026020010151846002815181106112b157fe5b6020026020010151116112d857846001815181106112cb57fe5b60200260200101516112ee565b836002815181106112e557fe5b60200260200101515b9150505b60006112fd8b611f22565b9050600061130a8b611f22565b9050600061133f61131f85600a86900a61165e565b610741600a85900a6113398d670de0b6b3a764000061165e565b9061165e565b90506040518060a001604052808581526020018281526020016113638f8e87611f9e565b81526020016113738e8786611f9e565b815260200185156113a6578860018151811061138b57fe5b6020026020010151861461139f57866113a1565b895b6113c4565b60408051600280825260608201835290916020830190803683375050505b905299505050505050505050505b9392505050565b6113e16126c9565b826001600160a01b0316846001600160a01b031614156114b757600061141861141161271061074186600961165e565b8490611efd565b9050600061142586611f22565b6040805160018082528183019092529192506060919060208083019080368337019050509050868160008151811061145957fe5b6001600160a01b039092166020928302919091018201526040805160a081019091528481529081016114978561074189670de0b6b3a764000061165e565b81526020016114a7898686611f9e565b8152602001610f00898886611f9e565b6060806114c5868686611fed565b91509150600061151f6114fc6127106107416009876000815181106114e657fe5b602002602001015161165e90919063ffffffff16565b8460008151811061150957fe5b6020026020010151611efd90919063ffffffff16565b9050600061152c88611f22565b9050600061153988611f22565b9050600061156861154e85600a85900a61165e565b610741600a86900a6113398c670de0b6b3a764000061165e565b90506040518060a0016040528085815260200182815260200161158c8c8787611f9e565b815260200161159c8b8b86611f9e565b815260200195909552509298975050505050505050565b6115bb6126f8565b6040516335ea6a7560e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906335ea6a7590611607908590600401612d5d565b6101806040518083038186803b15801561162057600080fd5b505afa158015611634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116589190612b8e565b92915050565b60008261166d57506000611658565b8282028284828161167a57fe5b04146113d25760405162461bcd60e51b815260040161023e90612fea565b60006113d283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123aa565b60608082156117b357604080516003808252608082019092529060208201606080368337019050509050858160008151811061171257fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061176057fe5b60200260200101906001600160a01b031690816001600160a01b031681525050848160028151811061178e57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050611830565b604080516002808252606082018352909160208301908036833701905050905085816000815181106117e157fe5b60200260200101906001600160a01b031690816001600160a01b031681525050848160018151811061180f57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6040516307c0329d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631f00ca749061187e908790859060040161316b565b60006040518083038186803b15801561189657600080fd5b505afa1580156118aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118d29190810190612a84565b9695505050505050565b6118e5816123e1565b1561196957836001600160a01b031663d505accf8430846000015185602001518660400151876060015188608001516040518863ffffffff1660e01b81526004016119369796959493929190612dd8565b600060405180830381600087803b15801561195057600080fd5b505af1158015611964573d6000803e3d6000fd5b505050505b61197e6001600160a01b038516843085612406565b604051631a4ca37b60e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906369328dec906119ce90889086903090600401612e32565b602060405180830381600087803b1580156119e857600080fd5b505af11580156119fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a209190612c89565b505050505050565b600080611a3487611f22565b90506000611a4187611f22565b90506000611a4e8961242d565b90506000611a5b8961242d565b90506000611a9f611a70612710610bb8611efd565b611a99611a8186600a89900a61165e565b610741611a9287600a8c900a61165e565b8d9061165e565b906124cc565b9050808910611ac05760405162461bcd60e51b815260040161023e90612fa7565b611af56001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000006000611dbc565b611b296001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000008b611dbc565b60608715611c01576040805160038082526080820190925290602082016060803683370190505090508b81600081518110611b6057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611bae57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508a81600281518110611bdc57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050611c7e565b60408051600280825260608201835290916020830190803683370190505090508b81600081518110611c2f57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508a81600181518110611c5d57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b604051634401edf760e11b81526060906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638803dbee90611cd5908d908f90879030904290600401613184565b600060405180830381600087803b158015611cef57600080fd5b505af1158015611d03573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2b9190810190612a84565b90507fa078c4190abe07940190effc1846be0ccf03ad6007bc9e93f9697d0b460befbb8d8d83600081518110611d5d57fe5b602002602001015184600186510381518110611d7557fe5b6020026020010151604051611d8d9493929190612daf565b60405180910390a180600081518110611da257fe5b602002602001015197505050505050505095945050505050565b801580611e445750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e90611df29030908690600401612d71565b60206040518083038186803b158015611e0a57600080fd5b505afa158015611e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e429190612c89565b155b611e605760405162461bcd60e51b815260040161023e906130d5565b611eb68363095ea7b360e01b8484604051602401611e7f929190612e19565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261253e565b505050565b60006113d283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612623565b6000828201838110156113d25760405162461bcd60e51b815260040161023e90612f3b565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611f5d57600080fd5b505afa158015611f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f959190612ce2565b60ff1692915050565b600080611fbe7310f7fc1f91ba351f9c629c5947ad69bd03c05b9661242d565b90506000611fcb8661242d565b90506118d2670de0b6b3a764000061074184611339600a89900a838b8861165e565b604080516002808252606082810190935282918291816020016020820280368337019050509050858160008151811061202257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050848160018151811061205057fe5b6001600160a01b0392909216602092830291909101820152604080516003808252608082019092526060928392839291820183803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b03161415801561210157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614155b1561226d57888160008151811061211457fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061216257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050878160028151811061219057fe5b6001600160a01b0392831660209182029290920101526040516307c0329d60e21b81527f000000000000000000000000000000000000000000000000000000000000000090911690631f00ca74906121ee908a90859060040161316b565b60006040518083038186803b15801561220657600080fd5b505afa92505050801561223b57506040513d6000823e601f3d908101601f191682016040526122389190810190612a84565b60015b61226557604080516003808252608082019092529060208201606080368337019050509150612268565b91505b61228f565b6040805160038082526080820190925290602082016060803683370190505091505b6040516307c0329d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631f00ca74906122dd908a90889060040161316b565b60006040518083038186803b1580156122f557600080fd5b505afa92505050801561232a57506040513d6000823e601f3d908101601f191682016040526123279190810190612a84565b60015b61233b5790945092506123a2915050565b8093508360008151811061234b57fe5b60200260200101518360008151811061236057fe5b602002602001015110801561238a57508260008151811061237d57fe5b6020026020010151600014155b612395578385612398565b82825b9650965050505050505b935093915050565b600081836123cb5760405162461bcd60e51b815260040161023e9190612e8b565b5060008385816123d757fe5b0495945050505050565b6000816040015160ff1682602001511480156123ff57506020820151155b1592915050565b612427846323b872dd60e01b858585604051602401611e7f93929190612d8b565b50505050565b60405163b3596f0760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b3596f079061247c908590600401612d5d565b60206040518083038186803b15801561249457600080fd5b505afa1580156124a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116589190612c89565b60008215806124d9575081155b156124e657506000611658565b8161138819816124f257fe5b0483111560405180604001604052806002815260200161068760f31b8152509061252f5760405162461bcd60e51b815260040161023e9190612e8b565b50506127109102611388010490565b612550826001600160a01b031661264f565b61256c5760405162461bcd60e51b815260040161023e9061312b565b60006060836001600160a01b0316836040516125889190612d41565b6000604051808303816000865af19150503d80600081146125c5576040519150601f19603f3d011682016040523d82523d6000602084013e6125ca565b606091505b5091509150816125ec5760405162461bcd60e51b815260040161023e90612f72565b80511561242757808060200190518101906126079190612b19565b6124275760405162461bcd60e51b815260040161023e9061308b565b600081848411156126475760405162461bcd60e51b815260040161023e9190612e8b565b505050900390565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061268357508115155b949350505050565b6040518060a0016040528060006001600160a01b0316815260200160008152602001600081526020016126bc612763565b8152600060209091015290565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001606081525090565b60405180610180016040528061270c612791565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b6040518060200160405280600081525090565b805161165881613269565b60008083601f8401126127c0578182fd5b50813567ffffffffffffffff8111156127d7578182fd5b60208301915083602080830285010111156127f157600080fd5b9250929050565b600060208284031215612809578081fd5b61281360206131f6565b9151825250919050565b80516fffffffffffffffffffffffffffffffff8116811461165857600080fd5b805164ffffffffff8116811461165857600080fd5b80516116588161328f565b60006020828403121561286e578081fd5b81356113d281613269565b60008060008060008060008060006101208a8c031215612897578485fd5b89516128a281613269565b8099505060208a0151975060408a0151965060608a0151955060808a0151945060a08a01516128d08161328f565b8094505060c08a0151925060e08a015191506101008a01516128f181613281565b809150509295985092959850929598565b600080600080600080600087890361016081121561291e578182fd5b883561292981613269565b9750602089013561293981613269565b965060408901359550606089013594506080890135935060a0609f1982011215612961578182fd5b5060a08801915061014088013561297781613281565b8091505092959891949750929550565b600080600080600080600080600060a08a8c0312156129a4578283fd5b893567ffffffffffffffff808211156129bb578485fd5b6129c78d838e016127af565b909b50995060208c01359150808211156129df578485fd5b6129eb8d838e016127af565b909950975060408c0135915080821115612a03578485fd5b612a0f8d838e016127af565b909750955060608c01359150612a2482613269565b90935060808b01359080821115612a39578384fd5b818c0191508c601f830112612a4c578384fd5b813581811115612a5a578485fd5b8d6020828501011115612a6b578485fd5b6020830194508093505050509295985092959850929598565b60006020808385031215612a96578182fd5b825167ffffffffffffffff811115612aac578283fd5b8301601f81018513612abc578283fd5b8051612acf612aca8261321d565b6131f6565b8181528381019083850185840285018601891015612aeb578687fd5b8694505b83851015612b0d578051835260019490940193918501918501612aef565b50979650505050505050565b600060208284031215612b2a578081fd5b81516113d281613281565b600060a08284031215612b46578081fd5b612b5060a06131f6565b82358152602083013560208201526040830135612b6c8161328f565b6040820152606083810135908201526080928301359281019290925250919050565b6000610180808385031215612ba1578182fd5b612baa816131f6565b9050612bb684846127f8565b8152612bc5846020850161281d565b6020820152612bd7846040850161281d565b6040820152612be9846060850161281d565b6060820152612bfb846080850161281d565b6080820152612c0d8460a0850161281d565b60a0820152612c1f8460c0850161283d565b60c0820152612c318460e085016127a4565b60e0820152610100612c45858286016127a4565b90820152610120612c58858583016127a4565b90820152610140612c6b858583016127a4565b90820152610160612c7e85858301612852565b908201529392505050565b600060208284031215612c9a578081fd5b5051919050565b600080600060608486031215612cb5578081fd5b833592506020840135612cc781613269565b91506040840135612cd781613269565b809150509250925092565b600060208284031215612cf3578081fd5b81516113d28161328f565b6000815180845260208085019450808401835b83811015612d365781516001600160a01b031687529582019590820190600101612d11565b509495945050505050565b60008251612d5381846020870161323d565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6001600160a01b03948516815260208101939093526040830191909152909116606082015260800190565b901515815260200190565b6000602082528251806020840152612eaa81604085016020870161323d565b601f01601f19169190910160400192915050565b6020808252601b908201527f43414c4c45525f4d5553545f42455f4c454e44494e475f504f4f4c0000000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b60208082526023908201527f6d6178416d6f756e74546f5377617020657863656564206d617820736c69707060408201526261676560e81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601190820152700e6d8d2e0e0c2ceca40e8dede40d0d2ced607b1b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526036908201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60408201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606082015260800190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b90815260200190565b6000838252604060208301526126836040830184612cfe565b600086825285602083015260a060408301526131a360a0830186612cfe565b6001600160a01b0394909416606083015250608001529392505050565b600086825285602083015284604083015283606083015260a060808301526131eb60a0830184612cfe565b979650505050505050565b60405181810167ffffffffffffffff8111828210171561321557600080fd5b604052919050565b600067ffffffffffffffff821115613233578081fd5b5060209081020190565b60005b83811015613258578181015183820152602001613240565b838111156124275750506000910152565b6001600160a01b038116811461327e57600080fd5b50565b801515811461327e57600080fd5b60ff8116811461327e57600080fdfea264697066735822122088d723a5af4f75f58bcb4401863bc7d118a5b6e7b33e169f602a92e48802593264736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xFF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x920F5C84 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xCDF58CD6 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xCDF58CD6 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0xD8264920 EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0xE6813563 EQ PUSH2 0x1E3 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1F6 JUMPI PUSH2 0xFF JUMP JUMPDEST DUP1 PUSH4 0x920F5C84 EQ PUSH2 0x174 JUMPI DUP1 PUSH4 0x9D1211BF EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0xB4DCFC77 EQ PUSH2 0x19C JUMPI DUP1 PUSH4 0xBAF7FA99 EQ PUSH2 0x1A4 JUMPI PUSH2 0xFF JUMP JUMPDEST DUP1 PUSH4 0x32E4B286 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x32E4B286 EQ PUSH2 0x154 JUMPI DUP1 PUSH4 0x38013F02 EQ PUSH2 0x15C JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x16C JUMPI PUSH2 0xFF JUMP JUMPDEST DUP1 PUSH3 0xAE3BF8 EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x40141E5 EQ PUSH2 0x119 JUMPI DUP1 PUSH4 0x542975C EQ PUSH2 0x137 JUMPI DUP1 PUSH4 0x74B2E43 EQ PUSH2 0x13F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x117 PUSH2 0x112 CALLDATASIZE PUSH1 0x4 PUSH2 0x285D JUMP JUMPDEST PUSH2 0x209 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x121 PUSH2 0x34D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x2D5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x121 PUSH2 0x371 JUMP JUMPDEST PUSH2 0x147 PUSH2 0x395 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x3162 JUMP JUMPDEST PUSH2 0x147 PUSH2 0x39A JUMP JUMPDEST PUSH2 0x121 PUSH2 0x3A0 JUMP JUMPDEST PUSH2 0x117 PUSH2 0x3C4 JUMP JUMPDEST PUSH2 0x121 PUSH2 0x443 JUMP JUMPDEST PUSH2 0x187 PUSH2 0x182 CALLDATASIZE PUSH1 0x4 PUSH2 0x2987 JUMP JUMPDEST PUSH2 0x452 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x2E80 JUMP JUMPDEST PUSH2 0x121 PUSH2 0x562 JUMP JUMPDEST PUSH2 0x121 PUSH2 0x57A JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x1B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CA1 JUMP JUMPDEST PUSH2 0x59E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x31C0 JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x1D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CA1 JUMP JUMPDEST PUSH2 0x5E4 JUMP JUMPDEST PUSH2 0x121 PUSH2 0x5FF JUMP JUMPDEST PUSH2 0x117 PUSH2 0x1F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2902 JUMP JUMPDEST PUSH2 0x623 JUMP JUMPDEST PUSH2 0x117 PUSH2 0x204 CALLDATASIZE PUSH1 0x4 PUSH2 0x285D JUMP JUMPDEST PUSH2 0x924 JUMP JUMPDEST PUSH2 0x211 PUSH2 0x9DA JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x247 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x302B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB PUSH2 0x25E PUSH2 0x443 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x28A SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2D5D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2DA SWAP2 SWAP1 PUSH2 0x2C89 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F7 SWAP3 SWAP2 SWAP1 PUSH2 0x2E19 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x325 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x349 SWAP2 SWAP1 PUSH2 0x2B19 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x9 DUP2 JUMP JUMPDEST PUSH2 0xBB8 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x3CC PUSH2 0x9DA JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x3F9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x302B JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x49C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x2EBE JUMP JUMPDEST PUSH2 0x4A4 PUSH2 0x268B JUMP JUMPDEST PUSH2 0x4E3 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x9DE SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH2 0x551 DUP2 PUSH1 0x0 ADD MLOAD DUP13 DUP13 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x4FA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x50F SWAP2 SWAP1 PUSH2 0x285D JUMP JUMPDEST DUP12 DUP12 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x51C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP5 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0x40 ADD MLOAD DUP11 DUP14 DUP14 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x53B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 PUSH1 0x60 ADD MLOAD DUP10 PUSH1 0x80 ADD MLOAD PUSH2 0xA85 JUMP JUMPDEST POP PUSH1 0x1 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0x10F7FC1F91BA351F9C629C5947AD69BD03C05B96 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 PUSH2 0x5AE PUSH2 0x26C9 JUMP JUMPDEST PUSH2 0x5B9 DUP9 DUP9 DUP12 PUSH2 0xE22 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 SWAP1 SWAP5 ADD MLOAD SWAP3 SWAP14 SWAP2 SWAP13 POP SWAP11 POP SWAP2 SWAP9 POP SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 PUSH2 0x5F4 PUSH2 0x26C9 JUMP JUMPDEST PUSH2 0x5B9 DUP9 DUP9 DUP12 PUSH2 0x13D9 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x62B PUSH2 0x26F8 JUMP JUMPDEST PUSH2 0x634 DUP9 PUSH2 0x15B3 JUMP JUMPDEST SWAP1 POP PUSH2 0x63E PUSH2 0x26F8 JUMP JUMPDEST PUSH2 0x647 DUP9 PUSH2 0x15B3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP7 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x659 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x664 JUMPI INVALID JUMPDEST EQ PUSH2 0x674 JUMPI DUP2 PUSH2 0x120 ADD MLOAD PUSH2 0x67B JUMP JUMPDEST DUP2 PUSH2 0x100 ADD MLOAD JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6AB SWAP2 SWAP1 PUSH2 0x2D5D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6D7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6FB SWAP2 SWAP1 PUSH2 0x2C89 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP10 GT ISZERO PUSH2 0x70D JUMPI DUP2 PUSH2 0x70F JUMP JUMPDEST DUP9 JUMPDEST SWAP1 POP DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x7EC JUMPI DUP10 DUP10 DUP3 LT ISZERO PUSH2 0x74A JUMPI PUSH2 0x747 DUP11 PUSH2 0x741 DUP4 DUP6 PUSH2 0x165E JUMP JUMPDEST SWAP1 PUSH2 0x1698 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x60 PUSH2 0x758 DUP15 DUP15 DUP6 DUP12 PUSH2 0x16DA JUMP JUMPDEST SWAP1 POP DUP2 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x768 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x78E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x3060 JUMP JUMPDEST PUSH2 0x7C3 DUP15 DUP9 PUSH1 0xE0 ADD MLOAD CALLER DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x7A5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP14 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x7BE SWAP2 SWAP1 PUSH2 0x2B35 JUMP JUMPDEST PUSH2 0x18DC JUMP JUMPDEST PUSH2 0x7E4 DUP15 DUP15 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x7D5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 DUP13 PUSH2 0x1A28 JUMP JUMPDEST POP POP POP PUSH2 0x808 JUMP JUMPDEST PUSH2 0x808 DUP13 DUP7 PUSH1 0xE0 ADD MLOAD CALLER DUP5 DUP12 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x7BE SWAP2 SWAP1 PUSH2 0x2B35 JUMP JUMPDEST PUSH2 0x83D PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH32 0x0 PUSH1 0x0 PUSH2 0x1DBC JUMP JUMPDEST PUSH2 0x871 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH32 0x0 DUP4 PUSH2 0x1DBC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x573ADE81 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x573ADE81 SWAP1 PUSH2 0x8C3 SWAP1 DUP15 SWAP1 DUP6 SWAP1 DUP14 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x2E55 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x915 SWAP2 SWAP1 PUSH2 0x2C89 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x92C PUSH2 0x9DA JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x959 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x302B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x97F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x2EF5 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x9E6 PUSH2 0x268B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP11 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xA08 SWAP2 SWAP1 PUSH2 0x2879 JUMP JUMPDEST SWAP9 POP SWAP9 POP SWAP9 POP SWAP9 POP SWAP9 POP SWAP9 POP SWAP9 POP SWAP9 POP SWAP9 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP10 DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE POP DUP2 MSTORE PUSH1 0x20 ADD DUP3 ISZERO ISZERO DUP2 MSTORE POP SWAP10 POP POP POP POP POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xA8D PUSH2 0x26F8 JUMP JUMPDEST PUSH2 0xA96 DUP11 PUSH2 0x15B3 JUMP JUMPDEST SWAP1 POP PUSH2 0xACD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH32 0x0 PUSH1 0x0 PUSH2 0x1DBC JUMP JUMPDEST PUSH2 0xB01 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH32 0x0 DUP11 PUSH2 0x1DBC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xB30 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2D5D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB5C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB80 SWAP2 SWAP1 PUSH2 0x2C89 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x573ADE81 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x573ADE81 SWAP1 PUSH2 0xBD5 SWAP1 DUP14 SWAP1 DUP14 SWAP1 DUP13 SWAP1 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x2E55 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC03 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC27 SWAP2 SWAP1 PUSH2 0x2C89 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xCAF SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xC58 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2D5D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC84 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCA8 SWAP2 SWAP1 PUSH2 0x2C89 JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x1EBB JUMP JUMPDEST SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xD85 JUMPI DUP8 DUP10 DUP3 LT ISZERO PUSH2 0xCE4 JUMPI PUSH2 0xCE1 DUP11 PUSH2 0x741 DUP4 DUP6 PUSH2 0x165E JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 PUSH2 0xCF0 DUP4 DUP9 PUSH2 0x1EFD JUMP JUMPDEST SWAP1 POP PUSH1 0x60 PUSH2 0xD00 DUP15 DUP15 DUP5 DUP10 PUSH2 0x16DA JUMP JUMPDEST SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xD10 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0xD36 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x3060 JUMP JUMPDEST PUSH2 0xD5B DUP15 DUP7 PUSH1 0xE0 ADD MLOAD DUP12 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xD4D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP12 PUSH2 0x18DC JUMP JUMPDEST PUSH2 0xD7C DUP15 DUP15 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xD6D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP11 PUSH2 0x1A28 JUMP JUMPDEST POP POP POP POP PUSH2 0xDA1 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0xDA1 SWAP1 DUP13 SWAP1 DUP9 PUSH2 0xD9B DUP6 DUP11 PUSH2 0x1EFD JUMP JUMPDEST DUP9 PUSH2 0x18DC JUMP JUMPDEST PUSH2 0xDD6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH32 0x0 PUSH1 0x0 PUSH2 0x1DBC JUMP JUMPDEST PUSH2 0xE15 PUSH32 0x0 PUSH2 0xE04 DUP12 DUP9 PUSH2 0x1EFD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND SWAP2 SWAP1 PUSH2 0x1DBC JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE2A PUSH2 0x26C9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE47 PUSH2 0xE40 PUSH2 0x2710 PUSH2 0x741 DUP7 PUSH1 0x9 PUSH2 0x165E JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x1EBB JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xF13 JUMPI PUSH1 0x0 PUSH2 0xE6E DUP7 PUSH2 0x1F22 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP PUSH1 0x60 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP7 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xEA2 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP5 DUP2 MSTORE SWAP1 DUP2 ADD PUSH2 0xEE0 DUP8 PUSH2 0x741 DUP8 PUSH8 0xDE0B6B3A7640000 PUSH2 0x165E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xEF0 DUP10 DUP9 DUP7 PUSH2 0x1F9E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF00 DUP10 DUP7 DUP7 PUSH2 0x1F9E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP SWAP4 POP POP POP POP PUSH2 0x13D2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xF41 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP5 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xF6F JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP3 ADD DUP4 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0x1020 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x118C JUMPI DUP9 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1033 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1081 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP8 DUP2 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x10AF JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0xD06CA61F PUSH1 0xE0 SHL DUP2 MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xD06CA61F SWAP1 PUSH2 0x110D SWAP1 DUP9 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x316B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x115A JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1157 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2A84 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1184 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP2 POP PUSH2 0x1187 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x11AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP2 POP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD06CA61F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xD06CA61F SWAP1 PUSH2 0x11FF SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x316B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x124C JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1249 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2A84 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x128C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD DUP4 MSTORE SWAP1 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP4 POP DUP3 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x127D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x12F2 JUMP JUMPDEST DUP1 SWAP5 POP DUP5 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x129C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x12B1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT PUSH2 0x12D8 JUMPI DUP5 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x12CB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x12EE JUMP JUMPDEST DUP4 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x12E5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD JUMPDEST SWAP2 POP POP JUMPDEST PUSH1 0x0 PUSH2 0x12FD DUP12 PUSH2 0x1F22 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x130A DUP12 PUSH2 0x1F22 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x133F PUSH2 0x131F DUP6 PUSH1 0xA DUP7 SWAP1 EXP PUSH2 0x165E JUMP JUMPDEST PUSH2 0x741 PUSH1 0xA DUP6 SWAP1 EXP PUSH2 0x1339 DUP14 PUSH8 0xDE0B6B3A7640000 PUSH2 0x165E JUMP JUMPDEST SWAP1 PUSH2 0x165E JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1363 DUP16 DUP15 DUP8 PUSH2 0x1F9E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1373 DUP15 DUP8 DUP7 PUSH2 0x1F9E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO PUSH2 0x13A6 JUMPI DUP9 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x138B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 EQ PUSH2 0x139F JUMPI DUP7 PUSH2 0x13A1 JUMP JUMPDEST DUP10 JUMPDEST PUSH2 0x13C4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD DUP4 MSTORE SWAP1 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP POP JUMPDEST SWAP1 MSTORE SWAP10 POP POP POP POP POP POP POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x13E1 PUSH2 0x26C9 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x14B7 JUMPI PUSH1 0x0 PUSH2 0x1418 PUSH2 0x1411 PUSH2 0x2710 PUSH2 0x741 DUP7 PUSH1 0x9 PUSH2 0x165E JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x1EFD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1425 DUP7 PUSH2 0x1F22 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP PUSH1 0x60 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP7 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1459 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP5 DUP2 MSTORE SWAP1 DUP2 ADD PUSH2 0x1497 DUP6 PUSH2 0x741 DUP10 PUSH8 0xDE0B6B3A7640000 PUSH2 0x165E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14A7 DUP10 DUP7 DUP7 PUSH2 0x1F9E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF00 DUP10 DUP9 DUP7 PUSH2 0x1F9E JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x14C5 DUP7 DUP7 DUP7 PUSH2 0x1FED JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x151F PUSH2 0x14FC PUSH2 0x2710 PUSH2 0x741 PUSH1 0x9 DUP8 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x14E6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x165E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1509 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1EFD SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x152C DUP9 PUSH2 0x1F22 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1539 DUP9 PUSH2 0x1F22 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1568 PUSH2 0x154E DUP6 PUSH1 0xA DUP6 SWAP1 EXP PUSH2 0x165E JUMP JUMPDEST PUSH2 0x741 PUSH1 0xA DUP7 SWAP1 EXP PUSH2 0x1339 DUP13 PUSH8 0xDE0B6B3A7640000 PUSH2 0x165E JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x158C DUP13 DUP8 DUP8 PUSH2 0x1F9E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x159C DUP12 DUP12 DUP7 PUSH2 0x1F9E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP6 SWAP1 SWAP6 MSTORE POP SWAP3 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x15BB PUSH2 0x26F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x35EA6A75 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x35EA6A75 SWAP1 PUSH2 0x1607 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2D5D JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1620 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1634 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1658 SWAP2 SWAP1 PUSH2 0x2B8E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x166D JUMPI POP PUSH1 0x0 PUSH2 0x1658 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x167A JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x13D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x2FEA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13D2 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x23AA JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 ISZERO PUSH2 0x17B3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1712 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1760 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP5 DUP2 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x178E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH2 0x1830 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD DUP4 MSTORE SWAP1 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x17E1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP5 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x180F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7C0329D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x1F00CA74 SWAP1 PUSH2 0x187E SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x316B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1896 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x18D2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2A84 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x18E5 DUP2 PUSH2 0x23E1 JUMP JUMPDEST ISZERO PUSH2 0x1969 JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD505ACCF DUP5 ADDRESS DUP5 PUSH1 0x0 ADD MLOAD DUP6 PUSH1 0x20 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH1 0x60 ADD MLOAD DUP9 PUSH1 0x80 ADD MLOAD PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1936 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2DD8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1950 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1964 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x197E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 ADDRESS DUP6 PUSH2 0x2406 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH2 0x19CE SWAP1 DUP9 SWAP1 DUP7 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2E32 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x19FC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A20 SWAP2 SWAP1 PUSH2 0x2C89 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1A34 DUP8 PUSH2 0x1F22 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1A41 DUP8 PUSH2 0x1F22 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1A4E DUP10 PUSH2 0x242D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1A5B DUP10 PUSH2 0x242D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1A9F PUSH2 0x1A70 PUSH2 0x2710 PUSH2 0xBB8 PUSH2 0x1EFD JUMP JUMPDEST PUSH2 0x1A99 PUSH2 0x1A81 DUP7 PUSH1 0xA DUP10 SWAP1 EXP PUSH2 0x165E JUMP JUMPDEST PUSH2 0x741 PUSH2 0x1A92 DUP8 PUSH1 0xA DUP13 SWAP1 EXP PUSH2 0x165E JUMP JUMPDEST DUP14 SWAP1 PUSH2 0x165E JUMP JUMPDEST SWAP1 PUSH2 0x24CC JUMP JUMPDEST SWAP1 POP DUP1 DUP10 LT PUSH2 0x1AC0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x2FA7 JUMP JUMPDEST PUSH2 0x1AF5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH32 0x0 PUSH1 0x0 PUSH2 0x1DBC JUMP JUMPDEST PUSH2 0x1B29 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH32 0x0 DUP12 PUSH2 0x1DBC JUMP JUMPDEST PUSH1 0x60 DUP8 ISZERO PUSH2 0x1C01 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP12 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1B60 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1BAE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP11 DUP2 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x1BDC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH2 0x1C7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD DUP4 MSTORE SWAP1 SWAP2 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP12 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1C2F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP11 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1C5D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x4401EDF7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x60 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x8803DBEE SWAP1 PUSH2 0x1CD5 SWAP1 DUP14 SWAP1 DUP16 SWAP1 DUP8 SWAP1 ADDRESS SWAP1 TIMESTAMP SWAP1 PUSH1 0x4 ADD PUSH2 0x3184 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D03 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1D2B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2A84 JUMP JUMPDEST SWAP1 POP PUSH32 0xA078C4190ABE07940190EFFC1846BE0CCF03AD6007BC9E93F9697D0B460BEFBB DUP14 DUP14 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1D5D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 PUSH1 0x1 DUP7 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1D75 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x1D8D SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2DAF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1DA2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP8 POP POP POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 PUSH2 0x1E44 JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x1DF2 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2D71 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E1E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1E42 SWAP2 SWAP1 PUSH2 0x2C89 JUMP JUMPDEST ISZERO JUMPDEST PUSH2 0x1E60 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x30D5 JUMP JUMPDEST PUSH2 0x1EB6 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1E7F SWAP3 SWAP2 SWAP1 PUSH2 0x2E19 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x253E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13D2 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x2623 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x13D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x2F3B JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F71 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F95 SWAP2 SWAP1 PUSH2 0x2CE2 JUMP JUMPDEST PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1FBE PUSH20 0x10F7FC1F91BA351F9C629C5947AD69BD03C05B96 PUSH2 0x242D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1FCB DUP7 PUSH2 0x242D JUMP JUMPDEST SWAP1 POP PUSH2 0x18D2 PUSH8 0xDE0B6B3A7640000 PUSH2 0x741 DUP5 PUSH2 0x1339 PUSH1 0xA DUP10 SWAP1 EXP DUP4 DUP12 DUP9 PUSH2 0x165E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 DUP2 ADD SWAP1 SWAP4 MSTORE DUP3 SWAP2 DUP3 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2022 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP5 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x2050 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP3 ADD DUP4 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0x2101 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x226D JUMPI DUP9 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2114 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x2162 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP8 DUP2 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0x2190 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x7C0329D PUSH1 0xE2 SHL DUP2 MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x1F00CA74 SWAP1 PUSH2 0x21EE SWAP1 DUP11 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x316B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2206 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x223B JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x2238 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2A84 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2265 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP2 POP PUSH2 0x2268 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH2 0x228F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0x60 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP2 POP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x7C0329D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x1F00CA74 SWAP1 PUSH2 0x22DD SWAP1 DUP11 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x316B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x232A JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x2327 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2A84 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x233B JUMPI SWAP1 SWAP5 POP SWAP3 POP PUSH2 0x23A2 SWAP2 POP POP JUMP JUMPDEST DUP1 SWAP4 POP DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x234B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2360 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT DUP1 ISZERO PUSH2 0x238A JUMPI POP DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x237D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 EQ ISZERO JUMPDEST PUSH2 0x2395 JUMPI DUP4 DUP6 PUSH2 0x2398 JUMP JUMPDEST DUP3 DUP3 JUMPDEST SWAP7 POP SWAP7 POP POP POP POP POP POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x23CB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP2 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x23D7 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 ADD MLOAD PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD EQ DUP1 ISZERO PUSH2 0x23FF JUMPI POP PUSH1 0x20 DUP3 ADD MLOAD ISZERO JUMPDEST ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2427 DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1E7F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D8B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xB3596F07 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xB3596F07 SWAP1 PUSH2 0x247C SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2D5D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2494 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x24A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1658 SWAP2 SWAP1 PUSH2 0x2C89 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x24D9 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x24E6 JUMPI POP PUSH1 0x0 PUSH2 0x1658 JUMP JUMPDEST DUP2 PUSH2 0x1388 NOT DUP2 PUSH2 0x24F2 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x252F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP2 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST POP POP PUSH2 0x2710 SWAP2 MUL PUSH2 0x1388 ADD DIV SWAP1 JUMP JUMPDEST PUSH2 0x2550 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x264F JUMP JUMPDEST PUSH2 0x256C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x312B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x2588 SWAP2 SWAP1 PUSH2 0x2D41 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x25C5 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x25CA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x25EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x2F72 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2427 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2607 SWAP2 SWAP1 PUSH2 0x2B19 JUMP JUMPDEST PUSH2 0x2427 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP1 PUSH2 0x308B JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x2647 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23E SWAP2 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2683 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x26BC PUSH2 0x2763 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x270C PUSH2 0x2791 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x100 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x140 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x160 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1658 DUP2 PUSH2 0x3269 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x27C0 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x27D7 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x27F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2809 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x2813 PUSH1 0x20 PUSH2 0x31F6 JUMP JUMPDEST SWAP2 MLOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1658 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1658 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1658 DUP2 PUSH2 0x328F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x286E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x13D2 DUP2 PUSH2 0x3269 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x2897 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP10 MLOAD PUSH2 0x28A2 DUP2 PUSH2 0x3269 JUMP JUMPDEST DUP1 SWAP10 POP POP PUSH1 0x20 DUP11 ADD MLOAD SWAP8 POP PUSH1 0x40 DUP11 ADD MLOAD SWAP7 POP PUSH1 0x60 DUP11 ADD MLOAD SWAP6 POP PUSH1 0x80 DUP11 ADD MLOAD SWAP5 POP PUSH1 0xA0 DUP11 ADD MLOAD PUSH2 0x28D0 DUP2 PUSH2 0x328F JUMP JUMPDEST DUP1 SWAP5 POP POP PUSH1 0xC0 DUP11 ADD MLOAD SWAP3 POP PUSH1 0xE0 DUP11 ADD MLOAD SWAP2 POP PUSH2 0x100 DUP11 ADD MLOAD PUSH2 0x28F1 DUP2 PUSH2 0x3281 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP8 DUP10 SUB PUSH2 0x160 DUP2 SLT ISZERO PUSH2 0x291E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x2929 DUP2 PUSH2 0x3269 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x2939 DUP2 PUSH2 0x3269 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 PUSH1 0x9F NOT DUP3 ADD SLT ISZERO PUSH2 0x2961 JUMPI DUP2 DUP3 REVERT JUMPDEST POP PUSH1 0xA0 DUP9 ADD SWAP2 POP PUSH2 0x140 DUP9 ADD CALLDATALOAD PUSH2 0x2977 DUP2 PUSH2 0x3281 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x29A4 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP10 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x29BB JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x29C7 DUP14 DUP4 DUP15 ADD PUSH2 0x27AF JUMP JUMPDEST SWAP1 SWAP12 POP SWAP10 POP PUSH1 0x20 DUP13 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x29DF JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x29EB DUP14 DUP4 DUP15 ADD PUSH2 0x27AF JUMP JUMPDEST SWAP1 SWAP10 POP SWAP8 POP PUSH1 0x40 DUP13 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2A03 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2A0F DUP14 DUP4 DUP15 ADD PUSH2 0x27AF JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH1 0x60 DUP13 ADD CALLDATALOAD SWAP2 POP PUSH2 0x2A24 DUP3 PUSH2 0x3269 JUMP JUMPDEST SWAP1 SWAP4 POP PUSH1 0x80 DUP12 ADD CALLDATALOAD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x2A39 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP13 ADD SWAP2 POP DUP13 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2A4C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2A5A JUMPI DUP5 DUP6 REVERT JUMPDEST DUP14 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2A6B JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A96 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2AAC JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x2ABC JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x2ACF PUSH2 0x2ACA DUP3 PUSH2 0x321D JUMP JUMPDEST PUSH2 0x31F6 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP4 DUP6 ADD DUP6 DUP5 MUL DUP6 ADD DUP7 ADD DUP10 LT ISZERO PUSH2 0x2AEB JUMPI DUP7 DUP8 REVERT JUMPDEST DUP7 SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x2B0D JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0x2AEF JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B2A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x13D2 DUP2 PUSH2 0x3281 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B46 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x2B50 PUSH1 0xA0 PUSH2 0x31F6 JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH2 0x2B6C DUP2 PUSH2 0x328F JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x80 SWAP3 DUP4 ADD CALLDATALOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2BA1 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x2BAA DUP2 PUSH2 0x31F6 JUMP JUMPDEST SWAP1 POP PUSH2 0x2BB6 DUP5 DUP5 PUSH2 0x27F8 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x2BC5 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x281D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x2BD7 DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x281D JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x2BE9 DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x281D JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x2BFB DUP5 PUSH1 0x80 DUP6 ADD PUSH2 0x281D JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x2C0D DUP5 PUSH1 0xA0 DUP6 ADD PUSH2 0x281D JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x2C1F DUP5 PUSH1 0xC0 DUP6 ADD PUSH2 0x283D JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x2C31 DUP5 PUSH1 0xE0 DUP6 ADD PUSH2 0x27A4 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 PUSH2 0x2C45 DUP6 DUP3 DUP7 ADD PUSH2 0x27A4 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x120 PUSH2 0x2C58 DUP6 DUP6 DUP4 ADD PUSH2 0x27A4 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x140 PUSH2 0x2C6B DUP6 DUP6 DUP4 ADD PUSH2 0x27A4 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x160 PUSH2 0x2C7E DUP6 DUP6 DUP4 ADD PUSH2 0x2852 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C9A JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2CB5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2CC7 DUP2 PUSH2 0x3269 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x2CD7 DUP2 PUSH2 0x3269 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2CF3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x13D2 DUP2 PUSH2 0x328F JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2D36 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2D11 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2D53 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x323D JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP2 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2EAA DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x323D JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x43414C4C45525F4D5553545F42455F4C454E44494E475F504F4F4C0000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x40 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x6D6178416D6F756E74546F5377617020657863656564206D617820736C697070 PUSH1 0x40 DUP3 ADD MSTORE PUSH3 0x616765 PUSH1 0xE8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x11 SWAP1 DUP3 ADD MSTORE PUSH17 0xE6D8D2E0E0C2CECA40E8DEDE40D0D2CED PUSH1 0x7B SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x40 DUP3 ADD MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x36 SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A20617070726F76652066726F6D206E6F6E2D7A65726F PUSH1 0x40 DUP3 ADD MSTORE PUSH22 0x20746F206E6F6E2D7A65726F20616C6C6F77616E6365 PUSH1 0x50 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x2683 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2CFE JUMP JUMPDEST PUSH1 0x0 DUP7 DUP3 MSTORE DUP6 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x31A3 PUSH1 0xA0 DUP4 ADD DUP7 PUSH2 0x2CFE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP7 DUP3 MSTORE DUP6 PUSH1 0x20 DUP4 ADD MSTORE DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x31EB PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x2CFE JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3233 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3258 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3240 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2427 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x327E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x327E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x327E JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP9 0xD7 0x23 0xA5 0xAF 0x4F PUSH22 0xF58BCB4401863BC7D118A5B6E7B33E169F602A92E488 MUL MSIZE ORIGIN PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "600:9340:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19152:121:1;;;;;;:::i;:::-;;:::i;:::-;;1763:46;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;666:74:24;;;:::i;1575:60:1:-;;;:::i;:::-;;;;;;;:::i;1464:::-;;;:::i;1813:51::-;;;:::i;1610:135:11:-;;;:::i;1027:71::-;;;:::i;2182:647:4:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1669:89:1:-;;;:::i;744:51:24:-;;;:::i;2848:482:1:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;3927:::-;;;;;;:::i;:::-;;:::i;1868:59::-;;;:::i;3660:2146:4:-;;;;;;:::i;:::-;;:::i;1884:226:11:-;;;;;;:::i;:::-;;:::i;19152:121:1:-;1223:12:11;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;-1:-1:-1;;;1205:67:11;;;;;;;:::i;:::-;;;;;;;;;19213:5:1::1;-1:-1:-1::0;;;;;19213:14:1::1;;19228:7;:5;:7::i;:::-;19237:30;::::0;-1:-1:-1;;;19237:30:1;;-1:-1:-1;;;;;19237:15:1;::::1;::::0;::::1;::::0;:30:::1;::::0;19261:4:::1;::::0;19237:30:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19213:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19152:121:::0;:::o;1763:46::-;;;:::o;666:74:24:-;;;:::o;1575:60:1:-;1634:1;1575:60;:::o;1464:::-;1520:4;1464:60;:::o;1813:51::-;;;:::o;1610:135:11:-;1223:12;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;-1:-1:-1;;;1205:67:11;;;;;;;:::i;:::-;1712:1:::1;1696:6:::0;;1675:40:::1;::::0;-1:-1:-1;;;;;1696:6:11;;::::1;::::0;1675:40:::1;::::0;1712:1;;1675:40:::1;1738:1;1721:19:::0;;-1:-1:-1;;;;;;1721:19:11::1;::::0;;1610:135::o;1027:71::-;1065:7;1087:6;-1:-1:-1;;;;;1087:6:11;1027:71;:::o;2182:647:4:-;2385:4;2405:10;-1:-1:-1;;;;;2427:12:4;2405:35;;2397:75;;;;-1:-1:-1;;;2397:75:4;;;;;;;:::i;:::-;2479:32;;:::i;:::-;2514:21;2528:6;;2514:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2514:13:4;;-1:-1:-1;;;2514:21:4:i;:::-;2479:56;;2542:264;2563:13;:29;;;2600:6;;2607:1;2600:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;2617:7;;2625:1;2617:10;;;;;;;;;;;;;2635:13;:30;;;2673:13;:22;;;2703:9;2720:8;;2729:1;2720:11;;;;;;;;;;;;;2739:13;:29;;;2776:13;:24;;;2542:13;:264::i;:::-;-1:-1:-1;2820:4:4;;2182:647;-1:-1:-1;;;;;;;;;;2182:647:4:o;1669:89:1:-;1716:42;1669:89;:::o;744:51:24:-;;;:::o;2848:482:1:-;2999:7;3014;3029;3044;3059:16;3090:25;;:::i;:::-;3118:51;3137:9;3148:10;3160:8;3118:18;:51::i;:::-;3191:24;;3223:21;;;;3252:19;;;;3279:20;;;;3307:12;;;;;3191:24;;3223:21;;-1:-1:-1;3252:19:1;-1:-1:-1;3279:20:1;;-1:-1:-1;3307:12:1;-1:-1:-1;2848:482:1;-1:-1:-1;;;;;2848:482:1:o;3927:::-;4078:7;4093;4108;4123;4138:16;4169:25;;:::i;:::-;4197:51;4215:9;4226:10;4238:9;4197:17;:51::i;1868:59::-;;;:::o;3660:2146:4:-;3905:50;;:::i;:::-;3958:32;3974:15;3958;:32::i;:::-;3905:85;;3996:44;;:::i;:::-;4043:26;4059:9;4043:15;:26::i;:::-;3996:73;-1:-1:-1;4076:17:4;4146:33;4129:12;4102:40;;;;;;;;:77;;;;;;;;;:177;;4239:15;:40;;;4102:177;;;4190:15;:38;;;4102:177;4076:203;;4286:19;4315:9;-1:-1:-1;;;;;4308:27:4;;4336:10;4308:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4286:61;;4353:21;4396:11;4377:15;:30;;:62;;4428:11;4377:62;;;4410:15;4377:62;4353:86;;4469:9;-1:-1:-1;;;;;4450:28:4;:15;-1:-1:-1;;;;;4450:28:4;;4446:1037;;4518:16;4546:31;;;4542:137;;;4611:59;4654:15;4611:38;:19;4635:13;4611:23;:38::i;:::-;:42;;:59::i;:::-;4589:81;;4542:137;4756:24;4791:68;4805:15;4822:9;4833:13;4848:10;4791:13;:68::i;:::-;4756:103;;4889:19;4875:7;4883:1;4875:10;;;;;;;;;;;;;;:33;;4867:63;;;;-1:-1:-1;;;4867:63:4;;;;;;;:::i;:::-;4971:154;4992:15;5017:21;:35;;;5062:10;5082:7;5090:1;5082:10;;;;;;;;;;;;;;5102:15;4971:154;;;;;;;;;;:::i;:::-;:11;:154::i;:::-;5174:92;5200:15;5217:9;5228:7;5236:1;5228:10;;;;;;;;;;;;;;5240:13;5255:10;5174:25;:92::i;:::-;;4446:1037;;;;;5319:157;5340:15;5365:21;:35;;;5410:10;5430:13;5453:15;5319:157;;;;;;;;;;:::i;:::-;5597:55;-1:-1:-1;;;;;5597:29:4;;5635:12;5650:1;5597:29;:55::i;:::-;5658:67;-1:-1:-1;;;;;5658:29:4;;5696:12;5711:13;5658:29;:67::i;:::-;5731:70;;-1:-1:-1;;;5731:70:4;;-1:-1:-1;;;;;5731:12:4;:18;;;;:70;;5750:9;;5761:13;;5776:12;;5790:10;;5731:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3660:2146;;;;;;;;;;;;:::o;1884:226:11:-;1223:12;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;-1:-1:-1;;;1205:67:11;;;;;;;:::i;:::-;-1:-1:-1;;;;;1968:22:11;::::1;1960:73;;;;-1:-1:-1::0;;;1960:73:11::1;;;;;;;:::i;:::-;2065:6;::::0;;2044:38:::1;::::0;-1:-1:-1;;;;;2044:38:11;;::::1;::::0;2065:6;::::1;::::0;2044:38:::1;::::0;::::1;2088:6;:17:::0;;-1:-1:-1;;;;;;2088:17:11::1;-1:-1:-1::0;;;;;2088:17:11;;;::::1;::::0;;;::::1;::::0;;1884:226::o;587:98:7:-;670:10;587:98;:::o;9308:630:4:-;9375:18;;:::i;:::-;9409:23;9440:24;9472:16;9496:20;9524:16;9548:7;9563:9;9580;9597:15;9647:6;9627:120;;;;;;;;;;;;:::i;:::-;9401:346;;;;;;;;;;;;;;;;;;9767:166;;;;;;;;9788:15;-1:-1:-1;;;;;9767:166:4;;;;;9813:16;9767:166;;;;9839:8;9767:166;;;;9857:48;;;;;;;;9873:12;9857:48;;;;9887:8;9857:48;;;;9897:1;9857:48;;;;;;9900:1;9857:48;;;;9903:1;9857:48;;;9767:166;;;;9915:10;9767:166;;;;;9754:179;;;;;;;;;;;9308:630;;;:::o;6388:2186::-;6663:50;;:::i;:::-;6716:32;6732:15;6716;:32::i;:::-;6663:85;-1:-1:-1;6868:55:4;-1:-1:-1;;;;;6868:29:4;;6906:12;6921:1;6868:29;:55::i;:::-;6929:60;-1:-1:-1;;;;;6929:29:4;;6967:12;6982:6;6929:29;:60::i;:::-;7018:42;;-1:-1:-1;;;7018:42:4;;6995:20;;-1:-1:-1;;;;;7018:27:4;;;;;:42;;7054:4;;7018:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7066:58;;-1:-1:-1;;;7066:58:4;;6995:65;;-1:-1:-1;;;;;;7066:12:4;:18;;;;:58;;7085:9;;7096:6;;7104:8;;7114:9;;7066:58;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7162:42:4;;-1:-1:-1;;;7162:42:4;;7145:60;;-1:-1:-1;;;;;7162:27:4;;;;;:42;;7198:4;;7162:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7145:12;;:16;:60::i;:::-;7130:75;;7235:9;-1:-1:-1;;;;;7216:28:4;:15;-1:-1:-1;;;;;7216:28:4;;7212:1099;;7284:16;7312:21;;;7308:117;;;7367:49;7409:6;7367:37;:19;7391:12;7367:23;:37::i;:49::-;7345:71;;7308:117;7433:30;7466:25;:12;7483:7;7466:16;:25::i;:::-;7433:58;;7499:24;7534:77;7548:15;7565:9;7576:22;7600:10;7534:13;:77::i;:::-;7499:112;;7641:19;7627:7;7635:1;7627:10;;;;;;;;;;;;;;:33;;7619:63;;;;-1:-1:-1;;;7619:63:4;;;;;;;:::i;:::-;7723:153;7744:15;7769:21;:35;;;7814:9;7833:7;7841:1;7833:10;;;;;;;;;;;;;;7853:15;7723:11;:153::i;:::-;7934:149;7969:15;7994:9;8013:7;8021:1;8013:10;;;;;;;;;;;;;;8033:22;8065:10;7934:25;:149::i;:::-;;7212:1099;;;;;;8182:35;;;;8136:168;;8157:15;;8227:9;8246:25;:12;8263:7;8246:16;:25::i;:::-;8281:15;8136:11;:168::i;:::-;8435:55;-1:-1:-1;;;;;8435:29:4;;8473:12;8488:1;8435:29;:55::i;:::-;8496:73;8534:12;8549:19;:6;8560:7;8549:10;:19::i;:::-;-1:-1:-1;;;;;8496:29:4;;;:73;:29;:73::i;:::-;6388:2186;;;;;;;;;;;:::o;11894:2493:1:-;12018:17;;:::i;:::-;12074:21;12098:62;12111:48;12153:5;12111:37;:8;1634:1;12111:12;:37::i;:48::-;12098:8;;:12;:62::i;:::-;12074:86;;12184:10;-1:-1:-1;;;;;12171:23:1;:9;-1:-1:-1;;;;;12171:23:1;;12167:435;;;12204:23;12230;12243:9;12230:12;:23::i;:::-;12285:16;;;12299:1;12285:16;;;;;;;;;12204:49;;-1:-1:-1;12261:21:1;;12285:16;;;;;;;;;;;;-1:-1:-1;12285:16:1;12261:40;;12319:9;12309:4;12314:1;12309:7;;;;;;;;-1:-1:-1;;;;;12309:19:1;;;:7;;;;;;;;;;:19;12352:243;;;;;;;;;;;;;;;12399:39;12429:8;12399:25;12374:13;12417:6;12399:17;:25::i;:39::-;12352:243;;;;12450:51;12464:9;12475:8;12485:15;12450:13;:51::i;:::-;12352:243;;;;12513:56;12527:9;12538:13;12553:15;12513:13;:56::i;:::-;12352:243;;;;12581:4;12352:243;;;12337:258;;;;;;;12167:435;12638:16;;;12652:1;12638:16;;;12608:27;12638:16;;;;;12608:27;12638:16;;;;;;;;;;-1:-1:-1;12638:16:1;12608:46;;12676:9;12660:10;12671:1;12660:13;;;;;;;;;;;;;:25;-1:-1:-1;;;;;12660:25:1;;;-1:-1:-1;;;;;12660:25:1;;;;;12707:10;12691;12702:1;12691:13;;;;;;;;-1:-1:-1;;;;;12691:26:1;;;;:13;;;;;;;;;;:26;12836:16;;;12850:1;12836:16;;;;;;;;;12724:35;;;;;;12836:16;;;12724:35;;12836:16;;;;;-1:-1:-1;12836:16:1;12804:48;;12875:12;-1:-1:-1;;;;;12862:25:1;:9;-1:-1:-1;;;;;12862:25:1;;;:55;;;;;12905:12;-1:-1:-1;;;;;12891:26:1;:10;-1:-1:-1;;;;;12891:26:1;;;12862:55;12858:473;;;12945:9;12927:12;12940:1;12927:15;;;;;;;;;;;;;:27;-1:-1:-1;;;;;12927:27:1;;;-1:-1:-1;;;;;12927:27:1;;;;;12980:12;12962;12975:1;12962:15;;;;;;;;;;;;;:30;-1:-1:-1;;;;;12962:30:1;;;-1:-1:-1;;;;;12962:30:1;;;;;13018:10;13000:12;13013:1;13000:15;;;;;;;;-1:-1:-1;;;;;13000:28:1;;;:15;;;;;;;;;:28;13041:57;;-1:-1:-1;;;13041:57:1;;:14;:28;;;;;;:57;;13070:13;;13085:12;;13041:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13041:57:1;;;;;;;;;;;;:::i;:::-;;;13037:233;;13245:16;;;13259:1;13245:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13245:16:1;13227:34;;13037:233;;;13186:15;-1:-1:-1;13037:233:1;12858:473;;;13308:16;;;13322:1;13308:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13308:16:1;13290:34;;12858:473;13368:55;;-1:-1:-1;;;13368:55:1;;13337:21;;-1:-1:-1;;;;;13368:14:1;:28;;;;:55;;13397:13;;13412:10;;13368:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13368:55:1;;;;;;;;;;;;:::i;:::-;;;13364:393;;13692:16;;;13706:1;13692:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13692:16:1;13671:37;;13732:15;13748:1;13732:18;;;;;;;;;;;;;;13716:34;;13364:393;;;13506:13;13485:34;;13566:18;13585:1;13566:21;;;;;;;;;;;;;;13545:15;13561:1;13545:18;;;;;;;;;;;;;;:42;13544:105;;13628:18;13647:1;13628:21;;;;;;;;;;;;;;13544:105;;;13599:15;13615:1;13599:18;;;;;;;;;;;;;;13544:105;13528:121;;13424:232;13364:393;13763:25;13791:23;13804:9;13791:12;:23::i;:::-;13763:51;;13820:26;13849:24;13862:10;13849:12;:24::i;:::-;13820:53;-1:-1:-1;13880:21:1;13910:115;13977:40;:13;13995:2;:21;;;13977:17;:40::i;:::-;13910:53;13940:2;:22;;;13910:25;:13;13928:6;13910:17;:25::i;:::-;:29;;:53::i;:115::-;13880:145;;14045:337;;;;;;;;14065:13;14045:337;;;;14088:13;14045:337;;;;14111:53;14125:9;14136:8;14146:17;14111:13;:53::i;:::-;14045:337;;;;14174:60;14188:10;14200:13;14215:18;14174:13;:60::i;:::-;14045:337;;;;14245:18;;14244:130;;14304:18;14323:1;14304:21;;;;;;;;;;;;;;14287:13;:38;14286:88;;14362:12;14286:88;;;14339:10;14286:88;14244:130;;;14267:16;;;14281:1;14267:16;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14244:130:1;14045:337;;14032:350;-1:-1:-1;;;;;;;;;;11894:2493:1;;;;;;:::o;15003:1433::-;15127:17;;:::i;:::-;15169:10;-1:-1:-1;;;;;15156:23:1;:9;-1:-1:-1;;;;;15156:23:1;;15152:541;;;15217:16;15236:64;15250:49;15293:5;15250:38;:9;1634:1;15250:13;:38::i;:49::-;15236:9;;:13;:64::i;:::-;15217:83;;15308:23;15334;15347:9;15334:12;:23::i;:::-;15389:16;;;15403:1;15389:16;;;;;;;;;15308:49;;-1:-1:-1;15365:21:1;;15389:16;;;;;;;;;;;;-1:-1:-1;15389:16:1;15365:40;;15423:9;15413:4;15418:1;15413:7;;;;;;;;-1:-1:-1;;;;;15413:19:1;;;:7;;;;;;;;;;:19;15456:230;;;;;;;;;;;;;;;15498:35;15478:8;15498:21;:9;15512:6;15498:13;:21::i;:35::-;15456:230;;;;15545:51;15559:9;15570:8;15580:15;15545:13;:51::i;:::-;15456:230;;;;15608:52;15622:9;15633;15644:15;15608:13;:52::i;15152:541::-;15700:24;15726:21;15757:54;15778:9;15789:10;15801:9;15757:20;:54::i;:::-;15699:112;;;;15844:21;15868:66;15883:50;15927:5;15883:39;1634:1;15883:7;15891:1;15883:10;;;;;;;;;;;;;;:14;;:39;;;;:::i;:50::-;15868:7;15876:1;15868:10;;;;;;;;;;;;;;:14;;:66;;;;:::i;:::-;15844:90;;15941:25;15969:23;15982:9;15969:12;:23::i;:::-;15941:51;;15998:26;16027:24;16040:10;16027:12;:24::i;:::-;15998:53;-1:-1:-1;16058:21:1;16088:111;16150:41;:13;16168:2;:22;;;16150:17;:41::i;:::-;16088:48;16114:2;:21;;;16088;:9;16102:6;16088:13;:21::i;:111::-;16058:141;;16219:212;;;;;;;;16239:13;16219:212;;;;16262:13;16219:212;;;;16285:58;16299:9;16310:13;16325:17;16285:13;:58::i;:::-;16219:212;;;;16353:56;16367:10;16379:9;16390:18;16353:13;:56::i;:::-;16219:212;;;;;;;;-1:-1:-1;16206:225:1;;15003:1433;-1:-1:-1;;;;;;;;15003:1433:1:o;9124:145::-;9187:28;;:::i;:::-;9230:34;;-1:-1:-1;;;9230:34:1;;-1:-1:-1;;;;;9230:12:1;:27;;;;:34;;9258:5;;9230:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9223:41;9124:145;-1:-1:-1;;9124:145:1:o;2058:419:13:-;2116:7;2341:6;2337:35;;-1:-1:-1;2364:1:13;2357:8;;2337:35;2390:5;;;2394:1;2390;:5;:1;2409:5;;;;;:10;2401:56;;;;-1:-1:-1;;;2401:56:13;;;;;;;:::i;2908:124::-;2966:7;2988:39;2992:1;2995;2988:39;;;;;;;;;;;;;;;;;:3;:39::i;18438:493:1:-;18579:16;18603:21;18635:10;18631:238;;;18662:16;;;18676:1;18662:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18662:16:1;18655:23;;18696:9;18686:4;18691:1;18686:7;;;;;;;;;;;;;:19;-1:-1:-1;;;;;18686:19:1;;;-1:-1:-1;;;;;18686:19:1;;;;;18723:12;18713:4;18718:1;18713:7;;;;;;;;;;;;;:22;-1:-1:-1;;;;;18713:22:1;;;-1:-1:-1;;;;;18713:22:1;;;;;18753:10;18743:4;18748:1;18743:7;;;;;;;;;;;;;:20;-1:-1:-1;;;;;18743:20:1;;;-1:-1:-1;;;;;18743:20:1;;;;;18631:238;;;18791:16;;;18805:1;18791:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18791:16:1;18784:23;;18825:9;18815:4;18820:1;18815:7;;;;;;;;;;;;;:19;-1:-1:-1;;;;;18815:19:1;;;-1:-1:-1;;;;;18815:19:1;;;;;18852:10;18842:4;18847:1;18842:7;;;;;;;;;;;;;:20;-1:-1:-1;;;;;18842:20:1;;;-1:-1:-1;;;;;18842:20:1;;;;;18631:238;18882:44;;-1:-1:-1;;;18882:44:1;;-1:-1:-1;;;;;18882:14:1;:27;;;;:44;;18910:9;;18921:4;;18882:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18882:44:1;;;;;;;;;;;;:::i;:::-;18875:51;18438:493;-1:-1:-1;;;;;;18438:493:1:o;9585:647::-;9759:27;9770:15;9759:10;:27::i;:::-;9755:278;;;9813:13;-1:-1:-1;;;;;9796:38:1;;9844:4;9866;9881:15;:22;;;9913:15;:24;;;9947:15;:17;;;9974:15;:17;;;10001:15;:17;;;9796:230;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9755:278;10076:67;-1:-1:-1;;;;;10076:38:1;;10115:4;10129;10136:6;10076:38;:67::i;:::-;10174:53;;-1:-1:-1;;;10174:53:1;;-1:-1:-1;;;;;10174:12:1;:21;;;;:53;;10196:7;;10205:6;;10221:4;;10174:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9585:647;;;;;:::o;6864:1679::-;7056:7;7071:25;7099:29;7112:15;7099:12;:29::i;:::-;7071:57;;7134:23;7160:27;7173:13;7160:12;:27::i;:::-;7134:53;;7194:22;7219:26;7229:15;7219:9;:26::i;:::-;7194:51;;7251:20;7274:24;7284:13;7274:9;:24::i;:::-;7251:47;-1:-1:-1;7305:31:1;7345:203;7489:58;466:3:84;1520:4:1;7489:36;:58::i;:::-;7345:123;7428:39;:14;7447:2;:19;;;7428:18;:39::i;:::-;7345:69;7374:39;:12;7391:2;:21;;;7374:16;:39::i;:::-;7345:15;;:28;:69::i;:123::-;:143;;:203::i;:::-;7305:243;;7581:23;7563:15;:41;7555:89;;;;-1:-1:-1;;;7555:89:1;;;;;;;:::i;:::-;7788:63;-1:-1:-1;;;;;7788:35:1;;7832:14;7849:1;7788:35;:63::i;:::-;7857:77;-1:-1:-1;;;;;7857:35:1;;7901:14;7918:15;7857:35;:77::i;:::-;7941:21;7972:10;7968:256;;;7999:16;;;8013:1;7999:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7999:16:1;7992:23;;8033:15;8023:4;8028:1;8023:7;;;;;;;;;;;;;:25;-1:-1:-1;;;;;8023:25:1;;;-1:-1:-1;;;;;8023:25:1;;;;;8066:12;8056:4;8061:1;8056:7;;;;;;;;;;;;;:22;-1:-1:-1;;;;;8056:22:1;;;-1:-1:-1;;;;;8056:22:1;;;;;8096:13;8086:4;8091:1;8086:7;;;;;;;;;;;;;:23;-1:-1:-1;;;;;8086:23:1;;;-1:-1:-1;;;;;8086:23:1;;;;;7968:256;;;8137:16;;;8151:1;8137:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8137:16:1;8130:23;;8171:15;8161:4;8166:1;8161:7;;;;;;;;;;;;;:25;-1:-1:-1;;;;;8161:25:1;;;-1:-1:-1;;;;;8161:25:1;;;;;8204:13;8194:4;8199:1;8194:7;;;;;;;;;;;;;:23;-1:-1:-1;;;;;8194:23:1;;;-1:-1:-1;;;;;8194:23:1;;;;;7968:256;8263:159;;-1:-1:-1;;;8263:159:1;;8230:24;;-1:-1:-1;;;;;8263:14:1;:39;;;;:159;;8312:15;;8337;;8362:4;;8384;;8399:15;;8263:159;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8263:159:1;;;;;;;;;;;;:::i;:::-;8230:192;;8434:80;8442:15;8459:13;8474:7;8482:1;8474:10;;;;;;;;;;;;;;8486:7;8511:1;8494:7;:14;:18;8486:27;;;;;;;;;;;;;;8434:80;;;;;;;;;:::i;:::-;;;;;;;;8528:7;8536:1;8528:10;;;;;;;;;;;;;;8521:17;;;;;;;;;6864:1679;;;;;;;:::o;1124:345:12:-;1238:10;;;1237:62;;-1:-1:-1;1254:39:12;;-1:-1:-1;;;1254:39:12;;-1:-1:-1;;;;;1254:15:12;;;;;:39;;1278:4;;1285:7;;1254:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;1237:62;1222:147;;;;-1:-1:-1;;;1222:147:12;;;;;;;:::i;:::-;1375:89;1394:5;1424:22;;;1448:7;1457:5;1401:62;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1401:62:12;;;;;;;;;;;;;;-1:-1:-1;;;;;1401:62:12;-1:-1:-1;;;;;;1401:62:12;;;;;;;;;;1375:18;:89::i;:::-;1124:345;;;:::o;1257:128:13:-;1315:7;1337:43;1341:1;1344;1337:43;;;;;;;;;;;;;;;;;:3;:43::i;851:162::-;909:7;936:5;;;955:6;;;;947:46;;;;-1:-1:-1;;;947:46:13;;;;;;;:::i;8905:119:1:-;8965:7;9002:5;-1:-1:-1;;;;;8987:30:1;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8980:39;;;8905:119;-1:-1:-1;;8905:119:1:o;10972:309::-;11085:7;11100:19;11122:22;1716:42;11122:9;:22::i;:::-;11100:44;;11150:20;11173:18;11183:7;11173:9;:18::i;:::-;11150:41;-1:-1:-1;11205:71:1;11269:6;11205:59;11252:11;11205:42;11234:2;:12;;;11205:59;:6;11150:41;11205:10;:24::i;16788:1298::-;16987:16;;;17001:1;16987:16;;;16915;16987;;;;;;16915;;;;16987;;;;;;;;;;;;-1:-1:-1;16987:16:1;16957:46;;17025:9;17009:10;17020:1;17009:13;;;;;;;;;;;;;:25;-1:-1:-1;;;;;17009:25:1;;;-1:-1:-1;;;;;17009:25:1;;;;;17056:10;17040;17051:1;17040:13;;;;;;;;-1:-1:-1;;;;;17040:26:1;;;;:13;;;;;;;;;;:26;17184:16;;;17198:1;17184:16;;;;;;;;;17073:35;;;;;;17184:16;;;17073:35;;17184:16;;;;;-1:-1:-1;17184:16:1;17152:48;;17224:12;-1:-1:-1;;;;;17211:25:1;:9;-1:-1:-1;;;;;17211:25:1;;;:55;;;;;17254:12;-1:-1:-1;;;;;17240:26:1;:10;-1:-1:-1;;;;;17240:26:1;;;17211:55;17207:468;;;17294:9;17276:12;17289:1;17276:15;;;;;;;;;;;;;:27;-1:-1:-1;;;;;17276:27:1;;;-1:-1:-1;;;;;17276:27:1;;;;;17329:12;17311;17324:1;17311:15;;;;;;;;;;;;;:30;-1:-1:-1;;;;;17311:30:1;;;-1:-1:-1;;;;;17311:30:1;;;;;17367:10;17349:12;17362:1;17349:15;;;;;;;;-1:-1:-1;;;;;17349:28:1;;;:15;;;;;;;;;:28;17390:52;;-1:-1:-1;;;17390:52:1;;:14;:27;;;;;;:52;;17418:9;;17429:12;;17390:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17390:52:1;;;;;;;;;;;;:::i;:::-;;;17386:228;;17589:16;;;17603:1;17589:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17589:16:1;17571:34;;17386:228;;;17530:15;-1:-1:-1;17386:228:1;17207:468;;;17652:16;;;17666:1;17652:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17652:16:1;17634:34;;17207:468;17685:50;;-1:-1:-1;;;17685:50:1;;-1:-1:-1;;;;;17685:14:1;:27;;;;:50;;17713:9;;17724:10;;17685:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17685:50:1;;;;;;;;;;;;:::i;:::-;;;17681:401;;18045:15;;-1:-1:-1;18062:12:1;-1:-1:-1;18037:38:1;;-1:-1:-1;;18037:38:1;17681:401;17818:13;17797:34;;17877:18;17896:1;17877:21;;;;;;;;;;;;;;17856:15;17872:1;17856:18;;;;;;;;;;;;;;:42;:69;;;;;17902:15;17918:1;17902:18;;;;;;;;;;;;;;17924:1;17902:23;;17856:69;17855:160;;17984:18;18004:10;17855:160;;;17940:15;17957:12;17855:160;17840:175;;;;;;;;;16788:1298;;;;;;;:::o;3483:332:13:-;3585:7;3677:12;3670:5;3662:28;;;;-1:-1:-1;;;3662:28:13;;;;;;;;:::i;:::-;;3696:9;3712:1;3708;:5;;;;;;;3483:332;-1:-1:-1;;;;;3483:332:13:o;10528:197:1:-;10605:4;10671:9;:11;;;10663:20;;10640:9;:18;;;10632:51;:87;;;;-1:-1:-1;10695:18:1;;;;10687:32;10632:87;10630:90;;10528:197;-1:-1:-1;;10528:197:1:o;904:216:12:-;1020:95;1039:5;1069:27;;;1098:4;1104:2;1108:5;1046:68;;;;;;;;;;:::i;1020:95::-;904:216;;;;:::o;8694:111:1:-;8773:27;;-1:-1:-1;;;8773:27:1;;8751:7;;-1:-1:-1;;;;;8773:6:1;:20;;;;:27;;8794:5;;8773:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;802:351:84:-;880:7;899:10;;;:29;;-1:-1:-1;913:15:84;;899:29;895:58;;;-1:-1:-1;945:1:84;938:8;;895:58;1020:10;-1:-1:-1;;1020:10:84;983:47;;;;;974:5;:56;;1038:35;;;;;;;;;;;;;-1:-1:-1;;;1038:35:84;;;959:120;;;;;-1:-1:-1;;;959:120:84;;;;;;;;:::i;:::-;-1:-1:-1;;466:3:84;1094:18;;536:21;1094:33;1093:55;;802:351::o;1473:555:12:-;1556:27;1564:5;-1:-1:-1;;;;;1556:25:12;;:27::i;:::-;1548:71;;;;-1:-1:-1;;;1548:71:12;;;;;;;:::i;:::-;1682:12;1696:23;1731:5;-1:-1:-1;;;;;1723:19:12;1743:4;1723:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1681:67;;;;1762:7;1754:52;;;;-1:-1:-1;;;1754:52:12;;;;;;;:::i;:::-;1817:17;;:21;1813:211;;1951:10;1940:30;;;;;;;;;;;;:::i;:::-;1932:85;;;;-1:-1:-1;;;1932:85:12;;;;;;;:::i;1649:189:13:-;1751:7;1782:12;1774:6;;;;1766:29;;;;-1:-1:-1;;;1766:29:13;;;;;;;;:::i;:::-;-1:-1:-1;;;1813:5:13;;;1649:189::o;686:586:6:-;746:4;1185:20;;1032:66;1224:23;;;;;;:42;;-1:-1:-1;1251:15:6;;;1224:42;1216:51;686:586;-1:-1:-1;;;;686:586:6:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;142:134::-;220:13;;238:33;220:13;238:33;:::i;458:352::-;;;588:3;581:4;573:6;569:17;565:27;555:2;;-1:-1;;596:12;555:2;-1:-1;626:20;;666:18;655:30;;652:2;;;-1:-1;;688:12;652:2;732:4;724:6;720:17;708:29;;783:3;732:4;;767:6;763:17;724:6;749:32;;746:41;743:2;;;800:1;;790:12;743:2;548:262;;;;;:::o;4244:362::-;;4386:4;4374:9;4369:3;4365:19;4361:30;4358:2;;;-1:-1;;4394:12;4358:2;4422:20;4386:4;4422:20;:::i;:::-;7298:13;;4499:86;;-1:-1;4413:29;4352:254;-1:-1;4352:254::o;6942:134::-;7020:13;;37542:34;37531:46;;40772:35;;40762:2;;40821:1;;40811:12;7361:132;7438:13;;37868:12;37857:24;;41019:34;;41009:2;;41067:1;;41057:12;7633:130;7709:13;;7727:31;7709:13;7727:31;:::i;7770:241::-;;7874:2;7862:9;7853:7;7849:23;7845:32;7842:2;;;-1:-1;;7880:12;7842:2;85:6;72:20;97:33;124:5;97:33;:::i;8018:1363::-;;;;;;;;;;8272:3;8260:9;8251:7;8247:23;8243:33;8240:2;;;-1:-1;;8279:12;8240:2;375:6;369:13;387:41;422:5;387:41;:::i;:::-;8331:82;;;;8450:2;8504:9;8500:22;7298:13;8458:74;;8569:2;8623:9;8619:22;7298:13;8577:74;;8688:2;8742:9;8738:22;7298:13;8696:74;;8807:3;8862:9;8858:22;7298:13;8816:74;;8927:3;8980:9;8976:22;7709:13;7727:31;7752:5;7727:31;:::i;:::-;8936:72;;;;9045:3;9100:9;9096:22;2425:13;9054:74;;9165:3;9220:9;9216:22;2425:13;9174:74;;9285:3;9337:9;9333:22;2150:13;2168:30;2192:5;2168:30;:::i;:::-;9294:71;;;;8234:1147;;;;;;;;;;;:::o;9388:1059::-;;;;;;;;9614:9;9605:7;9601:23;9626:3;9601:23;9597:33;9594:2;;;-1:-1;;9633:12;9594:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;9685:63;-1:-1;9785:2;9824:22;;72:20;97:33;72:20;97:33;:::i;:::-;9793:63;-1:-1;9893:2;9932:22;;7150:20;;-1:-1;10001:2;10040:22;;7150:20;;-1:-1;10109:3;10149:22;;7150:20;;-1:-1;10218:3;-1:-1;;3165:16;;3161:26;3158:2;;;-1:-1;;3190:12;3158:2;;10218:3;10297:9;10293:22;10227:98;;10362:3;10403:9;10399:22;2008:20;2033:30;2057:5;2033:30;:::i;:::-;10371:60;;;;9588:859;;;;;;;;;;:::o;10454:1335::-;;;;;;;;;;10750:3;10738:9;10729:7;10725:23;10721:33;10718:2;;;-1:-1;;10757:12;10718:2;10815:17;10802:31;10853:18;;10845:6;10842:30;10839:2;;;-1:-1;;10875:12;10839:2;10913:80;10985:7;10976:6;10965:9;10961:22;10913:80;:::i;:::-;10895:98;;-1:-1;10895:98;-1:-1;11058:2;11043:18;;11030:32;;-1:-1;11071:30;;;11068:2;;;-1:-1;;11104:12;11068:2;11142:80;11214:7;11205:6;11194:9;11190:22;11142:80;:::i;:::-;11124:98;;-1:-1;11124:98;-1:-1;11287:2;11272:18;;11259:32;;-1:-1;11300:30;;;11297:2;;;-1:-1;;11333:12;11297:2;11371:80;11443:7;11434:6;11423:9;11419:22;11371:80;:::i;:::-;11353:98;;-1:-1;11353:98;-1:-1;11488:2;11527:22;;72:20;;-1:-1;97:33;72:20;97:33;:::i;:::-;11496:63;;-1:-1;11624:3;11609:19;;11596:33;;11638:30;;;11635:2;;;-1:-1;;11671:12;11635:2;11756:6;11745:9;11741:22;;;2616:3;2609:4;2601:6;2597:17;2593:27;2583:2;;-1:-1;;2624:12;2583:2;2667:6;2654:20;10853:18;2686:6;2683:30;2680:2;;;-1:-1;;2716:12;2680:2;2811:3;11058:2;2791:17;2752:6;2777:32;;2774:41;2771:2;;;-1:-1;;2818:12;2771:2;11058;2752:6;2748:17;11691:82;;;;;;;;10712:1077;;;;;;;;;;;:::o;11796:392::-;;11936:2;;11924:9;11915:7;11911:23;11907:32;11904:2;;;-1:-1;;11942:12;11904:2;11993:17;11987:24;12031:18;12023:6;12020:30;12017:2;;;-1:-1;;12053:12;12017:2;12140:22;;1335:4;1323:17;;1319:27;-1:-1;1309:2;;-1:-1;;1350:12;1309:2;1390:6;1384:13;1412:80;1427:64;1484:6;1427:64;:::i;:::-;1412:80;:::i;:::-;1520:21;;;1577:14;;;;1552:17;;;1666;;;1657:27;;;;1654:36;-1:-1;1651:2;;;-1:-1;;1693:12;1651:2;-1:-1;1719:10;;1713:217;1738:6;1735:1;1732:13;1713:217;;;7298:13;;1806:61;;1760:1;1753:9;;;;;1881:14;;;;1909;;1713:217;;;-1:-1;12073:99;11898:290;-1:-1;;;;;;;11898:290::o;12195:257::-;;12307:2;12295:9;12286:7;12282:23;12278:32;12275:2;;;-1:-1;;12313:12;12275:2;2156:6;2150:13;2168:30;2192:5;2168:30;:::i;12737:308::-;;12874:3;12862:9;12853:7;12849:23;12845:33;12842:2;;;-1:-1;;12881:12;12842:2;3445:20;12874:3;3445:20;:::i;:::-;7163:6;7150:20;3531:16;3524:75;3664:2;3722:9;3718:22;7150:20;3664:2;3683:5;3679:16;3672:75;3805:2;3861:9;3857:22;7565:20;7590:31;7615:5;7590:31;:::i;:::-;3805:2;3820:16;;3813:73;3944:2;3998:22;;;2277:20;3959:16;;;3952:75;4085:3;4140:22;;;2277:20;4101:16;;;4094:75;;;;-1:-1;3824:5;12836:209;-1:-1;12836:209::o;13052:324::-;;13197:3;;13185:9;13176:7;13172:23;13168:33;13165:2;;;-1:-1;;13204:12;13165:2;4816:22;13197:3;4816:22;:::i;:::-;4807:31;;4929:102;5027:3;5003:22;4929:102;:::i;:::-;4911:16;4904:128;5136:60;5192:3;5103:2;5172:9;5168:22;5136:60;:::i;:::-;5103:2;5122:5;5118:16;5111:86;5306:60;5362:3;5273:2;5342:9;5338:22;5306:60;:::i;:::-;5273:2;5292:5;5288:16;5281:86;5477:60;5533:3;5444:2;5513:9;5509:22;5477:60;:::i;:::-;5444:2;5463:5;5459:16;5452:86;5654:60;5710:3;5620;5690:9;5686:22;5654:60;:::i;:::-;5620:3;5640:5;5636:16;5629:86;5829:60;5885:3;5795;5865:9;5861:22;5829:60;:::i;:::-;5795:3;5815:5;5811:16;5804:86;6000:59;6055:3;5966;6035:9;6031:22;6000:59;:::i;:::-;5966:3;5986:5;5982:16;5975:85;6164:60;6220:3;6130;6200:9;6196:22;6164:60;:::i;:::-;6130:3;6150:5;6146:16;6139:86;6304:3;6340:60;6396:3;6304;6376:9;6372:22;6340:60;:::i;:::-;6320:18;;;6313:88;6482:3;6518:60;6574:3;6550:22;;;6518:60;:::i;:::-;6498:18;;;6491:88;6663:3;6699:60;6755:3;6731:22;;;6699:60;:::i;:::-;6679:18;;;6672:88;6819:3;6855:58;6909:3;6885:22;;;6855:58;:::i;:::-;6835:18;;;6828:86;6839:5;13159:217;-1:-1;;;13159:217::o;13383:263::-;;13498:2;13486:9;13477:7;13473:23;13469:32;13466:2;;;-1:-1;;13504:12;13466:2;-1:-1;7298:13;;13460:186;-1:-1;13460:186::o;13653:491::-;;;;13791:2;13779:9;13770:7;13766:23;13762:32;13759:2;;;-1:-1;;13797:12;13759:2;7163:6;7150:20;13849:63;;13949:2;13992:9;13988:22;72:20;97:33;124:5;97:33;:::i;:::-;13957:63;-1:-1;14057:2;14096:22;;72:20;97:33;72:20;97:33;:::i;:::-;14065:63;;;;13753:391;;;;;:::o;14151:259::-;;14264:2;14252:9;14243:7;14239:23;14235:32;14232:2;;;-1:-1;;14270:12;14232:2;7715:6;7709:13;7727:31;7752:5;7727:31;:::i;15009:690::-;;15202:5;36056:12;36600:6;36595:3;36588:19;36637:4;;36632:3;36628:14;15214:93;;36637:4;15378:5;35910:14;-1:-1;15417:260;15442:6;15439:1;15436:13;15417:260;;;15503:13;;-1:-1;;;;;37651:54;14809:37;;14571:14;;;;36443;;;;666:18;15457:9;15417:260;;;-1:-1;15683:10;;15133:566;-1:-1;;;;;15133:566::o;21599:271::-;;16098:5;36056:12;16209:52;16254:6;16249:3;16242:4;16235:5;16231:16;16209:52;:::i;:::-;16273:16;;;;;21733:137;-1:-1;;21733:137::o;21877:222::-;-1:-1;;;;;37651:54;;;;14809:37;;22004:2;21989:18;;21975:124::o;22351:333::-;-1:-1;;;;;37651:54;;;14809:37;;37651:54;;22670:2;22655:18;;14809:37;22506:2;22491:18;;22477:207::o;22691:444::-;-1:-1;;;;;37651:54;;;14809:37;;37651:54;;;;23038:2;23023:18;;14809:37;23121:2;23106:18;;15889:37;;;;22874:2;22859:18;;22845:290::o;23142:556::-;-1:-1;;;;;37651:54;;;14809:37;;37651:54;;;;23518:2;23503:18;;14809:37;23601:2;23586:18;;15889:37;23684:2;23669:18;;15889:37;;;;23353:3;23338:19;;23324:374::o;23705:884::-;-1:-1;;;;;37651:54;;;14809:37;;37651:54;;;;24161:2;24146:18;;14809:37;24244:2;24229:18;;15889:37;;;;24327:2;24312:18;;15889:37;;;;37964:4;37953:16;24406:3;24391:19;;21552:35;37662:42;24475:19;;15889:37;24574:3;24559:19;;15889:37;;;;23996:3;23981:19;;23967:622::o;24596:333::-;-1:-1;;;;;37651:54;;;;14809:37;;24915:2;24900:18;;15889:37;24751:2;24736:18;;24722:207::o;24936:444::-;-1:-1;;;;;37651:54;;;14809:37;;25283:2;25268:18;;15889:37;;;;37651:54;;;25366:2;25351:18;;14809:37;25119:2;25104:18;;25090:290::o;25387:556::-;-1:-1;;;;;37651:54;;;14809:37;;25763:2;25748:18;;15889:37;;;;25846:2;25831:18;;15889:37;;;;37651:54;;;25929:2;25914:18;;14809:37;25598:3;25583:19;;25569:374::o;26529:210::-;37251:13;;37244:21;15772:34;;26650:2;26635:18;;26621:118::o;27888:310::-;;28035:2;28056:17;28049:47;17204:5;36056:12;36600:6;28035:2;28024:9;28020:18;36588:19;17298:52;17343:6;36628:14;28024:9;36628:14;28035:2;17324:5;17320:16;17298:52;:::i;:::-;40032:7;40016:14;-1:-1;;40012:28;17362:39;;;;36628:14;17362:39;;28006:192;-1:-1;;28006:192::o;28205:416::-;28405:2;28419:47;;;17638:2;28390:18;;;36588:19;17674:29;36628:14;;;17654:50;17723:12;;;28376:245::o;28628:416::-;28828:2;28842:47;;;17974:2;28813:18;;;36588:19;18010:34;36628:14;;;17990:55;-1:-1;;;18065:12;;;18058:30;18107:12;;;28799:245::o;29051:416::-;29251:2;29265:47;;;18358:2;29236:18;;;36588:19;18394:29;36628:14;;;18374:50;18443:12;;;29222:245::o;29474:416::-;29674:2;29688:47;;;29659:18;;;36588:19;18730:34;36628:14;;;18710:55;18784:12;;;29645:245::o;29897:416::-;30097:2;30111:47;;;19035:2;30082:18;;;36588:19;19071:34;36628:14;;;19051:55;-1:-1;;;19126:12;;;19119:27;19165:12;;;30068:245::o;30320:416::-;30520:2;30534:47;;;19416:2;30505:18;;;36588:19;19452:34;36628:14;;;19432:55;-1:-1;;;19507:12;;;19500:25;19544:12;;;30491:245::o;30743:416::-;30943:2;30957:47;;;30928:18;;;36588:19;19831:34;36628:14;;;19811:55;19885:12;;;30914:245::o;31166:416::-;31366:2;31380:47;;;20136:2;31351:18;;;36588:19;-1:-1;;;36628:14;;;20152:40;20211:12;;;31337:245::o;31589:416::-;31789:2;31803:47;;;20462:2;31774:18;;;36588:19;20498:34;36628:14;;;20478:55;-1:-1;;;20553:12;;;20546:34;20599:12;;;31760:245::o;32012:416::-;32212:2;32226:47;;;20850:2;32197:18;;;36588:19;20886:34;36628:14;;;20866:55;-1:-1;;;20941:12;;;20934:46;20999:12;;;32183:245::o;32435:416::-;32635:2;32649:47;;;21250:2;32620:18;;;36588:19;21286:33;36628:14;;;21266:54;21339:12;;;32606:245::o;32858:222::-;15889:37;;;32985:2;32970:18;;32956:124::o;33087:481::-;;15919:5;15896:3;15889:37;33292:2;33410;33399:9;33395:18;33388:48;33450:108;33292:2;33281:9;33277:18;33544:6;33450:108;:::i;33575:816::-;;15919:5;15896:3;15889:37;15919:5;34029:2;34018:9;34014:18;15889:37;33864:3;34066:2;34055:9;34051:18;34044:48;34106:108;33864:3;33853:9;33849:19;34200:6;34106:108;:::i;:::-;-1:-1;;;;;37651:54;;;;34293:2;34278:18;;14809:37;-1:-1;34376:3;34361:19;15889:37;34098:116;33835:556;-1:-1;;;33835:556::o;34398:816::-;;15919:5;15896:3;15889:37;15919:5;34852:2;34841:9;34837:18;15889:37;15919:5;34935:2;34924:9;34920:18;15889:37;15919:5;35018:2;35007:9;35003:18;15889:37;34687:3;35055;35044:9;35040:19;35033:49;35096:108;34687:3;34676:9;34672:19;35190:6;35096:108;:::i;:::-;35088:116;34658:556;-1:-1;;;;;;;34658:556::o;35221:256::-;35283:2;35277:9;35309:17;;;35384:18;35369:34;;35405:22;;;35366:62;35363:2;;;35441:1;;35431:12;35363:2;35283;35450:22;35261:216;;-1:-1;35261:216::o;35484:304::-;;35643:18;35635:6;35632:30;35629:2;;;-1:-1;;35665:12;35629:2;-1:-1;35710:4;35698:17;;;35763:15;;35566:222::o;39672:268::-;39737:1;39744:101;39758:6;39755:1;39752:13;39744:101;;;39825:11;;;39819:18;39806:11;;;39799:39;39780:2;39773:10;39744:101;;;39860:6;39857:1;39854:13;39851:2;;;-1:-1;;39737:1;39907:16;;39900:27;39721:219::o;40053:117::-;-1:-1;;;;;37651:54;;40112:35;;40102:2;;40161:1;;40151:12;40102:2;40096:74;:::o;40317:111::-;40398:5;37251:13;37244:21;40376:5;40373:32;40363:2;;40419:1;;40409:12;41083:113;37964:4;41166:5;37953:16;41143:5;41140:33;41130:2;;41187:1;;41177:12"
            },
            "methodIdentifiers": {
              "ADDRESSES_PROVIDER()": "0542975c",
              "FLASHLOAN_PREMIUM_TOTAL()": "074b2e43",
              "LENDING_POOL()": "b4dcfc77",
              "MAX_SLIPPAGE_PERCENT()": "32e4b286",
              "ORACLE()": "38013f02",
              "UNISWAP_ROUTER()": "d8264920",
              "USD_ADDRESS()": "9d1211bf",
              "WETH_ADDRESS()": "040141e5",
              "executeOperation(address[],uint256[],uint256[],address,bytes)": "920f5c84",
              "getAmountsIn(uint256,address,address)": "cdf58cd6",
              "getAmountsOut(uint256,address,address)": "baf7fa99",
              "owner()": "8da5cb5b",
              "renounceOwnership()": "715018a6",
              "rescueTokens(address)": "00ae3bf8",
              "swapAndRepay(address,address,uint256,uint256,uint256,(uint256,uint256,uint8,bytes32,bytes32),bool)": "e6813563",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        }
      },
      "contracts/adapters/interfaces/IBaseUniswapAdapter.sol": {
        "IBaseUniswapAdapter": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "fromAsset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "toAsset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "fromAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "receivedAmount",
                  "type": "uint256"
                }
              ],
              "name": "Swapped",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "FLASHLOAN_PREMIUM_TOTAL",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "MAX_SLIPPAGE_PERCENT",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "ORACLE",
              "outputs": [
                {
                  "internalType": "contract IPriceOracleGetter",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "UNISWAP_ROUTER",
              "outputs": [
                {
                  "internalType": "contract IUniswapV2Router02",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "USD_ADDRESS",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "WETH_ADDRESS",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "reserveIn",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "reserveOut",
                  "type": "address"
                }
              ],
              "name": "getAmountsIn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "reserveIn",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "reserveOut",
                  "type": "address"
                }
              ],
              "name": "getAmountsOut",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "FLASHLOAN_PREMIUM_TOTAL()": "074b2e43",
              "MAX_SLIPPAGE_PERCENT()": "32e4b286",
              "ORACLE()": "38013f02",
              "UNISWAP_ROUTER()": "d8264920",
              "USD_ADDRESS()": "9d1211bf",
              "WETH_ADDRESS()": "040141e5",
              "getAmountsIn(uint256,address,address)": "cdf58cd6",
              "getAmountsOut(uint256,address,address)": "baf7fa99"
            }
          }
        }
      },
      "contracts/dependencies/openzeppelin/contracts/Address.sol": {
        "Address": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122093d929e9255a31a618822d038a5070bc0f29f948496e43b9ca7e13af705eed6564736f6c634300060c0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP4 0xD9 0x29 0xE9 0x25 GAS BALANCE 0xA6 XOR DUP3 0x2D SUB DUP11 POP PUSH17 0xBC0F29F948496E43B9CA7E13AF705EED65 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "130:2398:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122093d929e9255a31a618822d038a5070bc0f29f948496e43b9ca7e13af705eed6564736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP4 0xD9 0x29 0xE9 0x25 GAS BALANCE 0xA6 XOR DUP3 0x2D SUB DUP11 POP PUSH17 0xBC0F29F948496E43B9CA7E13AF705EED65 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "130:2398:6:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "contracts/dependencies/openzeppelin/contracts/Context.sol": {
        "Context": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          }
        }
      },
      "contracts/dependencies/openzeppelin/contracts/ERC20.sol": {
        "ERC20": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "symbol",
                  "type": "string"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "subtractedValue",
                  "type": "uint256"
                }
              ],
              "name": "decreaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "addedValue",
                  "type": "uint256"
                }
              ],
              "name": "increaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5060405162000c6238038062000c628339818101604052604081101561003557600080fd5b810190808051604051939291908464010000000082111561005557600080fd5b90830190602082018581111561006a57600080fd5b825164010000000081118282018810171561008457600080fd5b82525081516020918201929091019080838360005b838110156100b1578181015183820152602001610099565b50505050905090810190601f1680156100de5780820380516001836020036101000a031916815260200191505b506040526020018051604051939291908464010000000082111561010157600080fd5b90830190602082018581111561011657600080fd5b825164010000000081118282018810171561013057600080fd5b82525081516020918201929091019080838360005b8381101561015d578181015183820152602001610145565b50505050905090810190601f16801561018a5780820380516001836020036101000a031916815260200191505b50604052505082516101a4915060039060208501906101cd565b5080516101b89060049060208401906101cd565b50506005805460ff1916601217905550610260565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061020e57805160ff191683800117855561023b565b8280016001018555821561023b579182015b8281111561023b578251825591602001919060010190610220565b5061024792915061024b565b5090565b5b80821115610247576000815560010161024c565b6109f280620002706000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063395093511161007157806339509351146101d957806370a082311461020557806395d89b411461022b578063a457c2d714610233578063a9059cbb1461025f578063dd62ed3e1461028b576100a9565b806306fdde03146100ae578063095ea7b31461012b57806318160ddd1461016b57806323b872dd14610185578063313ce567146101bb575b600080fd5b6100b66102b9565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100f05781810151838201526020016100d8565b50505050905090810190601f16801561011d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101576004803603604081101561014157600080fd5b506001600160a01b03813516906020013561034f565b604080519115158252519081900360200190f35b61017361036c565b60408051918252519081900360200190f35b6101576004803603606081101561019b57600080fd5b506001600160a01b03813581169160208101359091169060400135610372565b6101c36103f9565b6040805160ff9092168252519081900360200190f35b610157600480360360408110156101ef57600080fd5b506001600160a01b038135169060200135610402565b6101736004803603602081101561021b57600080fd5b50356001600160a01b0316610450565b6100b661046b565b6101576004803603604081101561024957600080fd5b506001600160a01b0381351690602001356104cc565b6101576004803603604081101561027557600080fd5b506001600160a01b038135169060200135610534565b610173600480360360408110156102a157600080fd5b506001600160a01b0381358116916020013516610548565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103455780601f1061031a57610100808354040283529160200191610345565b820191906000526020600020905b81548152906001019060200180831161032857829003601f168201915b5050505050905090565b600061036361035c610573565b8484610577565b50600192915050565b60025490565b600061037f848484610663565b6103ef8461038b610573565b6103ea85604051806060016040528060288152602001610927602891396001600160a01b038a166000908152600160205260408120906103c9610573565b6001600160a01b0316815260208101919091526040016000205491906107be565b610577565b5060019392505050565b60055460ff1690565b600061036361040f610573565b846103ea8560016000610420610573565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610855565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103455780601f1061031a57610100808354040283529160200191610345565b60006103636104d9610573565b846103ea856040518060600160405280602581526020016109986025913960016000610503610573565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906107be565b6000610363610541610573565b8484610663565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166105bc5760405162461bcd60e51b81526004018080602001828103825260248152602001806109746024913960400191505060405180910390fd5b6001600160a01b0382166106015760405162461bcd60e51b81526004018080602001828103825260228152602001806108df6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106a85760405162461bcd60e51b815260040180806020018281038252602581526020018061094f6025913960400191505060405180910390fd5b6001600160a01b0382166106ed5760405162461bcd60e51b81526004018080602001828103825260238152602001806108bc6023913960400191505060405180910390fd5b6106f88383836108b6565b61073581604051806060016040528060268152602001610901602691396001600160a01b03861660009081526020819052604090205491906107be565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107649082610855565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561084d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108125781810151838201526020016107fa565b50505050905090810190601f16801561083f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156108af576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122077d9418752b2185546b3bab10dd1293a05c1f1caca021f746017206d1a3583a564736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xC62 CODESIZE SUB DUP1 PUSH3 0xC62 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x99 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDE JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x101 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x116 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x130 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x145 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x18A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP DUP3 MLOAD PUSH2 0x1A4 SWAP2 POP PUSH1 0x3 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x1CD JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x1B8 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1CD JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP PUSH2 0x260 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x20E JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x23B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x23B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x23B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x220 JUMP JUMPDEST POP PUSH2 0x247 SWAP3 SWAP2 POP PUSH2 0x24B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x247 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x24C JUMP JUMPDEST PUSH2 0x9F2 DUP1 PUSH3 0x270 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x233 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x25F JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x28B JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x16B JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1BB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB6 PUSH2 0x2B9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x11D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x157 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x141 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x34F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x173 PUSH2 0x36C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x157 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x19B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x372 JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x3F9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x157 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x402 JUMP JUMPDEST PUSH2 0x173 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x450 JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x46B JUMP JUMPDEST PUSH2 0x157 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x249 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4CC JUMP JUMPDEST PUSH2 0x157 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x275 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x534 JUMP JUMPDEST PUSH2 0x173 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x548 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x345 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x31A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x345 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x328 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x363 PUSH2 0x35C PUSH2 0x573 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x577 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37F DUP5 DUP5 DUP5 PUSH2 0x663 JUMP JUMPDEST PUSH2 0x3EF DUP5 PUSH2 0x38B PUSH2 0x573 JUMP JUMPDEST PUSH2 0x3EA DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x927 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x3C9 PUSH2 0x573 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x7BE JUMP JUMPDEST PUSH2 0x577 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x363 PUSH2 0x40F PUSH2 0x573 JUMP JUMPDEST DUP5 PUSH2 0x3EA DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x420 PUSH2 0x573 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x855 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x345 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x31A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x345 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x363 PUSH2 0x4D9 PUSH2 0x573 JUMP JUMPDEST DUP5 PUSH2 0x3EA DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x998 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x503 PUSH2 0x573 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x7BE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x363 PUSH2 0x541 PUSH2 0x573 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x663 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x5BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x974 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x601 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x8DF PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x6A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x94F PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x6ED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x8BC PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6F8 DUP4 DUP4 DUP4 PUSH2 0x8B6 JUMP JUMPDEST PUSH2 0x735 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x901 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x7BE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x764 SWAP1 DUP3 PUSH2 0x855 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x84D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x812 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7FA JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x83F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x8AF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x735822122077D9 COINBASE DUP8 MSTORE 0xB2 XOR SSTORE CHAINID 0xB3 0xBA 0xB1 0xD 0xD1 0x29 GASPRICE SDIV 0xC1 CALL 0xCA 0xCA MUL 0x1F PUSH21 0x6017206D1A3583A564736F6C634300060C00330000 ",
              "sourceMap": "1318:9047:8:-:0;;;1949:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1949:126:8;;;;;;;;;;-1:-1:-1;1949:126:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1949:126:8;;;;;;;;;;-1:-1:-1;1949:126:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1949:126:8;;-1:-1:-1;;2016:12:8;;;;-1:-1:-1;2016:5:8;;:12;;;;;:::i;:::-;-1:-1:-1;2034:16:8;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;;2056:9:8;:14;;-1:-1:-1;;2056:14:8;2068:2;2056:14;;;-1:-1:-1;1318:9047:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1318:9047:8;;;-1:-1:-1;1318:9047:8;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100a95760003560e01c8063395093511161007157806339509351146101d957806370a082311461020557806395d89b411461022b578063a457c2d714610233578063a9059cbb1461025f578063dd62ed3e1461028b576100a9565b806306fdde03146100ae578063095ea7b31461012b57806318160ddd1461016b57806323b872dd14610185578063313ce567146101bb575b600080fd5b6100b66102b9565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100f05781810151838201526020016100d8565b50505050905090810190601f16801561011d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101576004803603604081101561014157600080fd5b506001600160a01b03813516906020013561034f565b604080519115158252519081900360200190f35b61017361036c565b60408051918252519081900360200190f35b6101576004803603606081101561019b57600080fd5b506001600160a01b03813581169160208101359091169060400135610372565b6101c36103f9565b6040805160ff9092168252519081900360200190f35b610157600480360360408110156101ef57600080fd5b506001600160a01b038135169060200135610402565b6101736004803603602081101561021b57600080fd5b50356001600160a01b0316610450565b6100b661046b565b6101576004803603604081101561024957600080fd5b506001600160a01b0381351690602001356104cc565b6101576004803603604081101561027557600080fd5b506001600160a01b038135169060200135610534565b610173600480360360408110156102a157600080fd5b506001600160a01b0381358116916020013516610548565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103455780601f1061031a57610100808354040283529160200191610345565b820191906000526020600020905b81548152906001019060200180831161032857829003601f168201915b5050505050905090565b600061036361035c610573565b8484610577565b50600192915050565b60025490565b600061037f848484610663565b6103ef8461038b610573565b6103ea85604051806060016040528060288152602001610927602891396001600160a01b038a166000908152600160205260408120906103c9610573565b6001600160a01b0316815260208101919091526040016000205491906107be565b610577565b5060019392505050565b60055460ff1690565b600061036361040f610573565b846103ea8560016000610420610573565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610855565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103455780601f1061031a57610100808354040283529160200191610345565b60006103636104d9610573565b846103ea856040518060600160405280602581526020016109986025913960016000610503610573565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906107be565b6000610363610541610573565b8484610663565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166105bc5760405162461bcd60e51b81526004018080602001828103825260248152602001806109746024913960400191505060405180910390fd5b6001600160a01b0382166106015760405162461bcd60e51b81526004018080602001828103825260228152602001806108df6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106a85760405162461bcd60e51b815260040180806020018281038252602581526020018061094f6025913960400191505060405180910390fd5b6001600160a01b0382166106ed5760405162461bcd60e51b81526004018080602001828103825260238152602001806108bc6023913960400191505060405180910390fd5b6106f88383836108b6565b61073581604051806060016040528060268152602001610901602691396001600160a01b03861660009081526020819052604090205491906107be565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107649082610855565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561084d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108125781810151838201526020016107fa565b50505050905090810190601f16801561083f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156108af576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122077d9418752b2185546b3bab10dd1293a05c1f1caca021f746017206d1a3583a564736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x233 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x25F JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x28B JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x16B JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1BB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB6 PUSH2 0x2B9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x11D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x157 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x141 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x34F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x173 PUSH2 0x36C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x157 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x19B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x372 JUMP JUMPDEST PUSH2 0x1C3 PUSH2 0x3F9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x157 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x402 JUMP JUMPDEST PUSH2 0x173 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x450 JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x46B JUMP JUMPDEST PUSH2 0x157 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x249 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4CC JUMP JUMPDEST PUSH2 0x157 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x275 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x534 JUMP JUMPDEST PUSH2 0x173 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x548 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x345 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x31A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x345 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x328 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x363 PUSH2 0x35C PUSH2 0x573 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x577 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37F DUP5 DUP5 DUP5 PUSH2 0x663 JUMP JUMPDEST PUSH2 0x3EF DUP5 PUSH2 0x38B PUSH2 0x573 JUMP JUMPDEST PUSH2 0x3EA DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x927 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x3C9 PUSH2 0x573 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x7BE JUMP JUMPDEST PUSH2 0x577 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x363 PUSH2 0x40F PUSH2 0x573 JUMP JUMPDEST DUP5 PUSH2 0x3EA DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x420 PUSH2 0x573 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x855 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x345 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x31A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x345 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x363 PUSH2 0x4D9 PUSH2 0x573 JUMP JUMPDEST DUP5 PUSH2 0x3EA DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x998 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x503 PUSH2 0x573 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x7BE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x363 PUSH2 0x541 PUSH2 0x573 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x663 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x5BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x974 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x601 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x8DF PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x6A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x94F PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x6ED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x8BC PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6F8 DUP4 DUP4 DUP4 PUSH2 0x8B6 JUMP JUMPDEST PUSH2 0x735 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x901 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x7BE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x764 SWAP1 DUP3 PUSH2 0x855 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x84D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x812 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7FA JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x83F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x8AF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x735822122077D9 COINBASE DUP8 MSTORE 0xB2 XOR SSTORE CHAINID 0xB3 0xBA 0xB1 0xD 0xD1 0x29 GASPRICE SDIV 0xC1 CALL 0xCA 0xCA MUL 0x1F PUSH21 0x6017206D1A3583A564736F6C634300060C00330000 ",
              "sourceMap": "1318:9047:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2132:75;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4048:156;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4048:156:8;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3111:92;;;:::i;:::-;;;;;;;;;;;;;;;;4638:343;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4638:343:8;;;;;;;;;;;;;;;;;:::i;2984:75::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5350:205;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5350:205:8;;;;;;;;:::i;3253:111::-;;;;;;;;;;;;;;;;-1:-1:-1;3253:111:8;-1:-1:-1;;;;;3253:111:8;;:::i;2310:79::-;;;:::i;6012:318::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6012:318:8;;;;;;;;:::i;3549:162::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3549:162:8;;;;;;;;:::i;3761:165::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3761:165:8;;;;;;;;;;:::i;2132:75::-;2197:5;2190:12;;;;;;;;-1:-1:-1;;2190:12:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2169:13;;2190:12;;2197:5;;2190:12;;2197:5;2190:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2132:75;:::o;4048:156::-;4131:4;4143:39;4152:12;:10;:12::i;:::-;4166:7;4175:6;4143:8;:39::i;:::-;-1:-1:-1;4195:4:8;4048:156;;;;:::o;3111:92::-;3186:12;;3111:92;:::o;4638:343::-;4760:4;4772:36;4782:6;4790:9;4801:6;4772:9;:36::i;:::-;4814:145;4830:6;4844:12;:10;:12::i;:::-;4864:89;4902:6;4864:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4864:19:8;;;;;;:11;:19;;;;;;4884:12;:10;:12::i;:::-;-1:-1:-1;;;;;4864:33:8;;;;;;;;;;;;-1:-1:-1;4864:33:8;;;:89;:37;:89::i;:::-;4814:8;:145::i;:::-;-1:-1:-1;4972:4:8;4638:343;;;;;:::o;2984:75::-;3045:9;;;;2984:75;:::o;5350:205::-;5438:4;5450:83;5459:12;:10;:12::i;:::-;5473:7;5482:50;5521:10;5482:11;:25;5494:12;:10;:12::i;:::-;-1:-1:-1;;;;;5482:25:8;;;;;;;;;;;;;;;;;-1:-1:-1;5482:25:8;;;:34;;;;;;;;;;;:38;:50::i;3253:111::-;-1:-1:-1;;;;;3341:18:8;3319:7;3341:18;;;;;;;;;;;;3253:111::o;2310:79::-;2377:7;2370:14;;;;;;;;-1:-1:-1;;2370:14:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2349:13;;2370:14;;2377:7;;2370:14;;2377:7;2370:14;;;;;;;;;;;;;;;;;;;;;;;;6012:318;6117:4;6131:177;6147:12;:10;:12::i;:::-;6167:7;6182:120;6230:15;6182:120;;;;;;;;;;;;;;;;;:11;:25;6194:12;:10;:12::i;:::-;-1:-1:-1;;;;;6182:25:8;;;;;;;;;;;;;;;;;-1:-1:-1;6182:25:8;;;:34;;;;;;;;;;;:120;:38;:120::i;3549:162::-;3635:4;3647:42;3657:12;:10;:12::i;:::-;3671:9;3682:6;3647:9;:42::i;3761:165::-;-1:-1:-1;;;;;3894:18:8;;;3870:7;3894:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3761:165::o;587:98:7:-;670:10;587:98;:::o;8972:338:8:-;-1:-1:-1;;;;;9085:19:8;;9077:68;;;;-1:-1:-1;;;9077:68:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9159:21:8;;9151:68;;;;-1:-1:-1;;;9151:68:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9226:18:8;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9273:32;;;;;;;;;;;;;;;;;8972:338;;;:::o;6774:520::-;-1:-1:-1;;;;;6891:20:8;;6883:70;;;;-1:-1:-1;;;6883:70:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6967:23:8;;6959:71;;;;-1:-1:-1;;;6959:71:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7037:47;7058:6;7066:9;7077:6;7037:20;:47::i;:::-;7111:71;7133:6;7111:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7111:17:8;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;7091:17:8;;;:9;:17;;;;;;;;;;;:91;;;;7211:20;;;;;;;:32;;7236:6;7211:24;:32::i;:::-;-1:-1:-1;;;;;7188:20:8;;;:9;:20;;;;;;;;;;;;:55;;;;7254:35;;;;;;;7188:20;;7254:35;;;;;;;;;;;;;6774:520;;;:::o;1649:189:13:-;1751:7;1782:12;1774:6;;;;1766:29;;;;-1:-1:-1;;;1766:29:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1813:5:13;;;1649:189::o;851:162::-;909:7;936:5;;;955:6;;;;947:46;;;;;-1:-1:-1;;;947:46:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;1007:1;851:162;-1:-1:-1;;;851:162:13:o;10256:107:8:-;;;;:::o"
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "increaseAllowance(address,uint256)": "39509351",
              "name()": "06fdde03",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "contracts/dependencies/openzeppelin/contracts/IERC20.sol": {
        "IERC20": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "contracts/dependencies/openzeppelin/contracts/IERC20Detailed.sol": {
        "IERC20Detailed": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "name()": "06fdde03",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "contracts/dependencies/openzeppelin/contracts/Ownable.sol": {
        "Ownable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "owner()": "8da5cb5b",
              "renounceOwnership()": "715018a6",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        }
      },
      "contracts/dependencies/openzeppelin/contracts/SafeERC20.sol": {
        "SafeERC20": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bfe92e7c7203651c1598bd5e0bb7842604674a3d8b982cbad2401a64dbc7105a64736f6c634300060c0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF 0xE9 0x2E PUSH29 0x7203651C1598BD5E0BB7842604674A3D8B982CBAD2401A64DBC7105A64 PUSH20 0x6F6C634300060C00330000000000000000000000 ",
              "sourceMap": "634:1396:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bfe92e7c7203651c1598bd5e0bb7842604674a3d8b982cbad2401a64dbc7105a64736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF 0xE9 0x2E PUSH29 0x7203651C1598BD5E0BB7842604674A3D8B982CBAD2401A64DBC7105A64 PUSH20 0x6F6C634300060C00330000000000000000000000 ",
              "sourceMap": "634:1396:12:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "contracts/dependencies/openzeppelin/contracts/SafeMath.sol": {
        "SafeMath": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a1bd78d2d20e95b81481b7c60e9fa29307a20e9f12fbea3b3158cdacb3361fef64736f6c634300060c0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG1 0xBD PUSH25 0xD2D20E95B81481B7C60E9FA29307A20E9F12FBEA3B3158CDAC 0xB3 CALLDATASIZE 0x1F 0xEF PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "626:4342:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a1bd78d2d20e95b81481b7c60e9fa29307a20e9f12fbea3b3158cdacb3361fef64736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG1 0xBD PUSH25 0xD2D20E95B81481B7C60E9FA29307A20E9F12FBEA3B3158CDAC 0xB3 CALLDATASIZE 0x1F 0xEF PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "626:4342:13:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "contracts/dependencies/openzeppelin/upgradeability/AdminUpgradeabilityProxy.sol": {
        "AdminUpgradeabilityProxy": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_logic",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_admin",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "stateMutability": "payable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "previousAdmin",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newAdmin",
                  "type": "address"
                }
              ],
              "name": "AdminChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "Upgraded",
              "type": "event"
            },
            {
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newAdmin",
                  "type": "address"
                }
              ],
              "name": "changeAdmin",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "implementation",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newImplementation",
                  "type": "address"
                }
              ],
              "name": "upgradeTo",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newImplementation",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "upgradeToAndCall",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526040516109353803806109358339818101604052606081101561002657600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005157600080fd5b90830190602082018581111561006657600080fd5b825164010000000081118282018810171561008057600080fd5b82525081516020918201929091019080838360005b838110156100ad578181015183820152602001610095565b50505050905090810190601f1680156100da5780820380516001836020036101000a031916815260200191505b50604052508491508290506100ee826101bf565b8051156101a6576000826001600160a01b0316826040518082805190602001908083835b602083106101315780518252601f199092019160209182019101610112565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610191576040519150601f19603f3d011682016040523d82523d6000602084013e610196565b606091505b50509050806101a457600080fd5b505b506101ae9050565b6101b782610231565b505050610291565b6101d28161025560201b6103a31760201c565b61020d5760405162461bcd60e51b815260040180806020018281038252603b8152602001806108fa603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061028957508115155b949350505050565b61065a806102a06000396000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b146101075780638f28397014610138578063f851a4401461016b575b610052610180565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661019a565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b5090925090506101d4565b34801561011357600080fd5b5061011c610281565b604080516001600160a01b039092168252519081900360200190f35b34801561014457600080fd5b506100526004803603602081101561015b57600080fd5b50356001600160a01b03166102be565b34801561017757600080fd5b5061011c610378565b6101886103df565b6101986101936103e7565b61040c565b565b6101a2610430565b6001600160a01b0316336001600160a01b031614156101c9576101c481610455565b6101d1565b6101d1610180565b50565b6101dc610430565b6001600160a01b0316336001600160a01b03161415610274576101fe83610455565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d806000811461025b576040519150601f19603f3d011682016040523d82523d6000602084013e610260565b606091505b505090508061026e57600080fd5b5061027c565b61027c610180565b505050565b600061028b610430565b6001600160a01b0316336001600160a01b031614156102b3576102ac6103e7565b90506102bb565b6102bb610180565b90565b6102c6610430565b6001600160a01b0316336001600160a01b031614156101c9576001600160a01b0381166103245760405162461bcd60e51b81526004018080602001828103825260368152602001806105b46036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61034d610430565b604080516001600160a01b03928316815291841660208301528051918290030190a16101c481610495565b6000610382610430565b6001600160a01b0316336001600160a01b031614156102b3576102ac610430565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906103d757508115155b949350505050565b6101986104b9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561042b573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b61045e81610519565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6104c1610430565b6001600160a01b0316336001600160a01b031614156105115760405162461bcd60e51b81526004018080602001828103825260328152602001806105826032913960400191505060405180910390fd5b610198610198565b610522816103a3565b61055d5760405162461bcd60e51b815260040180806020018281038252603b8152602001806105ea603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5556fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212209709a6ccc8d5f316f876990a689b0d68375820d751636132767f99a69915c6d864736f6c634300060c003343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x935 CODESIZE SUB DUP1 PUSH2 0x935 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD DUP1 MLOAD SWAP2 MLOAD SWAP4 SWAP6 SWAP3 SWAP5 DUP4 ADD SWAP3 SWAP2 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x95 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP DUP5 SWAP2 POP DUP3 SWAP1 POP PUSH2 0xEE DUP3 PUSH2 0x1BF JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1A6 JUMPI PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x131 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x112 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x191 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x196 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x1A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMPDEST POP PUSH2 0x1AE SWAP1 POP JUMP JUMPDEST PUSH2 0x1B7 DUP3 PUSH2 0x231 JUMP JUMPDEST POP POP POP PUSH2 0x291 JUMP JUMPDEST PUSH2 0x1D2 DUP2 PUSH2 0x255 PUSH1 0x20 SHL PUSH2 0x3A3 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x20D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x8FA PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SSTORE JUMP JUMPDEST PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x289 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x65A DUP1 PUSH2 0x2A0 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x54 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x87 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x107 JUMPI DUP1 PUSH4 0x8F283970 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x16B JUMPI JUMPDEST PUSH2 0x52 PUSH2 0x180 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x19A JUMP JUMPDEST PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1D4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11C PUSH2 0x281 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x144 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11C PUSH2 0x378 JUMP JUMPDEST PUSH2 0x188 PUSH2 0x3DF JUMP JUMPDEST PUSH2 0x198 PUSH2 0x193 PUSH2 0x3E7 JUMP JUMPDEST PUSH2 0x40C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x430 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1C9 JUMPI PUSH2 0x1C4 DUP2 PUSH2 0x455 JUMP JUMPDEST PUSH2 0x1D1 JUMP JUMPDEST PUSH2 0x1D1 PUSH2 0x180 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1DC PUSH2 0x430 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x274 JUMPI PUSH2 0x1FE DUP4 PUSH2 0x455 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x25B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x260 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x26E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27C JUMP JUMPDEST PUSH2 0x27C PUSH2 0x180 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28B PUSH2 0x430 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2B3 JUMPI PUSH2 0x2AC PUSH2 0x3E7 JUMP JUMPDEST SWAP1 POP PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x2BB PUSH2 0x180 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x430 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x324 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5B4 PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x7E644D79422F17C01E4894B5F4F588D331EBFA28653D42AE832DC59E38C9798F PUSH2 0x34D PUSH2 0x430 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG1 PUSH2 0x1C4 DUP2 PUSH2 0x495 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x382 PUSH2 0x430 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2B3 JUMPI PUSH2 0x2AC PUSH2 0x430 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x3D7 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x198 PUSH2 0x4B9 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x42B JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x45E DUP2 PUSH2 0x519 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 SSTORE JUMP JUMPDEST PUSH2 0x4C1 PUSH2 0x430 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x511 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x582 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x198 PUSH2 0x198 JUMP JUMPDEST PUSH2 0x522 DUP2 PUSH2 0x3A3 JUMP JUMPDEST PUSH2 0x55D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5EA PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SSTORE JUMP INVALID NUMBER PUSH2 0x6E6E PUSH16 0x742063616C6C2066616C6C6261636B20 PUSH7 0x756E6374696F6E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH17 0x726F78792061646D696E43616E6E6F7420 PUSH4 0x68616E67 PUSH6 0x207468652061 PUSH5 0x6D696E206F PUSH7 0x20612070726F78 PUSH26 0x20746F20746865207A65726F206164647265737343616E6E6F74 KECCAK256 PUSH20 0x657420612070726F787920696D706C656D656E74 PUSH2 0x7469 PUSH16 0x6E20746F2061206E6F6E2D636F6E7472 PUSH2 0x6374 KECCAK256 PUSH2 0x6464 PUSH19 0x657373A26469706673582212209709A6CCC8D5 RETURN AND 0xF8 PUSH23 0x990A689B0D68375820D751636132767F99A69915C6D864 PUSH20 0x6F6C634300060C003343616E6E6F742073657420 PUSH2 0x2070 PUSH19 0x6F787920696D706C656D656E746174696F6E20 PUSH21 0x6F2061206E6F6E2D636F6E74726163742061646472 PUSH6 0x737300000000 ",
              "sourceMap": "282:1115:14:-:0;;;945:240;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;945:240:14;;;;;;;;;;-1:-1:-1;945:240:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;945:240:14;;-1:-1:-1;1060:6:14;;-1:-1:-1;1068:5:14;;-1:-1:-1;1001:26:20;1020:6;1001:18;:26::i;:::-;1037:12;;:16;1033:106;;1064:12;1082:6;-1:-1:-1;;;;;1082:19:20;1102:5;1082:26;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1082:26:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1063:45;;;1124:7;1116:16;;;;;;1033:106;;-1:-1:-1;1081:76:14::1;::::0;-1:-1:-1;1081:76:14;::::1;1163:17;1173:6:::0;1163:9:::1;:17::i;:::-;945:240:::0;;;282:1115;;1618:334:16;1703:37;1722:17;1703:18;;;;;:37;;:::i;:::-;1688:127;;;;-1:-1:-1;;;1688:127:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;823:66;1911:31;1903:45::o;3434:163:15:-;1002:66;3565:22;3557:36::o;686:586:6:-;746:4;1185:20;;1032:66;1224:23;;;;;;:42;;-1:-1:-1;1251:15:6;;;1224:42;1216:51;686:586;-1:-1:-1;;;;686:586:6:o;282:1115:14:-;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b146101075780638f28397014610138578063f851a4401461016b575b610052610180565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661019a565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b5090925090506101d4565b34801561011357600080fd5b5061011c610281565b604080516001600160a01b039092168252519081900360200190f35b34801561014457600080fd5b506100526004803603602081101561015b57600080fd5b50356001600160a01b03166102be565b34801561017757600080fd5b5061011c610378565b6101886103df565b6101986101936103e7565b61040c565b565b6101a2610430565b6001600160a01b0316336001600160a01b031614156101c9576101c481610455565b6101d1565b6101d1610180565b50565b6101dc610430565b6001600160a01b0316336001600160a01b03161415610274576101fe83610455565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d806000811461025b576040519150601f19603f3d011682016040523d82523d6000602084013e610260565b606091505b505090508061026e57600080fd5b5061027c565b61027c610180565b505050565b600061028b610430565b6001600160a01b0316336001600160a01b031614156102b3576102ac6103e7565b90506102bb565b6102bb610180565b90565b6102c6610430565b6001600160a01b0316336001600160a01b031614156101c9576001600160a01b0381166103245760405162461bcd60e51b81526004018080602001828103825260368152602001806105b46036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61034d610430565b604080516001600160a01b03928316815291841660208301528051918290030190a16101c481610495565b6000610382610430565b6001600160a01b0316336001600160a01b031614156102b3576102ac610430565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906103d757508115155b949350505050565b6101986104b9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561042b573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b61045e81610519565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6104c1610430565b6001600160a01b0316336001600160a01b031614156105115760405162461bcd60e51b81526004018080602001828103825260328152602001806105826032913960400191505060405180910390fd5b610198610198565b610522816103a3565b61055d5760405162461bcd60e51b815260040180806020018281038252603b8152602001806105ea603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5556fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212209709a6ccc8d5f316f876990a689b0d68375820d751636132767f99a69915c6d864736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x54 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x87 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x107 JUMPI DUP1 PUSH4 0x8F283970 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x16B JUMPI JUMPDEST PUSH2 0x52 PUSH2 0x180 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x19A JUMP JUMPDEST PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1D4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11C PUSH2 0x281 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x144 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11C PUSH2 0x378 JUMP JUMPDEST PUSH2 0x188 PUSH2 0x3DF JUMP JUMPDEST PUSH2 0x198 PUSH2 0x193 PUSH2 0x3E7 JUMP JUMPDEST PUSH2 0x40C JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x430 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1C9 JUMPI PUSH2 0x1C4 DUP2 PUSH2 0x455 JUMP JUMPDEST PUSH2 0x1D1 JUMP JUMPDEST PUSH2 0x1D1 PUSH2 0x180 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1DC PUSH2 0x430 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x274 JUMPI PUSH2 0x1FE DUP4 PUSH2 0x455 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x25B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x260 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x26E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27C JUMP JUMPDEST PUSH2 0x27C PUSH2 0x180 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28B PUSH2 0x430 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2B3 JUMPI PUSH2 0x2AC PUSH2 0x3E7 JUMP JUMPDEST SWAP1 POP PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x2BB PUSH2 0x180 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x430 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x324 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5B4 PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x7E644D79422F17C01E4894B5F4F588D331EBFA28653D42AE832DC59E38C9798F PUSH2 0x34D PUSH2 0x430 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG1 PUSH2 0x1C4 DUP2 PUSH2 0x495 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x382 PUSH2 0x430 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2B3 JUMPI PUSH2 0x2AC PUSH2 0x430 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x3D7 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x198 PUSH2 0x4B9 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x42B JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x45E DUP2 PUSH2 0x519 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 SSTORE JUMP JUMPDEST PUSH2 0x4C1 PUSH2 0x430 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x511 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x582 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x198 PUSH2 0x198 JUMP JUMPDEST PUSH2 0x522 DUP2 PUSH2 0x3A3 JUMP JUMPDEST PUSH2 0x55D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5EA PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SSTORE JUMP INVALID NUMBER PUSH2 0x6E6E PUSH16 0x742063616C6C2066616C6C6261636B20 PUSH7 0x756E6374696F6E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH17 0x726F78792061646D696E43616E6E6F7420 PUSH4 0x68616E67 PUSH6 0x207468652061 PUSH5 0x6D696E206F PUSH7 0x20612070726F78 PUSH26 0x20746F20746865207A65726F206164647265737343616E6E6F74 KECCAK256 PUSH20 0x657420612070726F787920696D706C656D656E74 PUSH2 0x7469 PUSH16 0x6E20746F2061206E6F6E2D636F6E7472 PUSH2 0x6374 KECCAK256 PUSH2 0x6464 PUSH19 0x657373A26469706673582212209709A6CCC8D5 RETURN AND 0xF8 PUSH23 0x990A689B0D68375820D751636132767F99A69915C6D864 PUSH20 0x6F6C634300060C00330000000000000000000000 ",
              "sourceMap": "282:1115:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;498:11:19;:9;:11::i;:::-;282:1115:14;2246:103:15;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2246:103:15;-1:-1:-1;;;;;2246:103:15;;:::i;2866:236::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2866:236:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2866:236:15;;-1:-1:-1;2866:236:15;-1:-1:-1;2866:236:15;:::i;1566:96::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1566:96:15;;;;;;;;;;;;;;1838:224;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1838:224:15;-1:-1:-1;;;;;1838:224:15;;:::i;1424:78::-;;;;;;;;;;;;;:::i;2095:90:19:-;2131:15;:13;:15::i;:::-;2152:28;2162:17;:15;:17::i;:::-;2152:9;:28::i;:::-;2095:90::o;2246:103:15:-;1301:8;:6;:8::i;:::-;-1:-1:-1;;;;;1287:22:15;:10;-1:-1:-1;;;;;1287:22:15;;1283:76;;;2315:29:::1;2326:17;2315:10;:29::i;:::-;1283:76:::0;;;1341:11;:9;:11::i;:::-;2246:103;:::o;2866:236::-;1301:8;:6;:8::i;:::-;-1:-1:-1;;;;;1287:22:15;:10;-1:-1:-1;;;;;1287:22:15;;1283:76;;;2985:29:::1;2996:17;2985:10;:29::i;:::-;3021:12;3039:17;-1:-1:-1::0;;;;;3039:30:15::1;3070:4;;3039:36;;;;;;;;;;::::0;;::::1;::::0;-1:-1:-1;3039:36:15::1;::::0;-1:-1:-1;3039:36:15;;-1:-1:-1;;3039:36:15;;::::1;::::0;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3020:55;;;3089:7;3081:16;;;::::0;::::1;;1319:1;1283:76:::0;;;1341:11;:9;:11::i;:::-;2866:236;;;:::o;1566:96::-;1618:7;1301:8;:6;:8::i;:::-;-1:-1:-1;;;;;1287:22:15;:10;-1:-1:-1;;;;;1287:22:15;;1283:76;;;1640:17:::1;:15;:17::i;:::-;1633:24;;1283:76:::0;;;1341:11;:9;:11::i;:::-;1566:96;:::o;1838:224::-;1301:8;:6;:8::i;:::-;-1:-1:-1;;;;;1287:22:15;:10;-1:-1:-1;;;;;1287:22:15;;1283:76;;;-1:-1:-1;;;;;1908:22:15;::::1;1900:89;;;;-1:-1:-1::0;;;1900:89:15::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2000:32;2013:8;:6;:8::i;:::-;2000:32;::::0;;-1:-1:-1;;;;;2000:32:15;;::::1;::::0;;;;::::1;;::::0;::::1;::::0;;;;;;;;;::::1;2038:19;2048:8;2038:9;:19::i;1424:78::-:0;1467:7;1301:8;:6;:8::i;:::-;-1:-1:-1;;;;;1287:22:15;:10;-1:-1:-1;;;;;1287:22:15;;1283:76;;;1489:8:::1;:6;:8::i;686:586:6:-:0;746:4;1185:20;;1032:66;1224:23;;;;;;:42;;-1:-1:-1;1251:15:6;;;1224:42;1216:51;686:586;-1:-1:-1;;;;686:586:6:o;1260:135:14:-;1346:44;:42;:44::i;1008:196:16:-;823:66;1183:11;;1167:33::o;931:816:19:-;1264:14;1261:1;1258;1245:34;1460:1;1457;1441:14;1438:1;1422:14;1415:5;1402:60;1524:16;1521:1;1518;1503:38;1556:6;1615:56;;;;1710:16;1707:1;1700:27;1615:56;1644:16;1641:1;1634:27;3151:167:15;1002:66;3297:11;;3282:32::o;1339:142:16:-;1401:37;1420:17;1401:18;:37::i;:::-;1449:27;;-1:-1:-1;;;;;1449:27:16;;;;;;;;1339:142;:::o;3434:163:15:-;1002:66;3565:22;3557:36::o;3672:174::-;3751:8;:6;:8::i;:::-;-1:-1:-1;;;;;3737:22:15;:10;-1:-1:-1;;;;;3737:22:15;;;3729:85;;;;-1:-1:-1;;;3729:85:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3820:21;:19;:21::i;1618:334:16:-;1703:37;1722:17;1703:18;:37::i;:::-;1688:127;;;;-1:-1:-1;;;1688:127:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;823:66;1911:31;1903:45::o"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "changeAdmin(address)": "8f283970",
              "implementation()": "5c60da1b",
              "upgradeTo(address)": "3659cfe6",
              "upgradeToAndCall(address,bytes)": "4f1ef286"
            }
          }
        }
      },
      "contracts/dependencies/openzeppelin/upgradeability/BaseAdminUpgradeabilityProxy.sol": {
        "BaseAdminUpgradeabilityProxy": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "previousAdmin",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newAdmin",
                  "type": "address"
                }
              ],
              "name": "AdminChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "Upgraded",
              "type": "event"
            },
            {
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newAdmin",
                  "type": "address"
                }
              ],
              "name": "changeAdmin",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "implementation",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newImplementation",
                  "type": "address"
                }
              ],
              "name": "upgradeTo",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newImplementation",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "upgradeToAndCall",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50610652806100206000396000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b146101075780638f28397014610138578063f851a4401461016b575b610052610180565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661019a565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b5090925090506101d4565b34801561011357600080fd5b5061011c610281565b604080516001600160a01b039092168252519081900360200190f35b34801561014457600080fd5b506100526004803603602081101561015b57600080fd5b50356001600160a01b03166102be565b34801561017757600080fd5b5061011c610378565b6101886103a3565b610198610193610403565b610428565b565b6101a261044c565b6001600160a01b0316336001600160a01b031614156101c9576101c481610471565b6101d1565b6101d1610180565b50565b6101dc61044c565b6001600160a01b0316336001600160a01b03161415610274576101fe83610471565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d806000811461025b576040519150601f19603f3d011682016040523d82523d6000602084013e610260565b606091505b505090508061026e57600080fd5b5061027c565b61027c610180565b505050565b600061028b61044c565b6001600160a01b0316336001600160a01b031614156102b3576102ac610403565b90506102bb565b6102bb610180565b90565b6102c661044c565b6001600160a01b0316336001600160a01b031614156101c9576001600160a01b0381166103245760405162461bcd60e51b81526004018080602001828103825260368152602001806105ac6036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61034d61044c565b604080516001600160a01b03928316815291841660208301528051918290030190a16101c4816104b1565b600061038261044c565b6001600160a01b0316336001600160a01b031614156102b3576102ac61044c565b6103ab61044c565b6001600160a01b0316336001600160a01b031614156103fb5760405162461bcd60e51b815260040180806020018281038252603281526020018061057a6032913960400191505060405180910390fd5b610198610198565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015610447573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b61047a816104d5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6104de8161053d565b6105195760405162461bcd60e51b815260040180806020018281038252603b8152602001806105e2603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061057157508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220192c302e3ae6d263c9d93f41926adf158d0c2aec2a4da2a14ba8d7b28ac93bbc64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x652 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x54 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x87 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x107 JUMPI DUP1 PUSH4 0x8F283970 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x16B JUMPI JUMPDEST PUSH2 0x52 PUSH2 0x180 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x19A JUMP JUMPDEST PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1D4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11C PUSH2 0x281 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x144 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11C PUSH2 0x378 JUMP JUMPDEST PUSH2 0x188 PUSH2 0x3A3 JUMP JUMPDEST PUSH2 0x198 PUSH2 0x193 PUSH2 0x403 JUMP JUMPDEST PUSH2 0x428 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x44C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1C9 JUMPI PUSH2 0x1C4 DUP2 PUSH2 0x471 JUMP JUMPDEST PUSH2 0x1D1 JUMP JUMPDEST PUSH2 0x1D1 PUSH2 0x180 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1DC PUSH2 0x44C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x274 JUMPI PUSH2 0x1FE DUP4 PUSH2 0x471 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x25B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x260 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x26E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27C JUMP JUMPDEST PUSH2 0x27C PUSH2 0x180 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28B PUSH2 0x44C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2B3 JUMPI PUSH2 0x2AC PUSH2 0x403 JUMP JUMPDEST SWAP1 POP PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x2BB PUSH2 0x180 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x44C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x324 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5AC PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x7E644D79422F17C01E4894B5F4F588D331EBFA28653D42AE832DC59E38C9798F PUSH2 0x34D PUSH2 0x44C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG1 PUSH2 0x1C4 DUP2 PUSH2 0x4B1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x382 PUSH2 0x44C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2B3 JUMPI PUSH2 0x2AC PUSH2 0x44C JUMP JUMPDEST PUSH2 0x3AB PUSH2 0x44C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x3FB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x57A PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x198 PUSH2 0x198 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x447 JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x47A DUP2 PUSH2 0x4D5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 SSTORE JUMP JUMPDEST PUSH2 0x4DE DUP2 PUSH2 0x53D JUMP JUMPDEST PUSH2 0x519 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E2 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x571 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID NUMBER PUSH2 0x6E6E PUSH16 0x742063616C6C2066616C6C6261636B20 PUSH7 0x756E6374696F6E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH17 0x726F78792061646D696E43616E6E6F7420 PUSH4 0x68616E67 PUSH6 0x207468652061 PUSH5 0x6D696E206F PUSH7 0x20612070726F78 PUSH26 0x20746F20746865207A65726F206164647265737343616E6E6F74 KECCAK256 PUSH20 0x657420612070726F787920696D706C656D656E74 PUSH2 0x7469 PUSH16 0x6E20746F2061206E6F6E2D636F6E7472 PUSH2 0x6374 KECCAK256 PUSH2 0x6464 PUSH19 0x657373A2646970667358221220192C302E3AE6 0xD2 PUSH4 0xC9D93F41 SWAP3 PUSH11 0xDF158D0C2AEC2A4DA2A14B 0xA8 0xD7 0xB2 DUP11 0xC9 EXTCODESIZE 0xBC PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "462:3386:15:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b146101075780638f28397014610138578063f851a4401461016b575b610052610180565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661019a565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b5090925090506101d4565b34801561011357600080fd5b5061011c610281565b604080516001600160a01b039092168252519081900360200190f35b34801561014457600080fd5b506100526004803603602081101561015b57600080fd5b50356001600160a01b03166102be565b34801561017757600080fd5b5061011c610378565b6101886103a3565b610198610193610403565b610428565b565b6101a261044c565b6001600160a01b0316336001600160a01b031614156101c9576101c481610471565b6101d1565b6101d1610180565b50565b6101dc61044c565b6001600160a01b0316336001600160a01b03161415610274576101fe83610471565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d806000811461025b576040519150601f19603f3d011682016040523d82523d6000602084013e610260565b606091505b505090508061026e57600080fd5b5061027c565b61027c610180565b505050565b600061028b61044c565b6001600160a01b0316336001600160a01b031614156102b3576102ac610403565b90506102bb565b6102bb610180565b90565b6102c661044c565b6001600160a01b0316336001600160a01b031614156101c9576001600160a01b0381166103245760405162461bcd60e51b81526004018080602001828103825260368152602001806105ac6036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61034d61044c565b604080516001600160a01b03928316815291841660208301528051918290030190a16101c4816104b1565b600061038261044c565b6001600160a01b0316336001600160a01b031614156102b3576102ac61044c565b6103ab61044c565b6001600160a01b0316336001600160a01b031614156103fb5760405162461bcd60e51b815260040180806020018281038252603281526020018061057a6032913960400191505060405180910390fd5b610198610198565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015610447573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b61047a816104d5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6104de8161053d565b6105195760405162461bcd60e51b815260040180806020018281038252603b8152602001806105e2603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061057157508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220192c302e3ae6d263c9d93f41926adf158d0c2aec2a4da2a14ba8d7b28ac93bbc64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x54 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x87 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x107 JUMPI DUP1 PUSH4 0x8F283970 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x16B JUMPI JUMPDEST PUSH2 0x52 PUSH2 0x180 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x19A JUMP JUMPDEST PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1D4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11C PUSH2 0x281 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x144 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11C PUSH2 0x378 JUMP JUMPDEST PUSH2 0x188 PUSH2 0x3A3 JUMP JUMPDEST PUSH2 0x198 PUSH2 0x193 PUSH2 0x403 JUMP JUMPDEST PUSH2 0x428 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x44C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1C9 JUMPI PUSH2 0x1C4 DUP2 PUSH2 0x471 JUMP JUMPDEST PUSH2 0x1D1 JUMP JUMPDEST PUSH2 0x1D1 PUSH2 0x180 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1DC PUSH2 0x44C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x274 JUMPI PUSH2 0x1FE DUP4 PUSH2 0x471 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x25B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x260 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x26E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x27C JUMP JUMPDEST PUSH2 0x27C PUSH2 0x180 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28B PUSH2 0x44C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2B3 JUMPI PUSH2 0x2AC PUSH2 0x403 JUMP JUMPDEST SWAP1 POP PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x2BB PUSH2 0x180 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2C6 PUSH2 0x44C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1C9 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x324 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5AC PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x7E644D79422F17C01E4894B5F4F588D331EBFA28653D42AE832DC59E38C9798F PUSH2 0x34D PUSH2 0x44C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG1 PUSH2 0x1C4 DUP2 PUSH2 0x4B1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x382 PUSH2 0x44C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2B3 JUMPI PUSH2 0x2AC PUSH2 0x44C JUMP JUMPDEST PUSH2 0x3AB PUSH2 0x44C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x3FB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x57A PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x198 PUSH2 0x198 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x447 JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x47A DUP2 PUSH2 0x4D5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 SSTORE JUMP JUMPDEST PUSH2 0x4DE DUP2 PUSH2 0x53D JUMP JUMPDEST PUSH2 0x519 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5E2 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x571 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID NUMBER PUSH2 0x6E6E PUSH16 0x742063616C6C2066616C6C6261636B20 PUSH7 0x756E6374696F6E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH17 0x726F78792061646D696E43616E6E6F7420 PUSH4 0x68616E67 PUSH6 0x207468652061 PUSH5 0x6D696E206F PUSH7 0x20612070726F78 PUSH26 0x20746F20746865207A65726F206164647265737343616E6E6F74 KECCAK256 PUSH20 0x657420612070726F787920696D706C656D656E74 PUSH2 0x7469 PUSH16 0x6E20746F2061206E6F6E2D636F6E7472 PUSH2 0x6374 KECCAK256 PUSH2 0x6464 PUSH19 0x657373A2646970667358221220192C302E3AE6 0xD2 PUSH4 0xC9D93F41 SWAP3 PUSH11 0xDF158D0C2AEC2A4DA2A14B 0xA8 0xD7 0xB2 DUP11 0xC9 EXTCODESIZE 0xBC PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "462:3386:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;498:11:19;:9;:11::i;:::-;462:3386:15;2246:103;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2246:103:15;-1:-1:-1;;;;;2246:103:15;;:::i;2866:236::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2866:236:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2866:236:15;;-1:-1:-1;2866:236:15;-1:-1:-1;2866:236:15;:::i;1566:96::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1566:96:15;;;;;;;;;;;;;;1838:224;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1838:224:15;-1:-1:-1;;;;;1838:224:15;;:::i;1424:78::-;;;;;;;;;;;;;:::i;2095:90:19:-;2131:15;:13;:15::i;:::-;2152:28;2162:17;:15;:17::i;:::-;2152:9;:28::i;:::-;2095:90::o;2246:103:15:-;1301:8;:6;:8::i;:::-;-1:-1:-1;;;;;1287:22:15;:10;-1:-1:-1;;;;;1287:22:15;;1283:76;;;2315:29:::1;2326:17;2315:10;:29::i;:::-;1283:76:::0;;;1341:11;:9;:11::i;:::-;2246:103;:::o;2866:236::-;1301:8;:6;:8::i;:::-;-1:-1:-1;;;;;1287:22:15;:10;-1:-1:-1;;;;;1287:22:15;;1283:76;;;2985:29:::1;2996:17;2985:10;:29::i;:::-;3021:12;3039:17;-1:-1:-1::0;;;;;3039:30:15::1;3070:4;;3039:36;;;;;;;;;;::::0;;::::1;::::0;-1:-1:-1;3039:36:15::1;::::0;-1:-1:-1;3039:36:15;;-1:-1:-1;;3039:36:15;;::::1;::::0;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3020:55;;;3089:7;3081:16;;;::::0;::::1;;1319:1;1283:76:::0;;;1341:11;:9;:11::i;:::-;2866:236;;;:::o;1566:96::-;1618:7;1301:8;:6;:8::i;:::-;-1:-1:-1;;;;;1287:22:15;:10;-1:-1:-1;;;;;1287:22:15;;1283:76;;;1640:17:::1;:15;:17::i;:::-;1633:24;;1283:76:::0;;;1341:11;:9;:11::i;:::-;1566:96;:::o;1838:224::-;1301:8;:6;:8::i;:::-;-1:-1:-1;;;;;1287:22:15;:10;-1:-1:-1;;;;;1287:22:15;;1283:76;;;-1:-1:-1;;;;;1908:22:15;::::1;1900:89;;;;-1:-1:-1::0;;;1900:89:15::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2000:32;2013:8;:6;:8::i;:::-;2000:32;::::0;;-1:-1:-1;;;;;2000:32:15;;::::1;::::0;;;;::::1;;::::0;::::1;::::0;;;;;;;;;::::1;2038:19;2048:8;2038:9;:19::i;1424:78::-:0;1467:7;1301:8;:6;:8::i;:::-;-1:-1:-1;;;;;1287:22:15;:10;-1:-1:-1;;;;;1287:22:15;;1283:76;;;1489:8:::1;:6;:8::i;3672:174::-:0;3751:8;:6;:8::i;:::-;-1:-1:-1;;;;;3737:22:15;:10;-1:-1:-1;;;;;3737:22:15;;;3729:85;;;;-1:-1:-1;;;3729:85:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3820:21;:19;:21::i;1008:196:16:-;823:66;1183:11;;1167:33::o;931:816:19:-;1264:14;1261:1;1258;1245:34;1460:1;1457;1441:14;1438:1;1422:14;1415:5;1402:60;1524:16;1521:1;1518;1503:38;1556:6;1615:56;;;;1710:16;1707:1;1700:27;1615:56;1644:16;1641:1;1634:27;3151:167:15;1002:66;3297:11;;3282:32::o;1339:142:16:-;1401:37;1420:17;1401:18;:37::i;:::-;1449:27;;-1:-1:-1;;;;;1449:27:16;;;;;;;;1339:142;:::o;3434:163:15:-;1002:66;3565:22;3557:36::o;1618:334:16:-;1703:37;1722:17;1703:18;:37::i;:::-;1688:127;;;;-1:-1:-1;;;1688:127:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;823:66;1911:31;1903:45::o;686:586:6:-;746:4;1185:20;;1032:66;1224:23;;;;;;:42;;-1:-1:-1;1251:15:6;;;1224:42;1216:51;686:586;-1:-1:-1;;;;686:586:6:o"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "changeAdmin(address)": "8f283970",
              "implementation()": "5c60da1b",
              "upgradeTo(address)": "3659cfe6",
              "upgradeToAndCall(address,bytes)": "4f1ef286"
            }
          }
        }
      },
      "contracts/dependencies/openzeppelin/upgradeability/BaseUpgradeabilityProxy.sol": {
        "BaseUpgradeabilityProxy": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "Upgraded",
              "type": "event"
            },
            {
              "stateMutability": "payable",
              "type": "fallback"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50609e8061001e6000396000f3fe6080604052600a600c565b005b6012601e565b601e601a6020565b6045565b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156063573d6000f35b3d6000fdfea264697066735822122080238c1c240f36ee82095aaf1463780c0a37c9abffa58925670dde70c2d9507e64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x9E DUP1 PUSH2 0x1E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x12 PUSH1 0x1E JUMP JUMPDEST PUSH1 0x1E PUSH1 0x1A PUSH1 0x20 JUMP JUMPDEST PUSH1 0x45 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x63 JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP1 0x23 DUP13 SHR 0x24 0xF CALLDATASIZE 0xEE DUP3 MULMOD GAS 0xAF EQ PUSH4 0x780C0A37 0xC9 0xAB SELFDESTRUCT 0xA5 DUP10 0x25 PUSH8 0xDDE70C2D9507E64 PUSH20 0x6F6C634300060C00330000000000000000000000 ",
              "sourceMap": "336:1618:16:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600a600c565b005b6012601e565b601e601a6020565b6045565b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156063573d6000f35b3d6000fdfea264697066735822122080238c1c240f36ee82095aaf1463780c0a37c9abffa58925670dde70c2d9507e64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x12 PUSH1 0x1E JUMP JUMPDEST PUSH1 0x1E PUSH1 0x1A PUSH1 0x20 JUMP JUMPDEST PUSH1 0x45 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x63 JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP1 0x23 DUP13 SHR 0x24 0xF CALLDATASIZE 0xEE DUP3 MULMOD GAS 0xAF EQ PUSH4 0x780C0A37 0xC9 0xAB SELFDESTRUCT 0xA5 DUP10 0x25 PUSH8 0xDDE70C2D9507E64 PUSH20 0x6F6C634300060C00330000000000000000000000 ",
              "sourceMap": "336:1618:16:-:0;;;498:11:19;:9;:11::i;:::-;336:1618:16;2095:90:19;2131:15;:13;:15::i;:::-;2152:28;2162:17;:15;:17::i;:::-;2152:9;:28::i;:::-;2095:90::o;1008:196:16:-;823:66;1183:11;;1167:33::o;931:816:19:-;1264:14;1261:1;1258;1245:34;1460:1;1457;1441:14;1438:1;1422:14;1415:5;1402:60;1524:16;1521:1;1518;1503:38;1556:6;1615:56;;;;1710:16;1707:1;1700:27;1615:56;1644:16;1641:1;1634:27"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "contracts/dependencies/openzeppelin/upgradeability/InitializableAdminUpgradeabilityProxy.sol": {
        "InitializableAdminUpgradeabilityProxy": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "previousAdmin",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "newAdmin",
                  "type": "address"
                }
              ],
              "name": "AdminChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "Upgraded",
              "type": "event"
            },
            {
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newAdmin",
                  "type": "address"
                }
              ],
              "name": "changeAdmin",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "implementation",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "logic",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_logic",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newImplementation",
                  "type": "address"
                }
              ],
              "name": "upgradeTo",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newImplementation",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "upgradeToAndCall",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50610905806100206000396000f3fe6080604052600436106100705760003560e01c80638f2839701161004e5780638f2839701461015e578063cf7a1d7714610191578063d1f5789414610250578063f851a4401461030657610070565b80633659cfe61461007a5780634f1ef286146100ad5780635c60da1b1461012d575b61007861031b565b005b34801561008657600080fd5b506100786004803603602081101561009d57600080fd5b50356001600160a01b0316610335565b610078600480360360408110156100c357600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100ee57600080fd5b82018360208201111561010057600080fd5b8035906020019184600183028401116401000000008311171561012257600080fd5b50909250905061036f565b34801561013957600080fd5b5061014261041c565b604080516001600160a01b039092168252519081900360200190f35b34801561016a57600080fd5b506100786004803603602081101561018157600080fd5b50356001600160a01b0316610459565b610078600480360360608110156101a757600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156101db57600080fd5b8201836020820111156101ed57600080fd5b8035906020019184600183028401116401000000008311171561020f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610513945050505050565b6100786004803603604081101561026657600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561029157600080fd5b8201836020820111156102a357600080fd5b803590602001918460018302840111640100000000831117156102c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610543945050505050565b34801561031257600080fd5b50610142610623565b61032361064e565b61033361032e610656565b61067b565b565b61033d61069f565b6001600160a01b0316336001600160a01b031614156103645761035f816106c4565b61036c565b61036c61031b565b50565b61037761069f565b6001600160a01b0316336001600160a01b0316141561040f57610399836106c4565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146103f6576040519150601f19603f3d011682016040523d82523d6000602084013e6103fb565b606091505b505090508061040957600080fd5b50610417565b61041761031b565b505050565b600061042661069f565b6001600160a01b0316336001600160a01b0316141561044e57610447610656565b9050610456565b61045661031b565b90565b61046161069f565b6001600160a01b0316336001600160a01b03161415610364576001600160a01b0381166104bf5760405162461bcd60e51b815260040180806020018281038252603681526020018061085f6036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104e861069f565b604080516001600160a01b03928316815291841660208301528051918290030190a161035f81610704565b600061051d610656565b6001600160a01b03161461053057600080fd5b61053a8382610543565b61041782610704565b600061054d610656565b6001600160a01b03161461056057600080fd5b61056982610728565b80511561061f576000826001600160a01b0316826040518082805190602001908083835b602083106105ac5780518252601f19909201916020918201910161058d565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461060c576040519150601f19603f3d011682016040523d82523d6000602084013e610611565b606091505b505090508061041757600080fd5b5050565b600061062d61069f565b6001600160a01b0316336001600160a01b0316141561044e5761044761069f565b610333610790565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561069a573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6106cd81610728565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b610731816107f0565b61076c5760405162461bcd60e51b815260040180806020018281038252603b815260200180610895603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b61079861069f565b6001600160a01b0316336001600160a01b031614156107e85760405162461bcd60e51b815260040180806020018281038252603281526020018061082d6032913960400191505060405180910390fd5b610333610333565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061082457508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220fe68a9812581c642698b9d572fd77ba9c99d18900f5df484d2cf6201692c0bbe64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x905 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F283970 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8F283970 EQ PUSH2 0x15E JUMPI DUP1 PUSH4 0xCF7A1D77 EQ PUSH2 0x191 JUMPI DUP1 PUSH4 0xD1F57894 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x306 JUMPI PUSH2 0x70 JUMP JUMPDEST DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x7A JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0xAD JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x12D JUMPI JUMPDEST PUSH2 0x78 PUSH2 0x31B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x78 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x335 JUMP JUMPDEST PUSH2 0x78 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x36F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x41C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x78 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x459 JUMP JUMPDEST PUSH2 0x78 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x20F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x513 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x78 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x266 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x543 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x312 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x623 JUMP JUMPDEST PUSH2 0x323 PUSH2 0x64E JUMP JUMPDEST PUSH2 0x333 PUSH2 0x32E PUSH2 0x656 JUMP JUMPDEST PUSH2 0x67B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x33D PUSH2 0x69F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x364 JUMPI PUSH2 0x35F DUP2 PUSH2 0x6C4 JUMP JUMPDEST PUSH2 0x36C JUMP JUMPDEST PUSH2 0x36C PUSH2 0x31B JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x377 PUSH2 0x69F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x40F JUMPI PUSH2 0x399 DUP4 PUSH2 0x6C4 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3F6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3FB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x409 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x417 JUMP JUMPDEST PUSH2 0x417 PUSH2 0x31B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x426 PUSH2 0x69F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x44E JUMPI PUSH2 0x447 PUSH2 0x656 JUMP JUMPDEST SWAP1 POP PUSH2 0x456 JUMP JUMPDEST PUSH2 0x456 PUSH2 0x31B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x461 PUSH2 0x69F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x364 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x4BF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x85F PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x7E644D79422F17C01E4894B5F4F588D331EBFA28653D42AE832DC59E38C9798F PUSH2 0x4E8 PUSH2 0x69F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG1 PUSH2 0x35F DUP2 PUSH2 0x704 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51D PUSH2 0x656 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x530 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x53A DUP4 DUP3 PUSH2 0x543 JUMP JUMPDEST PUSH2 0x417 DUP3 PUSH2 0x704 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x54D PUSH2 0x656 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x569 DUP3 PUSH2 0x728 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x61F JUMPI PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x5AC JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x58D JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x60C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x611 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x417 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x62D PUSH2 0x69F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x44E JUMPI PUSH2 0x447 PUSH2 0x69F JUMP JUMPDEST PUSH2 0x333 PUSH2 0x790 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x69A JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x6CD DUP2 PUSH2 0x728 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 SSTORE JUMP JUMPDEST PUSH2 0x731 DUP2 PUSH2 0x7F0 JUMP JUMPDEST PUSH2 0x76C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x895 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SSTORE JUMP JUMPDEST PUSH2 0x798 PUSH2 0x69F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x7E8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x82D PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x333 PUSH2 0x333 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x824 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID NUMBER PUSH2 0x6E6E PUSH16 0x742063616C6C2066616C6C6261636B20 PUSH7 0x756E6374696F6E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH17 0x726F78792061646D696E43616E6E6F7420 PUSH4 0x68616E67 PUSH6 0x207468652061 PUSH5 0x6D696E206F PUSH7 0x20612070726F78 PUSH26 0x20746F20746865207A65726F206164647265737343616E6E6F74 KECCAK256 PUSH20 0x657420612070726F787920696D706C656D656E74 PUSH2 0x7469 PUSH16 0x6E20746F2061206E6F6E2D636F6E7472 PUSH2 0x6374 KECCAK256 PUSH2 0x6464 PUSH19 0x657373A2646970667358221220FE68A9812581 0xC6 TIMESTAMP PUSH10 0x8B9D572FD77BA9C99D18 SWAP1 0xF 0x5D DELEGATECALL DUP5 0xD2 0xCF PUSH3 0x1692C SIGNEXTEND 0xBE PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "345:1219:17:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600436106100705760003560e01c80638f2839701161004e5780638f2839701461015e578063cf7a1d7714610191578063d1f5789414610250578063f851a4401461030657610070565b80633659cfe61461007a5780634f1ef286146100ad5780635c60da1b1461012d575b61007861031b565b005b34801561008657600080fd5b506100786004803603602081101561009d57600080fd5b50356001600160a01b0316610335565b610078600480360360408110156100c357600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100ee57600080fd5b82018360208201111561010057600080fd5b8035906020019184600183028401116401000000008311171561012257600080fd5b50909250905061036f565b34801561013957600080fd5b5061014261041c565b604080516001600160a01b039092168252519081900360200190f35b34801561016a57600080fd5b506100786004803603602081101561018157600080fd5b50356001600160a01b0316610459565b610078600480360360608110156101a757600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156101db57600080fd5b8201836020820111156101ed57600080fd5b8035906020019184600183028401116401000000008311171561020f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610513945050505050565b6100786004803603604081101561026657600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561029157600080fd5b8201836020820111156102a357600080fd5b803590602001918460018302840111640100000000831117156102c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610543945050505050565b34801561031257600080fd5b50610142610623565b61032361064e565b61033361032e610656565b61067b565b565b61033d61069f565b6001600160a01b0316336001600160a01b031614156103645761035f816106c4565b61036c565b61036c61031b565b50565b61037761069f565b6001600160a01b0316336001600160a01b0316141561040f57610399836106c4565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146103f6576040519150601f19603f3d011682016040523d82523d6000602084013e6103fb565b606091505b505090508061040957600080fd5b50610417565b61041761031b565b505050565b600061042661069f565b6001600160a01b0316336001600160a01b0316141561044e57610447610656565b9050610456565b61045661031b565b90565b61046161069f565b6001600160a01b0316336001600160a01b03161415610364576001600160a01b0381166104bf5760405162461bcd60e51b815260040180806020018281038252603681526020018061085f6036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104e861069f565b604080516001600160a01b03928316815291841660208301528051918290030190a161035f81610704565b600061051d610656565b6001600160a01b03161461053057600080fd5b61053a8382610543565b61041782610704565b600061054d610656565b6001600160a01b03161461056057600080fd5b61056982610728565b80511561061f576000826001600160a01b0316826040518082805190602001908083835b602083106105ac5780518252601f19909201916020918201910161058d565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461060c576040519150601f19603f3d011682016040523d82523d6000602084013e610611565b606091505b505090508061041757600080fd5b5050565b600061062d61069f565b6001600160a01b0316336001600160a01b0316141561044e5761044761069f565b610333610790565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561069a573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6106cd81610728565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b610731816107f0565b61076c5760405162461bcd60e51b815260040180806020018281038252603b815260200180610895603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b61079861069f565b6001600160a01b0316336001600160a01b031614156107e85760405162461bcd60e51b815260040180806020018281038252603281526020018061082d6032913960400191505060405180910390fd5b610333610333565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061082457508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220fe68a9812581c642698b9d572fd77ba9c99d18900f5df484d2cf6201692c0bbe64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F283970 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8F283970 EQ PUSH2 0x15E JUMPI DUP1 PUSH4 0xCF7A1D77 EQ PUSH2 0x191 JUMPI DUP1 PUSH4 0xD1F57894 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x306 JUMPI PUSH2 0x70 JUMP JUMPDEST DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x7A JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0xAD JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x12D JUMPI JUMPDEST PUSH2 0x78 PUSH2 0x31B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x78 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x335 JUMP JUMPDEST PUSH2 0x78 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x36F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x41C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x78 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x459 JUMP JUMPDEST PUSH2 0x78 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x20F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x513 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x78 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x266 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x543 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x312 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x623 JUMP JUMPDEST PUSH2 0x323 PUSH2 0x64E JUMP JUMPDEST PUSH2 0x333 PUSH2 0x32E PUSH2 0x656 JUMP JUMPDEST PUSH2 0x67B JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x33D PUSH2 0x69F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x364 JUMPI PUSH2 0x35F DUP2 PUSH2 0x6C4 JUMP JUMPDEST PUSH2 0x36C JUMP JUMPDEST PUSH2 0x36C PUSH2 0x31B JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x377 PUSH2 0x69F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x40F JUMPI PUSH2 0x399 DUP4 PUSH2 0x6C4 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3F6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3FB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x409 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x417 JUMP JUMPDEST PUSH2 0x417 PUSH2 0x31B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x426 PUSH2 0x69F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x44E JUMPI PUSH2 0x447 PUSH2 0x656 JUMP JUMPDEST SWAP1 POP PUSH2 0x456 JUMP JUMPDEST PUSH2 0x456 PUSH2 0x31B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x461 PUSH2 0x69F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x364 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x4BF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x85F PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x7E644D79422F17C01E4894B5F4F588D331EBFA28653D42AE832DC59E38C9798F PUSH2 0x4E8 PUSH2 0x69F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG1 PUSH2 0x35F DUP2 PUSH2 0x704 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51D PUSH2 0x656 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x530 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x53A DUP4 DUP3 PUSH2 0x543 JUMP JUMPDEST PUSH2 0x417 DUP3 PUSH2 0x704 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x54D PUSH2 0x656 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x569 DUP3 PUSH2 0x728 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x61F JUMPI PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x5AC JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x58D JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x60C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x611 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x417 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x62D PUSH2 0x69F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x44E JUMPI PUSH2 0x447 PUSH2 0x69F JUMP JUMPDEST PUSH2 0x333 PUSH2 0x790 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x69A JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x6CD DUP2 PUSH2 0x728 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 SSTORE JUMP JUMPDEST PUSH2 0x731 DUP2 PUSH2 0x7F0 JUMP JUMPDEST PUSH2 0x76C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x895 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SSTORE JUMP JUMPDEST PUSH2 0x798 PUSH2 0x69F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x7E8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x82D PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x333 PUSH2 0x333 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x824 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID NUMBER PUSH2 0x6E6E PUSH16 0x742063616C6C2066616C6C6261636B20 PUSH7 0x756E6374696F6E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH17 0x726F78792061646D696E43616E6E6F7420 PUSH4 0x68616E67 PUSH6 0x207468652061 PUSH5 0x6D696E206F PUSH7 0x20612070726F78 PUSH26 0x20746F20746865207A65726F206164647265737343616E6E6F74 KECCAK256 PUSH20 0x657420612070726F787920696D706C656D656E74 PUSH2 0x7469 PUSH16 0x6E20746F2061206E6F6E2D636F6E7472 PUSH2 0x6374 KECCAK256 PUSH2 0x6464 PUSH19 0x657373A2646970667358221220FE68A9812581 0xC6 TIMESTAMP PUSH10 0x8B9D572FD77BA9C99D18 SWAP1 0xF 0x5D DELEGATECALL DUP5 0xD2 0xCF PUSH3 0x1692C SIGNEXTEND 0xBE PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "345:1219:17:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;498:11:19;:9;:11::i;:::-;345:1219:17;2246:103:15;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2246:103:15;-1:-1:-1;;;;;2246:103:15;;:::i;2866:236::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2866:236:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2866:236:15;;-1:-1:-1;2866:236:15;-1:-1:-1;2866:236:15;:::i;1566:96::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1566:96:15;;;;;;;;;;;;;;1838:224;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1838:224:15;-1:-1:-1;;;;;1838:224:15;;:::i;1035:317:17:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1035:317:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1035:317:17;;-1:-1:-1;1035:317:17;;-1:-1:-1;;;;;1035:317:17:i;859:365:18:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;859:365:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;859:365:18;;-1:-1:-1;859:365:18;;-1:-1:-1;;;;;859:365:18:i;1424:78:15:-;;;;;;;;;;;;;:::i;2095:90:19:-;2131:15;:13;:15::i;:::-;2152:28;2162:17;:15;:17::i;:::-;2152:9;:28::i;:::-;2095:90::o;2246:103:15:-;1301:8;:6;:8::i;:::-;-1:-1:-1;;;;;1287:22:15;:10;-1:-1:-1;;;;;1287:22:15;;1283:76;;;2315:29:::1;2326:17;2315:10;:29::i;:::-;1283:76:::0;;;1341:11;:9;:11::i;:::-;2246:103;:::o;2866:236::-;1301:8;:6;:8::i;:::-;-1:-1:-1;;;;;1287:22:15;:10;-1:-1:-1;;;;;1287:22:15;;1283:76;;;2985:29:::1;2996:17;2985:10;:29::i;:::-;3021:12;3039:17;-1:-1:-1::0;;;;;3039:30:15::1;3070:4;;3039:36;;;;;;;;;;::::0;;::::1;::::0;-1:-1:-1;3039:36:15::1;::::0;-1:-1:-1;3039:36:15;;-1:-1:-1;;3039:36:15;;::::1;::::0;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3020:55;;;3089:7;3081:16;;;::::0;::::1;;1319:1;1283:76:::0;;;1341:11;:9;:11::i;:::-;2866:236;;;:::o;1566:96::-;1618:7;1301:8;:6;:8::i;:::-;-1:-1:-1;;;;;1287:22:15;:10;-1:-1:-1;;;;;1287:22:15;;1283:76;;;1640:17:::1;:15;:17::i;:::-;1633:24;;1283:76:::0;;;1341:11;:9;:11::i;:::-;1566:96;:::o;1838:224::-;1301:8;:6;:8::i;:::-;-1:-1:-1;;;;;1287:22:15;:10;-1:-1:-1;;;;;1287:22:15;;1283:76;;;-1:-1:-1;;;;;1908:22:15;::::1;1900:89;;;;-1:-1:-1::0;;;1900:89:15::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2000:32;2013:8;:6;:8::i;:::-;2000:32;::::0;;-1:-1:-1;;;;;2000:32:15;;::::1;::::0;;;;::::1;;::::0;::::1;::::0;;;;;;;;;::::1;2038:19;2048:8;2038:9;:19::i;1035:317:17:-:0;1178:1;1149:17;:15;:17::i;:::-;-1:-1:-1;;;;;1149:31:17;;1141:40;;;;;;1187:56;1231:5;1238:4;1187:43;:56::i;:::-;1331:16;1341:5;1331:9;:16::i;859:365:18:-;973:1;944:17;:15;:17::i;:::-;-1:-1:-1;;;;;944:31:18;;936:40;;;;;;1082:26;1101:6;1082:18;:26::i;:::-;1118:12;;:16;1114:106;;1145:12;1163:6;-1:-1:-1;;;;;1163:19:18;1183:5;1163:26;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1163:26:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1144:45;;;1205:7;1197:16;;;;;1114:106;859:365;;:::o;1424:78:15:-;1467:7;1301:8;:6;:8::i;:::-;-1:-1:-1;;;;;1287:22:15;:10;-1:-1:-1;;;;;1287:22:15;;1283:76;;;1489:8:::1;:6;:8::i;1427:135:17:-:0;1513:44;:42;:44::i;1008:196:16:-;823:66;1183:11;;1167:33::o;931:816:19:-;1264:14;1261:1;1258;1245:34;1460:1;1457;1441:14;1438:1;1422:14;1415:5;1402:60;1524:16;1521:1;1518;1503:38;1556:6;1615:56;;;;1710:16;1707:1;1700:27;1615:56;1644:16;1641:1;1634:27;3151:167:15;1002:66;3297:11;;3282:32::o;1339:142:16:-;1401:37;1420:17;1401:18;:37::i;:::-;1449:27;;-1:-1:-1;;;;;1449:27:16;;;;;;;;1339:142;:::o;3434:163:15:-;1002:66;3565:22;3557:36::o;1618:334:16:-;1703:37;1722:17;1703:18;:37::i;:::-;1688:127;;;;-1:-1:-1;;;1688:127:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;823:66;1911:31;1903:45::o;3672:174:15:-;3751:8;:6;:8::i;:::-;-1:-1:-1;;;;;3737:22:15;:10;-1:-1:-1;;;;;3737:22:15;;;3729:85;;;;-1:-1:-1;;;3729:85:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3820:21;:19;:21::i;686:586:6:-;746:4;1185:20;;1032:66;1224:23;;;;;;:42;;-1:-1:-1;1251:15:6;;;1224:42;1216:51;686:586;-1:-1:-1;;;;686:586:6:o"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "changeAdmin(address)": "8f283970",
              "implementation()": "5c60da1b",
              "initialize(address,address,bytes)": "cf7a1d77",
              "initialize(address,bytes)": "d1f57894",
              "upgradeTo(address)": "3659cfe6",
              "upgradeToAndCall(address,bytes)": "4f1ef286"
            }
          }
        }
      },
      "contracts/dependencies/openzeppelin/upgradeability/InitializableUpgradeabilityProxy.sol": {
        "InitializableUpgradeabilityProxy": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "Upgraded",
              "type": "event"
            },
            {
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_logic",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50610338806100206000396000f3fe60806040526004361061001e5760003560e01c8063d1f5789414610028575b6100266100de565b005b6100266004803603604081101561003e57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561006957600080fd5b82018360208201111561007b57600080fd5b8035906020019184600183028401116401000000008311171561009d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506100f8945050505050565b6100e66100f6565b6100f66100f16101da565b6101ff565b565b60006101026101da565b6001600160a01b03161461011557600080fd5b61011e82610223565b8051156101d6576000826001600160a01b0316826040518082805190602001908083835b602083106101615780518252601f199092019160209182019101610142565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146101c1576040519150601f19603f3d011682016040523d82523d6000602084013e6101c6565b606091505b50509050806101d457600080fd5b505b5050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561021e573d6000f35b3d6000fd5b61022c8161028b565b6102675760405162461bcd60e51b815260040180806020018281038252603b8152602001806102c8603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906102bf57508115155b94935050505056fe43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220c4c0bc96c924f782491c6fb1841f09c277c57ebf7fee1b32afe92e458b9a8da964736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x338 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xD1F57894 EQ PUSH2 0x28 JUMPI JUMPDEST PUSH2 0x26 PUSH2 0xDE JUMP JUMPDEST STOP JUMPDEST PUSH2 0x26 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xF8 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE6 PUSH2 0xF6 JUMP JUMPDEST PUSH2 0xF6 PUSH2 0xF1 PUSH2 0x1DA JUMP JUMPDEST PUSH2 0x1FF JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x102 PUSH2 0x1DA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x115 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11E DUP3 PUSH2 0x223 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x161 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x142 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1C1 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1C6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x21E JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x22C DUP2 PUSH2 0x28B JUMP JUMPDEST PUSH2 0x267 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2C8 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2BF JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID NUMBER PUSH2 0x6E6E PUSH16 0x742073657420612070726F787920696D PUSH17 0x6C656D656E746174696F6E20746F206120 PUSH15 0x6F6E2D636F6E747261637420616464 PUSH19 0x657373A2646970667358221220C4C0BC96C924 0xF7 DUP3 0x49 SHR PUSH16 0xB1841F09C277C57EBF7FEE1B32AFE92E GASLIMIT DUP12 SWAP11 DUP14 0xA9 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "264:962:18:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "60806040526004361061001e5760003560e01c8063d1f5789414610028575b6100266100de565b005b6100266004803603604081101561003e57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561006957600080fd5b82018360208201111561007b57600080fd5b8035906020019184600183028401116401000000008311171561009d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506100f8945050505050565b6100e66100f6565b6100f66100f16101da565b6101ff565b565b60006101026101da565b6001600160a01b03161461011557600080fd5b61011e82610223565b8051156101d6576000826001600160a01b0316826040518082805190602001908083835b602083106101615780518252601f199092019160209182019101610142565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146101c1576040519150601f19603f3d011682016040523d82523d6000602084013e6101c6565b606091505b50509050806101d457600080fd5b505b5050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561021e573d6000f35b3d6000fd5b61022c8161028b565b6102675760405162461bcd60e51b815260040180806020018281038252603b8152602001806102c8603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906102bf57508115155b94935050505056fe43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220c4c0bc96c924f782491c6fb1841f09c277c57ebf7fee1b32afe92e458b9a8da964736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xD1F57894 EQ PUSH2 0x28 JUMPI JUMPDEST PUSH2 0x26 PUSH2 0xDE JUMP JUMPDEST STOP JUMPDEST PUSH2 0x26 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xF8 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE6 PUSH2 0xF6 JUMP JUMPDEST PUSH2 0xF6 PUSH2 0xF1 PUSH2 0x1DA JUMP JUMPDEST PUSH2 0x1FF JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x102 PUSH2 0x1DA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x115 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11E DUP3 PUSH2 0x223 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x161 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x142 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1C1 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1C6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x21E JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x22C DUP2 PUSH2 0x28B JUMP JUMPDEST PUSH2 0x267 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2C8 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2BF JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID NUMBER PUSH2 0x6E6E PUSH16 0x742073657420612070726F787920696D PUSH17 0x6C656D656E746174696F6E20746F206120 PUSH15 0x6F6E2D636F6E747261637420616464 PUSH19 0x657373A2646970667358221220C4C0BC96C924 0xF7 DUP3 0x49 SHR PUSH16 0xB1841F09C277C57EBF7FEE1B32AFE92E GASLIMIT DUP12 SWAP11 DUP14 0xA9 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "264:962:18:-:0;;;;;;;;;;;;;;;;;;498:11:19;:9;:11::i;:::-;264:962:18;859:365;;;;;;;;;;;;;;;;-1:-1:-1;;;;;859:365:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;859:365:18;;-1:-1:-1;859:365:18;;-1:-1:-1;;;;;859:365:18:i;2095:90:19:-;2131:15;:13;:15::i;:::-;2152:28;2162:17;:15;:17::i;:::-;2152:9;:28::i;:::-;2095:90::o;859:365:18:-;973:1;944:17;:15;:17::i;:::-;-1:-1:-1;;;;;944:31:18;;936:40;;;;;;1082:26;1101:6;1082:18;:26::i;:::-;1118:12;;:16;1114:106;;1145:12;1163:6;-1:-1:-1;;;;;1163:19:18;1183:5;1163:26;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1163:26:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1144:45;;;1205:7;1197:16;;;;;;1114:106;;859:365;;:::o;1008:196:16:-;823:66;1183:11;;1167:33::o;931:816:19:-;1264:14;1261:1;1258;1245:34;1460:1;1457;1441:14;1438:1;1422:14;1415:5;1402:60;1524:16;1521:1;1518;1503:38;1556:6;1615:56;;;;1710:16;1707:1;1700:27;1615:56;1644:16;1641:1;1634:27;1618:334:16;1703:37;1722:17;1703:18;:37::i;:::-;1688:127;;;;-1:-1:-1;;;1688:127:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;823:66;1911:31;1903:45::o;686:586:6:-;746:4;1185:20;;1032:66;1224:23;;;;;;:42;;-1:-1:-1;1251:15:6;;;1224:42;1216:51;686:586;-1:-1:-1;;;;686:586:6:o"
            },
            "methodIdentifiers": {
              "initialize(address,bytes)": "d1f57894"
            }
          }
        }
      },
      "contracts/dependencies/openzeppelin/upgradeability/Proxy.sol": {
        "Proxy": {
          "abi": [
            {
              "stateMutability": "payable",
              "type": "fallback"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          }
        }
      },
      "contracts/dependencies/openzeppelin/upgradeability/UpgradeabilityProxy.sol": {
        "UpgradeabilityProxy": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_logic",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "stateMutability": "payable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "Upgraded",
              "type": "event"
            },
            {
              "stateMutability": "payable",
              "type": "fallback"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405260405161037b38038061037b8339818101604052604081101561002657600080fd5b81516020830180516040519294929383019291908464010000000082111561004d57600080fd5b90830190602082018581111561006257600080fd5b825164010000000081118282018810171561007c57600080fd5b82525081516020918201929091019080838360005b838110156100a9578181015183820152602001610091565b50505050905090810190601f1680156100d65780820380516001836020036101000a031916815260200191505b50604052506100e3915050565b6100ec826101ab565b8051156101a4576000826001600160a01b0316826040518082805190602001908083835b6020831061012f5780518252601f199092019160209182019101610110565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461018f576040519150601f19603f3d011682016040523d82523d6000602084013e610194565b606091505b50509050806101a257600080fd5b505b5050610259565b6101be8161021d60201b6100201760201c565b6101f95760405162461bcd60e51b815260040180806020018281038252603b815260200180610340603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061025157508115155b949350505050565b60d9806102676000396000f3fe6080604052600a600c565b005b6012601e565b601e601a605b565b6080565b565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590605357508115155b949350505050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015609e573d6000f35b3d6000fdfea264697066735822122016eb1e9dc0c7c516ba3a47eb4d2576f3098ba954b9cc8aa04bc402f582d7a83d64736f6c634300060c003343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x37B CODESIZE SUB DUP1 PUSH2 0x37B DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP3 SWAP5 SWAP3 SWAP4 DUP4 ADD SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x91 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xD6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP PUSH2 0xE3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xEC DUP3 PUSH2 0x1AB JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1A4 JUMPI PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x12F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x110 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x18F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x194 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMPDEST POP POP PUSH2 0x259 JUMP JUMPDEST PUSH2 0x1BE DUP2 PUSH2 0x21D PUSH1 0x20 SHL PUSH2 0x20 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x1F9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x340 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x251 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0xD9 DUP1 PUSH2 0x267 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x12 PUSH1 0x1E JUMP JUMPDEST PUSH1 0x1E PUSH1 0x1A PUSH1 0x5B JUMP JUMPDEST PUSH1 0x80 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH1 0x53 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x9E JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND 0xEB 0x1E SWAP14 0xC0 0xC7 0xC5 AND 0xBA GASPRICE SELFBALANCE 0xEB 0x4D 0x25 PUSH23 0xF3098BA954B9CC8AA04BC402F582D7A83D64736F6C6343 STOP MOD 0xC STOP CALLER NUMBER PUSH2 0x6E6E PUSH16 0x742073657420612070726F787920696D PUSH17 0x6C656D656E746174696F6E20746F206120 PUSH15 0x6F6E2D636F6E747261637420616464 PUSH19 0x65737300000000000000000000000000000000 ",
              "sourceMap": "250:895:20:-:0;;;832:311;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;832:311:20;;;;;;;;;;-1:-1:-1;832:311:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;832:311:20;;-1:-1:-1;901:94:20;;-1:-1:-1;;901:94:20;;1001:26;1020:6;1001:18;:26::i;:::-;1037:12;;:16;1033:106;;1064:12;1082:6;-1:-1:-1;;;;;1082:19:20;1102:5;1082:26;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1082:26:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1063:45;;;1124:7;1116:16;;;;;;1033:106;;832:311;;250:895;;1618:334:16;1703:37;1722:17;1703:18;;;;;:37;;:::i;:::-;1688:127;;;;-1:-1:-1;;;1688:127:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;823:66;1911:31;1903:45::o;686:586:6:-;746:4;1185:20;;1032:66;1224:23;;;;;;:42;;-1:-1:-1;1251:15:6;;;1224:42;1216:51;686:586;-1:-1:-1;;;;686:586:6:o;250:895:20:-;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600a600c565b005b6012601e565b601e601a605b565b6080565b565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590605357508115155b949350505050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015609e573d6000f35b3d6000fdfea264697066735822122016eb1e9dc0c7c516ba3a47eb4d2576f3098ba954b9cc8aa04bc402f582d7a83d64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x12 PUSH1 0x1E JUMP JUMPDEST PUSH1 0x1E PUSH1 0x1A PUSH1 0x5B JUMP JUMPDEST PUSH1 0x80 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH1 0x53 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x9E JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND 0xEB 0x1E SWAP14 0xC0 0xC7 0xC5 AND 0xBA GASPRICE SELFBALANCE 0xEB 0x4D 0x25 PUSH23 0xF3098BA954B9CC8AA04BC402F582D7A83D64736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "250:895:20:-:0;;;498:11:19;:9;:11::i;:::-;250:895:20;2095:90:19;2131:15;:13;:15::i;:::-;2152:28;2162:17;:15;:17::i;:::-;2152:9;:28::i;:::-;2095:90::o;686:586:6:-;746:4;1185:20;;1032:66;1224:23;;;;;;:42;;-1:-1:-1;1251:15:6;;;1224:42;1216:51;686:586;-1:-1:-1;;;;686:586:6:o;1008:196:16:-;823:66;1183:11;;1167:33::o;931:816:19:-;1264:14;1261:1;1258;1245:34;1460:1;1457;1441:14;1438:1;1422:14;1415:5;1402:60;1524:16;1521:1;1518;1503:38;1556:6;1615:56;;;;1710:16;1707:1;1700:27;1615:56;1644:16;1641:1;1634:27"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "contracts/deployments/ATokensAndRatesHelper.sol": {
        "ATokensAndRatesHelper": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address payable",
                  "name": "_pool",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_addressesProvider",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_poolConfigurator",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "aToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "strategy",
                  "type": "address"
                }
              ],
              "name": "deployedContracts",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "asset",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "baseLTV",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "liquidationThreshold",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "liquidationBonus",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "reserveFactor",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bool",
                      "name": "stableBorrowingEnabled",
                      "type": "bool"
                    },
                    {
                      "internalType": "bool",
                      "name": "borrowingEnabled",
                      "type": "bool"
                    }
                  ],
                  "internalType": "struct ATokensAndRatesHelper.ConfigureReserveInput[]",
                  "name": "inputParams",
                  "type": "tuple[]"
                }
              ],
              "name": "configureReserves",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "asset",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256[6]",
                      "name": "rates",
                      "type": "uint256[6]"
                    }
                  ],
                  "internalType": "struct ATokensAndRatesHelper.InitDeploymentInput[]",
                  "name": "inputParams",
                  "type": "tuple[]"
                }
              ],
              "name": "initDeployment",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5060405161435338038061435383398101604081905261002f916100c9565b60006100396100c5565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b039485166001600160a01b03199182161790915560028054938516938216939093179092556003805491909316911617905561012d565b3390565b6000806000606084860312156100dd578283fd5b83516100e881610115565b60208501519093506100f981610115565b604085015190925061010a81610115565b809150509250925092565b6001600160a01b038116811461012a57600080fd5b50565b6142178061013c6000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063715018a61461005c5780638da5cb5b146100665780639dd8aad514610084578063f2fde38b14610097578063fc123602146100aa575b600080fd5b6100646100bd565b005b61006e610145565b60405161007b9190610786565b60405180910390f35b6100646100923660046106fe565b610154565b6100646100a53660046106d0565b6103da565b6100646100b836600461073e565b610490565b6100c5610666565b6000546001600160a01b039081169116146100fb5760405162461bcd60e51b81526004016100f29061088f565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b61015c610666565b6000546001600160a01b039081169116146101895760405162461bcd60e51b81526004016100f29061088f565b6003546001600160a01b031660005b828110156103d457816001600160a01b0316637c4e560b8585848181106101bb57fe5b6101d192602060e09092020190810191506106d0565b8686858181106101dd57fe5b905060e00201602001358787868181106101f357fe5b905060e002016040013588888781811061020957fe5b905060e00201606001356040518563ffffffff1660e01b815260040161023294939291906107e8565b600060405180830381600087803b15801561024c57600080fd5b505af1158015610260573d6000803e3d6000fd5b5050505083838281811061027057fe5b905060e0020160c00160208101906102889190610766565b1561033257816001600160a01b031663eede87c18585848181106102a857fe5b6102be92602060e09092020190810191506106d0565b8686858181106102ca57fe5b905060e0020160a00160208101906102e29190610766565b6040518363ffffffff1660e01b81526004016102ff9291906107b4565b600060405180830381600087803b15801561031957600080fd5b505af115801561032d573d6000803e3d6000fd5b505050505b816001600160a01b0316634b4e675385858481811061034d57fe5b61036392602060e09092020190810191506106d0565b86868581811061036f57fe5b905060e00201608001356040518363ffffffff1660e01b81526004016103969291906107cf565b600060405180830381600087803b1580156103b057600080fd5b505af11580156103c4573d6000803e3d6000fd5b5050600190920191506101989050565b50505050565b6103e2610666565b6000546001600160a01b0390811691161461040f5760405162461bcd60e51b81526004016100f29061088f565b6001600160a01b0381166104355760405162461bcd60e51b81526004016100f290610849565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610498610666565b6000546001600160a01b039081169116146104c55760405162461bcd60e51b81526004016100f29061088f565b60005b81811015610661577f1c1768aab1796270c7034dc781c2951065e6afb7a946269746521002443b8ea46040516104fd9061066a565b604051809103906000f080158015610519573d6000803e3d6000fd5b506002546001600160a01b031685858581811061053257fe5b905060e0020160200160006006811061054757fe5b602002013586868681811061055857fe5b905060e0020160200160016006811061056d57fe5b602002013587878781811061057e57fe5b905060e0020160200160026006811061059357fe5b60200201358888888181106105a457fe5b905060e002016020016003600681106105b957fe5b60200201358989898181106105ca57fe5b905060e002016020016004600681106105df57fe5b60200201358a8a8a8181106105f057fe5b905060e0020160200160056006811061060557fe5b602002013560405161061690610678565b610626979695949392919061080e565b604051809103906000f080158015610642573d6000803e3d6000fd5b5060405161065192919061079a565b60405180910390a16001016104c8565b505050565b3390565b61296280620008c583390190565b610fbb806200322783390190565b60008083601f840112610697578182fd5b50813567ffffffffffffffff8111156106ae578182fd5b60208301915083602060e0830285010111156106c957600080fd5b9250929050565b6000602082840312156106e1578081fd5b81356001600160a01b03811681146106f7578182fd5b9392505050565b60008060208385031215610710578081fd5b823567ffffffffffffffff811115610726578182fd5b61073285828601610686565b90969095509350505050565b60008060208385031215610750578182fd5b823567ffffffffffffffff811115610726578283fd5b600060208284031215610777578081fd5b813580151581146106f7578182fd5b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0394909416845260208401929092526040830152606082015260800190565b6001600160a01b03979097168752602087019590955260408601939093526060850191909152608084015260a083015260c082015260e00190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260408201526060019056fe6080604052600080553480156200001557600080fd5b50604080518082018252600b8082526a105513d2d15397d253541360aa1b60208084018281528551808701909652928552840152815191929160009162000060916037919062000094565b5081516200007690603890602085019062000094565b506039805460ff191660ff9290921691909117905550620001309050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000d757805160ff191683800117855562000107565b8280016001018555821562000107579182015b8281111562000107578251825591602001919060010190620000ea565b506200011592915062000119565b5090565b5b808211156200011557600081556001016200011a565b61282280620001406000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80637535d2461161010f578063ae167335116100a2578063d505accf11610071578063d505accf146106aa578063d7020d0a146106fb578063dd62ed3e14610737578063f866c31914610765576101e5565b8063ae1673351461066c578063b16a19de14610674578063b1bf962d1461067c578063b9844d8d14610684576101e5565b806388dd91a1116100de57806388dd91a1146105e057806395d89b411461060c578063a457c2d714610614578063a9059cbb14610640576101e5565b80637535d2461461058957806375d26413146105ad57806378160376146105b55780637df5bd3b146105bd576101e5565b80631da24f3e116101875780633644e515116101565780633644e51514610503578063395093511461050b5780634efecaa51461053757806370a0823114610563576101e5565b80631da24f3e1461048157806323b872dd146104a757806330adf81f146104dd578063313ce567146104e5576101e5565b80630bd7ad3b116101c35780630bd7ad3b146102e6578063156e29f61461030057806318160ddd14610332578063183fb4131461033a576101e5565b806306fdde03146101ea578063095ea7b3146102675780630afbcdc9146102a7575b600080fd5b6101f261079b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102936004803603604081101561027d57600080fd5b506001600160a01b038135169060200135610832565b604080519115158252519081900360200190f35b6102cd600480360360208110156102bd57600080fd5b50356001600160a01b0316610850565b6040805192835260208301919091528051918290030190f35b6102ee61086d565b60408051918252519081900360200190f35b6102936004803603606081101561031657600080fd5b506001600160a01b038135169060208101359060400135610872565b6102ee610a40565b61047f600480360361010081101561035157600080fd5b6001600160a01b038235811692602081013582169260408201358316926060830135169160ff6080820135169181019060c0810160a082013564010000000081111561039c57600080fd5b8201836020820111156103ae57600080fd5b803590602001918460018302840111640100000000831117156103d057600080fd5b9193909290916020810190356401000000008111156103ee57600080fd5b82018360208201111561040057600080fd5b8035906020019184600183028401116401000000008311171561042257600080fd5b91939092909160208101903564010000000081111561044057600080fd5b82018360208201111561045257600080fd5b8035906020019184600183028401116401000000008311171561047457600080fd5b509092509050610aea565b005b6102ee6004803603602081101561049757600080fd5b50356001600160a01b0316610e67565b610293600480360360608110156104bd57600080fd5b506001600160a01b03813581169160208101359091169060400135610e72565b6102ee610f32565b6104ed610f56565b6040805160ff9092168252519081900360200190f35b6102ee610f5f565b6102936004803603604081101561052157600080fd5b506001600160a01b038135169060200135610f65565b6102ee6004803603604081101561054d57600080fd5b506001600160a01b038135169060200135610fb3565b6102ee6004803603602081101561057957600080fd5b50356001600160a01b0316611059565b6105916110e8565b604080516001600160a01b039092168252519081900360200190f35b6105916110f7565b6101f2611106565b61047f600480360360408110156105d357600080fd5b5080359060200135611123565b61047f600480360360408110156105f657600080fd5b506001600160a01b03813516906020013561124a565b6101f26112d4565b6102936004803603604081101561062a57600080fd5b506001600160a01b038135169060200135611335565b6102936004803603604081101561065657600080fd5b506001600160a01b03813516906020013561139d565b6105916113fa565b610591611409565b6102ee611418565b6102ee6004803603602081101561069a57600080fd5b50356001600160a01b0316611422565b61047f600480360360e08110156106c057600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611434565b61047f6004803603608081101561071157600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561167b565b6102ee6004803603604081101561074d57600080fd5b506001600160a01b0381358116916020013516611820565b61047f6004803603606081101561077b57600080fd5b506001600160a01b0381358116916020810135909116906040013561184b565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108275780601f106107fc57610100808354040283529160200191610827565b820191906000526020600020905b81548152906001019060200180831161080a57829003601f168201915b505050505090505b90565b600061084661083f61191c565b8484611920565b5060015b92915050565b60008061085c83611a0c565b610864611a27565b91509150915091565b600181565b603c546000906001600160a01b031661088961191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906109375760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108fc5781810151838201526020016108e4565b50505050905090810190601f1680156109295780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600061094385611a0c565b905060006109518585611a2d565b6040805180820190915260028152611a9b60f11b6020820152909150816109b95760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506109c48682611b34565b6040805186815290516001600160a01b038816916000916000805160206127148339815191529181900360200190a3604080518681526020810186905281516001600160a01b038916927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25015949350505050565b600080610a4b611a27565b905080610a5c57600091505061082f565b603c54603e546040805163d15e005360e01b81526001600160a01b0392831660048201529051610ae493929092169163d15e005391602480820192602092909190829003018186803b158015610ab157600080fd5b505afa158015610ac5573d6000803e3d6000fd5b505050506040513d6020811015610adb57600080fd5b50518290611c85565b91505090565b6000610af4611d43565b60015490915060ff1680610b0b5750610b0b611d48565b80610b17575060005481115b610b525760405162461bcd60e51b815260040180806020018281038252602e8152602001806126e6602e913960400191505060405180910390fd5b60015460ff16158015610b71576001805460ff19168117905560008290555b60004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f89896040518083838082843780830192505050925050506040518091039020604051806040016040528060018152602001603160f81b81525080519060200120833060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120603b81905550610c6989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d4e92505050565b610ca887878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d6192505050565b610cb18a611d74565b8d603c60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c603d60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b603e60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a603f60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508d6001600160a01b03168c6001600160a01b03167fb19e051f8af41150ccccb3fc2c2d8d15f4a4cf434f32a559ba75fe73d6eea20b8f8e8e8e8e8e8e8e8e604051808a6001600160a01b03168152602001896001600160a01b031681526020018860ff16815260200180602001806020018060200184810384528a8a82818152602001925080828437600083820152601f01601f191690910185810384528881526020019050888880828437600083820152601f01601f191690910185810383528681526020019050868680828437600083820152604051601f909101601f19169092018290039e50909c50505050505050505050505050a3508015610e58576001805460ff191690555b50505050505050505050505050565b600061084a82611a0c565b6000610e7f848484611d8a565b610eef84610e8b61191c565b610eea856040518060600160405280602881526020016126be602891396001600160a01b038a16600090815260356020526040812090610ec961191c565b6001600160a01b031681526020810191909152604001600020549190611d97565b611920565b826001600160a01b0316846001600160a01b0316600080516020612714833981519152846040518082815260200191505060405180910390a35060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60395460ff1690565b603b5481565b6000610846610f7261191c565b84610eea8560356000610f8361191c565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611df1565b603c546000906001600160a01b0316610fca61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b8152509061103b5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50603e54611053906001600160a01b03168484611e52565b50919050565b603c54603e546040805163d15e005360e01b81526001600160a01b039283166004820152905160009361084a93169163d15e0053916024808301926020929190829003018186803b1580156110ad57600080fd5b505afa1580156110c1573d6000803e3d6000fd5b505050506040513d60208110156110d757600080fd5b50516110e284611a0c565b90611c85565b603c546001600160a01b031690565b6000611101611ea4565b905090565b604051806040016040528060018152602001603160f81b81525081565b603c546001600160a01b031661113761191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906111a85760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50816111b357611246565b603d546001600160a01b03166111d2816111cd8585611a2d565b611b34565b6040805184815290516001600160a01b038316916000916000805160206127148339815191529181900360200190a3604080518481526020810184905281516001600160a01b038416927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a2505b5050565b603c546001600160a01b031661125e61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906112cf5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b505050565b60388054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108275780601f106107fc57610100808354040283529160200191610827565b600061084661134261191c565b84610eea856040518060600160405280602581526020016127c8602591396035600061136c61191c565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611d97565b60006113b16113aa61191c565b8484611d8a565b826001600160a01b03166113c361191c565b6001600160a01b0316600080516020612714833981519152846040518082815260200191505060405180910390a350600192915050565b603d546001600160a01b031690565b603e546001600160a01b031690565b6000611101611a27565b603a6020526000908152604090205481565b6001600160a01b03871661147f576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa7aba722a960991b604482015290519081900360640190fd5b834211156114c9576040805162461bcd60e51b815260206004820152601260248201527124a72b20a624a22fa2ac2824a920aa24a7a760711b604482015290519081900360640190fd5b6001600160a01b038088166000818152603a6020908152604080832054603b5482517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a0850181905260c08086018b90528251808703909101815260e08601835280519084012061190160f01b6101008701526101028601969096526101228086019690965281518086039096018652610142850180835286519684019690962093909552610162840180825283905260ff88166101828501526101a284018790526101c284018690525191926001926101e28083019392601f198301929081900390910190855afa1580156115de573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614611641576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b61164c826001611df1565b6001600160a01b038a166000908152603a6020526040902055611670898989611920565b505050505050505050565b603c546001600160a01b031661168f61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906117005760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50600061170d8383611a2d565b60408051808201909152600281526106a760f31b6020820152909150816117755760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506117808582611eb3565b603e54611797906001600160a01b03168585611e52565b6040805184815290516000916001600160a01b038816916000805160206127148339815191529181900360200190a3836001600160a01b0316856001600160a01b03167f5d624aa9c148153ab3446c1b154f660ee7701e549fe9b62dab7171b1c80e6fa28585604051808381526020018281526020019250505060405180910390a35050505050565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b603c546001600160a01b031661185f61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906118d05760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506118de8383836000611f57565b816001600160a01b0316836001600160a01b0316600080516020612714833981519152836040518082815260200191505060405180910390a3505050565b3390565b6001600160a01b0383166119655760405162461bcd60e51b815260040180806020018281038252602481526020018061277a6024913960400191505060405180910390fd5b6001600160a01b0382166119aa5760405162461bcd60e51b81526004018080602001828103825260228152602001806126766022913960400191505060405180910390fd5b6001600160a01b03808416600081815260356020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b031660009081526034602052604090205490565b60365490565b604080518082019091526002815261035360f41b602082015260009082611a955760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce8000000821904851115611b115760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b5082816b033b2e3c9fd0803ce800000086020181611b2b57fe5b04949350505050565b6001600160a01b038216611b8f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611b9b600083836112cf565b603654611ba88183611df1565b6036556001600160a01b038316600090815260346020526040902054611bce8184611df1565b6001600160a01b038516600090815260346020526040812091909155611bf2611ea4565b6001600160a01b031614611c7f57611c08611ea4565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015611c6657600080fd5b505af1158015611c7a573d6000803e3d6000fd5b505050505b50505050565b6000821580611c92575081155b15611c9f5750600061084a565b816b019d971e4fe8401e740000001981611cb557fe5b0483111560405180604001604052806002815260200161068760f31b81525090611d205760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b600190565b303b1590565b805161124690603790602084019061259d565b805161124690603890602084019061259d565b6039805460ff191660ff92909216919091179055565b6112cf8383836001611f57565b60008184841115611de95760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b505050900390565b600082820183811015611e4b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112cf908490612100565b603f546001600160a01b031690565b6001600160a01b038216611ef85760405162461bcd60e51b81526004018080602001828103825260218152602001806127346021913960400191505060405180910390fd5b611f04826000836112cf565b603654611f1181836122b8565b6036556001600160a01b0383166000908152603460209081526040918290205482516060810190935260228084529092611bce9286929061265490830139839190611d97565b603e54603c546040805163d15e005360e01b81526001600160a01b03938416600482018190529151919390921691600091839163d15e0053916024808301926020929190829003018186803b158015611faf57600080fd5b505afa158015611fc3573d6000803e3d6000fd5b505050506040513d6020811015611fd957600080fd5b505190506000611fec826110e28a611a0c565b90506000611ffd836110e28a611a0c565b9050612013898961200e8a87611a2d565b6122fa565b85156120a2576040805163d5ed393360e01b81526001600160a01b0387811660048301528b811660248301528a81166044830152606482018a90526084820185905260a4820184905291519186169163d5ed39339160c48082019260009290919082900301818387803b15801561208957600080fd5b505af115801561209d573d6000803e3d6000fd5b505050505b876001600160a01b0316896001600160a01b03167f4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda86668986604051808381526020018281526020019250505060405180910390a3505050505050505050565b612112826001600160a01b0316612561565b612163576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106121a15780518252601f199092019160209182019101612182565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612203576040519150601f19603f3d011682016040523d82523d6000602084013e612208565b606091505b50915091508161225f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611c7f5780806020019051602081101561227b57600080fd5b5051611c7f5760405162461bcd60e51b815260040180806020018281038252602a81526020018061279e602a913960400191505060405180910390fd5b6000611e4b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d97565b6001600160a01b03831661233f5760405162461bcd60e51b81526004018080602001828103825260258152602001806127556025913960400191505060405180910390fd5b6001600160a01b0382166123845760405162461bcd60e51b81526004018080602001828103825260238152602001806126316023913960400191505060405180910390fd5b61238f8383836112cf565b600060346000856001600160a01b03166001600160a01b031681526020019081526020016000205490506123de8260405180606001604052806026815260200161269860269139839190611d97565b6001600160a01b03808616600090815260346020526040808220939093559085168152205461240d8184611df1565b6001600160a01b038516600090815260346020526040812091909155612431611ea4565b6001600160a01b03161461255a5760365461244a611ea4565b6001600160a01b03166331873e2e8783866040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b1580156124a857600080fd5b505af11580156124bc573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b031614612558576124e1611ea4565b6001600160a01b03166331873e2e8683856040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561253f57600080fd5b505af1158015612553573d6000803e3d6000fd5b505050505b505b5050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061259557508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106125de57805160ff191683800117855561260b565b8280016001018555821561260b579182015b8281111561260b5782518255916020019190600101906125f0565b5061261792915061261b565b5090565b5b80821115612617576000815560010161261c56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203729232b81498f0aeabab57714b9dae0a68fbcd6fc72e75051fc236fe4dc42ce64736f6c634300060c003361018060405234801561001157600080fd5b50604051610fbb380380610fbb833981810160405260e081101561003457600080fd5b5080516020808301516040840151606085015160808087015160a088015160c0909801519185905295969395929491939161008e90879061007c906108526100c3821b17901c565b6100d360201b6108621790919060201c565b60a05260609690961b6001600160601b03191660c05260e09390935261010091909152610120526101405250610160526101b9565b6b033b2e3c9fd0803ce800000090565b600061011b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061012260201b60201c565b9392505050565b600081848411156101b15760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561017657818101518382015260200161015e565b50505050905090810190601f1680156101a35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60805160a05160c05160601c60e05161010051610120516101405161016051610d4d61026e6000398061059752806108305250806101dd52806105c752806106b15250806102df528061032c52806105f852508061030352806103715280610643528061071b5250806103505280610622528061074152806107e8525080610400528061080c52508061020152806105315250806105055280610555528061067d52806106f552806107c45250610d4d6000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806380031e371161007157806380031e37146101535780639584df281461015b578063a15f30ac1461019f578063b2589544146101a7578063c72c4d10146101af578063ccab01a3146101d3576100a9565b80630bdf953f146100ae57806317319873146100c857806329db497d146100d057806365614f81146101435780637b832f581461014b575b600080fd5b6100b66101db565b60408051918252519081900360200190f35b6100b66101ff565b61012560048036036101008110156100e757600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a08101359060c08101359060e00135610223565b60408051938452602084019290925282820152519081900360600190f35b6100b66102dd565b6100b6610301565b6100b6610325565b610125600480360360c081101561017157600080fd5b506001600160a01b038135169060208101359060408101359060608101359060808101359060a001356103a0565b6100b66107c2565b6100b66107e6565b6101b761080a565b604080516001600160a01b039092168252519081900360200190f35b6100b661082e565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000808b6001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561027657600080fd5b505afa15801561028a573d6000803e3d6000fd5b505050506040513d60208110156102a057600080fd5b505190506102b8896102b2838d6108ad565b90610862565b90506102c88c828a8a8a8a6103a0565b93509350935050985098509895505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061039b7f00000000000000000000000000000000000000000000000000000000000000006103957f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006108ad565b906108ad565b905090565b60008060006103ad610ce8565b6103b788886108ad565b808252600060208301819052604083018190526060830152156103f25780516103ed906103e5908b906108ad565b825190610907565b6103f5565b60005b8160800181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633618abba6040518163ffffffff1660e01b815260040160206040518083038186803b15801561045757600080fd5b505afa15801561046b573d6000803e3d6000fd5b505050506040513d602081101561048157600080fd5b50516040805163bb85c0bb60e01b81526001600160a01b038d811660048301529151919092169163bb85c0bb916024808301926020929190829003018186803b1580156104cd57600080fd5b505afa1580156104e1573d6000803e3d6000fd5b505050506040513d60208110156104f757600080fd5b5051604082015260808101517f0000000000000000000000000000000000000000000000000000000000000000101561067257600061058d7f00000000000000000000000000000000000000000000000000000000000000006105877f0000000000000000000000000000000000000000000000000000000000000000856080015161086290919063ffffffff16565b90610907565b90506105eb6105bc7f000000000000000000000000000000000000000000000000000000000000000083610a4b565b6040840151610395907f00000000000000000000000000000000000000000000000000000000000000006108ad565b604083015261066761061d7f000000000000000000000000000000000000000000000000000000000000000083610a4b565b6103957f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006108ad565b60208301525061076c565b6106e16106d66106af7f0000000000000000000000000000000000000000000000000000000000000000846080015161090790919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000090610a4b565b6040830151906108ad565b604082015260808101516107669061073f907f000000000000000000000000000000000000000000000000000000000000000090610587907f0000000000000000000000000000000000000000000000000000000000000000610a4b565b7f0000000000000000000000000000000000000000000000000000000000000000906108ad565b60208201525b61079f61077b61271087610862565b61079983608001516107938c8c87602001518d610b0c565b90610a4b565b90610b73565b606082018190526040820151602090920151909b919a5098509650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000090565b6b033b2e3c9fd0803ce800000090565b60006108a483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c10565b90505b92915050565b6000828201838110156108a4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080518082019091526002815261035360f41b6020820152600090826109ac5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610971578181015183820152602001610959565b50505050905090810190601f16801561099e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce8000000821904851115610a285760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b5082816b033b2e3c9fd0803ce800000086020181610a4257fe5b04949350505050565b6000821580610a58575081155b15610a65575060006108a7565b816b019d971e4fe8401e740000001981610a7b57fe5b0483111560405180604001604052806002815260200161068760f31b81525090610ae65760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b506b033b2e3c9fd0803ce80000006002815b048385020181610b0457fe5b049392505050565b600080610b1986866108ad565b905080610b2a576000915050610b6b565b6000610b398561079388610c6a565b90506000610b4a856107938a610c6a565b90506000610b64610b5a85610c6a565b61058785856108ad565b9450505050505b949350505050565b6000821580610b80575081155b15610b8d575060006108a7565b816113881981610b9957fe5b0483111560405180604001604052806002815260200161068760f31b81525090610c045760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b50612710600281610af8565b60008184841115610c625760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b505050900390565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b81525090610ce15760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b5092915050565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160008152509056fea26469706673582212202de93b4e5bd8eff563a6594cebe41ba1046984974b817cc22176094a2c3682bf64736f6c634300060c0033a26469706673582212202032c5799cd92bd12d91fe7a975302825b204aa5bc23845e97850203bbc6b2c464736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x4353 CODESIZE SUB DUP1 PUSH2 0x4353 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xC9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39 PUSH2 0xC5 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP1 SLOAD SWAP4 DUP6 AND SWAP4 DUP3 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 SSTORE PUSH1 0x3 DUP1 SLOAD SWAP2 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE PUSH2 0x12D JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xDD JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH2 0xE8 DUP2 PUSH2 0x115 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH2 0xF9 DUP2 PUSH2 0x115 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x10A DUP2 PUSH2 0x115 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x12A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x4217 DUP1 PUSH2 0x13C PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x66 JUMPI DUP1 PUSH4 0x9DD8AAD5 EQ PUSH2 0x84 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x97 JUMPI DUP1 PUSH4 0xFC123602 EQ PUSH2 0xAA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0xBD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x6E PUSH2 0x145 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7B SWAP2 SWAP1 PUSH2 0x786 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x64 PUSH2 0x92 CALLDATASIZE PUSH1 0x4 PUSH2 0x6FE JUMP JUMPDEST PUSH2 0x154 JUMP JUMPDEST PUSH2 0x64 PUSH2 0xA5 CALLDATASIZE PUSH1 0x4 PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x3DA JUMP JUMPDEST PUSH2 0x64 PUSH2 0xB8 CALLDATASIZE PUSH1 0x4 PUSH2 0x73E JUMP JUMPDEST PUSH2 0x490 JUMP JUMPDEST PUSH2 0xC5 PUSH2 0x666 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xFB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF2 SWAP1 PUSH2 0x88F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x15C PUSH2 0x666 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x189 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF2 SWAP1 PUSH2 0x88F JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3D4 JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7C4E560B DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x1BB JUMPI INVALID JUMPDEST PUSH2 0x1D1 SWAP3 PUSH1 0x20 PUSH1 0xE0 SWAP1 SWAP3 MUL ADD SWAP1 DUP2 ADD SWAP2 POP PUSH2 0x6D0 JUMP JUMPDEST DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x1DD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xE0 MUL ADD PUSH1 0x20 ADD CALLDATALOAD DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x1F3 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xE0 MUL ADD PUSH1 0x40 ADD CALLDATALOAD DUP9 DUP9 DUP8 DUP2 DUP2 LT PUSH2 0x209 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xE0 MUL ADD PUSH1 0x60 ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x232 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x7E8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x260 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP4 DUP4 DUP3 DUP2 DUP2 LT PUSH2 0x270 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xE0 MUL ADD PUSH1 0xC0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x288 SWAP2 SWAP1 PUSH2 0x766 JUMP JUMPDEST ISZERO PUSH2 0x332 JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xEEDE87C1 DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x2A8 JUMPI INVALID JUMPDEST PUSH2 0x2BE SWAP3 PUSH1 0x20 PUSH1 0xE0 SWAP1 SWAP3 MUL ADD SWAP1 DUP2 ADD SWAP2 POP PUSH2 0x6D0 JUMP JUMPDEST DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x2CA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xE0 MUL ADD PUSH1 0xA0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x766 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FF SWAP3 SWAP2 SWAP1 PUSH2 0x7B4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4B4E6753 DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x34D JUMPI INVALID JUMPDEST PUSH2 0x363 SWAP3 PUSH1 0x20 PUSH1 0xE0 SWAP1 SWAP3 MUL ADD SWAP1 DUP2 ADD SWAP2 POP PUSH2 0x6D0 JUMP JUMPDEST DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x36F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xE0 MUL ADD PUSH1 0x80 ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x396 SWAP3 SWAP2 SWAP1 PUSH2 0x7CF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3C4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0x198 SWAP1 POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x666 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x40F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF2 SWAP1 PUSH2 0x88F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x435 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF2 SWAP1 PUSH2 0x849 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x498 PUSH2 0x666 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x4C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF2 SWAP1 PUSH2 0x88F JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x661 JUMPI PUSH32 0x1C1768AAB1796270C7034DC781C2951065E6AFB7A946269746521002443B8EA4 PUSH1 0x40 MLOAD PUSH2 0x4FD SWAP1 PUSH2 0x66A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x519 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0x532 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xE0 MUL ADD PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x6 DUP2 LT PUSH2 0x547 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD DUP7 DUP7 DUP7 DUP2 DUP2 LT PUSH2 0x558 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xE0 MUL ADD PUSH1 0x20 ADD PUSH1 0x1 PUSH1 0x6 DUP2 LT PUSH2 0x56D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD DUP8 DUP8 DUP8 DUP2 DUP2 LT PUSH2 0x57E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xE0 MUL ADD PUSH1 0x20 ADD PUSH1 0x2 PUSH1 0x6 DUP2 LT PUSH2 0x593 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP9 DUP2 DUP2 LT PUSH2 0x5A4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xE0 MUL ADD PUSH1 0x20 ADD PUSH1 0x3 PUSH1 0x6 DUP2 LT PUSH2 0x5B9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD DUP10 DUP10 DUP10 DUP2 DUP2 LT PUSH2 0x5CA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xE0 MUL ADD PUSH1 0x20 ADD PUSH1 0x4 PUSH1 0x6 DUP2 LT PUSH2 0x5DF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD DUP11 DUP11 DUP11 DUP2 DUP2 LT PUSH2 0x5F0 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xE0 MUL ADD PUSH1 0x20 ADD PUSH1 0x5 PUSH1 0x6 DUP2 LT PUSH2 0x605 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD PUSH2 0x616 SWAP1 PUSH2 0x678 JUMP JUMPDEST PUSH2 0x626 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x80E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x642 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x651 SWAP3 SWAP2 SWAP1 PUSH2 0x79A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x1 ADD PUSH2 0x4C8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x2962 DUP1 PUSH3 0x8C5 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0xFBB DUP1 PUSH3 0x3227 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x697 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6AE JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 PUSH1 0xE0 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x6C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6E1 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x6F7 JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x710 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x726 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x732 DUP6 DUP3 DUP7 ADD PUSH2 0x686 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x750 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x726 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x777 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x6F7 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 SWAP1 SWAP8 AND DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x40 DUP7 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x40 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xB DUP1 DUP3 MSTORE PUSH11 0x105513D2D15397D2535413 PUSH1 0xAA SHL PUSH1 0x20 DUP1 DUP5 ADD DUP3 DUP2 MSTORE DUP6 MLOAD DUP1 DUP8 ADD SWAP1 SWAP7 MSTORE SWAP3 DUP6 MSTORE DUP5 ADD MSTORE DUP2 MLOAD SWAP2 SWAP3 SWAP2 PUSH1 0x0 SWAP2 PUSH3 0x60 SWAP2 PUSH1 0x37 SWAP2 SWAP1 PUSH3 0x94 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0x76 SWAP1 PUSH1 0x38 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x94 JUMP JUMPDEST POP PUSH1 0x39 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0x130 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0xD7 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x107 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x107 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x107 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xEA JUMP JUMPDEST POP PUSH3 0x115 SWAP3 SWAP2 POP PUSH3 0x119 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x115 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x11A JUMP JUMPDEST PUSH2 0x2822 DUP1 PUSH3 0x140 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7535D246 GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xAE167335 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x6AA JUMPI DUP1 PUSH4 0xD7020D0A EQ PUSH2 0x6FB JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x737 JUMPI DUP1 PUSH4 0xF866C319 EQ PUSH2 0x765 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0xAE167335 EQ PUSH2 0x66C JUMPI DUP1 PUSH4 0xB16A19DE EQ PUSH2 0x674 JUMPI DUP1 PUSH4 0xB1BF962D EQ PUSH2 0x67C JUMPI DUP1 PUSH4 0xB9844D8D EQ PUSH2 0x684 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x88DD91A1 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x88DD91A1 EQ PUSH2 0x5E0 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x60C JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x614 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x640 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x7535D246 EQ PUSH2 0x589 JUMPI DUP1 PUSH4 0x75D26413 EQ PUSH2 0x5AD JUMPI DUP1 PUSH4 0x78160376 EQ PUSH2 0x5B5 JUMPI DUP1 PUSH4 0x7DF5BD3B EQ PUSH2 0x5BD JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x1DA24F3E GT PUSH2 0x187 JUMPI DUP1 PUSH4 0x3644E515 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x503 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x50B JUMPI DUP1 PUSH4 0x4EFECAA5 EQ PUSH2 0x537 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x563 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x1DA24F3E EQ PUSH2 0x481 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x4A7 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x4DD JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x4E5 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0xBD7AD3B GT PUSH2 0x1C3 JUMPI DUP1 PUSH4 0xBD7AD3B EQ PUSH2 0x2E6 JUMPI DUP1 PUSH4 0x156E29F6 EQ PUSH2 0x300 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x332 JUMPI DUP1 PUSH4 0x183FB413 EQ PUSH2 0x33A JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x267 JUMPI DUP1 PUSH4 0xAFBCDC9 EQ PUSH2 0x2A7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F2 PUSH2 0x79B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x22C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x214 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x259 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x27D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x832 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x850 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x2EE PUSH2 0x86D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x316 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x872 JUMP JUMPDEST PUSH2 0x2EE PUSH2 0xA40 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x351 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP4 AND SWAP3 PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP2 DUP2 ADD SWAP1 PUSH1 0xC0 DUP2 ADD PUSH1 0xA0 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x39C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x400 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x452 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x474 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xAEA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x497 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE67 JUMP JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xE72 JUMP JUMPDEST PUSH2 0x2EE PUSH2 0xF32 JUMP JUMPDEST PUSH2 0x4ED PUSH2 0xF56 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2EE PUSH2 0xF5F JUMP JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF65 JUMP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x54D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xFB3 JUMP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1059 JUMP JUMPDEST PUSH2 0x591 PUSH2 0x10E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x591 PUSH2 0x10F7 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x1106 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1123 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x12D4 JUMP JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x62A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1335 JUMP JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x139D JUMP JUMPDEST PUSH2 0x591 PUSH2 0x13FA JUMP JUMPDEST PUSH2 0x591 PUSH2 0x1409 JUMP JUMPDEST PUSH2 0x2EE PUSH2 0x1418 JUMP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x69A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1422 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x6C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1434 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x711 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x167B JUMP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x74D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1820 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x77B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x184B JUMP JUMPDEST PUSH1 0x37 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x827 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7FC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x827 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x80A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x846 PUSH2 0x83F PUSH2 0x191C JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1920 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x85C DUP4 PUSH2 0x1A0C JUMP JUMPDEST PUSH2 0x864 PUSH2 0x1A27 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x889 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x937 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x929 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0x943 DUP6 PUSH2 0x1A0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x951 DUP6 DUP6 PUSH2 0x1A2D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1A9B PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0x9B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH2 0x9C4 DUP7 DUP3 PUSH2 0x1B34 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP ISZERO SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA4B PUSH2 0x1A27 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xA5C JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x82F JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x3E SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0xAE4 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xD15E0053 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAC5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xADB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 SWAP1 PUSH2 0x1C85 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAF4 PUSH2 0x1D43 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 PUSH2 0xB0B JUMPI POP PUSH2 0xB0B PUSH2 0x1D48 JUMP JUMPDEST DUP1 PUSH2 0xB17 JUMPI POP PUSH1 0x0 SLOAD DUP2 GT JUMPDEST PUSH2 0xB52 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x26E6 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0xB71 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 OR SWAP1 SSTORE PUSH1 0x0 DUP3 SWAP1 SSTORE JUMPDEST PUSH1 0x0 CHAINID SWAP1 POP PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP10 DUP10 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP4 ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x3B DUP2 SWAP1 SSTORE POP PUSH2 0xC69 DUP10 DUP10 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1D4E SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xCA8 DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1D61 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xCB1 DUP11 PUSH2 0x1D74 JUMP JUMPDEST DUP14 PUSH1 0x3C PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP13 PUSH1 0x3D PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP12 PUSH1 0x3E PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP11 PUSH1 0x3F PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xB19E051F8AF41150CCCCB3FC2C2D8D15F4A4CF434F32A559BA75FE73D6EEA20B DUP16 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP1 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP11 DUP11 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD DUP6 DUP2 SUB DUP5 MSTORE DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 POP DUP9 DUP9 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD DUP6 DUP2 SUB DUP4 MSTORE DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 POP DUP7 DUP7 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP15 POP SWAP1 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP LOG3 POP DUP1 ISZERO PUSH2 0xE58 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x84A DUP3 PUSH2 0x1A0C JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE7F DUP5 DUP5 DUP5 PUSH2 0x1D8A JUMP JUMPDEST PUSH2 0xEEF DUP5 PUSH2 0xE8B PUSH2 0x191C JUMP JUMPDEST PUSH2 0xEEA DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x26BE PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0xEC9 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH2 0x1920 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x39 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x3B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x846 PUSH2 0xF72 PUSH2 0x191C JUMP JUMPDEST DUP5 PUSH2 0xEEA DUP6 PUSH1 0x35 PUSH1 0x0 PUSH2 0xF83 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFCA PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x103B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH1 0x3E SLOAD PUSH2 0x1053 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH2 0x1E52 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x3E SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 PUSH2 0x84A SWAP4 AND SWAP2 PUSH4 0xD15E0053 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10C1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x10E2 DUP5 PUSH2 0x1A0C JUMP JUMPDEST SWAP1 PUSH2 0x1C85 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1101 PUSH2 0x1EA4 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1137 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x11A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP DUP2 PUSH2 0x11B3 JUMPI PUSH2 0x1246 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11D2 DUP2 PUSH2 0x11CD DUP6 DUP6 PUSH2 0x1A2D JUMP JUMPDEST PUSH2 0x1B34 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH1 0x0 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x125E PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x12CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x38 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x827 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7FC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x827 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x846 PUSH2 0x1342 PUSH2 0x191C JUMP JUMPDEST DUP5 PUSH2 0xEEA DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x27C8 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x35 PUSH1 0x0 PUSH2 0x136C PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13B1 PUSH2 0x13AA PUSH2 0x191C JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1D8A JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13C3 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1101 PUSH2 0x1A27 JUMP JUMPDEST PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x147F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x24A72B20A624A22FA7ABA722A9 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x14C9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x24A72B20A624A22FA2AC2824A920AA24A7A7 PUSH1 0x71 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x3B SLOAD DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP13 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP12 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP1 DUP7 ADD DUP12 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP8 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP7 ADD DUP4 MSTORE DUP1 MLOAD SWAP1 DUP5 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH2 0x100 DUP8 ADD MSTORE PUSH2 0x102 DUP7 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP7 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP6 ADD DUP1 DUP4 MSTORE DUP7 MLOAD SWAP7 DUP5 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP4 SWAP1 SWAP6 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP4 SWAP1 MSTORE PUSH1 0xFF DUP9 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP8 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP7 SWAP1 MSTORE MLOAD SWAP2 SWAP3 PUSH1 0x1 SWAP3 PUSH2 0x1E2 DUP1 DUP4 ADD SWAP4 SWAP3 PUSH1 0x1F NOT DUP4 ADD SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15DE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1641 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x494E56414C49445F5349474E4154555245 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x164C DUP3 PUSH1 0x1 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x1670 DUP10 DUP10 DUP10 PUSH2 0x1920 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x168F PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1700 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x170D DUP4 DUP4 PUSH2 0x1A2D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x6A7 PUSH1 0xF3 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0x1775 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH2 0x1780 DUP6 DUP3 PUSH2 0x1EB3 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH2 0x1797 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 PUSH2 0x1E52 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x5D624AA9C148153AB3446C1B154F660EE7701E549FE9B62DAB7171B1C80E6FA2 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x185F PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x18D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH2 0x18DE DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x1F57 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1965 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x277A PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x19AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2676 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x36 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x1A95 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x1B11 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x1B2B JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1B8F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1B9B PUSH1 0x0 DUP4 DUP4 PUSH2 0x12CF JUMP JUMPDEST PUSH1 0x36 SLOAD PUSH2 0x1BA8 DUP2 DUP4 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x36 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1BCE DUP2 DUP5 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1BF2 PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1C7F JUMPI PUSH2 0x1C08 PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP6 DUP5 DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C7A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x1C92 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x1C9F JUMPI POP PUSH1 0x0 PUSH2 0x84A JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x1CB5 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1D20 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP POP PUSH12 0x33B2E3C9FD0803CE8000000 SWAP2 MUL PUSH12 0x19D971E4FE8401E74000000 ADD DIV SWAP1 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1246 SWAP1 PUSH1 0x37 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x259D JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1246 SWAP1 PUSH1 0x38 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x259D JUMP JUMPDEST PUSH1 0x39 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x12CF DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1F57 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1DE9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1E4B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x12CF SWAP1 DUP5 SWAP1 PUSH2 0x2100 JUMP JUMPDEST PUSH1 0x3F SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1EF8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2734 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1F04 DUP3 PUSH1 0x0 DUP4 PUSH2 0x12CF JUMP JUMPDEST PUSH1 0x36 SLOAD PUSH2 0x1F11 DUP2 DUP4 PUSH2 0x22B8 JUMP JUMPDEST PUSH1 0x36 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x22 DUP1 DUP5 MSTORE SWAP1 SWAP3 PUSH2 0x1BCE SWAP3 DUP7 SWAP3 SWAP1 PUSH2 0x2654 SWAP1 DUP4 ADD CODECOPY DUP4 SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP4 SWAP1 SWAP3 AND SWAP2 PUSH1 0x0 SWAP2 DUP4 SWAP2 PUSH4 0xD15E0053 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FC3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1FD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x1FEC DUP3 PUSH2 0x10E2 DUP11 PUSH2 0x1A0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1FFD DUP4 PUSH2 0x10E2 DUP11 PUSH2 0x1A0C JUMP JUMPDEST SWAP1 POP PUSH2 0x2013 DUP10 DUP10 PUSH2 0x200E DUP11 DUP8 PUSH2 0x1A2D JUMP JUMPDEST PUSH2 0x22FA JUMP JUMPDEST DUP6 ISZERO PUSH2 0x20A2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH4 0xD5ED3933 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP11 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP11 SWAP1 MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0xA4 DUP3 ADD DUP5 SWAP1 MSTORE SWAP2 MLOAD SWAP2 DUP7 AND SWAP2 PUSH4 0xD5ED3933 SWAP2 PUSH1 0xC4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2089 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x209D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4BECCB90F994C31ACED7A23B5611020728A23D8EC5CDDD1A3E9D97B96FDA8666 DUP10 DUP7 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2112 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2561 JUMP JUMPDEST PUSH2 0x2163 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x21A1 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2182 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2203 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2208 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x225F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1C7F JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x227B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1C7F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x279E PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1E4B DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x233F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2755 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2384 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2631 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x238F DUP4 DUP4 DUP4 PUSH2 0x12CF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x34 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH2 0x23DE DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2698 PUSH1 0x26 SWAP2 CODECOPY DUP4 SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP6 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x240D DUP2 DUP5 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x2431 PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x255A JUMPI PUSH1 0x36 SLOAD PUSH2 0x244A PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP8 DUP4 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2558 JUMPI PUSH2 0x24E1 PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP7 DUP4 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x253F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2553 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2595 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x25DE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x260B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x260B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x260B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x25F0 JUMP JUMPDEST POP PUSH2 0x2617 SWAP3 SWAP2 POP PUSH2 0x261B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2617 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x261C JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E6365436F6E74726163742069 PUSH15 0x7374616E63652068617320616C7265 PUSH2 0x6479 KECCAK256 PUSH3 0x65656E KECCAK256 PUSH10 0x6E697469616C697A6564 0xDD CALLCODE MSTORE 0xAD SHL 0xE2 0xC8 SWAP12 PUSH10 0xC2B068FC378DAA952BA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A207472616E7366657220 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 MSTORE8 PUSH2 0x6665 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x75636365656445524332303A2064656372656173 PUSH6 0x6420616C6C6F PUSH24 0x616E63652062656C6F77207A65726FA26469706673582212 KECCAK256 CALLDATACOPY 0x29 0x23 0x2B DUP2 0x49 DUP16 EXP 0xEA 0xBA 0xB5 PUSH24 0x14B9DAE0A68FBCD6FC72E75051FC236FE4DC42CE64736F6C PUSH4 0x4300060C STOP CALLER PUSH2 0x180 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xFBB CODESIZE SUB DUP1 PUSH2 0xFBB DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x80 DUP1 DUP8 ADD MLOAD PUSH1 0xA0 DUP9 ADD MLOAD PUSH1 0xC0 SWAP1 SWAP9 ADD MLOAD SWAP2 DUP6 SWAP1 MSTORE SWAP6 SWAP7 SWAP4 SWAP6 SWAP3 SWAP5 SWAP2 SWAP4 SWAP2 PUSH2 0x8E SWAP1 DUP8 SWAP1 PUSH2 0x7C SWAP1 PUSH2 0x852 PUSH2 0xC3 DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST PUSH2 0xD3 PUSH1 0x20 SHL PUSH2 0x862 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0xA0 MSTORE PUSH1 0x60 SWAP7 SWAP1 SWAP7 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xC0 MSTORE PUSH1 0xE0 SWAP4 SWAP1 SWAP4 MSTORE PUSH2 0x100 SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x120 MSTORE PUSH2 0x140 MSTORE POP PUSH2 0x160 MSTORE PUSH2 0x1B9 JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11B DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x122 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x176 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x15E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1A3 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0xD4D PUSH2 0x26E PUSH1 0x0 CODECOPY DUP1 PUSH2 0x597 MSTORE DUP1 PUSH2 0x830 MSTORE POP DUP1 PUSH2 0x1DD MSTORE DUP1 PUSH2 0x5C7 MSTORE DUP1 PUSH2 0x6B1 MSTORE POP DUP1 PUSH2 0x2DF MSTORE DUP1 PUSH2 0x32C MSTORE DUP1 PUSH2 0x5F8 MSTORE POP DUP1 PUSH2 0x303 MSTORE DUP1 PUSH2 0x371 MSTORE DUP1 PUSH2 0x643 MSTORE DUP1 PUSH2 0x71B MSTORE POP DUP1 PUSH2 0x350 MSTORE DUP1 PUSH2 0x622 MSTORE DUP1 PUSH2 0x741 MSTORE DUP1 PUSH2 0x7E8 MSTORE POP DUP1 PUSH2 0x400 MSTORE DUP1 PUSH2 0x80C MSTORE POP DUP1 PUSH2 0x201 MSTORE DUP1 PUSH2 0x531 MSTORE POP DUP1 PUSH2 0x505 MSTORE DUP1 PUSH2 0x555 MSTORE DUP1 PUSH2 0x67D MSTORE DUP1 PUSH2 0x6F5 MSTORE DUP1 PUSH2 0x7C4 MSTORE POP PUSH2 0xD4D PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x80031E37 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x80031E37 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0x9584DF28 EQ PUSH2 0x15B JUMPI DUP1 PUSH4 0xA15F30AC EQ PUSH2 0x19F JUMPI DUP1 PUSH4 0xB2589544 EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0xC72C4D10 EQ PUSH2 0x1AF JUMPI DUP1 PUSH4 0xCCAB01A3 EQ PUSH2 0x1D3 JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0xBDF953F EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x17319873 EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0x29DB497D EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0x65614F81 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x7B832F58 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB6 PUSH2 0x1DB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB6 PUSH2 0x1FF JUMP JUMPDEST PUSH2 0x125 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x223 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB6 PUSH2 0x2DD JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x301 JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x325 JUMP JUMPDEST PUSH2 0x125 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x171 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x3A0 JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x7C2 JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x7E6 JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x80A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB6 PUSH2 0x82E JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP13 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x28A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x2B8 DUP10 PUSH2 0x2B2 DUP4 DUP14 PUSH2 0x8AD JUMP JUMPDEST SWAP1 PUSH2 0x862 JUMP JUMPDEST SWAP1 POP PUSH2 0x2C8 DUP13 DUP3 DUP11 DUP11 DUP11 DUP11 PUSH2 0x3A0 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP9 POP SWAP9 POP SWAP9 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39B PUSH32 0x0 PUSH2 0x395 PUSH32 0x0 PUSH32 0x0 PUSH2 0x8AD JUMP JUMPDEST SWAP1 PUSH2 0x8AD JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3AD PUSH2 0xCE8 JUMP JUMPDEST PUSH2 0x3B7 DUP9 DUP9 PUSH2 0x8AD JUMP JUMPDEST DUP1 DUP3 MSTORE PUSH1 0x0 PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP4 ADD MSTORE ISZERO PUSH2 0x3F2 JUMPI DUP1 MLOAD PUSH2 0x3ED SWAP1 PUSH2 0x3E5 SWAP1 DUP12 SWAP1 PUSH2 0x8AD JUMP JUMPDEST DUP3 MLOAD SWAP1 PUSH2 0x907 JUMP JUMPDEST PUSH2 0x3F5 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 PUSH1 0x80 ADD DUP2 DUP2 MSTORE POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3618ABBA PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x457 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x46B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xBB85C0BB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xBB85C0BB SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH32 0x0 LT ISZERO PUSH2 0x672 JUMPI PUSH1 0x0 PUSH2 0x58D PUSH32 0x0 PUSH2 0x587 PUSH32 0x0 DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0x862 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x907 JUMP JUMPDEST SWAP1 POP PUSH2 0x5EB PUSH2 0x5BC PUSH32 0x0 DUP4 PUSH2 0xA4B JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x395 SWAP1 PUSH32 0x0 PUSH2 0x8AD JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x667 PUSH2 0x61D PUSH32 0x0 DUP4 PUSH2 0xA4B JUMP JUMPDEST PUSH2 0x395 PUSH32 0x0 PUSH32 0x0 PUSH2 0x8AD JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH2 0x76C JUMP JUMPDEST PUSH2 0x6E1 PUSH2 0x6D6 PUSH2 0x6AF PUSH32 0x0 DUP5 PUSH1 0x80 ADD MLOAD PUSH2 0x907 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH32 0x0 SWAP1 PUSH2 0xA4B JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MLOAD SWAP1 PUSH2 0x8AD JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH2 0x766 SWAP1 PUSH2 0x73F SWAP1 PUSH32 0x0 SWAP1 PUSH2 0x587 SWAP1 PUSH32 0x0 PUSH2 0xA4B JUMP JUMPDEST PUSH32 0x0 SWAP1 PUSH2 0x8AD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST PUSH2 0x79F PUSH2 0x77B PUSH2 0x2710 DUP8 PUSH2 0x862 JUMP JUMPDEST PUSH2 0x799 DUP4 PUSH1 0x80 ADD MLOAD PUSH2 0x793 DUP13 DUP13 DUP8 PUSH1 0x20 ADD MLOAD DUP14 PUSH2 0xB0C JUMP JUMPDEST SWAP1 PUSH2 0xA4B JUMP JUMPDEST SWAP1 PUSH2 0xB73 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x20 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP12 SWAP2 SWAP11 POP SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8A4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0xC10 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x8A4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x9AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x971 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x959 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x99E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0xA28 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x971 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x959 JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0xA42 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0xA58 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0xA65 JUMPI POP PUSH1 0x0 PUSH2 0x8A7 JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0xA7B JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xAE6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x971 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x959 JUMP JUMPDEST POP PUSH12 0x33B2E3C9FD0803CE8000000 PUSH1 0x2 DUP2 JUMPDEST DIV DUP4 DUP6 MUL ADD DUP2 PUSH2 0xB04 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB19 DUP7 DUP7 PUSH2 0x8AD JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xB2A JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xB6B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB39 DUP6 PUSH2 0x793 DUP9 PUSH2 0xC6A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB4A DUP6 PUSH2 0x793 DUP11 PUSH2 0xC6A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB64 PUSH2 0xB5A DUP6 PUSH2 0xC6A JUMP JUMPDEST PUSH2 0x587 DUP6 DUP6 PUSH2 0x8AD JUMP JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0xB80 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0xB8D JUMPI POP PUSH1 0x0 PUSH2 0x8A7 JUMP JUMPDEST DUP2 PUSH2 0x1388 NOT DUP2 PUSH2 0xB99 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xC04 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x971 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x959 JUMP JUMPDEST POP PUSH2 0x2710 PUSH1 0x2 DUP2 PUSH2 0xAF8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xC62 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x971 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x959 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH4 0x3B9ACA00 DUP3 DUP2 MUL SWAP1 DUP4 SWAP1 DUP3 DIV EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xCE1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x971 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x959 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2D 0xE9 EXTCODESIZE 0x4E JUMPDEST 0xD8 0xEF CREATE2 PUSH4 0xA6594CEB 0xE4 SHL LOG1 DIV PUSH10 0x84974B817CC22176094A 0x2C CALLDATASIZE DUP3 0xBF PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 KECCAK256 ORIGIN 0xC5 PUSH26 0x9CD92BD12D91FE7A975302825B204AA5BC23845E97850203BBC6 0xB2 0xC4 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "666:2075:21:-:0;;;1185:222;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;844:17:11;864:12;:10;:12::i;:::-;882:6;:18;;-1:-1:-1;;;;;;882:18:11;-1:-1:-1;;;;;882:18:11;;;;;;;911:43;;882:18;;-1:-1:-1;882:18:11;911:43;;882:6;;911:43;-1:-1:-1;1304:4:21;:12;;-1:-1:-1;;;;;1304:12:21;;;-1:-1:-1;;;;;;1304:12:21;;;;;;;1322:17;:38;;;;;;;;;;;;;;;1366:16;:36;;;;;;;;;;;666:2075;;587:98:7;670:10;587:98;:::o;303:551:-1:-;;;;460:2;448:9;439:7;435:23;431:32;428:2;;;-1:-1;;466:12;428:2;238:6;232:13;250:41;285:5;250:41;:::i;:::-;637:2;687:22;;83:13;518:82;;-1:-1;101:33;83:13;101:33;:::i;:::-;756:2;806:22;;83:13;645:74;;-1:-1;101:33;83:13;101:33;:::i;:::-;764:74;;;;422:432;;;;;:::o;1193:117::-;-1:-1;;;;;1127:54;;1252:35;;1242:2;;1301:1;;1291:12;1242:2;1236:74;:::o;:::-;666:2075:21;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100575760003560e01c8063715018a61461005c5780638da5cb5b146100665780639dd8aad514610084578063f2fde38b14610097578063fc123602146100aa575b600080fd5b6100646100bd565b005b61006e610145565b60405161007b9190610786565b60405180910390f35b6100646100923660046106fe565b610154565b6100646100a53660046106d0565b6103da565b6100646100b836600461073e565b610490565b6100c5610666565b6000546001600160a01b039081169116146100fb5760405162461bcd60e51b81526004016100f29061088f565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b61015c610666565b6000546001600160a01b039081169116146101895760405162461bcd60e51b81526004016100f29061088f565b6003546001600160a01b031660005b828110156103d457816001600160a01b0316637c4e560b8585848181106101bb57fe5b6101d192602060e09092020190810191506106d0565b8686858181106101dd57fe5b905060e00201602001358787868181106101f357fe5b905060e002016040013588888781811061020957fe5b905060e00201606001356040518563ffffffff1660e01b815260040161023294939291906107e8565b600060405180830381600087803b15801561024c57600080fd5b505af1158015610260573d6000803e3d6000fd5b5050505083838281811061027057fe5b905060e0020160c00160208101906102889190610766565b1561033257816001600160a01b031663eede87c18585848181106102a857fe5b6102be92602060e09092020190810191506106d0565b8686858181106102ca57fe5b905060e0020160a00160208101906102e29190610766565b6040518363ffffffff1660e01b81526004016102ff9291906107b4565b600060405180830381600087803b15801561031957600080fd5b505af115801561032d573d6000803e3d6000fd5b505050505b816001600160a01b0316634b4e675385858481811061034d57fe5b61036392602060e09092020190810191506106d0565b86868581811061036f57fe5b905060e00201608001356040518363ffffffff1660e01b81526004016103969291906107cf565b600060405180830381600087803b1580156103b057600080fd5b505af11580156103c4573d6000803e3d6000fd5b5050600190920191506101989050565b50505050565b6103e2610666565b6000546001600160a01b0390811691161461040f5760405162461bcd60e51b81526004016100f29061088f565b6001600160a01b0381166104355760405162461bcd60e51b81526004016100f290610849565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610498610666565b6000546001600160a01b039081169116146104c55760405162461bcd60e51b81526004016100f29061088f565b60005b81811015610661577f1c1768aab1796270c7034dc781c2951065e6afb7a946269746521002443b8ea46040516104fd9061066a565b604051809103906000f080158015610519573d6000803e3d6000fd5b506002546001600160a01b031685858581811061053257fe5b905060e0020160200160006006811061054757fe5b602002013586868681811061055857fe5b905060e0020160200160016006811061056d57fe5b602002013587878781811061057e57fe5b905060e0020160200160026006811061059357fe5b60200201358888888181106105a457fe5b905060e002016020016003600681106105b957fe5b60200201358989898181106105ca57fe5b905060e002016020016004600681106105df57fe5b60200201358a8a8a8181106105f057fe5b905060e0020160200160056006811061060557fe5b602002013560405161061690610678565b610626979695949392919061080e565b604051809103906000f080158015610642573d6000803e3d6000fd5b5060405161065192919061079a565b60405180910390a16001016104c8565b505050565b3390565b61296280620008c583390190565b610fbb806200322783390190565b60008083601f840112610697578182fd5b50813567ffffffffffffffff8111156106ae578182fd5b60208301915083602060e0830285010111156106c957600080fd5b9250929050565b6000602082840312156106e1578081fd5b81356001600160a01b03811681146106f7578182fd5b9392505050565b60008060208385031215610710578081fd5b823567ffffffffffffffff811115610726578182fd5b61073285828601610686565b90969095509350505050565b60008060208385031215610750578182fd5b823567ffffffffffffffff811115610726578283fd5b600060208284031215610777578081fd5b813580151581146106f7578182fd5b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0394909416845260208401929092526040830152606082015260800190565b6001600160a01b03979097168752602087019590955260408601939093526060850191909152608084015260a083015260c082015260e00190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260408201526060019056fe6080604052600080553480156200001557600080fd5b50604080518082018252600b8082526a105513d2d15397d253541360aa1b60208084018281528551808701909652928552840152815191929160009162000060916037919062000094565b5081516200007690603890602085019062000094565b506039805460ff191660ff9290921691909117905550620001309050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000d757805160ff191683800117855562000107565b8280016001018555821562000107579182015b8281111562000107578251825591602001919060010190620000ea565b506200011592915062000119565b5090565b5b808211156200011557600081556001016200011a565b61282280620001406000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80637535d2461161010f578063ae167335116100a2578063d505accf11610071578063d505accf146106aa578063d7020d0a146106fb578063dd62ed3e14610737578063f866c31914610765576101e5565b8063ae1673351461066c578063b16a19de14610674578063b1bf962d1461067c578063b9844d8d14610684576101e5565b806388dd91a1116100de57806388dd91a1146105e057806395d89b411461060c578063a457c2d714610614578063a9059cbb14610640576101e5565b80637535d2461461058957806375d26413146105ad57806378160376146105b55780637df5bd3b146105bd576101e5565b80631da24f3e116101875780633644e515116101565780633644e51514610503578063395093511461050b5780634efecaa51461053757806370a0823114610563576101e5565b80631da24f3e1461048157806323b872dd146104a757806330adf81f146104dd578063313ce567146104e5576101e5565b80630bd7ad3b116101c35780630bd7ad3b146102e6578063156e29f61461030057806318160ddd14610332578063183fb4131461033a576101e5565b806306fdde03146101ea578063095ea7b3146102675780630afbcdc9146102a7575b600080fd5b6101f261079b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102936004803603604081101561027d57600080fd5b506001600160a01b038135169060200135610832565b604080519115158252519081900360200190f35b6102cd600480360360208110156102bd57600080fd5b50356001600160a01b0316610850565b6040805192835260208301919091528051918290030190f35b6102ee61086d565b60408051918252519081900360200190f35b6102936004803603606081101561031657600080fd5b506001600160a01b038135169060208101359060400135610872565b6102ee610a40565b61047f600480360361010081101561035157600080fd5b6001600160a01b038235811692602081013582169260408201358316926060830135169160ff6080820135169181019060c0810160a082013564010000000081111561039c57600080fd5b8201836020820111156103ae57600080fd5b803590602001918460018302840111640100000000831117156103d057600080fd5b9193909290916020810190356401000000008111156103ee57600080fd5b82018360208201111561040057600080fd5b8035906020019184600183028401116401000000008311171561042257600080fd5b91939092909160208101903564010000000081111561044057600080fd5b82018360208201111561045257600080fd5b8035906020019184600183028401116401000000008311171561047457600080fd5b509092509050610aea565b005b6102ee6004803603602081101561049757600080fd5b50356001600160a01b0316610e67565b610293600480360360608110156104bd57600080fd5b506001600160a01b03813581169160208101359091169060400135610e72565b6102ee610f32565b6104ed610f56565b6040805160ff9092168252519081900360200190f35b6102ee610f5f565b6102936004803603604081101561052157600080fd5b506001600160a01b038135169060200135610f65565b6102ee6004803603604081101561054d57600080fd5b506001600160a01b038135169060200135610fb3565b6102ee6004803603602081101561057957600080fd5b50356001600160a01b0316611059565b6105916110e8565b604080516001600160a01b039092168252519081900360200190f35b6105916110f7565b6101f2611106565b61047f600480360360408110156105d357600080fd5b5080359060200135611123565b61047f600480360360408110156105f657600080fd5b506001600160a01b03813516906020013561124a565b6101f26112d4565b6102936004803603604081101561062a57600080fd5b506001600160a01b038135169060200135611335565b6102936004803603604081101561065657600080fd5b506001600160a01b03813516906020013561139d565b6105916113fa565b610591611409565b6102ee611418565b6102ee6004803603602081101561069a57600080fd5b50356001600160a01b0316611422565b61047f600480360360e08110156106c057600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611434565b61047f6004803603608081101561071157600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561167b565b6102ee6004803603604081101561074d57600080fd5b506001600160a01b0381358116916020013516611820565b61047f6004803603606081101561077b57600080fd5b506001600160a01b0381358116916020810135909116906040013561184b565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108275780601f106107fc57610100808354040283529160200191610827565b820191906000526020600020905b81548152906001019060200180831161080a57829003601f168201915b505050505090505b90565b600061084661083f61191c565b8484611920565b5060015b92915050565b60008061085c83611a0c565b610864611a27565b91509150915091565b600181565b603c546000906001600160a01b031661088961191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906109375760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108fc5781810151838201526020016108e4565b50505050905090810190601f1680156109295780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600061094385611a0c565b905060006109518585611a2d565b6040805180820190915260028152611a9b60f11b6020820152909150816109b95760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506109c48682611b34565b6040805186815290516001600160a01b038816916000916000805160206127148339815191529181900360200190a3604080518681526020810186905281516001600160a01b038916927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25015949350505050565b600080610a4b611a27565b905080610a5c57600091505061082f565b603c54603e546040805163d15e005360e01b81526001600160a01b0392831660048201529051610ae493929092169163d15e005391602480820192602092909190829003018186803b158015610ab157600080fd5b505afa158015610ac5573d6000803e3d6000fd5b505050506040513d6020811015610adb57600080fd5b50518290611c85565b91505090565b6000610af4611d43565b60015490915060ff1680610b0b5750610b0b611d48565b80610b17575060005481115b610b525760405162461bcd60e51b815260040180806020018281038252602e8152602001806126e6602e913960400191505060405180910390fd5b60015460ff16158015610b71576001805460ff19168117905560008290555b60004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f89896040518083838082843780830192505050925050506040518091039020604051806040016040528060018152602001603160f81b81525080519060200120833060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120603b81905550610c6989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d4e92505050565b610ca887878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d6192505050565b610cb18a611d74565b8d603c60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c603d60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b603e60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a603f60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508d6001600160a01b03168c6001600160a01b03167fb19e051f8af41150ccccb3fc2c2d8d15f4a4cf434f32a559ba75fe73d6eea20b8f8e8e8e8e8e8e8e8e604051808a6001600160a01b03168152602001896001600160a01b031681526020018860ff16815260200180602001806020018060200184810384528a8a82818152602001925080828437600083820152601f01601f191690910185810384528881526020019050888880828437600083820152601f01601f191690910185810383528681526020019050868680828437600083820152604051601f909101601f19169092018290039e50909c50505050505050505050505050a3508015610e58576001805460ff191690555b50505050505050505050505050565b600061084a82611a0c565b6000610e7f848484611d8a565b610eef84610e8b61191c565b610eea856040518060600160405280602881526020016126be602891396001600160a01b038a16600090815260356020526040812090610ec961191c565b6001600160a01b031681526020810191909152604001600020549190611d97565b611920565b826001600160a01b0316846001600160a01b0316600080516020612714833981519152846040518082815260200191505060405180910390a35060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60395460ff1690565b603b5481565b6000610846610f7261191c565b84610eea8560356000610f8361191c565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611df1565b603c546000906001600160a01b0316610fca61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b8152509061103b5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50603e54611053906001600160a01b03168484611e52565b50919050565b603c54603e546040805163d15e005360e01b81526001600160a01b039283166004820152905160009361084a93169163d15e0053916024808301926020929190829003018186803b1580156110ad57600080fd5b505afa1580156110c1573d6000803e3d6000fd5b505050506040513d60208110156110d757600080fd5b50516110e284611a0c565b90611c85565b603c546001600160a01b031690565b6000611101611ea4565b905090565b604051806040016040528060018152602001603160f81b81525081565b603c546001600160a01b031661113761191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906111a85760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50816111b357611246565b603d546001600160a01b03166111d2816111cd8585611a2d565b611b34565b6040805184815290516001600160a01b038316916000916000805160206127148339815191529181900360200190a3604080518481526020810184905281516001600160a01b038416927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a2505b5050565b603c546001600160a01b031661125e61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906112cf5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b505050565b60388054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108275780601f106107fc57610100808354040283529160200191610827565b600061084661134261191c565b84610eea856040518060600160405280602581526020016127c8602591396035600061136c61191c565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611d97565b60006113b16113aa61191c565b8484611d8a565b826001600160a01b03166113c361191c565b6001600160a01b0316600080516020612714833981519152846040518082815260200191505060405180910390a350600192915050565b603d546001600160a01b031690565b603e546001600160a01b031690565b6000611101611a27565b603a6020526000908152604090205481565b6001600160a01b03871661147f576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa7aba722a960991b604482015290519081900360640190fd5b834211156114c9576040805162461bcd60e51b815260206004820152601260248201527124a72b20a624a22fa2ac2824a920aa24a7a760711b604482015290519081900360640190fd5b6001600160a01b038088166000818152603a6020908152604080832054603b5482517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a0850181905260c08086018b90528251808703909101815260e08601835280519084012061190160f01b6101008701526101028601969096526101228086019690965281518086039096018652610142850180835286519684019690962093909552610162840180825283905260ff88166101828501526101a284018790526101c284018690525191926001926101e28083019392601f198301929081900390910190855afa1580156115de573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614611641576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b61164c826001611df1565b6001600160a01b038a166000908152603a6020526040902055611670898989611920565b505050505050505050565b603c546001600160a01b031661168f61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906117005760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50600061170d8383611a2d565b60408051808201909152600281526106a760f31b6020820152909150816117755760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506117808582611eb3565b603e54611797906001600160a01b03168585611e52565b6040805184815290516000916001600160a01b038816916000805160206127148339815191529181900360200190a3836001600160a01b0316856001600160a01b03167f5d624aa9c148153ab3446c1b154f660ee7701e549fe9b62dab7171b1c80e6fa28585604051808381526020018281526020019250505060405180910390a35050505050565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b603c546001600160a01b031661185f61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906118d05760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506118de8383836000611f57565b816001600160a01b0316836001600160a01b0316600080516020612714833981519152836040518082815260200191505060405180910390a3505050565b3390565b6001600160a01b0383166119655760405162461bcd60e51b815260040180806020018281038252602481526020018061277a6024913960400191505060405180910390fd5b6001600160a01b0382166119aa5760405162461bcd60e51b81526004018080602001828103825260228152602001806126766022913960400191505060405180910390fd5b6001600160a01b03808416600081815260356020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b031660009081526034602052604090205490565b60365490565b604080518082019091526002815261035360f41b602082015260009082611a955760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce8000000821904851115611b115760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b5082816b033b2e3c9fd0803ce800000086020181611b2b57fe5b04949350505050565b6001600160a01b038216611b8f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611b9b600083836112cf565b603654611ba88183611df1565b6036556001600160a01b038316600090815260346020526040902054611bce8184611df1565b6001600160a01b038516600090815260346020526040812091909155611bf2611ea4565b6001600160a01b031614611c7f57611c08611ea4565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015611c6657600080fd5b505af1158015611c7a573d6000803e3d6000fd5b505050505b50505050565b6000821580611c92575081155b15611c9f5750600061084a565b816b019d971e4fe8401e740000001981611cb557fe5b0483111560405180604001604052806002815260200161068760f31b81525090611d205760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b600190565b303b1590565b805161124690603790602084019061259d565b805161124690603890602084019061259d565b6039805460ff191660ff92909216919091179055565b6112cf8383836001611f57565b60008184841115611de95760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b505050900390565b600082820183811015611e4b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112cf908490612100565b603f546001600160a01b031690565b6001600160a01b038216611ef85760405162461bcd60e51b81526004018080602001828103825260218152602001806127346021913960400191505060405180910390fd5b611f04826000836112cf565b603654611f1181836122b8565b6036556001600160a01b0383166000908152603460209081526040918290205482516060810190935260228084529092611bce9286929061265490830139839190611d97565b603e54603c546040805163d15e005360e01b81526001600160a01b03938416600482018190529151919390921691600091839163d15e0053916024808301926020929190829003018186803b158015611faf57600080fd5b505afa158015611fc3573d6000803e3d6000fd5b505050506040513d6020811015611fd957600080fd5b505190506000611fec826110e28a611a0c565b90506000611ffd836110e28a611a0c565b9050612013898961200e8a87611a2d565b6122fa565b85156120a2576040805163d5ed393360e01b81526001600160a01b0387811660048301528b811660248301528a81166044830152606482018a90526084820185905260a4820184905291519186169163d5ed39339160c48082019260009290919082900301818387803b15801561208957600080fd5b505af115801561209d573d6000803e3d6000fd5b505050505b876001600160a01b0316896001600160a01b03167f4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda86668986604051808381526020018281526020019250505060405180910390a3505050505050505050565b612112826001600160a01b0316612561565b612163576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106121a15780518252601f199092019160209182019101612182565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612203576040519150601f19603f3d011682016040523d82523d6000602084013e612208565b606091505b50915091508161225f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611c7f5780806020019051602081101561227b57600080fd5b5051611c7f5760405162461bcd60e51b815260040180806020018281038252602a81526020018061279e602a913960400191505060405180910390fd5b6000611e4b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d97565b6001600160a01b03831661233f5760405162461bcd60e51b81526004018080602001828103825260258152602001806127556025913960400191505060405180910390fd5b6001600160a01b0382166123845760405162461bcd60e51b81526004018080602001828103825260238152602001806126316023913960400191505060405180910390fd5b61238f8383836112cf565b600060346000856001600160a01b03166001600160a01b031681526020019081526020016000205490506123de8260405180606001604052806026815260200161269860269139839190611d97565b6001600160a01b03808616600090815260346020526040808220939093559085168152205461240d8184611df1565b6001600160a01b038516600090815260346020526040812091909155612431611ea4565b6001600160a01b03161461255a5760365461244a611ea4565b6001600160a01b03166331873e2e8783866040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b1580156124a857600080fd5b505af11580156124bc573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b031614612558576124e1611ea4565b6001600160a01b03166331873e2e8683856040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561253f57600080fd5b505af1158015612553573d6000803e3d6000fd5b505050505b505b5050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061259557508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106125de57805160ff191683800117855561260b565b8280016001018555821561260b579182015b8281111561260b5782518255916020019190600101906125f0565b5061261792915061261b565b5090565b5b80821115612617576000815560010161261c56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203729232b81498f0aeabab57714b9dae0a68fbcd6fc72e75051fc236fe4dc42ce64736f6c634300060c003361018060405234801561001157600080fd5b50604051610fbb380380610fbb833981810160405260e081101561003457600080fd5b5080516020808301516040840151606085015160808087015160a088015160c0909801519185905295969395929491939161008e90879061007c906108526100c3821b17901c565b6100d360201b6108621790919060201c565b60a05260609690961b6001600160601b03191660c05260e09390935261010091909152610120526101405250610160526101b9565b6b033b2e3c9fd0803ce800000090565b600061011b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061012260201b60201c565b9392505050565b600081848411156101b15760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561017657818101518382015260200161015e565b50505050905090810190601f1680156101a35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60805160a05160c05160601c60e05161010051610120516101405161016051610d4d61026e6000398061059752806108305250806101dd52806105c752806106b15250806102df528061032c52806105f852508061030352806103715280610643528061071b5250806103505280610622528061074152806107e8525080610400528061080c52508061020152806105315250806105055280610555528061067d52806106f552806107c45250610d4d6000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806380031e371161007157806380031e37146101535780639584df281461015b578063a15f30ac1461019f578063b2589544146101a7578063c72c4d10146101af578063ccab01a3146101d3576100a9565b80630bdf953f146100ae57806317319873146100c857806329db497d146100d057806365614f81146101435780637b832f581461014b575b600080fd5b6100b66101db565b60408051918252519081900360200190f35b6100b66101ff565b61012560048036036101008110156100e757600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a08101359060c08101359060e00135610223565b60408051938452602084019290925282820152519081900360600190f35b6100b66102dd565b6100b6610301565b6100b6610325565b610125600480360360c081101561017157600080fd5b506001600160a01b038135169060208101359060408101359060608101359060808101359060a001356103a0565b6100b66107c2565b6100b66107e6565b6101b761080a565b604080516001600160a01b039092168252519081900360200190f35b6100b661082e565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000808b6001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561027657600080fd5b505afa15801561028a573d6000803e3d6000fd5b505050506040513d60208110156102a057600080fd5b505190506102b8896102b2838d6108ad565b90610862565b90506102c88c828a8a8a8a6103a0565b93509350935050985098509895505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061039b7f00000000000000000000000000000000000000000000000000000000000000006103957f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006108ad565b906108ad565b905090565b60008060006103ad610ce8565b6103b788886108ad565b808252600060208301819052604083018190526060830152156103f25780516103ed906103e5908b906108ad565b825190610907565b6103f5565b60005b8160800181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633618abba6040518163ffffffff1660e01b815260040160206040518083038186803b15801561045757600080fd5b505afa15801561046b573d6000803e3d6000fd5b505050506040513d602081101561048157600080fd5b50516040805163bb85c0bb60e01b81526001600160a01b038d811660048301529151919092169163bb85c0bb916024808301926020929190829003018186803b1580156104cd57600080fd5b505afa1580156104e1573d6000803e3d6000fd5b505050506040513d60208110156104f757600080fd5b5051604082015260808101517f0000000000000000000000000000000000000000000000000000000000000000101561067257600061058d7f00000000000000000000000000000000000000000000000000000000000000006105877f0000000000000000000000000000000000000000000000000000000000000000856080015161086290919063ffffffff16565b90610907565b90506105eb6105bc7f000000000000000000000000000000000000000000000000000000000000000083610a4b565b6040840151610395907f00000000000000000000000000000000000000000000000000000000000000006108ad565b604083015261066761061d7f000000000000000000000000000000000000000000000000000000000000000083610a4b565b6103957f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006108ad565b60208301525061076c565b6106e16106d66106af7f0000000000000000000000000000000000000000000000000000000000000000846080015161090790919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000090610a4b565b6040830151906108ad565b604082015260808101516107669061073f907f000000000000000000000000000000000000000000000000000000000000000090610587907f0000000000000000000000000000000000000000000000000000000000000000610a4b565b7f0000000000000000000000000000000000000000000000000000000000000000906108ad565b60208201525b61079f61077b61271087610862565b61079983608001516107938c8c87602001518d610b0c565b90610a4b565b90610b73565b606082018190526040820151602090920151909b919a5098509650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000090565b6b033b2e3c9fd0803ce800000090565b60006108a483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c10565b90505b92915050565b6000828201838110156108a4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080518082019091526002815261035360f41b6020820152600090826109ac5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610971578181015183820152602001610959565b50505050905090810190601f16801561099e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce8000000821904851115610a285760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b5082816b033b2e3c9fd0803ce800000086020181610a4257fe5b04949350505050565b6000821580610a58575081155b15610a65575060006108a7565b816b019d971e4fe8401e740000001981610a7b57fe5b0483111560405180604001604052806002815260200161068760f31b81525090610ae65760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b506b033b2e3c9fd0803ce80000006002815b048385020181610b0457fe5b049392505050565b600080610b1986866108ad565b905080610b2a576000915050610b6b565b6000610b398561079388610c6a565b90506000610b4a856107938a610c6a565b90506000610b64610b5a85610c6a565b61058785856108ad565b9450505050505b949350505050565b6000821580610b80575081155b15610b8d575060006108a7565b816113881981610b9957fe5b0483111560405180604001604052806002815260200161068760f31b81525090610c045760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b50612710600281610af8565b60008184841115610c625760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b505050900390565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b81525090610ce15760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b5092915050565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160008152509056fea26469706673582212202de93b4e5bd8eff563a6594cebe41ba1046984974b817cc22176094a2c3682bf64736f6c634300060c0033a26469706673582212202032c5799cd92bd12d91fe7a975302825b204aa5bc23845e97850203bbc6b2c464736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x66 JUMPI DUP1 PUSH4 0x9DD8AAD5 EQ PUSH2 0x84 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x97 JUMPI DUP1 PUSH4 0xFC123602 EQ PUSH2 0xAA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0xBD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x6E PUSH2 0x145 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7B SWAP2 SWAP1 PUSH2 0x786 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x64 PUSH2 0x92 CALLDATASIZE PUSH1 0x4 PUSH2 0x6FE JUMP JUMPDEST PUSH2 0x154 JUMP JUMPDEST PUSH2 0x64 PUSH2 0xA5 CALLDATASIZE PUSH1 0x4 PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x3DA JUMP JUMPDEST PUSH2 0x64 PUSH2 0xB8 CALLDATASIZE PUSH1 0x4 PUSH2 0x73E JUMP JUMPDEST PUSH2 0x490 JUMP JUMPDEST PUSH2 0xC5 PUSH2 0x666 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xFB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF2 SWAP1 PUSH2 0x88F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x15C PUSH2 0x666 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x189 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF2 SWAP1 PUSH2 0x88F JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3D4 JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7C4E560B DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x1BB JUMPI INVALID JUMPDEST PUSH2 0x1D1 SWAP3 PUSH1 0x20 PUSH1 0xE0 SWAP1 SWAP3 MUL ADD SWAP1 DUP2 ADD SWAP2 POP PUSH2 0x6D0 JUMP JUMPDEST DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x1DD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xE0 MUL ADD PUSH1 0x20 ADD CALLDATALOAD DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x1F3 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xE0 MUL ADD PUSH1 0x40 ADD CALLDATALOAD DUP9 DUP9 DUP8 DUP2 DUP2 LT PUSH2 0x209 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xE0 MUL ADD PUSH1 0x60 ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x232 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x7E8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x260 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP4 DUP4 DUP3 DUP2 DUP2 LT PUSH2 0x270 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xE0 MUL ADD PUSH1 0xC0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x288 SWAP2 SWAP1 PUSH2 0x766 JUMP JUMPDEST ISZERO PUSH2 0x332 JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xEEDE87C1 DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x2A8 JUMPI INVALID JUMPDEST PUSH2 0x2BE SWAP3 PUSH1 0x20 PUSH1 0xE0 SWAP1 SWAP3 MUL ADD SWAP1 DUP2 ADD SWAP2 POP PUSH2 0x6D0 JUMP JUMPDEST DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x2CA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xE0 MUL ADD PUSH1 0xA0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x766 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FF SWAP3 SWAP2 SWAP1 PUSH2 0x7B4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4B4E6753 DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x34D JUMPI INVALID JUMPDEST PUSH2 0x363 SWAP3 PUSH1 0x20 PUSH1 0xE0 SWAP1 SWAP3 MUL ADD SWAP1 DUP2 ADD SWAP2 POP PUSH2 0x6D0 JUMP JUMPDEST DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x36F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xE0 MUL ADD PUSH1 0x80 ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x396 SWAP3 SWAP2 SWAP1 PUSH2 0x7CF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3C4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0x198 SWAP1 POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x666 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x40F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF2 SWAP1 PUSH2 0x88F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x435 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF2 SWAP1 PUSH2 0x849 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x498 PUSH2 0x666 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x4C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF2 SWAP1 PUSH2 0x88F JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x661 JUMPI PUSH32 0x1C1768AAB1796270C7034DC781C2951065E6AFB7A946269746521002443B8EA4 PUSH1 0x40 MLOAD PUSH2 0x4FD SWAP1 PUSH2 0x66A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x519 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0x532 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xE0 MUL ADD PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x6 DUP2 LT PUSH2 0x547 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD DUP7 DUP7 DUP7 DUP2 DUP2 LT PUSH2 0x558 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xE0 MUL ADD PUSH1 0x20 ADD PUSH1 0x1 PUSH1 0x6 DUP2 LT PUSH2 0x56D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD DUP8 DUP8 DUP8 DUP2 DUP2 LT PUSH2 0x57E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xE0 MUL ADD PUSH1 0x20 ADD PUSH1 0x2 PUSH1 0x6 DUP2 LT PUSH2 0x593 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP9 DUP2 DUP2 LT PUSH2 0x5A4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xE0 MUL ADD PUSH1 0x20 ADD PUSH1 0x3 PUSH1 0x6 DUP2 LT PUSH2 0x5B9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD DUP10 DUP10 DUP10 DUP2 DUP2 LT PUSH2 0x5CA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xE0 MUL ADD PUSH1 0x20 ADD PUSH1 0x4 PUSH1 0x6 DUP2 LT PUSH2 0x5DF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD DUP11 DUP11 DUP11 DUP2 DUP2 LT PUSH2 0x5F0 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xE0 MUL ADD PUSH1 0x20 ADD PUSH1 0x5 PUSH1 0x6 DUP2 LT PUSH2 0x605 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD PUSH2 0x616 SWAP1 PUSH2 0x678 JUMP JUMPDEST PUSH2 0x626 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x80E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x642 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x651 SWAP3 SWAP2 SWAP1 PUSH2 0x79A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x1 ADD PUSH2 0x4C8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x2962 DUP1 PUSH3 0x8C5 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0xFBB DUP1 PUSH3 0x3227 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x697 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6AE JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 PUSH1 0xE0 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x6C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6E1 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x6F7 JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x710 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x726 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x732 DUP6 DUP3 DUP7 ADD PUSH2 0x686 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x750 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x726 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x777 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x6F7 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 SWAP1 SWAP8 AND DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x40 DUP7 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x40 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xB DUP1 DUP3 MSTORE PUSH11 0x105513D2D15397D2535413 PUSH1 0xAA SHL PUSH1 0x20 DUP1 DUP5 ADD DUP3 DUP2 MSTORE DUP6 MLOAD DUP1 DUP8 ADD SWAP1 SWAP7 MSTORE SWAP3 DUP6 MSTORE DUP5 ADD MSTORE DUP2 MLOAD SWAP2 SWAP3 SWAP2 PUSH1 0x0 SWAP2 PUSH3 0x60 SWAP2 PUSH1 0x37 SWAP2 SWAP1 PUSH3 0x94 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0x76 SWAP1 PUSH1 0x38 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x94 JUMP JUMPDEST POP PUSH1 0x39 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0x130 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0xD7 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x107 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x107 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x107 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xEA JUMP JUMPDEST POP PUSH3 0x115 SWAP3 SWAP2 POP PUSH3 0x119 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x115 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x11A JUMP JUMPDEST PUSH2 0x2822 DUP1 PUSH3 0x140 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7535D246 GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xAE167335 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x6AA JUMPI DUP1 PUSH4 0xD7020D0A EQ PUSH2 0x6FB JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x737 JUMPI DUP1 PUSH4 0xF866C319 EQ PUSH2 0x765 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0xAE167335 EQ PUSH2 0x66C JUMPI DUP1 PUSH4 0xB16A19DE EQ PUSH2 0x674 JUMPI DUP1 PUSH4 0xB1BF962D EQ PUSH2 0x67C JUMPI DUP1 PUSH4 0xB9844D8D EQ PUSH2 0x684 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x88DD91A1 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x88DD91A1 EQ PUSH2 0x5E0 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x60C JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x614 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x640 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x7535D246 EQ PUSH2 0x589 JUMPI DUP1 PUSH4 0x75D26413 EQ PUSH2 0x5AD JUMPI DUP1 PUSH4 0x78160376 EQ PUSH2 0x5B5 JUMPI DUP1 PUSH4 0x7DF5BD3B EQ PUSH2 0x5BD JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x1DA24F3E GT PUSH2 0x187 JUMPI DUP1 PUSH4 0x3644E515 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x503 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x50B JUMPI DUP1 PUSH4 0x4EFECAA5 EQ PUSH2 0x537 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x563 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x1DA24F3E EQ PUSH2 0x481 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x4A7 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x4DD JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x4E5 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0xBD7AD3B GT PUSH2 0x1C3 JUMPI DUP1 PUSH4 0xBD7AD3B EQ PUSH2 0x2E6 JUMPI DUP1 PUSH4 0x156E29F6 EQ PUSH2 0x300 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x332 JUMPI DUP1 PUSH4 0x183FB413 EQ PUSH2 0x33A JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x267 JUMPI DUP1 PUSH4 0xAFBCDC9 EQ PUSH2 0x2A7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F2 PUSH2 0x79B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x22C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x214 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x259 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x27D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x832 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x850 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x2EE PUSH2 0x86D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x316 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x872 JUMP JUMPDEST PUSH2 0x2EE PUSH2 0xA40 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x351 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP4 AND SWAP3 PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP2 DUP2 ADD SWAP1 PUSH1 0xC0 DUP2 ADD PUSH1 0xA0 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x39C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x400 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x452 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x474 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xAEA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x497 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE67 JUMP JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xE72 JUMP JUMPDEST PUSH2 0x2EE PUSH2 0xF32 JUMP JUMPDEST PUSH2 0x4ED PUSH2 0xF56 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2EE PUSH2 0xF5F JUMP JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF65 JUMP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x54D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xFB3 JUMP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1059 JUMP JUMPDEST PUSH2 0x591 PUSH2 0x10E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x591 PUSH2 0x10F7 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x1106 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1123 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x12D4 JUMP JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x62A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1335 JUMP JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x139D JUMP JUMPDEST PUSH2 0x591 PUSH2 0x13FA JUMP JUMPDEST PUSH2 0x591 PUSH2 0x1409 JUMP JUMPDEST PUSH2 0x2EE PUSH2 0x1418 JUMP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x69A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1422 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x6C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1434 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x711 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x167B JUMP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x74D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1820 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x77B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x184B JUMP JUMPDEST PUSH1 0x37 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x827 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7FC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x827 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x80A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x846 PUSH2 0x83F PUSH2 0x191C JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1920 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x85C DUP4 PUSH2 0x1A0C JUMP JUMPDEST PUSH2 0x864 PUSH2 0x1A27 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x889 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x937 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x929 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0x943 DUP6 PUSH2 0x1A0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x951 DUP6 DUP6 PUSH2 0x1A2D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1A9B PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0x9B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH2 0x9C4 DUP7 DUP3 PUSH2 0x1B34 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP ISZERO SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA4B PUSH2 0x1A27 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xA5C JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x82F JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x3E SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0xAE4 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xD15E0053 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAC5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xADB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 SWAP1 PUSH2 0x1C85 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAF4 PUSH2 0x1D43 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 PUSH2 0xB0B JUMPI POP PUSH2 0xB0B PUSH2 0x1D48 JUMP JUMPDEST DUP1 PUSH2 0xB17 JUMPI POP PUSH1 0x0 SLOAD DUP2 GT JUMPDEST PUSH2 0xB52 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x26E6 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0xB71 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 OR SWAP1 SSTORE PUSH1 0x0 DUP3 SWAP1 SSTORE JUMPDEST PUSH1 0x0 CHAINID SWAP1 POP PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP10 DUP10 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP4 ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x3B DUP2 SWAP1 SSTORE POP PUSH2 0xC69 DUP10 DUP10 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1D4E SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xCA8 DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1D61 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xCB1 DUP11 PUSH2 0x1D74 JUMP JUMPDEST DUP14 PUSH1 0x3C PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP13 PUSH1 0x3D PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP12 PUSH1 0x3E PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP11 PUSH1 0x3F PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xB19E051F8AF41150CCCCB3FC2C2D8D15F4A4CF434F32A559BA75FE73D6EEA20B DUP16 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP1 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP11 DUP11 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD DUP6 DUP2 SUB DUP5 MSTORE DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 POP DUP9 DUP9 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD DUP6 DUP2 SUB DUP4 MSTORE DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 POP DUP7 DUP7 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP15 POP SWAP1 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP LOG3 POP DUP1 ISZERO PUSH2 0xE58 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x84A DUP3 PUSH2 0x1A0C JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE7F DUP5 DUP5 DUP5 PUSH2 0x1D8A JUMP JUMPDEST PUSH2 0xEEF DUP5 PUSH2 0xE8B PUSH2 0x191C JUMP JUMPDEST PUSH2 0xEEA DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x26BE PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0xEC9 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH2 0x1920 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x39 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x3B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x846 PUSH2 0xF72 PUSH2 0x191C JUMP JUMPDEST DUP5 PUSH2 0xEEA DUP6 PUSH1 0x35 PUSH1 0x0 PUSH2 0xF83 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFCA PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x103B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH1 0x3E SLOAD PUSH2 0x1053 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH2 0x1E52 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x3E SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 PUSH2 0x84A SWAP4 AND SWAP2 PUSH4 0xD15E0053 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10C1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x10E2 DUP5 PUSH2 0x1A0C JUMP JUMPDEST SWAP1 PUSH2 0x1C85 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1101 PUSH2 0x1EA4 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1137 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x11A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP DUP2 PUSH2 0x11B3 JUMPI PUSH2 0x1246 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11D2 DUP2 PUSH2 0x11CD DUP6 DUP6 PUSH2 0x1A2D JUMP JUMPDEST PUSH2 0x1B34 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH1 0x0 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x125E PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x12CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x38 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x827 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7FC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x827 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x846 PUSH2 0x1342 PUSH2 0x191C JUMP JUMPDEST DUP5 PUSH2 0xEEA DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x27C8 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x35 PUSH1 0x0 PUSH2 0x136C PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13B1 PUSH2 0x13AA PUSH2 0x191C JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1D8A JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13C3 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1101 PUSH2 0x1A27 JUMP JUMPDEST PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x147F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x24A72B20A624A22FA7ABA722A9 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x14C9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x24A72B20A624A22FA2AC2824A920AA24A7A7 PUSH1 0x71 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x3B SLOAD DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP13 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP12 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP1 DUP7 ADD DUP12 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP8 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP7 ADD DUP4 MSTORE DUP1 MLOAD SWAP1 DUP5 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH2 0x100 DUP8 ADD MSTORE PUSH2 0x102 DUP7 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP7 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP6 ADD DUP1 DUP4 MSTORE DUP7 MLOAD SWAP7 DUP5 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP4 SWAP1 SWAP6 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP4 SWAP1 MSTORE PUSH1 0xFF DUP9 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP8 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP7 SWAP1 MSTORE MLOAD SWAP2 SWAP3 PUSH1 0x1 SWAP3 PUSH2 0x1E2 DUP1 DUP4 ADD SWAP4 SWAP3 PUSH1 0x1F NOT DUP4 ADD SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15DE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1641 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x494E56414C49445F5349474E4154555245 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x164C DUP3 PUSH1 0x1 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x1670 DUP10 DUP10 DUP10 PUSH2 0x1920 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x168F PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1700 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x170D DUP4 DUP4 PUSH2 0x1A2D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x6A7 PUSH1 0xF3 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0x1775 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH2 0x1780 DUP6 DUP3 PUSH2 0x1EB3 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH2 0x1797 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 PUSH2 0x1E52 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x5D624AA9C148153AB3446C1B154F660EE7701E549FE9B62DAB7171B1C80E6FA2 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x185F PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x18D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH2 0x18DE DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x1F57 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1965 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x277A PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x19AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2676 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x36 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x1A95 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x1B11 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x1B2B JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1B8F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1B9B PUSH1 0x0 DUP4 DUP4 PUSH2 0x12CF JUMP JUMPDEST PUSH1 0x36 SLOAD PUSH2 0x1BA8 DUP2 DUP4 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x36 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1BCE DUP2 DUP5 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1BF2 PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1C7F JUMPI PUSH2 0x1C08 PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP6 DUP5 DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C7A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x1C92 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x1C9F JUMPI POP PUSH1 0x0 PUSH2 0x84A JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x1CB5 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1D20 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP POP PUSH12 0x33B2E3C9FD0803CE8000000 SWAP2 MUL PUSH12 0x19D971E4FE8401E74000000 ADD DIV SWAP1 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1246 SWAP1 PUSH1 0x37 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x259D JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1246 SWAP1 PUSH1 0x38 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x259D JUMP JUMPDEST PUSH1 0x39 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x12CF DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1F57 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1DE9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1E4B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x12CF SWAP1 DUP5 SWAP1 PUSH2 0x2100 JUMP JUMPDEST PUSH1 0x3F SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1EF8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2734 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1F04 DUP3 PUSH1 0x0 DUP4 PUSH2 0x12CF JUMP JUMPDEST PUSH1 0x36 SLOAD PUSH2 0x1F11 DUP2 DUP4 PUSH2 0x22B8 JUMP JUMPDEST PUSH1 0x36 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x22 DUP1 DUP5 MSTORE SWAP1 SWAP3 PUSH2 0x1BCE SWAP3 DUP7 SWAP3 SWAP1 PUSH2 0x2654 SWAP1 DUP4 ADD CODECOPY DUP4 SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP4 SWAP1 SWAP3 AND SWAP2 PUSH1 0x0 SWAP2 DUP4 SWAP2 PUSH4 0xD15E0053 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FC3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1FD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x1FEC DUP3 PUSH2 0x10E2 DUP11 PUSH2 0x1A0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1FFD DUP4 PUSH2 0x10E2 DUP11 PUSH2 0x1A0C JUMP JUMPDEST SWAP1 POP PUSH2 0x2013 DUP10 DUP10 PUSH2 0x200E DUP11 DUP8 PUSH2 0x1A2D JUMP JUMPDEST PUSH2 0x22FA JUMP JUMPDEST DUP6 ISZERO PUSH2 0x20A2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH4 0xD5ED3933 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP11 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP11 SWAP1 MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0xA4 DUP3 ADD DUP5 SWAP1 MSTORE SWAP2 MLOAD SWAP2 DUP7 AND SWAP2 PUSH4 0xD5ED3933 SWAP2 PUSH1 0xC4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2089 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x209D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4BECCB90F994C31ACED7A23B5611020728A23D8EC5CDDD1A3E9D97B96FDA8666 DUP10 DUP7 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2112 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2561 JUMP JUMPDEST PUSH2 0x2163 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x21A1 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2182 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2203 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2208 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x225F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1C7F JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x227B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1C7F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x279E PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1E4B DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x233F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2755 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2384 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2631 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x238F DUP4 DUP4 DUP4 PUSH2 0x12CF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x34 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH2 0x23DE DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2698 PUSH1 0x26 SWAP2 CODECOPY DUP4 SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP6 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x240D DUP2 DUP5 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x2431 PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x255A JUMPI PUSH1 0x36 SLOAD PUSH2 0x244A PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP8 DUP4 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2558 JUMPI PUSH2 0x24E1 PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP7 DUP4 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x253F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2553 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2595 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x25DE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x260B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x260B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x260B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x25F0 JUMP JUMPDEST POP PUSH2 0x2617 SWAP3 SWAP2 POP PUSH2 0x261B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2617 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x261C JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E6365436F6E74726163742069 PUSH15 0x7374616E63652068617320616C7265 PUSH2 0x6479 KECCAK256 PUSH3 0x65656E KECCAK256 PUSH10 0x6E697469616C697A6564 0xDD CALLCODE MSTORE 0xAD SHL 0xE2 0xC8 SWAP12 PUSH10 0xC2B068FC378DAA952BA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A207472616E7366657220 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 MSTORE8 PUSH2 0x6665 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x75636365656445524332303A2064656372656173 PUSH6 0x6420616C6C6F PUSH24 0x616E63652062656C6F77207A65726FA26469706673582212 KECCAK256 CALLDATACOPY 0x29 0x23 0x2B DUP2 0x49 DUP16 EXP 0xEA 0xBA 0xB5 PUSH24 0x14B9DAE0A68FBCD6FC72E75051FC236FE4DC42CE64736F6C PUSH4 0x4300060C STOP CALLER PUSH2 0x180 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xFBB CODESIZE SUB DUP1 PUSH2 0xFBB DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x80 DUP1 DUP8 ADD MLOAD PUSH1 0xA0 DUP9 ADD MLOAD PUSH1 0xC0 SWAP1 SWAP9 ADD MLOAD SWAP2 DUP6 SWAP1 MSTORE SWAP6 SWAP7 SWAP4 SWAP6 SWAP3 SWAP5 SWAP2 SWAP4 SWAP2 PUSH2 0x8E SWAP1 DUP8 SWAP1 PUSH2 0x7C SWAP1 PUSH2 0x852 PUSH2 0xC3 DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST PUSH2 0xD3 PUSH1 0x20 SHL PUSH2 0x862 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0xA0 MSTORE PUSH1 0x60 SWAP7 SWAP1 SWAP7 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xC0 MSTORE PUSH1 0xE0 SWAP4 SWAP1 SWAP4 MSTORE PUSH2 0x100 SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x120 MSTORE PUSH2 0x140 MSTORE POP PUSH2 0x160 MSTORE PUSH2 0x1B9 JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11B DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x122 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x176 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x15E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1A3 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0xD4D PUSH2 0x26E PUSH1 0x0 CODECOPY DUP1 PUSH2 0x597 MSTORE DUP1 PUSH2 0x830 MSTORE POP DUP1 PUSH2 0x1DD MSTORE DUP1 PUSH2 0x5C7 MSTORE DUP1 PUSH2 0x6B1 MSTORE POP DUP1 PUSH2 0x2DF MSTORE DUP1 PUSH2 0x32C MSTORE DUP1 PUSH2 0x5F8 MSTORE POP DUP1 PUSH2 0x303 MSTORE DUP1 PUSH2 0x371 MSTORE DUP1 PUSH2 0x643 MSTORE DUP1 PUSH2 0x71B MSTORE POP DUP1 PUSH2 0x350 MSTORE DUP1 PUSH2 0x622 MSTORE DUP1 PUSH2 0x741 MSTORE DUP1 PUSH2 0x7E8 MSTORE POP DUP1 PUSH2 0x400 MSTORE DUP1 PUSH2 0x80C MSTORE POP DUP1 PUSH2 0x201 MSTORE DUP1 PUSH2 0x531 MSTORE POP DUP1 PUSH2 0x505 MSTORE DUP1 PUSH2 0x555 MSTORE DUP1 PUSH2 0x67D MSTORE DUP1 PUSH2 0x6F5 MSTORE DUP1 PUSH2 0x7C4 MSTORE POP PUSH2 0xD4D PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x80031E37 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x80031E37 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0x9584DF28 EQ PUSH2 0x15B JUMPI DUP1 PUSH4 0xA15F30AC EQ PUSH2 0x19F JUMPI DUP1 PUSH4 0xB2589544 EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0xC72C4D10 EQ PUSH2 0x1AF JUMPI DUP1 PUSH4 0xCCAB01A3 EQ PUSH2 0x1D3 JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0xBDF953F EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x17319873 EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0x29DB497D EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0x65614F81 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x7B832F58 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB6 PUSH2 0x1DB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB6 PUSH2 0x1FF JUMP JUMPDEST PUSH2 0x125 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x223 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB6 PUSH2 0x2DD JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x301 JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x325 JUMP JUMPDEST PUSH2 0x125 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x171 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x3A0 JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x7C2 JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x7E6 JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x80A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB6 PUSH2 0x82E JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP13 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x28A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x2B8 DUP10 PUSH2 0x2B2 DUP4 DUP14 PUSH2 0x8AD JUMP JUMPDEST SWAP1 PUSH2 0x862 JUMP JUMPDEST SWAP1 POP PUSH2 0x2C8 DUP13 DUP3 DUP11 DUP11 DUP11 DUP11 PUSH2 0x3A0 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP9 POP SWAP9 POP SWAP9 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39B PUSH32 0x0 PUSH2 0x395 PUSH32 0x0 PUSH32 0x0 PUSH2 0x8AD JUMP JUMPDEST SWAP1 PUSH2 0x8AD JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3AD PUSH2 0xCE8 JUMP JUMPDEST PUSH2 0x3B7 DUP9 DUP9 PUSH2 0x8AD JUMP JUMPDEST DUP1 DUP3 MSTORE PUSH1 0x0 PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP4 ADD MSTORE ISZERO PUSH2 0x3F2 JUMPI DUP1 MLOAD PUSH2 0x3ED SWAP1 PUSH2 0x3E5 SWAP1 DUP12 SWAP1 PUSH2 0x8AD JUMP JUMPDEST DUP3 MLOAD SWAP1 PUSH2 0x907 JUMP JUMPDEST PUSH2 0x3F5 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 PUSH1 0x80 ADD DUP2 DUP2 MSTORE POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3618ABBA PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x457 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x46B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xBB85C0BB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xBB85C0BB SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH32 0x0 LT ISZERO PUSH2 0x672 JUMPI PUSH1 0x0 PUSH2 0x58D PUSH32 0x0 PUSH2 0x587 PUSH32 0x0 DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0x862 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x907 JUMP JUMPDEST SWAP1 POP PUSH2 0x5EB PUSH2 0x5BC PUSH32 0x0 DUP4 PUSH2 0xA4B JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x395 SWAP1 PUSH32 0x0 PUSH2 0x8AD JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x667 PUSH2 0x61D PUSH32 0x0 DUP4 PUSH2 0xA4B JUMP JUMPDEST PUSH2 0x395 PUSH32 0x0 PUSH32 0x0 PUSH2 0x8AD JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH2 0x76C JUMP JUMPDEST PUSH2 0x6E1 PUSH2 0x6D6 PUSH2 0x6AF PUSH32 0x0 DUP5 PUSH1 0x80 ADD MLOAD PUSH2 0x907 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH32 0x0 SWAP1 PUSH2 0xA4B JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MLOAD SWAP1 PUSH2 0x8AD JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH2 0x766 SWAP1 PUSH2 0x73F SWAP1 PUSH32 0x0 SWAP1 PUSH2 0x587 SWAP1 PUSH32 0x0 PUSH2 0xA4B JUMP JUMPDEST PUSH32 0x0 SWAP1 PUSH2 0x8AD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST PUSH2 0x79F PUSH2 0x77B PUSH2 0x2710 DUP8 PUSH2 0x862 JUMP JUMPDEST PUSH2 0x799 DUP4 PUSH1 0x80 ADD MLOAD PUSH2 0x793 DUP13 DUP13 DUP8 PUSH1 0x20 ADD MLOAD DUP14 PUSH2 0xB0C JUMP JUMPDEST SWAP1 PUSH2 0xA4B JUMP JUMPDEST SWAP1 PUSH2 0xB73 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x20 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP12 SWAP2 SWAP11 POP SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8A4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0xC10 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x8A4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x9AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x971 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x959 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x99E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0xA28 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x971 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x959 JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0xA42 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0xA58 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0xA65 JUMPI POP PUSH1 0x0 PUSH2 0x8A7 JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0xA7B JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xAE6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x971 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x959 JUMP JUMPDEST POP PUSH12 0x33B2E3C9FD0803CE8000000 PUSH1 0x2 DUP2 JUMPDEST DIV DUP4 DUP6 MUL ADD DUP2 PUSH2 0xB04 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB19 DUP7 DUP7 PUSH2 0x8AD JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xB2A JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xB6B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB39 DUP6 PUSH2 0x793 DUP9 PUSH2 0xC6A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB4A DUP6 PUSH2 0x793 DUP11 PUSH2 0xC6A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB64 PUSH2 0xB5A DUP6 PUSH2 0xC6A JUMP JUMPDEST PUSH2 0x587 DUP6 DUP6 PUSH2 0x8AD JUMP JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0xB80 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0xB8D JUMPI POP PUSH1 0x0 PUSH2 0x8A7 JUMP JUMPDEST DUP2 PUSH2 0x1388 NOT DUP2 PUSH2 0xB99 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xC04 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x971 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x959 JUMP JUMPDEST POP PUSH2 0x2710 PUSH1 0x2 DUP2 PUSH2 0xAF8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xC62 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x971 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x959 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH4 0x3B9ACA00 DUP3 DUP2 MUL SWAP1 DUP4 SWAP1 DUP3 DIV EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xCE1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x971 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x959 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2D 0xE9 EXTCODESIZE 0x4E JUMPDEST 0xD8 0xEF CREATE2 PUSH4 0xA6594CEB 0xE4 SHL LOG1 DIV PUSH10 0x84974B817CC22176094A 0x2C CALLDATASIZE DUP3 0xBF PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 KECCAK256 ORIGIN 0xC5 PUSH26 0x9CD92BD12D91FE7A975302825B204AA5BC23845E97850203BBC6 0xB2 0xC4 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "666:2075:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1610:135:11;;;:::i;:::-;;1027:71;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2009:730:21;;;;;;:::i;:::-;;:::i;1884:226:11:-;;;;;;:::i;:::-;;:::i;1411:594:21:-;;;;;;:::i;:::-;;:::i;1610:135:11:-;1223:12;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;-1:-1:-1;;;1205:67:11;;;;;;;:::i;:::-;;;;;;;;;1712:1:::1;1696:6:::0;;1675:40:::1;::::0;-1:-1:-1;;;;;1696:6:11;;::::1;::::0;1675:40:::1;::::0;1712:1;;1675:40:::1;1738:1;1721:19:::0;;-1:-1:-1;;;;;;1721:19:11::1;::::0;;1610:135::o;1027:71::-;1065:7;1087:6;-1:-1:-1;;;;;1087:6:11;1027:71;:::o;2009:730:21:-;1223:12:11;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;-1:-1:-1;;;1205:67:11;;;;;;;:::i;:::-;2170:16:21::1;::::0;-1:-1:-1;;;;;2170:16:21::1;2107:36;2193:542;2213:22:::0;;::::1;2193:542;;;2250:12;-1:-1:-1::0;;;;;2250:41:21::1;;2301:11;;2313:1;2301:14;;;;;;;:20;::::0;::::1;:14;::::0;;::::1;;:20:::0;;::::1;::::0;-1:-1:-1;2301:20:21::1;:::i;:::-;2331:11;;2343:1;2331:14;;;;;;;;;;;;:22;;;2363:11;;2375:1;2363:14;;;;;;;;;;;;:35;;;2408:11;;2420:1;2408:14;;;;;;;;;;;;:31;;;2250:197;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2460:11;;2472:1;2460:14;;;;;;;;;;;;:31;;;;;;;;;;:::i;:::-;2456:184;;;2503:12;-1:-1:-1::0;;;;;2503:37:21::1;;2552:11;;2564:1;2552:14;;;;;;;:20;::::0;::::1;:14;::::0;;::::1;;:20:::0;;::::1;::::0;-1:-1:-1;2552:20:21::1;:::i;:::-;2584:11;;2596:1;2584:14;;;;;;;;;;;;:37;;;;;;;;;;:::i;:::-;2503:128;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2456:184;2647:12;-1:-1:-1::0;;;;;2647:29:21::1;;2677:11;;2689:1;2677:14;;;;;;;:20;::::0;::::1;:14;::::0;;::::1;;:20:::0;;::::1;::::0;-1:-1:-1;2677:20:21::1;:::i;:::-;2699:11;;2711:1;2699:14;;;;;;;;;;;;:28;;;2647:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2237:3:21::1;::::0;;::::1;::::0;-1:-1:-1;2193:542:21::1;::::0;-1:-1:-1;2193:542:21::1;;;1278:1:11;2009:730:21::0;;:::o;1884:226:11:-;1223:12;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;-1:-1:-1;;;1205:67:11;;;;;;;:::i;:::-;-1:-1:-1;;;;;1968:22:11;::::1;1960:73;;;;-1:-1:-1::0;;;1960:73:11::1;;;;;;;:::i;:::-;2065:6;::::0;;2044:38:::1;::::0;-1:-1:-1;;;;;2044:38:11;;::::1;::::0;2065:6;::::1;::::0;2044:38:::1;::::0;::::1;2088:6;:17:::0;;-1:-1:-1;;;;;;2088:17:11::1;-1:-1:-1::0;;;;;2088:17:11;;;::::1;::::0;;;::::1;::::0;;1884:226::o;1411:594:21:-;1223:12:11;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;-1:-1:-1;;;1205:67:11;;;;;;;:::i;:::-;1509:9:21::1;1504:497;1524:22:::0;;::::1;1504:497;;;1566:428;1601:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;1724:17:21::1;::::0;-1:-1:-1;;;;;1724:17:21::1;1756:11:::0;;1768:1;1756:14;;::::1;;;;;;;;;;:20;;1777:1;1756:23;;;;;;;;;;;1793:11;;1805:1;1793:14;;;;;;;;;;;;:20;;1814:1;1793:23;;;;;;;;;;;1830:11;;1842:1;1830:14;;;;;;;;;;;;:20;;1851:1;1830:23;;;;;;;;;;;1867:11;;1879:1;1867:14;;;;;;;;;;;;:20;;1888:1;1867:23;;;;;;;;;;;1904:11;;1916:1;1904:14;;;;;;;;;;;;:20;;1925:1;1904:23;;;;;;;;;;;1941:11;;1953:1;1941:14;;;;;;;;;;;;:20;;1962:1;1941:23;;;;;;;;;;;1643:333;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;1566:428;;;;;;;:::i;:::-;;;;;;;;1548:3;;1504:497;;;;1411:594:::0;;:::o;587:98:7:-;670:10;587:98;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;203:393::-;;;374:3;367:4;359:6;355:17;351:27;341:2;;-1:-1;;382:12;341:2;-1:-1;412:20;;452:18;441:30;;438:2;;;-1:-1;;474:12;438:2;518:4;510:6;506:17;494:29;;569:3;518:4;561;553:6;549:17;510:6;535:32;;532:41;529:2;;;586:1;;576:12;529:2;334:262;;;;;:::o;1193:241::-;;1297:2;1285:9;1276:7;1272:23;1268:32;1265:2;;;-1:-1;;1303:12;1265:2;72:20;;-1:-1;;;;;7981:54;;8542:35;;8532:2;;-1:-1;;8581:12;8532:2;1355:63;1259:175;-1:-1;;;1259:175::o;1441:479::-;;;1621:2;1609:9;1600:7;1596:23;1592:32;1589:2;;;-1:-1;;1627:12;1589:2;1685:17;1672:31;1723:18;1715:6;1712:30;1709:2;;;-1:-1;;1745:12;1709:2;1783:121;1896:7;1887:6;1876:9;1872:22;1783:121;:::i;:::-;1765:139;;;;-1:-1;1583:337;-1:-1;;;;1583:337::o;1927:475::-;;;2105:2;2093:9;2084:7;2080:23;2076:32;2073:2;;;-1:-1;;2111:12;2073:2;2169:17;2156:31;2207:18;2199:6;2196:30;2193:2;;;-1:-1;;2229:12;2409:235;;2510:2;2498:9;2489:7;2485:23;2481:32;2478:2;;;-1:-1;;2516:12;2478:2;1139:6;1126:20;8688:5;7893:13;7886:21;8666:5;8663:32;8653:2;;-1:-1;;8699:12;3936:222;-1:-1;;;;;7981:54;;;;2722:37;;4063:2;4048:18;;4034:124::o;4165:333::-;-1:-1;;;;;7981:54;;;2722:37;;7981:54;;4484:2;4469:18;;2722:37;4320:2;4305:18;;4291:207::o;4505:321::-;-1:-1;;;;;7981:54;;;;2722:37;;7893:13;7886:21;4812:2;4797:18;;2836:34;4654:2;4639:18;;4625:201::o;4833:333::-;-1:-1;;;;;7981:54;;;;2722:37;;5152:2;5137:18;;3887:37;4988:2;4973:18;;4959:207::o;5173:556::-;-1:-1;;;;;7981:54;;;;2722:37;;5549:2;5534:18;;3887:37;;;;5632:2;5617:18;;3887:37;5715:2;5700:18;;3887:37;5384:3;5369:19;;5355:374::o;5736:968::-;-1:-1;;;;;7981:54;;;;2991:88;;6272:2;6257:18;;3887:37;;;;6355:2;6340:18;;3887:37;;;;6438:2;6423:18;;3887:37;;;;6521:3;6506:19;;3887:37;7992:42;6590:19;;3887:37;6689:3;6674:19;;3887:37;6069:3;6054:19;;6040:664::o;6711:416::-;6911:2;6925:47;;;3316:2;6896:18;;;7661:19;3352:34;7701:14;;;3332:55;-1:-1;;;3407:12;;;3400:30;3449:12;;;6882:245::o;7134:416::-;7334:2;7348:47;;;7319:18;;;7661:19;3736:34;7701:14;;;3716:55;3790:12;;;7305:245::o"
            },
            "methodIdentifiers": {
              "configureReserves((address,uint256,uint256,uint256,uint256,bool,bool)[])": "9dd8aad5",
              "initDeployment((address,uint256[6])[])": "fc123602",
              "owner()": "8da5cb5b",
              "renounceOwnership()": "715018a6",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        }
      },
      "contracts/deployments/StableAndVariableTokensHelper.sol": {
        "StableAndVariableTokensHelper": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address payable",
                  "name": "_pool",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_addressesProvider",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "stableToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "variableToken",
                  "type": "address"
                }
              ],
              "name": "deployedContracts",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "tokens",
                  "type": "address[]"
                },
                {
                  "internalType": "string[]",
                  "name": "symbols",
                  "type": "string[]"
                }
              ],
              "name": "initDeployment",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "assets",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "rates",
                  "type": "uint256[]"
                },
                {
                  "internalType": "address",
                  "name": "oracle",
                  "type": "address"
                }
              ],
              "name": "setOracleBorrowRates",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "oracle",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "setOracleOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506040516141c43803806141c483398101604081905261002f916100b8565b60006100396100b4565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055610109565b3390565b600080604083850312156100ca578182fd5b82516100d5816100f1565b60208401519092506100e6816100f1565b809150509250929050565b6001600160a01b038116811461010657600080fd5b50565b6140ac806101186000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806354fe1c9414610067578063563b1cb31461007c578063715018a61461008f5780638da5cb5b14610097578063c2d30321146100b5578063f2fde38b146100c8575b600080fd5b61007a610075366004610680565b6100db565b005b61007a61008a366004610648565b610203565b61007a610361565b61009f6103e0565b6040516100ac919061076a565b60405180910390f35b61007a6100c33660046106e9565b6103ef565b61007a6100d6366004610609565b6104ec565b6100e36105a2565b6000546001600160a01b039081169116146101195760405162461bcd60e51b8152600401610110906107f7565b60405180910390fd5b8281146101385760405162461bcd60e51b8152600401610110906108bf565b6001546001600160a01b03166101605760405162461bcd60e51b81526004016101109061082c565b60005b838110156101fc577f1c1768aab1796270c7034dc781c2951065e6afb7a946269746521002443b8ea4604051610198906105a6565b604051809103906000f0801580156101b4573d6000803e3d6000fd5b506040516101c1906105b3565b604051809103906000f0801580156101dd573d6000803e3d6000fd5b506040516101ec92919061077e565b60405180910390a1600101610163565b5050505050565b61020b6105a2565b6000546001600160a01b039081169116146102385760405162461bcd60e51b8152600401610110906107f7565b6001600160a01b03811661025e5760405162461bcd60e51b815260040161011090610890565b306001600160a01b0316826001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102a157600080fd5b505afa1580156102b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d9919061062c565b6001600160a01b0316146102ff5760405162461bcd60e51b815260040161011090610863565b60405163f2fde38b60e01b81526001600160a01b0383169063f2fde38b9061032b90849060040161076a565b600060405180830381600087803b15801561034557600080fd5b505af1158015610359573d6000803e3d6000fd5b505050505050565b6103696105a2565b6000546001600160a01b039081169116146103965760405162461bcd60e51b8152600401610110906107f7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6103f76105a2565b6000546001600160a01b039081169116146104245760405162461bcd60e51b8152600401610110906107f7565b8382146104435760405162461bcd60e51b8152600401610110906108bf565b60005b8481101561035957816001600160a01b03166372eb293d87878481811061046957fe5b905060200201602081019061047e9190610609565b86868581811061048a57fe5b905060200201356040518363ffffffff1660e01b81526004016104ae929190610798565b600060405180830381600087803b1580156104c857600080fd5b505af11580156104dc573d6000803e3d6000fd5b5050600190920191506104469050565b6104f46105a2565b6000546001600160a01b039081169116146105215760405162461bcd60e51b8152600401610110906107f7565b6001600160a01b0381166105475760405162461bcd60e51b8152600401610110906107b1565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b611e648061090883390190565b61190b8061276c83390190565b60008083601f8401126105d1578182fd5b50813567ffffffffffffffff8111156105e8578182fd5b602083019150836020808302850101111561060257600080fd5b9250929050565b60006020828403121561061a578081fd5b8135610625816108ef565b9392505050565b60006020828403121561063d578081fd5b8151610625816108ef565b6000806040838503121561065a578081fd5b8235610665816108ef565b91506020830135610675816108ef565b809150509250929050565b60008060008060408587031215610695578182fd5b843567ffffffffffffffff808211156106ac578384fd5b6106b8888389016105c0565b909650945060208701359150808211156106d0578384fd5b506106dd878288016105c0565b95989497509550505050565b600080600080600060608688031215610700578081fd5b853567ffffffffffffffff80821115610717578283fd5b61072389838a016105c0565b9097509550602088013591508082111561073b578283fd5b50610748888289016105c0565b909450925050604086013561075c816108ef565b809150509295509295909350565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03929092168252602082015260400190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f506f6f6c2063616e206e6f74206265207a65726f206164647265737300000000604082015260600190565b6020808252601390820152723432b63832b91034b9903737ba1037bbb732b960691b604082015260600190565b6020808252601590820152746f776e65722063616e206e6f74206265207a65726f60581b604082015260600190565b602080825260169082015275082e4e4c2f2e640dcdee840e6c2daca40d8cadccee8d60531b604082015260600190565b6001600160a01b038116811461090457600080fd5b5056fe608060405260006006553480156200001657600080fd5b50604080518082018252600e8082526d111150951513d2d15397d253541360921b60208084018281528551808701909652928552840152815191929160009162000064916003919062000098565b5081516200007a90600490602085019062000098565b506005805460ff191660ff9290921691909117905550620001349050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000db57805160ff19168380011785556200010b565b828001600101855582156200010b579182015b828111156200010b578251825591602001919060010190620000ee565b50620001199291506200011d565b5090565b5b808211156200011957600081556001016200011e565b611d2080620001446000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806395d89b41116100f9578063c04a8a1011610097578063dd62ed3e11610071578063dd62ed3e146106ab578063e7484890146106d9578063e78c9b3b146106e1578063f731e9be14610707576101a9565b8063c04a8a10146104b0578063c222ec8a146104dc578063c634dfaa14610685576101a9565b8063a9059cbb116100d3578063a9059cbb14610438578063b16a19de14610464578063b3f1c93d1461046c578063b9a7b622146104a8576101a9565b806395d89b41146104025780639dc29fac1461040a578063a457c2d7146102d9576101a9565b80636bd76d241161016657806375d264131161014057806375d264131461037d578063797743381461038557806379ce6b8c146103ba57806390f6fcf2146103fa576101a9565b80636bd76d241461030557806370a08231146103335780637535d24614610359576101a9565b806306fdde03146101ae578063095ea7b31461022b57806318160ddd1461026b57806323b872dd14610285578063313ce567146102bb57806339509351146102d9575b600080fd5b6101b6610728565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f05781810151838201526020016101d8565b50505050905090810190601f16801561021d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102576004803603604081101561024157600080fd5b506001600160a01b0381351690602001356107be565b604080519115158252519081900360200190f35b610273610806565b60408051918252519081900360200190f35b6102576004803603606081101561029b57600080fd5b506001600160a01b03813581169160208101359091169060400135610818565b6102c3610860565b6040805160ff9092168252519081900360200190f35b610257600480360360408110156102ef57600080fd5b506001600160a01b038135169060200135610869565b6102736004803603604081101561031b57600080fd5b506001600160a01b03813581169160200135166108b8565b6102736004803603602081101561034957600080fd5b50356001600160a01b03166108e5565b61036161095f565b604080516001600160a01b039092168252519081900360200190f35b610361610977565b61038d610981565b6040805194855260208501939093528383019190915264ffffffffff166060830152519081900360800190f35b6103e0600480360360208110156103d057600080fd5b50356001600160a01b03166109b7565b6040805164ffffffffff9092168252519081900360200190f35b6102736109d9565b6101b66109df565b6104366004803603604081101561042057600080fd5b506001600160a01b038135169060200135610a40565b005b6102576004803603604081101561044e57600080fd5b506001600160a01b038135169060200135610818565b610361610da6565b6102576004803603608081101561048257600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610db5565b61027361110d565b610436600480360360408110156104c657600080fd5b506001600160a01b038135169060200135611112565b610436600480360360e08110156104f257600080fd5b6001600160a01b038235811692602081013582169260408201359092169160ff606083013516919081019060a08101608082013564010000000081111561053857600080fd5b82018360208201111561054a57600080fd5b8035906020019184600183028401116401000000008311171561056c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105bf57600080fd5b8201836020820111156105d157600080fd5b803590602001918460018302840111640100000000831117156105f357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561064657600080fd5b82018360208201111561065857600080fd5b8035906020019184600183028401116401000000008311171561067a57600080fd5b5090925090506111ae565b6102736004803603602081101561069b57600080fd5b50356001600160a01b0316611412565b610273600480360360408110156106c157600080fd5b506001600160a01b0381358116916020013516610869565b6103e061141d565b610273600480360360208110156106f757600080fd5b50356001600160a01b031661142a565b61070f611445565b6040805192835260208301919091528051918290030190f35b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b45780601f10610789576101008083540402835291602001916107b4565b820191906000526020600020905b81548152906001019060200180831161079757829003601f168201915b5050505050905090565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b6000610813603b5461145e565b905090565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60055460ff1690565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b038083166000908152603a60209081526040808320938516835292905220545b92915050565b6000806108f1836114a6565b6001600160a01b0384166000908152603d60205260409020549091508161091d5760009250505061095a565b6001600160a01b0384166000908152603c602052604081205461094890839064ffffffffff166114c1565b905061095483826114d5565b93505050505b919050565b603e546501000000000090046001600160a01b031690565b6000610813611593565b6000806000806000603b5490506109966115a2565b61099f8261145e565b603e54919790965091945064ffffffffff1692509050565b6001600160a01b03166000908152603c602052604090205464ffffffffff1690565b603b5490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b45780601f10610789576101008083540402835291602001916107b4565b610a4861095f565b6001600160a01b0316610a596115a8565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610b075760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610acc578181015183820152602001610ab4565b50505050905090810190601f168015610af95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600080610b14846115ac565b92509250506000610b23610806565b6001600160a01b0386166000908152603d6020526040812054919250908190868411610b58576000603b819055600255610bda565b610b628488611605565b600281905591506000610b80610b7786611647565b603b54906114d5565b90506000610b97610b908a611647565b84906114d5565b9050818110610bb35760006002819055603b8190559450610bd7565b610bcf610bbf85611647565b610bc98484611605565b906116c5565b603b81905594505b50505b85871415610c18576001600160a01b0388166000908152603d60209081526040808320839055603c9091529020805464ffffffffff19169055610c46565b6001600160a01b0388166000908152603c60205260409020805464ffffffffff19164264ffffffffff161790555b603e805464ffffffffff19164264ffffffffff1617905586851115610ce6576000610c718689611605565b9050610c7e8982876117cc565b6040805182815260208101899052808201889052606081018490526080810186905260a0810185905290516001600160a01b038b169182917fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f9181900360c00190a350610d5b565b6000610cf28887611605565b9050610cff898287611891565b6040805182815260208101899052808201889052606081018690526080810185905290516001600160a01b038b16917f44bd20a79e993bdcc7cbedf54a3b4d19fb78490124b6b90d04fe3242eea579e8919081900360a00190a2505b6040805188815290516000916001600160a01b038b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050505050505050565b603f546001600160a01b031690565b6000610dbf61095f565b6001600160a01b0316610dd06115a8565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610e415760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b50610e4a611bd9565b846001600160a01b0316866001600160a01b031614610e6e57610e6e8587866118d3565b600080610e7a876115ac565b9250925050610e87610806565b808452603b546080850152610e9c908761199b565b60028190556020840152610eaf86611647565b6040840152610f0d610ec9610ec4848961199b565b611647565b6040850151610bc990610edc90896114d5565b610f07610ee887611647565b6001600160a01b038d166000908152603d6020526040902054906114d5565b9061199b565b60608401819052604080518082019091526002815261373960f01b6020820152906fffffffffffffffffffffffffffffffff1015610f8c5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5060608301516001600160a01b0388166000908152603d6020908152604080832093909355603c8152919020805464ffffffffff421664ffffffffff199182168117909255603e8054909116909117905583015161102290610fed90611647565b610bc96110078660400151896114d590919063ffffffff16565b610f076110178860000151611647565b6080890151906114d5565b603b81905560808401526110418761103a888461199b565b85516117cc565b6040805187815290516001600160a01b038916916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3866001600160a01b0316886001600160a01b03167fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f888585886060015189608001518a6020015160405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a350159695505050505050565b600181565b80603a600061111f6115a8565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120919091556111576115a8565b6001600160a01b03167fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1611189610da6565b604080516001600160a01b039092168252602082018690528051918290030190a35050565b60006111b86119f5565b60075490915060ff16806111cf57506111cf6119fa565b806111db575060065481115b6112165760405162461bcd60e51b815260040180806020018281038252602e815260200180611cbd602e913960400191505060405180910390fd5b60075460ff16158015611236576007805460ff1916600117905560068290555b61123f86611a00565b61124885611a17565b61125187611a2a565b603e805465010000000000600160c81b031916650100000000006001600160a01b038d811691820292909217909255603f80546001600160a01b03199081168d841690811790925560408054909116928c169283178155805192835260ff8b1660208085019190915260a09184018281528b51928501929092528a5192937f40251fbfb6656cfa65a00d7879029fec1fad21d28fdcff2f4f68f52795b74f2c938e938e938e938e938e938e9390916060840191608085019160c08601918a019080838360005b8381101561132f578181015183820152602001611317565b50505050905090810190601f16801561135c5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b8381101561138f578181015183820152602001611377565b50505050905090810190601f1680156113bc5780820380516001836020036101000a031916815260200191505b508481038252858152602001868680828437600083820152604051601f909101601f19169092018290039b50909950505050505050505050a38015611406576007805460ff191690555b50505050505050505050565b60006108df826114a6565b603e5464ffffffffff1690565b6001600160a01b03166000908152603d602052604090205490565b603b5460009081906114568161145e565b925090509091565b6000806114696115a2565b90508061147a57600091505061095a565b603e5460009061149290859064ffffffffff166114c1565b905061149e82826114d5565b949350505050565b6001600160a01b031660009081526020819052604090205490565b60006114ce838342611a40565b9392505050565b60008215806114e2575081155b156114ef575060006108df565b816b019d971e4fe8401e74000000198161150557fe5b0483111560405180604001604052806002815260200161068760f31b815250906115705760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b6040546001600160a01b031690565b60025490565b3390565b6000806000806115bb856114a6565b9050806115d3576000806000935093509350506115fe565b60006115e8826115e2886108e5565b90611605565b9050816115f5818361199b565b90955093509150505b9193909250565b60006114ce83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b16565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b815250906116be5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5092915050565b604080518082019091526002815261035360f41b60208201526000908261172d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156117a95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5082816b033b2e3c9fd0803ce8000000860201816117c357fe5b04949350505050565b6001600160a01b0383166000908152602081905260409020546117ef818461199b565b6001600160a01b0380861660009081526020819052604090819020929092559054161561188b576040805481516318c39f1760e11b81526001600160a01b0387811660048301526024820186905260448201859052925192909116916331873e2e9160648082019260009290919082900301818387803b15801561187257600080fd5b505af1158015611886573d6000803e3d6000fd5b505050505b50505050565b6001600160a01b038316600090815260208181526040918290205482518084019093526002835261038360f41b91830191909152906117ef9082908590611b16565b6040805180820182526002815261353960f01b6020808301919091526001600160a01b038087166000908152603a8352848120918716815291529182205461191c918490611b16565b6001600160a01b038086166000818152603a60209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1611974610da6565b604080516001600160a01b039092168252602082018690528051918290030190a350505050565b6000828201838110156114ce576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600190565b303b1590565b8051611a13906003906020840190611c08565b5050565b8051611a13906004906020840190611c08565b6005805460ff191660ff92909216919091179055565b600080611a548364ffffffffff8616611605565b905080611a6b57611a63611b70565b9150506114ce565b6000198101600060028311611a81576000611a86565b600283035b90506301e1338087046000611a9b82806114d5565b90506000611aa982846114d5565b905060006002611ac384611abd8a8a611b80565b90611b80565b81611aca57fe5b04905060006006611ae184611abd89818d8d611b80565b81611ae857fe5b049050611b0681610f078481611afe8a8e611b80565b610f07611b70565b9c9b505050505050505050505050565b60008184841115611b685760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b505050900390565b6b033b2e3c9fd0803ce800000090565b600082611b8f575060006108df565b82820282848281611b9c57fe5b04146114ce5760405162461bcd60e51b8152600401808060200182810382526021815260200180611c9c6021913960400191505060405180910390fd5b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c4957805160ff1916838001178555611c76565b82800160010185558215611c76579182015b82811115611c76578251825591602001919060010190611c5b565b50611c82929150611c86565b5090565b5b80821115611c825760008155600101611c8756fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a264697066735822122063d412b63d506f7b4a899605458ceab29096a3c1cd95312481c64230a0cb12f864736f6c634300060c0033608060405260006006553480156200001657600080fd5b50604080518082018252600e8082526d111150951513d2d15397d253541360921b60208084018281528551808701909652928552840152815191929160009162000064916003919062000098565b5081516200007a90600490602085019062000098565b506005805460ff191660ff9290921691909117905550620001349050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000db57805160ff19168380011785556200010b565b828001600101855582156200010b579182015b828111156200010b578251825591602001919060010190620000ee565b50620001199291506200011d565b5090565b5b808211156200011957600081556001016200011e565b6117c780620001446000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806375d26413116100c3578063b3f1c93d1161007c578063b3f1c93d146103d2578063b9a7b6221461040e578063c04a8a1014610416578063c222ec8a14610444578063dd62ed3e146105ed578063f5298aca1461061b5761014d565b806375d264131461038657806395d89b411461038e578063a457c2d7146102e2578063a9059cbb14610396578063b16a19de146103c2578063b1bf962d146103ca5761014d565b806323b872dd1161011557806323b872dd1461028e578063313ce567146102c457806339509351146102e25780636bd76d241461030e57806370a082311461033c5780637535d246146103625761014d565b806306fdde0314610152578063095ea7b3146101cf5780630afbcdc91461020f57806318160ddd1461024e5780631da24f3e14610268575b600080fd5b61015a61064d565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019457818101518382015260200161017c565b50505050905090810190601f1680156101c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101fb600480360360408110156101e557600080fd5b506001600160a01b0381351690602001356106e3565b604080519115158252519081900360200190f35b6102356004803603602081101561022557600080fd5b50356001600160a01b031661072b565b6040805192835260208301919091528051918290030190f35b610256610748565b60408051918252519081900360200190f35b6102566004803603602081101561027e57600080fd5b50356001600160a01b03166107db565b6101fb600480360360608110156102a457600080fd5b506001600160a01b038135811691602081013590911690604001356107ee565b6102cc610836565b6040805160ff9092168252519081900360200190f35b6101fb600480360360408110156102f857600080fd5b506001600160a01b03813516906020013561083f565b6102566004803603604081101561032457600080fd5b506001600160a01b038135811691602001351661088e565b6102566004803603602081101561035257600080fd5b50356001600160a01b03166108bb565b61036a610967565b604080516001600160a01b039092168252519081900360200190f35b61036a610976565b61015a610980565b6101fb600480360360408110156103ac57600080fd5b506001600160a01b0381351690602001356107ee565b61036a6109e1565b6102566109f0565b6101fb600480360360808110156103e857600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356109fa565b610256610c13565b6104426004803603604081101561042c57600080fd5b506001600160a01b038135169060200135610c18565b005b610442600480360360e081101561045a57600080fd5b6001600160a01b038235811692602081013582169260408201359092169160ff606083013516919081019060a0810160808201356401000000008111156104a057600080fd5b8201836020820111156104b257600080fd5b803590602001918460018302840111640100000000831117156104d457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561052757600080fd5b82018360208201111561053957600080fd5b8035906020019184600183028401116401000000008311171561055b57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105ae57600080fd5b8201836020820111156105c057600080fd5b803590602001918460018302840111640100000000831117156105e257600080fd5b509092509050610cb4565b6102566004803603604081101561060357600080fd5b506001600160a01b038135811691602001351661083f565b6104426004803603606081101561063157600080fd5b506001600160a01b038135169060208101359060400135610f03565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106d95780601f106106ae576101008083540402835291602001916106d9565b820191906000526020600020905b8154815290600101906020018083116106bc57829003601f168201915b5050505050905090565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60008061073783611097565b61073f6110b2565b91509150915091565b603b54603c546040805163386497fd60e01b81526001600160a01b03928316600482015290516000936107d693169163386497fd916024808301926020929190829003018186803b15801561079c57600080fd5b505afa1580156107b0573d6000803e3d6000fd5b505050506040513d60208110156107c657600080fd5b50516107d06110b2565b906110b8565b905090565b60006107e682611097565b90505b919050565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60055460ff1690565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b038083166000908152603a60209081526040808320938516835292905220545b92915050565b6000806108c783611097565b9050806108d85760009150506107e9565b603b54603c546040805163386497fd60e01b81526001600160a01b039283166004820152905161096093929092169163386497fd91602480820192602092909190829003018186803b15801561092d57600080fd5b505afa158015610941573d6000803e3d6000fd5b505050506040513d602081101561095757600080fd5b505182906110b8565b9392505050565b603b546001600160a01b031690565b60006107d6611176565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106d95780601f106106ae576101008083540402835291602001916106d9565b603c546001600160a01b031690565b60006107d66110b2565b6000610a04610967565b6001600160a01b0316610a15611185565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610ac35760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a88578181015183820152602001610a70565b50505050905090810190601f168015610ab55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50836001600160a01b0316856001600160a01b031614610ae857610ae8848685611189565b6000610af385611097565b90506000610b018585611251565b6040805180820190915260028152611a9b60f11b602082015290915081610b695760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b50610b748682611358565b6040805186815290516001600160a01b038816916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3856001600160a01b0316876001600160a01b03167f2f00e3cdd69a77be7ed215ec7b2a36784dd158f921fca79ac29deffa353fe6ee8787604051808381526020018281526020019250505060405180910390a3501595945050505050565b600181565b80603a6000610c25611185565b6001600160a01b0390811682526020808301939093526040918201600090812091871680825291909352912091909155610c5d611185565b6001600160a01b03167fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1610c8f6109e1565b604080516001600160a01b039092168252602082018690528051918290030190a35050565b6000610cbe6114a9565b60075490915060ff1680610cd55750610cd56114ae565b80610ce1575060065481115b610d1c5760405162461bcd60e51b815260040180806020018281038252602e815260200180611743602e913960400191505060405180910390fd5b60075460ff16158015610d3c576007805460ff1916600117905560068290555b610d45866114b4565b610d4e856114cb565b610d57876114de565b603b80546001600160a01b03808d166001600160a01b03199283168117909355603c80548d83169084168117909155603d8054928d169290931682179092556040805191825260ff8b1660208084019190915260a09183018281528b51928401929092528a517f40251fbfb6656cfa65a00d7879029fec1fad21d28fdcff2f4f68f52795b74f2c938e938e938e938e938e938e93919290916060840191608085019160c0860191908a019080838360005b83811015610e20578181015183820152602001610e08565b50505050905090810190601f168015610e4d5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b83811015610e80578181015183820152602001610e68565b50505050905090810190601f168015610ead5780820380516001836020036101000a031916815260200191505b508481038252858152602001868680828437600083820152604051601f909101601f19169092018290039b50909950505050505050505050a38015610ef7576007805460ff191690555b50505050505050505050565b610f0b610967565b6001600160a01b0316610f1c611185565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610f8d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b506000610f9a8383611251565b60408051808201909152600281526106a760f31b6020820152909150816110025760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5061100d84826114f4565b6040805184815290516000916001600160a01b038716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3604080518481526020810184905281516001600160a01b038716927f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a928290030190a250505050565b6001600160a01b031660009081526020819052604090205490565b60025490565b60008215806110c5575081155b156110d2575060006108b5565b816b019d971e4fe8401e7400000019816110e857fe5b0483111560405180604001604052806002815260200161068760f31b815250906111535760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b603d546001600160a01b031690565b3390565b6040805180820182526002815261353960f01b6020808301919091526001600160a01b038087166000908152603a835284812091871681529152918220546111d2918490611592565b6001600160a01b038086166000818152603a60209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e161122a6109e1565b604080516001600160a01b039092168252602082018690528051918290030190a350505050565b604080518082019091526002815261035360f41b6020820152600090826112b95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156113355760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5082816b033b2e3c9fd0803ce80000008602018161134f57fe5b04949350505050565b6001600160a01b0382166113b3576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6113bf600083836115ec565b6002546113cc81836115f1565b6002556001600160a01b0383166000908152602081905260409020546113f281846115f1565b6001600160a01b038516600090815260208190526040812091909155611416611176565b6001600160a01b0316146114a35761142c611176565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561148a57600080fd5b505af115801561149e573d6000803e3d6000fd5b505050505b50505050565b600190565b303b1590565b80516114c790600390602084019061168d565b5050565b80516114c790600490602084019061168d565b6005805460ff191660ff92909216919091179055565b6001600160a01b0382166115395760405162461bcd60e51b81526004018080602001828103825260218152602001806117716021913960400191505060405180910390fd5b611545826000836115ec565b600254611552818361164b565b6002556001600160a01b0383166000908152602081815260409182902054825160608101909352602280845290926113f292869290611721908301398391905b600081848411156115e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b505050900390565b505050565b600082820183811015610960576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061096083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611592565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106116ce57805160ff19168380011785556116fb565b828001600101855582156116fb579182015b828111156116fb5782518255916020019190600101906116e0565b5061170792915061170b565b5090565b5b80821115611707576000815560010161170c56fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656445524332303a206275726e2066726f6d20746865207a65726f2061646472657373a2646970667358221220f2fe01913b59842ffe8d7363fe27844d555de6f26a7451262077ece0552d341364736f6c634300060c0033a2646970667358221220cfe7a039c56024601f0f121c845a5f2c2abb6ee5f303f0164b9377ff2ce7a2de64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x41C4 CODESIZE SUB DUP1 PUSH2 0x41C4 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xB8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39 PUSH2 0xB4 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE PUSH2 0x109 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCA JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0xD5 DUP2 PUSH2 0xF1 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0xE6 DUP2 PUSH2 0xF1 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x106 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x40AC DUP1 PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54FE1C94 EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x563B1CB3 EQ PUSH2 0x7C JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x8F JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x97 JUMPI DUP1 PUSH4 0xC2D30321 EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xC8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7A PUSH2 0x75 CALLDATASIZE PUSH1 0x4 PUSH2 0x680 JUMP JUMPDEST PUSH2 0xDB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7A PUSH2 0x8A CALLDATASIZE PUSH1 0x4 PUSH2 0x648 JUMP JUMPDEST PUSH2 0x203 JUMP JUMPDEST PUSH2 0x7A PUSH2 0x361 JUMP JUMPDEST PUSH2 0x9F PUSH2 0x3E0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x76A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7A PUSH2 0xC3 CALLDATASIZE PUSH1 0x4 PUSH2 0x6E9 JUMP JUMPDEST PUSH2 0x3EF JUMP JUMPDEST PUSH2 0x7A PUSH2 0xD6 CALLDATASIZE PUSH1 0x4 PUSH2 0x609 JUMP JUMPDEST PUSH2 0x4EC JUMP JUMPDEST PUSH2 0xE3 PUSH2 0x5A2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x119 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x110 SWAP1 PUSH2 0x7F7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP2 EQ PUSH2 0x138 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x110 SWAP1 PUSH2 0x8BF JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x160 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x110 SWAP1 PUSH2 0x82C JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1FC JUMPI PUSH32 0x1C1768AAB1796270C7034DC781C2951065E6AFB7A946269746521002443B8EA4 PUSH1 0x40 MLOAD PUSH2 0x198 SWAP1 PUSH2 0x5A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x1B4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1C1 SWAP1 PUSH2 0x5B3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x1DD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1EC SWAP3 SWAP2 SWAP1 PUSH2 0x77E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x1 ADD PUSH2 0x163 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x20B PUSH2 0x5A2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x238 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x110 SWAP1 PUSH2 0x7F7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x25E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x110 SWAP1 PUSH2 0x890 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2D9 SWAP2 SWAP1 PUSH2 0x62C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x110 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xF2FDE38B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0xF2FDE38B SWAP1 PUSH2 0x32B SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x76A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x345 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x359 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x369 PUSH2 0x5A2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x396 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x110 SWAP1 PUSH2 0x7F7 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x5A2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x424 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x110 SWAP1 PUSH2 0x7F7 JUMP JUMPDEST DUP4 DUP3 EQ PUSH2 0x443 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x110 SWAP1 PUSH2 0x8BF JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x359 JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x72EB293D DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x469 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x47E SWAP2 SWAP1 PUSH2 0x609 JUMP JUMPDEST DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x48A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4AE SWAP3 SWAP2 SWAP1 PUSH2 0x798 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4DC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0x446 SWAP1 POP JUMP JUMPDEST PUSH2 0x4F4 PUSH2 0x5A2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x521 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x110 SWAP1 PUSH2 0x7F7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x547 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x110 SWAP1 PUSH2 0x7B1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x1E64 DUP1 PUSH2 0x908 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0x190B DUP1 PUSH2 0x276C DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x5D1 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5E8 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x602 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x61A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x625 DUP2 PUSH2 0x8EF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x63D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x625 DUP2 PUSH2 0x8EF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x65A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x665 DUP2 PUSH2 0x8EF JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x675 DUP2 PUSH2 0x8EF JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x695 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x6AC JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x6B8 DUP9 DUP4 DUP10 ADD PUSH2 0x5C0 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x6D0 JUMPI DUP4 DUP5 REVERT JUMPDEST POP PUSH2 0x6DD DUP8 DUP3 DUP9 ADD PUSH2 0x5C0 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x700 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x717 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x723 DUP10 DUP4 DUP11 ADD PUSH2 0x5C0 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x73B JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x748 DUP9 DUP3 DUP10 ADD PUSH2 0x5C0 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x75C DUP2 PUSH2 0x8EF JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x40 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x506F6F6C2063616E206E6F74206265207A65726F206164647265737300000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x3432B63832B91034B9903737BA1037BBB732B9 PUSH1 0x69 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x6F776E65722063616E206E6F74206265207A65726F PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH22 0x82E4E4C2F2E640DCDEE840E6C2DACA40D8CADCCEE8D PUSH1 0x53 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x904 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0x6 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP1 DUP3 MSTORE PUSH14 0x111150951513D2D15397D2535413 PUSH1 0x92 SHL PUSH1 0x20 DUP1 DUP5 ADD DUP3 DUP2 MSTORE DUP6 MLOAD DUP1 DUP8 ADD SWAP1 SWAP7 MSTORE SWAP3 DUP6 MSTORE DUP5 ADD MSTORE DUP2 MLOAD SWAP2 SWAP3 SWAP2 PUSH1 0x0 SWAP2 PUSH3 0x64 SWAP2 PUSH1 0x3 SWAP2 SWAP1 PUSH3 0x98 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0x7A SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x98 JUMP JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0x134 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0xDB JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x10B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x10B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x10B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xEE JUMP JUMPDEST POP PUSH3 0x119 SWAP3 SWAP2 POP PUSH3 0x11D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x119 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x11E JUMP JUMPDEST PUSH2 0x1D20 DUP1 PUSH3 0x144 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1A9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x95D89B41 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xC04A8A10 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x6AB JUMPI DUP1 PUSH4 0xE7484890 EQ PUSH2 0x6D9 JUMPI DUP1 PUSH4 0xE78C9B3B EQ PUSH2 0x6E1 JUMPI DUP1 PUSH4 0xF731E9BE EQ PUSH2 0x707 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0xC04A8A10 EQ PUSH2 0x4B0 JUMPI DUP1 PUSH4 0xC222EC8A EQ PUSH2 0x4DC JUMPI DUP1 PUSH4 0xC634DFAA EQ PUSH2 0x685 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0xA9059CBB GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x438 JUMPI DUP1 PUSH4 0xB16A19DE EQ PUSH2 0x464 JUMPI DUP1 PUSH4 0xB3F1C93D EQ PUSH2 0x46C JUMPI DUP1 PUSH4 0xB9A7B622 EQ PUSH2 0x4A8 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x402 JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x40A JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x2D9 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x6BD76D24 GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x75D26413 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x75D26413 EQ PUSH2 0x37D JUMPI DUP1 PUSH4 0x79774338 EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0x79CE6B8C EQ PUSH2 0x3BA JUMPI DUP1 PUSH4 0x90F6FCF2 EQ PUSH2 0x3FA JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x6BD76D24 EQ PUSH2 0x305 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x333 JUMPI DUP1 PUSH4 0x7535D246 EQ PUSH2 0x359 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x26B JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2D9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B6 PUSH2 0x728 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1D8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x21D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x241 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7BE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x273 PUSH2 0x806 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x818 JUMP JUMPDEST PUSH2 0x2C3 PUSH2 0x860 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x869 JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x31B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x8B8 JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x349 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8E5 JUMP JUMPDEST PUSH2 0x361 PUSH2 0x95F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x361 PUSH2 0x977 JUMP JUMPDEST PUSH2 0x38D PUSH2 0x981 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH5 0xFFFFFFFFFF AND PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9B7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH5 0xFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x273 PUSH2 0x9D9 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x9DF JUMP JUMPDEST PUSH2 0x436 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA40 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x44E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x818 JUMP JUMPDEST PUSH2 0x361 PUSH2 0xDA6 JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0xDB5 JUMP JUMPDEST PUSH2 0x273 PUSH2 0x110D JUMP JUMPDEST PUSH2 0x436 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1112 JUMP JUMPDEST PUSH2 0x436 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x4F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 PUSH1 0xFF PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x538 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x54A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x56C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x658 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x67A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x11AE JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x69B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1412 JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x869 JUMP JUMPDEST PUSH2 0x3E0 PUSH2 0x141D JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x142A JUMP JUMPDEST PUSH2 0x70F PUSH2 0x1445 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7B4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x789 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7B4 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x797 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1054141493D5905317D393D517D4D5541413D4951151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x813 PUSH1 0x3B SLOAD PUSH2 0x145E JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1514905394D1915497D393D517D4D5541413D4951151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x414C4C4F57414E43455F4E4F545F535550504F52544544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8F1 DUP4 PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 PUSH2 0x91D JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x95A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x948 SWAP1 DUP4 SWAP1 PUSH5 0xFFFFFFFFFF AND PUSH2 0x14C1 JUMP JUMPDEST SWAP1 POP PUSH2 0x954 DUP4 DUP3 PUSH2 0x14D5 JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH6 0x10000000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x813 PUSH2 0x1593 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x3B SLOAD SWAP1 POP PUSH2 0x996 PUSH2 0x15A2 JUMP JUMPDEST PUSH2 0x99F DUP3 PUSH2 0x145E JUMP JUMPDEST PUSH1 0x3E SLOAD SWAP2 SWAP8 SWAP1 SWAP7 POP SWAP2 SWAP5 POP PUSH5 0xFFFFFFFFFF AND SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH5 0xFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x3B SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7B4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x789 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7B4 JUMP JUMPDEST PUSH2 0xA48 PUSH2 0x95F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA59 PUSH2 0x15A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xB07 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xAF9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 PUSH2 0xB14 DUP5 PUSH2 0x15AC JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH1 0x0 PUSH2 0xB23 PUSH2 0x806 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 DUP2 SWAP1 DUP7 DUP5 GT PUSH2 0xB58 JUMPI PUSH1 0x0 PUSH1 0x3B DUP2 SWAP1 SSTORE PUSH1 0x2 SSTORE PUSH2 0xBDA JUMP JUMPDEST PUSH2 0xB62 DUP5 DUP9 PUSH2 0x1605 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE SWAP2 POP PUSH1 0x0 PUSH2 0xB80 PUSH2 0xB77 DUP7 PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x3B SLOAD SWAP1 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB97 PUSH2 0xB90 DUP11 PUSH2 0x1647 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT PUSH2 0xBB3 JUMPI PUSH1 0x0 PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x3B DUP2 SWAP1 SSTORE SWAP5 POP PUSH2 0xBD7 JUMP JUMPDEST PUSH2 0xBCF PUSH2 0xBBF DUP6 PUSH2 0x1647 JUMP JUMPDEST PUSH2 0xBC9 DUP5 DUP5 PUSH2 0x1605 JUMP JUMPDEST SWAP1 PUSH2 0x16C5 JUMP JUMPDEST PUSH1 0x3B DUP2 SWAP1 SSTORE SWAP5 POP JUMPDEST POP POP JUMPDEST DUP6 DUP8 EQ ISZERO PUSH2 0xC18 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE PUSH1 0x3C SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0xFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH2 0xC46 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0xFFFFFFFFFF NOT AND TIMESTAMP PUSH5 0xFFFFFFFFFF AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x3E DUP1 SLOAD PUSH5 0xFFFFFFFFFF NOT AND TIMESTAMP PUSH5 0xFFFFFFFFFF AND OR SWAP1 SSTORE DUP7 DUP6 GT ISZERO PUSH2 0xCE6 JUMPI PUSH1 0x0 PUSH2 0xC71 DUP7 DUP10 PUSH2 0x1605 JUMP JUMPDEST SWAP1 POP PUSH2 0xC7E DUP10 DUP3 DUP8 PUSH2 0x17CC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP10 SWAP1 MSTORE DUP1 DUP3 ADD DUP9 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 DUP3 SWAP2 PUSH32 0xC16F4E4CA34D790DE4C656C72FD015C667D688F20BE64EEA360618545C4C530F SWAP2 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 LOG3 POP PUSH2 0xD5B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCF2 DUP9 DUP8 PUSH2 0x1605 JUMP JUMPDEST SWAP1 POP PUSH2 0xCFF DUP10 DUP3 DUP8 PUSH2 0x1891 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP10 SWAP1 MSTORE DUP1 DUP3 ADD DUP9 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 PUSH32 0x44BD20A79E993BDCC7CBEDF54A3B4D19FB78490124B6B90D04FE3242EEA579E8 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3F SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDBF PUSH2 0x95F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDD0 PUSH2 0x15A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xE41 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP PUSH2 0xE4A PUSH2 0x1BD9 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xE6E JUMPI PUSH2 0xE6E DUP6 DUP8 DUP7 PUSH2 0x18D3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xE7A DUP8 PUSH2 0x15AC JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0xE87 PUSH2 0x806 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x3B SLOAD PUSH1 0x80 DUP6 ADD MSTORE PUSH2 0xE9C SWAP1 DUP8 PUSH2 0x199B JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xEAF DUP7 PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0xF0D PUSH2 0xEC9 PUSH2 0xEC4 DUP5 DUP10 PUSH2 0x199B JUMP JUMPDEST PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD PUSH2 0xBC9 SWAP1 PUSH2 0xEDC SWAP1 DUP10 PUSH2 0x14D5 JUMP JUMPDEST PUSH2 0xF07 PUSH2 0xEE8 DUP8 PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 PUSH2 0x199B JUMP JUMPDEST PUSH1 0x60 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3739 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF LT ISZERO PUSH2 0xF8C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x3C DUP2 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0xFFFFFFFFFF TIMESTAMP AND PUSH5 0xFFFFFFFFFF NOT SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x3E DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SWAP2 OR SWAP1 SSTORE DUP4 ADD MLOAD PUSH2 0x1022 SWAP1 PUSH2 0xFED SWAP1 PUSH2 0x1647 JUMP JUMPDEST PUSH2 0xBC9 PUSH2 0x1007 DUP7 PUSH1 0x40 ADD MLOAD DUP10 PUSH2 0x14D5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0xF07 PUSH2 0x1017 DUP9 PUSH1 0x0 ADD MLOAD PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x80 DUP10 ADD MLOAD SWAP1 PUSH2 0x14D5 JUMP JUMPDEST PUSH1 0x3B DUP2 SWAP1 SSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x1041 DUP8 PUSH2 0x103A DUP9 DUP5 PUSH2 0x199B JUMP JUMPDEST DUP6 MLOAD PUSH2 0x17CC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC16F4E4CA34D790DE4C656C72FD015C667D688F20BE64EEA360618545C4C530F DUP9 DUP6 DUP6 DUP9 PUSH1 0x60 ADD MLOAD DUP10 PUSH1 0x80 ADD MLOAD DUP11 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP ISZERO SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST DUP1 PUSH1 0x3A PUSH1 0x0 PUSH2 0x111F PUSH2 0x15A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1157 PUSH2 0x15A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDA919360433220E13B51E8C211E490D148E61A3BD53DE8C097194E458B97F3E1 PUSH2 0x1189 PUSH2 0xDA6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11B8 PUSH2 0x19F5 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 PUSH2 0x11CF JUMPI POP PUSH2 0x11CF PUSH2 0x19FA JUMP JUMPDEST DUP1 PUSH2 0x11DB JUMPI POP PUSH1 0x6 SLOAD DUP2 GT JUMPDEST PUSH2 0x1216 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1CBD PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x1236 JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x6 DUP3 SWAP1 SSTORE JUMPDEST PUSH2 0x123F DUP7 PUSH2 0x1A00 JUMP JUMPDEST PUSH2 0x1248 DUP6 PUSH2 0x1A17 JUMP JUMPDEST PUSH2 0x1251 DUP8 PUSH2 0x1A2A JUMP JUMPDEST PUSH1 0x3E DUP1 SLOAD PUSH6 0x10000000000 PUSH1 0x1 PUSH1 0xC8 SHL SUB NOT AND PUSH6 0x10000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x3F DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND DUP14 DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 SLOAD SWAP1 SWAP2 AND SWAP3 DUP13 AND SWAP3 DUP4 OR DUP2 SSTORE DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0xFF DUP12 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 SWAP2 DUP5 ADD DUP3 DUP2 MSTORE DUP12 MLOAD SWAP3 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP11 MLOAD SWAP3 SWAP4 PUSH32 0x40251FBFB6656CFA65A00D7879029FEC1FAD21D28FDCFF2F4F68F52795B74F2C SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 SWAP1 SWAP2 PUSH1 0x60 DUP5 ADD SWAP2 PUSH1 0x80 DUP6 ADD SWAP2 PUSH1 0xC0 DUP7 ADD SWAP2 DUP11 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x132F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1317 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x135C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP5 DUP2 SUB DUP4 MSTORE DUP8 MLOAD DUP2 MSTORE DUP8 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP10 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x138F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1377 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13BC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP7 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP12 POP SWAP1 SWAP10 POP POP POP POP POP POP POP POP POP POP LOG3 DUP1 ISZERO PUSH2 0x1406 JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8DF DUP3 PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH5 0xFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH2 0x1456 DUP2 PUSH2 0x145E JUMP JUMPDEST SWAP3 POP SWAP1 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1469 PUSH2 0x15A2 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x147A JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x95A JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1492 SWAP1 DUP6 SWAP1 PUSH5 0xFFFFFFFFFF AND PUSH2 0x14C1 JUMP JUMPDEST SWAP1 POP PUSH2 0x149E DUP3 DUP3 PUSH2 0x14D5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CE DUP4 DUP4 TIMESTAMP PUSH2 0x1A40 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x14E2 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x14EF JUMPI POP PUSH1 0x0 PUSH2 0x8DF JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x1505 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1570 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP POP PUSH12 0x33B2E3C9FD0803CE8000000 SWAP2 MUL PUSH12 0x19D971E4FE8401E74000000 ADD DIV SWAP1 JUMP JUMPDEST PUSH1 0x40 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x15BB DUP6 PUSH2 0x14A6 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x15D3 JUMPI PUSH1 0x0 DUP1 PUSH1 0x0 SWAP4 POP SWAP4 POP SWAP4 POP POP PUSH2 0x15FE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15E8 DUP3 PUSH2 0x15E2 DUP9 PUSH2 0x8E5 JUMP JUMPDEST SWAP1 PUSH2 0x1605 JUMP JUMPDEST SWAP1 POP DUP2 PUSH2 0x15F5 DUP2 DUP4 PUSH2 0x199B JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP SWAP2 POP POP JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CE DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1B16 JUMP JUMPDEST PUSH1 0x0 PUSH4 0x3B9ACA00 DUP3 DUP2 MUL SWAP1 DUP4 SWAP1 DUP3 DIV EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x16BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x172D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x17A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x17C3 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x17EF DUP2 DUP5 PUSH2 0x199B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE SWAP1 SLOAD AND ISZERO PUSH2 0x188B JUMPI PUSH1 0x40 DUP1 SLOAD DUP2 MLOAD PUSH4 0x18C39F17 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP3 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH4 0x31873E2E SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1872 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1886 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x2 DUP4 MSTORE PUSH2 0x383 PUSH1 0xF4 SHL SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 PUSH2 0x17EF SWAP1 DUP3 SWAP1 DUP6 SWAP1 PUSH2 0x1B16 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3539 PUSH1 0xF0 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A DUP4 MSTORE DUP5 DUP2 KECCAK256 SWAP2 DUP8 AND DUP2 MSTORE SWAP2 MSTORE SWAP2 DUP3 KECCAK256 SLOAD PUSH2 0x191C SWAP2 DUP5 SWAP1 PUSH2 0x1B16 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP10 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP4 SWAP1 SSTORE SWAP2 SWAP3 POP SWAP1 PUSH32 0xDA919360433220E13B51E8C211E490D148E61A3BD53DE8C097194E458B97F3E1 PUSH2 0x1974 PUSH2 0xDA6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x14CE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1A13 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1C08 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1A13 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1C08 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1A54 DUP4 PUSH5 0xFFFFFFFFFF DUP7 AND PUSH2 0x1605 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1A6B JUMPI PUSH2 0x1A63 PUSH2 0x1B70 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x14CE JUMP JUMPDEST PUSH1 0x0 NOT DUP2 ADD PUSH1 0x0 PUSH1 0x2 DUP4 GT PUSH2 0x1A81 JUMPI PUSH1 0x0 PUSH2 0x1A86 JUMP JUMPDEST PUSH1 0x2 DUP4 SUB JUMPDEST SWAP1 POP PUSH4 0x1E13380 DUP8 DIV PUSH1 0x0 PUSH2 0x1A9B DUP3 DUP1 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1AA9 DUP3 DUP5 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x2 PUSH2 0x1AC3 DUP5 PUSH2 0x1ABD DUP11 DUP11 PUSH2 0x1B80 JUMP JUMPDEST SWAP1 PUSH2 0x1B80 JUMP JUMPDEST DUP2 PUSH2 0x1ACA JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x6 PUSH2 0x1AE1 DUP5 PUSH2 0x1ABD DUP10 DUP2 DUP14 DUP14 PUSH2 0x1B80 JUMP JUMPDEST DUP2 PUSH2 0x1AE8 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x1B06 DUP2 PUSH2 0xF07 DUP5 DUP2 PUSH2 0x1AFE DUP11 DUP15 PUSH2 0x1B80 JUMP JUMPDEST PUSH2 0xF07 PUSH2 0x1B70 JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1B68 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1B8F JUMPI POP PUSH1 0x0 PUSH2 0x8DF JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1B9C JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x14CE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1C9C PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x1C49 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x1C76 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x1C76 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1C76 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1C5B JUMP JUMPDEST POP PUSH2 0x1C82 SWAP3 SWAP2 POP PUSH2 0x1C86 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1C82 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1C87 JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77436F6E747261637420 PUSH10 0x6E7374616E6365206861 PUSH20 0x20616C7265616479206265656E20696E69746961 PUSH13 0x697A6564A26469706673582212 KECCAK256 PUSH4 0xD412B63D POP PUSH16 0x7B4A899605458CEAB29096A3C1CD9531 0x24 DUP2 0xC6 TIMESTAMP ADDRESS LOG0 0xCB SLT 0xF8 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0x6 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP1 DUP3 MSTORE PUSH14 0x111150951513D2D15397D2535413 PUSH1 0x92 SHL PUSH1 0x20 DUP1 DUP5 ADD DUP3 DUP2 MSTORE DUP6 MLOAD DUP1 DUP8 ADD SWAP1 SWAP7 MSTORE SWAP3 DUP6 MSTORE DUP5 ADD MSTORE DUP2 MLOAD SWAP2 SWAP3 SWAP2 PUSH1 0x0 SWAP2 PUSH3 0x64 SWAP2 PUSH1 0x3 SWAP2 SWAP1 PUSH3 0x98 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0x7A SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x98 JUMP JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0x134 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0xDB JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x10B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x10B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x10B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xEE JUMP JUMPDEST POP PUSH3 0x119 SWAP3 SWAP2 POP PUSH3 0x11D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x119 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x11E JUMP JUMPDEST PUSH2 0x17C7 DUP1 PUSH3 0x144 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x14D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x75D26413 GT PUSH2 0xC3 JUMPI DUP1 PUSH4 0xB3F1C93D GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xB3F1C93D EQ PUSH2 0x3D2 JUMPI DUP1 PUSH4 0xB9A7B622 EQ PUSH2 0x40E JUMPI DUP1 PUSH4 0xC04A8A10 EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0xC222EC8A EQ PUSH2 0x444 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x5ED JUMPI DUP1 PUSH4 0xF5298ACA EQ PUSH2 0x61B JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x75D26413 EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x38E JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x2E2 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x396 JUMPI DUP1 PUSH4 0xB16A19DE EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0xB1BF962D EQ PUSH2 0x3CA JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x115 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2E2 JUMPI DUP1 PUSH4 0x6BD76D24 EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x33C JUMPI DUP1 PUSH4 0x7535D246 EQ PUSH2 0x362 JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0xAFBCDC9 EQ PUSH2 0x20F JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0x1DA24F3E EQ PUSH2 0x268 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15A PUSH2 0x64D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x194 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1C1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6E3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x235 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x225 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x72B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x256 PUSH2 0x748 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7DB JUMP JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x7EE JUMP JUMPDEST PUSH2 0x2CC PUSH2 0x836 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x83F JUMP JUMPDEST PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x88E JUMP JUMPDEST PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8BB JUMP JUMPDEST PUSH2 0x36A PUSH2 0x967 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x36A PUSH2 0x976 JUMP JUMPDEST PUSH2 0x15A PUSH2 0x980 JUMP JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7EE JUMP JUMPDEST PUSH2 0x36A PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x256 PUSH2 0x9F0 JUMP JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x3E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x9FA JUMP JUMPDEST PUSH2 0x256 PUSH2 0xC13 JUMP JUMPDEST PUSH2 0x442 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x42C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC18 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x442 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x45A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 PUSH1 0xFF PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x527 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x539 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xCB4 JUMP JUMPDEST PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x603 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x83F JUMP JUMPDEST PUSH2 0x442 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF03 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x6D9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6AE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6D9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6BC JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1054141493D5905317D393D517D4D5541413D4951151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x737 DUP4 PUSH2 0x1097 JUMP JUMPDEST PUSH2 0x73F PUSH2 0x10B2 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x386497FD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 PUSH2 0x7D6 SWAP4 AND SWAP2 PUSH4 0x386497FD SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x79C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x7D0 PUSH2 0x10B2 JUMP JUMPDEST SWAP1 PUSH2 0x10B8 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7E6 DUP3 PUSH2 0x1097 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1514905394D1915497D393D517D4D5541413D4951151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x414C4C4F57414E43455F4E4F545F535550504F52544544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8C7 DUP4 PUSH2 0x1097 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x8D8 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x7E9 JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x386497FD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x960 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0x386497FD SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x92D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x941 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x957 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 SWAP1 PUSH2 0x10B8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D6 PUSH2 0x1176 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x6D9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6AE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6D9 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D6 PUSH2 0x10B2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA04 PUSH2 0x967 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA15 PUSH2 0x1185 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xAC3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xAB5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xAE8 JUMPI PUSH2 0xAE8 DUP5 DUP7 DUP6 PUSH2 0x1189 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAF3 DUP6 PUSH2 0x1097 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB01 DUP6 DUP6 PUSH2 0x1251 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1A9B PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0xB69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP PUSH2 0xB74 DUP7 DUP3 PUSH2 0x1358 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2F00E3CDD69A77BE7ED215EC7B2A36784DD158F921FCA79AC29DEFFA353FE6EE DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP ISZERO SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST DUP1 PUSH1 0x3A PUSH1 0x0 PUSH2 0xC25 PUSH2 0x1185 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0xC5D PUSH2 0x1185 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDA919360433220E13B51E8C211E490D148E61A3BD53DE8C097194E458B97F3E1 PUSH2 0xC8F PUSH2 0x9E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCBE PUSH2 0x14A9 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 PUSH2 0xCD5 JUMPI POP PUSH2 0xCD5 PUSH2 0x14AE JUMP JUMPDEST DUP1 PUSH2 0xCE1 JUMPI POP PUSH1 0x6 SLOAD DUP2 GT JUMPDEST PUSH2 0xD1C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1743 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0xD3C JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x6 DUP3 SWAP1 SSTORE JUMPDEST PUSH2 0xD45 DUP7 PUSH2 0x14B4 JUMP JUMPDEST PUSH2 0xD4E DUP6 PUSH2 0x14CB JUMP JUMPDEST PUSH2 0xD57 DUP8 PUSH2 0x14DE JUMP JUMPDEST PUSH1 0x3B DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP14 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x3C DUP1 SLOAD DUP14 DUP4 AND SWAP1 DUP5 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x3D DUP1 SLOAD SWAP3 DUP14 AND SWAP3 SWAP1 SWAP4 AND DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE PUSH1 0xFF DUP12 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 SWAP2 DUP4 ADD DUP3 DUP2 MSTORE DUP12 MLOAD SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP11 MLOAD PUSH32 0x40251FBFB6656CFA65A00D7879029FEC1FAD21D28FDCFF2F4F68F52795B74F2C SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x60 DUP5 ADD SWAP2 PUSH1 0x80 DUP6 ADD SWAP2 PUSH1 0xC0 DUP7 ADD SWAP2 SWAP1 DUP11 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE20 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE08 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE4D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP5 DUP2 SUB DUP4 MSTORE DUP8 MLOAD DUP2 MSTORE DUP8 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP10 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE80 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE68 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xEAD JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP7 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP12 POP SWAP1 SWAP10 POP POP POP POP POP POP POP POP POP POP LOG3 DUP1 ISZERO PUSH2 0xEF7 JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xF0B PUSH2 0x967 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF1C PUSH2 0x1185 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xF8D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xF9A DUP4 DUP4 PUSH2 0x1251 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x6A7 PUSH1 0xF3 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0x1002 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP PUSH2 0x100D DUP5 DUP3 PUSH2 0x14F4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP3 PUSH32 0x49995E5DD6158CF69AD3E9777C46755A1A826A446C6416992167462DAD033B2A SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x10C5 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x10D2 JUMPI POP PUSH1 0x0 PUSH2 0x8B5 JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x10E8 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1153 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP POP PUSH12 0x33B2E3C9FD0803CE8000000 SWAP2 MUL PUSH12 0x19D971E4FE8401E74000000 ADD DIV SWAP1 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3539 PUSH1 0xF0 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A DUP4 MSTORE DUP5 DUP2 KECCAK256 SWAP2 DUP8 AND DUP2 MSTORE SWAP2 MSTORE SWAP2 DUP3 KECCAK256 SLOAD PUSH2 0x11D2 SWAP2 DUP5 SWAP1 PUSH2 0x1592 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP10 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP4 SWAP1 SSTORE SWAP2 SWAP3 POP SWAP1 PUSH32 0xDA919360433220E13B51E8C211E490D148E61A3BD53DE8C097194E458B97F3E1 PUSH2 0x122A PUSH2 0x9E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x12B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x1335 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x134F JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x13B3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x13BF PUSH1 0x0 DUP4 DUP4 PUSH2 0x15EC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x13CC DUP2 DUP4 PUSH2 0x15F1 JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x13F2 DUP2 DUP5 PUSH2 0x15F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1416 PUSH2 0x1176 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x14A3 JUMPI PUSH2 0x142C PUSH2 0x1176 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP6 DUP5 DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x148A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x149E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x14C7 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x168D JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x14C7 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x168D JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1539 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1771 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1545 DUP3 PUSH1 0x0 DUP4 PUSH2 0x15EC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x1552 DUP2 DUP4 PUSH2 0x164B JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x22 DUP1 DUP5 MSTORE SWAP1 SWAP3 PUSH2 0x13F2 SWAP3 DUP7 SWAP3 SWAP1 PUSH2 0x1721 SWAP1 DUP4 ADD CODECOPY DUP4 SWAP2 SWAP1 JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x15E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x960 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x960 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1592 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x16CE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x16FB JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x16FB JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x16FB JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x16E0 JUMP JUMPDEST POP PUSH2 0x1707 SWAP3 SWAP2 POP PUSH2 0x170B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1707 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x170C JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E6365436F6E74 PUSH19 0x61637420696E7374616E63652068617320616C PUSH19 0x65616479206265656E20696E697469616C697A PUSH6 0x644552433230 GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F2061646472657373A2646970667358221220F2FE01913B59 DUP5 0x2F INVALID DUP14 PUSH20 0x63FE27844D555DE6F26A7451262077ECE0552D34 SGT PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCF 0xE7 LOG0 CODECOPY 0xC5 PUSH1 0x24 PUSH1 0x1F 0xF SLT SHR DUP5 GAS 0x5F 0x2C 0x2A 0xBB PUSH15 0xE5F303F0164B9377FF2CE7A2DE6473 PUSH16 0x6C634300060C00330000000000000000 ",
              "sourceMap": "449:1418:22:-:0;;;644:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;844:17:11;864:12;:10;:12::i;:::-;882:6;:18;;-1:-1:-1;;;;;;882:18:11;-1:-1:-1;;;;;882:18:11;;;;;;;911:43;;882:18;;-1:-1:-1;882:18:11;911:43;;882:6;;911:43;-1:-1:-1;720:4:22;:12;;-1:-1:-1;;;;;720:12:22;;;-1:-1:-1;;;;;;720:12:22;;;;;;;738:17;:38;;;;;;;;;;;449:1418;;587:98:7;670:10;587:98;:::o;303:415:-1:-;;;443:2;431:9;422:7;418:23;414:32;411:2;;;-1:-1;;449:12;411:2;238:6;232:13;250:41;285:5;250:41;:::i;:::-;620:2;670:22;;83:13;501:82;;-1:-1;101:33;83:13;101:33;:::i;:::-;628:74;;;;405:313;;;;;:::o;1057:117::-;-1:-1;;;;;991:54;;1116:35;;1106:2;;1165:1;;1155:12;1106:2;1100:74;:::o;:::-;449:1418:22;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100625760003560e01c806354fe1c9414610067578063563b1cb31461007c578063715018a61461008f5780638da5cb5b14610097578063c2d30321146100b5578063f2fde38b146100c8575b600080fd5b61007a610075366004610680565b6100db565b005b61007a61008a366004610648565b610203565b61007a610361565b61009f6103e0565b6040516100ac919061076a565b60405180910390f35b61007a6100c33660046106e9565b6103ef565b61007a6100d6366004610609565b6104ec565b6100e36105a2565b6000546001600160a01b039081169116146101195760405162461bcd60e51b8152600401610110906107f7565b60405180910390fd5b8281146101385760405162461bcd60e51b8152600401610110906108bf565b6001546001600160a01b03166101605760405162461bcd60e51b81526004016101109061082c565b60005b838110156101fc577f1c1768aab1796270c7034dc781c2951065e6afb7a946269746521002443b8ea4604051610198906105a6565b604051809103906000f0801580156101b4573d6000803e3d6000fd5b506040516101c1906105b3565b604051809103906000f0801580156101dd573d6000803e3d6000fd5b506040516101ec92919061077e565b60405180910390a1600101610163565b5050505050565b61020b6105a2565b6000546001600160a01b039081169116146102385760405162461bcd60e51b8152600401610110906107f7565b6001600160a01b03811661025e5760405162461bcd60e51b815260040161011090610890565b306001600160a01b0316826001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102a157600080fd5b505afa1580156102b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d9919061062c565b6001600160a01b0316146102ff5760405162461bcd60e51b815260040161011090610863565b60405163f2fde38b60e01b81526001600160a01b0383169063f2fde38b9061032b90849060040161076a565b600060405180830381600087803b15801561034557600080fd5b505af1158015610359573d6000803e3d6000fd5b505050505050565b6103696105a2565b6000546001600160a01b039081169116146103965760405162461bcd60e51b8152600401610110906107f7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6103f76105a2565b6000546001600160a01b039081169116146104245760405162461bcd60e51b8152600401610110906107f7565b8382146104435760405162461bcd60e51b8152600401610110906108bf565b60005b8481101561035957816001600160a01b03166372eb293d87878481811061046957fe5b905060200201602081019061047e9190610609565b86868581811061048a57fe5b905060200201356040518363ffffffff1660e01b81526004016104ae929190610798565b600060405180830381600087803b1580156104c857600080fd5b505af11580156104dc573d6000803e3d6000fd5b5050600190920191506104469050565b6104f46105a2565b6000546001600160a01b039081169116146105215760405162461bcd60e51b8152600401610110906107f7565b6001600160a01b0381166105475760405162461bcd60e51b8152600401610110906107b1565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b611e648061090883390190565b61190b8061276c83390190565b60008083601f8401126105d1578182fd5b50813567ffffffffffffffff8111156105e8578182fd5b602083019150836020808302850101111561060257600080fd5b9250929050565b60006020828403121561061a578081fd5b8135610625816108ef565b9392505050565b60006020828403121561063d578081fd5b8151610625816108ef565b6000806040838503121561065a578081fd5b8235610665816108ef565b91506020830135610675816108ef565b809150509250929050565b60008060008060408587031215610695578182fd5b843567ffffffffffffffff808211156106ac578384fd5b6106b8888389016105c0565b909650945060208701359150808211156106d0578384fd5b506106dd878288016105c0565b95989497509550505050565b600080600080600060608688031215610700578081fd5b853567ffffffffffffffff80821115610717578283fd5b61072389838a016105c0565b9097509550602088013591508082111561073b578283fd5b50610748888289016105c0565b909450925050604086013561075c816108ef565b809150509295509295909350565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03929092168252602082015260400190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f506f6f6c2063616e206e6f74206265207a65726f206164647265737300000000604082015260600190565b6020808252601390820152723432b63832b91034b9903737ba1037bbb732b960691b604082015260600190565b6020808252601590820152746f776e65722063616e206e6f74206265207a65726f60581b604082015260600190565b602080825260169082015275082e4e4c2f2e640dcdee840e6c2daca40d8cadccee8d60531b604082015260600190565b6001600160a01b038116811461090457600080fd5b5056fe608060405260006006553480156200001657600080fd5b50604080518082018252600e8082526d111150951513d2d15397d253541360921b60208084018281528551808701909652928552840152815191929160009162000064916003919062000098565b5081516200007a90600490602085019062000098565b506005805460ff191660ff9290921691909117905550620001349050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000db57805160ff19168380011785556200010b565b828001600101855582156200010b579182015b828111156200010b578251825591602001919060010190620000ee565b50620001199291506200011d565b5090565b5b808211156200011957600081556001016200011e565b611d2080620001446000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806395d89b41116100f9578063c04a8a1011610097578063dd62ed3e11610071578063dd62ed3e146106ab578063e7484890146106d9578063e78c9b3b146106e1578063f731e9be14610707576101a9565b8063c04a8a10146104b0578063c222ec8a146104dc578063c634dfaa14610685576101a9565b8063a9059cbb116100d3578063a9059cbb14610438578063b16a19de14610464578063b3f1c93d1461046c578063b9a7b622146104a8576101a9565b806395d89b41146104025780639dc29fac1461040a578063a457c2d7146102d9576101a9565b80636bd76d241161016657806375d264131161014057806375d264131461037d578063797743381461038557806379ce6b8c146103ba57806390f6fcf2146103fa576101a9565b80636bd76d241461030557806370a08231146103335780637535d24614610359576101a9565b806306fdde03146101ae578063095ea7b31461022b57806318160ddd1461026b57806323b872dd14610285578063313ce567146102bb57806339509351146102d9575b600080fd5b6101b6610728565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f05781810151838201526020016101d8565b50505050905090810190601f16801561021d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102576004803603604081101561024157600080fd5b506001600160a01b0381351690602001356107be565b604080519115158252519081900360200190f35b610273610806565b60408051918252519081900360200190f35b6102576004803603606081101561029b57600080fd5b506001600160a01b03813581169160208101359091169060400135610818565b6102c3610860565b6040805160ff9092168252519081900360200190f35b610257600480360360408110156102ef57600080fd5b506001600160a01b038135169060200135610869565b6102736004803603604081101561031b57600080fd5b506001600160a01b03813581169160200135166108b8565b6102736004803603602081101561034957600080fd5b50356001600160a01b03166108e5565b61036161095f565b604080516001600160a01b039092168252519081900360200190f35b610361610977565b61038d610981565b6040805194855260208501939093528383019190915264ffffffffff166060830152519081900360800190f35b6103e0600480360360208110156103d057600080fd5b50356001600160a01b03166109b7565b6040805164ffffffffff9092168252519081900360200190f35b6102736109d9565b6101b66109df565b6104366004803603604081101561042057600080fd5b506001600160a01b038135169060200135610a40565b005b6102576004803603604081101561044e57600080fd5b506001600160a01b038135169060200135610818565b610361610da6565b6102576004803603608081101561048257600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610db5565b61027361110d565b610436600480360360408110156104c657600080fd5b506001600160a01b038135169060200135611112565b610436600480360360e08110156104f257600080fd5b6001600160a01b038235811692602081013582169260408201359092169160ff606083013516919081019060a08101608082013564010000000081111561053857600080fd5b82018360208201111561054a57600080fd5b8035906020019184600183028401116401000000008311171561056c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105bf57600080fd5b8201836020820111156105d157600080fd5b803590602001918460018302840111640100000000831117156105f357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561064657600080fd5b82018360208201111561065857600080fd5b8035906020019184600183028401116401000000008311171561067a57600080fd5b5090925090506111ae565b6102736004803603602081101561069b57600080fd5b50356001600160a01b0316611412565b610273600480360360408110156106c157600080fd5b506001600160a01b0381358116916020013516610869565b6103e061141d565b610273600480360360208110156106f757600080fd5b50356001600160a01b031661142a565b61070f611445565b6040805192835260208301919091528051918290030190f35b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b45780601f10610789576101008083540402835291602001916107b4565b820191906000526020600020905b81548152906001019060200180831161079757829003601f168201915b5050505050905090565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b6000610813603b5461145e565b905090565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60055460ff1690565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b038083166000908152603a60209081526040808320938516835292905220545b92915050565b6000806108f1836114a6565b6001600160a01b0384166000908152603d60205260409020549091508161091d5760009250505061095a565b6001600160a01b0384166000908152603c602052604081205461094890839064ffffffffff166114c1565b905061095483826114d5565b93505050505b919050565b603e546501000000000090046001600160a01b031690565b6000610813611593565b6000806000806000603b5490506109966115a2565b61099f8261145e565b603e54919790965091945064ffffffffff1692509050565b6001600160a01b03166000908152603c602052604090205464ffffffffff1690565b603b5490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b45780601f10610789576101008083540402835291602001916107b4565b610a4861095f565b6001600160a01b0316610a596115a8565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610b075760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610acc578181015183820152602001610ab4565b50505050905090810190601f168015610af95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600080610b14846115ac565b92509250506000610b23610806565b6001600160a01b0386166000908152603d6020526040812054919250908190868411610b58576000603b819055600255610bda565b610b628488611605565b600281905591506000610b80610b7786611647565b603b54906114d5565b90506000610b97610b908a611647565b84906114d5565b9050818110610bb35760006002819055603b8190559450610bd7565b610bcf610bbf85611647565b610bc98484611605565b906116c5565b603b81905594505b50505b85871415610c18576001600160a01b0388166000908152603d60209081526040808320839055603c9091529020805464ffffffffff19169055610c46565b6001600160a01b0388166000908152603c60205260409020805464ffffffffff19164264ffffffffff161790555b603e805464ffffffffff19164264ffffffffff1617905586851115610ce6576000610c718689611605565b9050610c7e8982876117cc565b6040805182815260208101899052808201889052606081018490526080810186905260a0810185905290516001600160a01b038b169182917fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f9181900360c00190a350610d5b565b6000610cf28887611605565b9050610cff898287611891565b6040805182815260208101899052808201889052606081018690526080810185905290516001600160a01b038b16917f44bd20a79e993bdcc7cbedf54a3b4d19fb78490124b6b90d04fe3242eea579e8919081900360a00190a2505b6040805188815290516000916001600160a01b038b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050505050505050565b603f546001600160a01b031690565b6000610dbf61095f565b6001600160a01b0316610dd06115a8565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610e415760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b50610e4a611bd9565b846001600160a01b0316866001600160a01b031614610e6e57610e6e8587866118d3565b600080610e7a876115ac565b9250925050610e87610806565b808452603b546080850152610e9c908761199b565b60028190556020840152610eaf86611647565b6040840152610f0d610ec9610ec4848961199b565b611647565b6040850151610bc990610edc90896114d5565b610f07610ee887611647565b6001600160a01b038d166000908152603d6020526040902054906114d5565b9061199b565b60608401819052604080518082019091526002815261373960f01b6020820152906fffffffffffffffffffffffffffffffff1015610f8c5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5060608301516001600160a01b0388166000908152603d6020908152604080832093909355603c8152919020805464ffffffffff421664ffffffffff199182168117909255603e8054909116909117905583015161102290610fed90611647565b610bc96110078660400151896114d590919063ffffffff16565b610f076110178860000151611647565b6080890151906114d5565b603b81905560808401526110418761103a888461199b565b85516117cc565b6040805187815290516001600160a01b038916916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3866001600160a01b0316886001600160a01b03167fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f888585886060015189608001518a6020015160405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a350159695505050505050565b600181565b80603a600061111f6115a8565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120919091556111576115a8565b6001600160a01b03167fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1611189610da6565b604080516001600160a01b039092168252602082018690528051918290030190a35050565b60006111b86119f5565b60075490915060ff16806111cf57506111cf6119fa565b806111db575060065481115b6112165760405162461bcd60e51b815260040180806020018281038252602e815260200180611cbd602e913960400191505060405180910390fd5b60075460ff16158015611236576007805460ff1916600117905560068290555b61123f86611a00565b61124885611a17565b61125187611a2a565b603e805465010000000000600160c81b031916650100000000006001600160a01b038d811691820292909217909255603f80546001600160a01b03199081168d841690811790925560408054909116928c169283178155805192835260ff8b1660208085019190915260a09184018281528b51928501929092528a5192937f40251fbfb6656cfa65a00d7879029fec1fad21d28fdcff2f4f68f52795b74f2c938e938e938e938e938e938e9390916060840191608085019160c08601918a019080838360005b8381101561132f578181015183820152602001611317565b50505050905090810190601f16801561135c5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b8381101561138f578181015183820152602001611377565b50505050905090810190601f1680156113bc5780820380516001836020036101000a031916815260200191505b508481038252858152602001868680828437600083820152604051601f909101601f19169092018290039b50909950505050505050505050a38015611406576007805460ff191690555b50505050505050505050565b60006108df826114a6565b603e5464ffffffffff1690565b6001600160a01b03166000908152603d602052604090205490565b603b5460009081906114568161145e565b925090509091565b6000806114696115a2565b90508061147a57600091505061095a565b603e5460009061149290859064ffffffffff166114c1565b905061149e82826114d5565b949350505050565b6001600160a01b031660009081526020819052604090205490565b60006114ce838342611a40565b9392505050565b60008215806114e2575081155b156114ef575060006108df565b816b019d971e4fe8401e74000000198161150557fe5b0483111560405180604001604052806002815260200161068760f31b815250906115705760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b6040546001600160a01b031690565b60025490565b3390565b6000806000806115bb856114a6565b9050806115d3576000806000935093509350506115fe565b60006115e8826115e2886108e5565b90611605565b9050816115f5818361199b565b90955093509150505b9193909250565b60006114ce83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b16565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b815250906116be5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5092915050565b604080518082019091526002815261035360f41b60208201526000908261172d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156117a95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5082816b033b2e3c9fd0803ce8000000860201816117c357fe5b04949350505050565b6001600160a01b0383166000908152602081905260409020546117ef818461199b565b6001600160a01b0380861660009081526020819052604090819020929092559054161561188b576040805481516318c39f1760e11b81526001600160a01b0387811660048301526024820186905260448201859052925192909116916331873e2e9160648082019260009290919082900301818387803b15801561187257600080fd5b505af1158015611886573d6000803e3d6000fd5b505050505b50505050565b6001600160a01b038316600090815260208181526040918290205482518084019093526002835261038360f41b91830191909152906117ef9082908590611b16565b6040805180820182526002815261353960f01b6020808301919091526001600160a01b038087166000908152603a8352848120918716815291529182205461191c918490611b16565b6001600160a01b038086166000818152603a60209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1611974610da6565b604080516001600160a01b039092168252602082018690528051918290030190a350505050565b6000828201838110156114ce576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600190565b303b1590565b8051611a13906003906020840190611c08565b5050565b8051611a13906004906020840190611c08565b6005805460ff191660ff92909216919091179055565b600080611a548364ffffffffff8616611605565b905080611a6b57611a63611b70565b9150506114ce565b6000198101600060028311611a81576000611a86565b600283035b90506301e1338087046000611a9b82806114d5565b90506000611aa982846114d5565b905060006002611ac384611abd8a8a611b80565b90611b80565b81611aca57fe5b04905060006006611ae184611abd89818d8d611b80565b81611ae857fe5b049050611b0681610f078481611afe8a8e611b80565b610f07611b70565b9c9b505050505050505050505050565b60008184841115611b685760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b505050900390565b6b033b2e3c9fd0803ce800000090565b600082611b8f575060006108df565b82820282848281611b9c57fe5b04146114ce5760405162461bcd60e51b8152600401808060200182810382526021815260200180611c9c6021913960400191505060405180910390fd5b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c4957805160ff1916838001178555611c76565b82800160010185558215611c76579182015b82811115611c76578251825591602001919060010190611c5b565b50611c82929150611c86565b5090565b5b80821115611c825760008155600101611c8756fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a264697066735822122063d412b63d506f7b4a899605458ceab29096a3c1cd95312481c64230a0cb12f864736f6c634300060c0033608060405260006006553480156200001657600080fd5b50604080518082018252600e8082526d111150951513d2d15397d253541360921b60208084018281528551808701909652928552840152815191929160009162000064916003919062000098565b5081516200007a90600490602085019062000098565b506005805460ff191660ff9290921691909117905550620001349050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000db57805160ff19168380011785556200010b565b828001600101855582156200010b579182015b828111156200010b578251825591602001919060010190620000ee565b50620001199291506200011d565b5090565b5b808211156200011957600081556001016200011e565b6117c780620001446000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806375d26413116100c3578063b3f1c93d1161007c578063b3f1c93d146103d2578063b9a7b6221461040e578063c04a8a1014610416578063c222ec8a14610444578063dd62ed3e146105ed578063f5298aca1461061b5761014d565b806375d264131461038657806395d89b411461038e578063a457c2d7146102e2578063a9059cbb14610396578063b16a19de146103c2578063b1bf962d146103ca5761014d565b806323b872dd1161011557806323b872dd1461028e578063313ce567146102c457806339509351146102e25780636bd76d241461030e57806370a082311461033c5780637535d246146103625761014d565b806306fdde0314610152578063095ea7b3146101cf5780630afbcdc91461020f57806318160ddd1461024e5780631da24f3e14610268575b600080fd5b61015a61064d565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019457818101518382015260200161017c565b50505050905090810190601f1680156101c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101fb600480360360408110156101e557600080fd5b506001600160a01b0381351690602001356106e3565b604080519115158252519081900360200190f35b6102356004803603602081101561022557600080fd5b50356001600160a01b031661072b565b6040805192835260208301919091528051918290030190f35b610256610748565b60408051918252519081900360200190f35b6102566004803603602081101561027e57600080fd5b50356001600160a01b03166107db565b6101fb600480360360608110156102a457600080fd5b506001600160a01b038135811691602081013590911690604001356107ee565b6102cc610836565b6040805160ff9092168252519081900360200190f35b6101fb600480360360408110156102f857600080fd5b506001600160a01b03813516906020013561083f565b6102566004803603604081101561032457600080fd5b506001600160a01b038135811691602001351661088e565b6102566004803603602081101561035257600080fd5b50356001600160a01b03166108bb565b61036a610967565b604080516001600160a01b039092168252519081900360200190f35b61036a610976565b61015a610980565b6101fb600480360360408110156103ac57600080fd5b506001600160a01b0381351690602001356107ee565b61036a6109e1565b6102566109f0565b6101fb600480360360808110156103e857600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356109fa565b610256610c13565b6104426004803603604081101561042c57600080fd5b506001600160a01b038135169060200135610c18565b005b610442600480360360e081101561045a57600080fd5b6001600160a01b038235811692602081013582169260408201359092169160ff606083013516919081019060a0810160808201356401000000008111156104a057600080fd5b8201836020820111156104b257600080fd5b803590602001918460018302840111640100000000831117156104d457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561052757600080fd5b82018360208201111561053957600080fd5b8035906020019184600183028401116401000000008311171561055b57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105ae57600080fd5b8201836020820111156105c057600080fd5b803590602001918460018302840111640100000000831117156105e257600080fd5b509092509050610cb4565b6102566004803603604081101561060357600080fd5b506001600160a01b038135811691602001351661083f565b6104426004803603606081101561063157600080fd5b506001600160a01b038135169060208101359060400135610f03565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106d95780601f106106ae576101008083540402835291602001916106d9565b820191906000526020600020905b8154815290600101906020018083116106bc57829003601f168201915b5050505050905090565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60008061073783611097565b61073f6110b2565b91509150915091565b603b54603c546040805163386497fd60e01b81526001600160a01b03928316600482015290516000936107d693169163386497fd916024808301926020929190829003018186803b15801561079c57600080fd5b505afa1580156107b0573d6000803e3d6000fd5b505050506040513d60208110156107c657600080fd5b50516107d06110b2565b906110b8565b905090565b60006107e682611097565b90505b919050565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60055460ff1690565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b038083166000908152603a60209081526040808320938516835292905220545b92915050565b6000806108c783611097565b9050806108d85760009150506107e9565b603b54603c546040805163386497fd60e01b81526001600160a01b039283166004820152905161096093929092169163386497fd91602480820192602092909190829003018186803b15801561092d57600080fd5b505afa158015610941573d6000803e3d6000fd5b505050506040513d602081101561095757600080fd5b505182906110b8565b9392505050565b603b546001600160a01b031690565b60006107d6611176565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106d95780601f106106ae576101008083540402835291602001916106d9565b603c546001600160a01b031690565b60006107d66110b2565b6000610a04610967565b6001600160a01b0316610a15611185565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610ac35760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a88578181015183820152602001610a70565b50505050905090810190601f168015610ab55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50836001600160a01b0316856001600160a01b031614610ae857610ae8848685611189565b6000610af385611097565b90506000610b018585611251565b6040805180820190915260028152611a9b60f11b602082015290915081610b695760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b50610b748682611358565b6040805186815290516001600160a01b038816916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3856001600160a01b0316876001600160a01b03167f2f00e3cdd69a77be7ed215ec7b2a36784dd158f921fca79ac29deffa353fe6ee8787604051808381526020018281526020019250505060405180910390a3501595945050505050565b600181565b80603a6000610c25611185565b6001600160a01b0390811682526020808301939093526040918201600090812091871680825291909352912091909155610c5d611185565b6001600160a01b03167fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1610c8f6109e1565b604080516001600160a01b039092168252602082018690528051918290030190a35050565b6000610cbe6114a9565b60075490915060ff1680610cd55750610cd56114ae565b80610ce1575060065481115b610d1c5760405162461bcd60e51b815260040180806020018281038252602e815260200180611743602e913960400191505060405180910390fd5b60075460ff16158015610d3c576007805460ff1916600117905560068290555b610d45866114b4565b610d4e856114cb565b610d57876114de565b603b80546001600160a01b03808d166001600160a01b03199283168117909355603c80548d83169084168117909155603d8054928d169290931682179092556040805191825260ff8b1660208084019190915260a09183018281528b51928401929092528a517f40251fbfb6656cfa65a00d7879029fec1fad21d28fdcff2f4f68f52795b74f2c938e938e938e938e938e938e93919290916060840191608085019160c0860191908a019080838360005b83811015610e20578181015183820152602001610e08565b50505050905090810190601f168015610e4d5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b83811015610e80578181015183820152602001610e68565b50505050905090810190601f168015610ead5780820380516001836020036101000a031916815260200191505b508481038252858152602001868680828437600083820152604051601f909101601f19169092018290039b50909950505050505050505050a38015610ef7576007805460ff191690555b50505050505050505050565b610f0b610967565b6001600160a01b0316610f1c611185565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610f8d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b506000610f9a8383611251565b60408051808201909152600281526106a760f31b6020820152909150816110025760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5061100d84826114f4565b6040805184815290516000916001600160a01b038716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3604080518481526020810184905281516001600160a01b038716927f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a928290030190a250505050565b6001600160a01b031660009081526020819052604090205490565b60025490565b60008215806110c5575081155b156110d2575060006108b5565b816b019d971e4fe8401e7400000019816110e857fe5b0483111560405180604001604052806002815260200161068760f31b815250906111535760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b603d546001600160a01b031690565b3390565b6040805180820182526002815261353960f01b6020808301919091526001600160a01b038087166000908152603a835284812091871681529152918220546111d2918490611592565b6001600160a01b038086166000818152603a60209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e161122a6109e1565b604080516001600160a01b039092168252602082018690528051918290030190a350505050565b604080518082019091526002815261035360f41b6020820152600090826112b95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156113355760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5082816b033b2e3c9fd0803ce80000008602018161134f57fe5b04949350505050565b6001600160a01b0382166113b3576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6113bf600083836115ec565b6002546113cc81836115f1565b6002556001600160a01b0383166000908152602081905260409020546113f281846115f1565b6001600160a01b038516600090815260208190526040812091909155611416611176565b6001600160a01b0316146114a35761142c611176565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561148a57600080fd5b505af115801561149e573d6000803e3d6000fd5b505050505b50505050565b600190565b303b1590565b80516114c790600390602084019061168d565b5050565b80516114c790600490602084019061168d565b6005805460ff191660ff92909216919091179055565b6001600160a01b0382166115395760405162461bcd60e51b81526004018080602001828103825260218152602001806117716021913960400191505060405180910390fd5b611545826000836115ec565b600254611552818361164b565b6002556001600160a01b0383166000908152602081815260409182902054825160608101909352602280845290926113f292869290611721908301398391905b600081848411156115e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b505050900390565b505050565b600082820183811015610960576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061096083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611592565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106116ce57805160ff19168380011785556116fb565b828001600101855582156116fb579182015b828111156116fb5782518255916020019190600101906116e0565b5061170792915061170b565b5090565b5b80821115611707576000815560010161170c56fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656445524332303a206275726e2066726f6d20746865207a65726f2061646472657373a2646970667358221220f2fe01913b59842ffe8d7363fe27844d555de6f26a7451262077ece0552d341364736f6c634300060c0033a2646970667358221220cfe7a039c56024601f0f121c845a5f2c2abb6ee5f303f0164b9377ff2ce7a2de64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54FE1C94 EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x563B1CB3 EQ PUSH2 0x7C JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x8F JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x97 JUMPI DUP1 PUSH4 0xC2D30321 EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xC8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7A PUSH2 0x75 CALLDATASIZE PUSH1 0x4 PUSH2 0x680 JUMP JUMPDEST PUSH2 0xDB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7A PUSH2 0x8A CALLDATASIZE PUSH1 0x4 PUSH2 0x648 JUMP JUMPDEST PUSH2 0x203 JUMP JUMPDEST PUSH2 0x7A PUSH2 0x361 JUMP JUMPDEST PUSH2 0x9F PUSH2 0x3E0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x76A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7A PUSH2 0xC3 CALLDATASIZE PUSH1 0x4 PUSH2 0x6E9 JUMP JUMPDEST PUSH2 0x3EF JUMP JUMPDEST PUSH2 0x7A PUSH2 0xD6 CALLDATASIZE PUSH1 0x4 PUSH2 0x609 JUMP JUMPDEST PUSH2 0x4EC JUMP JUMPDEST PUSH2 0xE3 PUSH2 0x5A2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x119 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x110 SWAP1 PUSH2 0x7F7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP2 EQ PUSH2 0x138 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x110 SWAP1 PUSH2 0x8BF JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x160 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x110 SWAP1 PUSH2 0x82C JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1FC JUMPI PUSH32 0x1C1768AAB1796270C7034DC781C2951065E6AFB7A946269746521002443B8EA4 PUSH1 0x40 MLOAD PUSH2 0x198 SWAP1 PUSH2 0x5A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x1B4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1C1 SWAP1 PUSH2 0x5B3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x1DD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1EC SWAP3 SWAP2 SWAP1 PUSH2 0x77E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x1 ADD PUSH2 0x163 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x20B PUSH2 0x5A2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x238 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x110 SWAP1 PUSH2 0x7F7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x25E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x110 SWAP1 PUSH2 0x890 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2D9 SWAP2 SWAP1 PUSH2 0x62C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x110 SWAP1 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xF2FDE38B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0xF2FDE38B SWAP1 PUSH2 0x32B SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x76A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x345 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x359 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x369 PUSH2 0x5A2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x396 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x110 SWAP1 PUSH2 0x7F7 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x3F7 PUSH2 0x5A2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x424 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x110 SWAP1 PUSH2 0x7F7 JUMP JUMPDEST DUP4 DUP3 EQ PUSH2 0x443 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x110 SWAP1 PUSH2 0x8BF JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x359 JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x72EB293D DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x469 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x47E SWAP2 SWAP1 PUSH2 0x609 JUMP JUMPDEST DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x48A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4AE SWAP3 SWAP2 SWAP1 PUSH2 0x798 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4DC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0x446 SWAP1 POP JUMP JUMPDEST PUSH2 0x4F4 PUSH2 0x5A2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x521 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x110 SWAP1 PUSH2 0x7F7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x547 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x110 SWAP1 PUSH2 0x7B1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x1E64 DUP1 PUSH2 0x908 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0x190B DUP1 PUSH2 0x276C DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x5D1 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5E8 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x602 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x61A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x625 DUP2 PUSH2 0x8EF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x63D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x625 DUP2 PUSH2 0x8EF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x65A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x665 DUP2 PUSH2 0x8EF JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x675 DUP2 PUSH2 0x8EF JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x695 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x6AC JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x6B8 DUP9 DUP4 DUP10 ADD PUSH2 0x5C0 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x6D0 JUMPI DUP4 DUP5 REVERT JUMPDEST POP PUSH2 0x6DD DUP8 DUP3 DUP9 ADD PUSH2 0x5C0 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x700 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x717 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x723 DUP10 DUP4 DUP11 ADD PUSH2 0x5C0 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x73B JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x748 DUP9 DUP3 DUP10 ADD PUSH2 0x5C0 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x75C DUP2 PUSH2 0x8EF JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x40 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x506F6F6C2063616E206E6F74206265207A65726F206164647265737300000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x3432B63832B91034B9903737BA1037BBB732B9 PUSH1 0x69 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH21 0x6F776E65722063616E206E6F74206265207A65726F PUSH1 0x58 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH22 0x82E4E4C2F2E640DCDEE840E6C2DACA40D8CADCCEE8D PUSH1 0x53 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x904 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0x6 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP1 DUP3 MSTORE PUSH14 0x111150951513D2D15397D2535413 PUSH1 0x92 SHL PUSH1 0x20 DUP1 DUP5 ADD DUP3 DUP2 MSTORE DUP6 MLOAD DUP1 DUP8 ADD SWAP1 SWAP7 MSTORE SWAP3 DUP6 MSTORE DUP5 ADD MSTORE DUP2 MLOAD SWAP2 SWAP3 SWAP2 PUSH1 0x0 SWAP2 PUSH3 0x64 SWAP2 PUSH1 0x3 SWAP2 SWAP1 PUSH3 0x98 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0x7A SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x98 JUMP JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0x134 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0xDB JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x10B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x10B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x10B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xEE JUMP JUMPDEST POP PUSH3 0x119 SWAP3 SWAP2 POP PUSH3 0x11D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x119 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x11E JUMP JUMPDEST PUSH2 0x1D20 DUP1 PUSH3 0x144 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1A9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x95D89B41 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xC04A8A10 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x6AB JUMPI DUP1 PUSH4 0xE7484890 EQ PUSH2 0x6D9 JUMPI DUP1 PUSH4 0xE78C9B3B EQ PUSH2 0x6E1 JUMPI DUP1 PUSH4 0xF731E9BE EQ PUSH2 0x707 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0xC04A8A10 EQ PUSH2 0x4B0 JUMPI DUP1 PUSH4 0xC222EC8A EQ PUSH2 0x4DC JUMPI DUP1 PUSH4 0xC634DFAA EQ PUSH2 0x685 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0xA9059CBB GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x438 JUMPI DUP1 PUSH4 0xB16A19DE EQ PUSH2 0x464 JUMPI DUP1 PUSH4 0xB3F1C93D EQ PUSH2 0x46C JUMPI DUP1 PUSH4 0xB9A7B622 EQ PUSH2 0x4A8 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x402 JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x40A JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x2D9 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x6BD76D24 GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x75D26413 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x75D26413 EQ PUSH2 0x37D JUMPI DUP1 PUSH4 0x79774338 EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0x79CE6B8C EQ PUSH2 0x3BA JUMPI DUP1 PUSH4 0x90F6FCF2 EQ PUSH2 0x3FA JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x6BD76D24 EQ PUSH2 0x305 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x333 JUMPI DUP1 PUSH4 0x7535D246 EQ PUSH2 0x359 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x26B JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2D9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B6 PUSH2 0x728 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1D8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x21D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x241 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7BE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x273 PUSH2 0x806 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x818 JUMP JUMPDEST PUSH2 0x2C3 PUSH2 0x860 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x869 JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x31B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x8B8 JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x349 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8E5 JUMP JUMPDEST PUSH2 0x361 PUSH2 0x95F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x361 PUSH2 0x977 JUMP JUMPDEST PUSH2 0x38D PUSH2 0x981 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH5 0xFFFFFFFFFF AND PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9B7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH5 0xFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x273 PUSH2 0x9D9 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x9DF JUMP JUMPDEST PUSH2 0x436 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA40 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x44E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x818 JUMP JUMPDEST PUSH2 0x361 PUSH2 0xDA6 JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0xDB5 JUMP JUMPDEST PUSH2 0x273 PUSH2 0x110D JUMP JUMPDEST PUSH2 0x436 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1112 JUMP JUMPDEST PUSH2 0x436 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x4F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 PUSH1 0xFF PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x538 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x54A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x56C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x658 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x67A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x11AE JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x69B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1412 JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x869 JUMP JUMPDEST PUSH2 0x3E0 PUSH2 0x141D JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x142A JUMP JUMPDEST PUSH2 0x70F PUSH2 0x1445 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7B4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x789 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7B4 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x797 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1054141493D5905317D393D517D4D5541413D4951151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x813 PUSH1 0x3B SLOAD PUSH2 0x145E JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1514905394D1915497D393D517D4D5541413D4951151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x414C4C4F57414E43455F4E4F545F535550504F52544544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8F1 DUP4 PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 PUSH2 0x91D JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x95A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x948 SWAP1 DUP4 SWAP1 PUSH5 0xFFFFFFFFFF AND PUSH2 0x14C1 JUMP JUMPDEST SWAP1 POP PUSH2 0x954 DUP4 DUP3 PUSH2 0x14D5 JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH6 0x10000000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x813 PUSH2 0x1593 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x3B SLOAD SWAP1 POP PUSH2 0x996 PUSH2 0x15A2 JUMP JUMPDEST PUSH2 0x99F DUP3 PUSH2 0x145E JUMP JUMPDEST PUSH1 0x3E SLOAD SWAP2 SWAP8 SWAP1 SWAP7 POP SWAP2 SWAP5 POP PUSH5 0xFFFFFFFFFF AND SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH5 0xFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x3B SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7B4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x789 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7B4 JUMP JUMPDEST PUSH2 0xA48 PUSH2 0x95F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA59 PUSH2 0x15A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xB07 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xAF9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 PUSH2 0xB14 DUP5 PUSH2 0x15AC JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH1 0x0 PUSH2 0xB23 PUSH2 0x806 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 DUP2 SWAP1 DUP7 DUP5 GT PUSH2 0xB58 JUMPI PUSH1 0x0 PUSH1 0x3B DUP2 SWAP1 SSTORE PUSH1 0x2 SSTORE PUSH2 0xBDA JUMP JUMPDEST PUSH2 0xB62 DUP5 DUP9 PUSH2 0x1605 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE SWAP2 POP PUSH1 0x0 PUSH2 0xB80 PUSH2 0xB77 DUP7 PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x3B SLOAD SWAP1 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB97 PUSH2 0xB90 DUP11 PUSH2 0x1647 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT PUSH2 0xBB3 JUMPI PUSH1 0x0 PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x3B DUP2 SWAP1 SSTORE SWAP5 POP PUSH2 0xBD7 JUMP JUMPDEST PUSH2 0xBCF PUSH2 0xBBF DUP6 PUSH2 0x1647 JUMP JUMPDEST PUSH2 0xBC9 DUP5 DUP5 PUSH2 0x1605 JUMP JUMPDEST SWAP1 PUSH2 0x16C5 JUMP JUMPDEST PUSH1 0x3B DUP2 SWAP1 SSTORE SWAP5 POP JUMPDEST POP POP JUMPDEST DUP6 DUP8 EQ ISZERO PUSH2 0xC18 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE PUSH1 0x3C SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0xFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH2 0xC46 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0xFFFFFFFFFF NOT AND TIMESTAMP PUSH5 0xFFFFFFFFFF AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x3E DUP1 SLOAD PUSH5 0xFFFFFFFFFF NOT AND TIMESTAMP PUSH5 0xFFFFFFFFFF AND OR SWAP1 SSTORE DUP7 DUP6 GT ISZERO PUSH2 0xCE6 JUMPI PUSH1 0x0 PUSH2 0xC71 DUP7 DUP10 PUSH2 0x1605 JUMP JUMPDEST SWAP1 POP PUSH2 0xC7E DUP10 DUP3 DUP8 PUSH2 0x17CC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP10 SWAP1 MSTORE DUP1 DUP3 ADD DUP9 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 DUP3 SWAP2 PUSH32 0xC16F4E4CA34D790DE4C656C72FD015C667D688F20BE64EEA360618545C4C530F SWAP2 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 LOG3 POP PUSH2 0xD5B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCF2 DUP9 DUP8 PUSH2 0x1605 JUMP JUMPDEST SWAP1 POP PUSH2 0xCFF DUP10 DUP3 DUP8 PUSH2 0x1891 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP10 SWAP1 MSTORE DUP1 DUP3 ADD DUP9 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 PUSH32 0x44BD20A79E993BDCC7CBEDF54A3B4D19FB78490124B6B90D04FE3242EEA579E8 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3F SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDBF PUSH2 0x95F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDD0 PUSH2 0x15A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xE41 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP PUSH2 0xE4A PUSH2 0x1BD9 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xE6E JUMPI PUSH2 0xE6E DUP6 DUP8 DUP7 PUSH2 0x18D3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xE7A DUP8 PUSH2 0x15AC JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0xE87 PUSH2 0x806 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x3B SLOAD PUSH1 0x80 DUP6 ADD MSTORE PUSH2 0xE9C SWAP1 DUP8 PUSH2 0x199B JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xEAF DUP7 PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0xF0D PUSH2 0xEC9 PUSH2 0xEC4 DUP5 DUP10 PUSH2 0x199B JUMP JUMPDEST PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD PUSH2 0xBC9 SWAP1 PUSH2 0xEDC SWAP1 DUP10 PUSH2 0x14D5 JUMP JUMPDEST PUSH2 0xF07 PUSH2 0xEE8 DUP8 PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 PUSH2 0x199B JUMP JUMPDEST PUSH1 0x60 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3739 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF LT ISZERO PUSH2 0xF8C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x3C DUP2 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0xFFFFFFFFFF TIMESTAMP AND PUSH5 0xFFFFFFFFFF NOT SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x3E DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SWAP2 OR SWAP1 SSTORE DUP4 ADD MLOAD PUSH2 0x1022 SWAP1 PUSH2 0xFED SWAP1 PUSH2 0x1647 JUMP JUMPDEST PUSH2 0xBC9 PUSH2 0x1007 DUP7 PUSH1 0x40 ADD MLOAD DUP10 PUSH2 0x14D5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0xF07 PUSH2 0x1017 DUP9 PUSH1 0x0 ADD MLOAD PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x80 DUP10 ADD MLOAD SWAP1 PUSH2 0x14D5 JUMP JUMPDEST PUSH1 0x3B DUP2 SWAP1 SSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x1041 DUP8 PUSH2 0x103A DUP9 DUP5 PUSH2 0x199B JUMP JUMPDEST DUP6 MLOAD PUSH2 0x17CC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC16F4E4CA34D790DE4C656C72FD015C667D688F20BE64EEA360618545C4C530F DUP9 DUP6 DUP6 DUP9 PUSH1 0x60 ADD MLOAD DUP10 PUSH1 0x80 ADD MLOAD DUP11 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP ISZERO SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST DUP1 PUSH1 0x3A PUSH1 0x0 PUSH2 0x111F PUSH2 0x15A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1157 PUSH2 0x15A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDA919360433220E13B51E8C211E490D148E61A3BD53DE8C097194E458B97F3E1 PUSH2 0x1189 PUSH2 0xDA6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11B8 PUSH2 0x19F5 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 PUSH2 0x11CF JUMPI POP PUSH2 0x11CF PUSH2 0x19FA JUMP JUMPDEST DUP1 PUSH2 0x11DB JUMPI POP PUSH1 0x6 SLOAD DUP2 GT JUMPDEST PUSH2 0x1216 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1CBD PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x1236 JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x6 DUP3 SWAP1 SSTORE JUMPDEST PUSH2 0x123F DUP7 PUSH2 0x1A00 JUMP JUMPDEST PUSH2 0x1248 DUP6 PUSH2 0x1A17 JUMP JUMPDEST PUSH2 0x1251 DUP8 PUSH2 0x1A2A JUMP JUMPDEST PUSH1 0x3E DUP1 SLOAD PUSH6 0x10000000000 PUSH1 0x1 PUSH1 0xC8 SHL SUB NOT AND PUSH6 0x10000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x3F DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND DUP14 DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 SLOAD SWAP1 SWAP2 AND SWAP3 DUP13 AND SWAP3 DUP4 OR DUP2 SSTORE DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0xFF DUP12 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 SWAP2 DUP5 ADD DUP3 DUP2 MSTORE DUP12 MLOAD SWAP3 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP11 MLOAD SWAP3 SWAP4 PUSH32 0x40251FBFB6656CFA65A00D7879029FEC1FAD21D28FDCFF2F4F68F52795B74F2C SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 SWAP1 SWAP2 PUSH1 0x60 DUP5 ADD SWAP2 PUSH1 0x80 DUP6 ADD SWAP2 PUSH1 0xC0 DUP7 ADD SWAP2 DUP11 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x132F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1317 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x135C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP5 DUP2 SUB DUP4 MSTORE DUP8 MLOAD DUP2 MSTORE DUP8 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP10 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x138F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1377 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13BC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP7 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP12 POP SWAP1 SWAP10 POP POP POP POP POP POP POP POP POP POP LOG3 DUP1 ISZERO PUSH2 0x1406 JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8DF DUP3 PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH5 0xFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH2 0x1456 DUP2 PUSH2 0x145E JUMP JUMPDEST SWAP3 POP SWAP1 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1469 PUSH2 0x15A2 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x147A JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x95A JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1492 SWAP1 DUP6 SWAP1 PUSH5 0xFFFFFFFFFF AND PUSH2 0x14C1 JUMP JUMPDEST SWAP1 POP PUSH2 0x149E DUP3 DUP3 PUSH2 0x14D5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CE DUP4 DUP4 TIMESTAMP PUSH2 0x1A40 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x14E2 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x14EF JUMPI POP PUSH1 0x0 PUSH2 0x8DF JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x1505 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1570 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP POP PUSH12 0x33B2E3C9FD0803CE8000000 SWAP2 MUL PUSH12 0x19D971E4FE8401E74000000 ADD DIV SWAP1 JUMP JUMPDEST PUSH1 0x40 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x15BB DUP6 PUSH2 0x14A6 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x15D3 JUMPI PUSH1 0x0 DUP1 PUSH1 0x0 SWAP4 POP SWAP4 POP SWAP4 POP POP PUSH2 0x15FE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15E8 DUP3 PUSH2 0x15E2 DUP9 PUSH2 0x8E5 JUMP JUMPDEST SWAP1 PUSH2 0x1605 JUMP JUMPDEST SWAP1 POP DUP2 PUSH2 0x15F5 DUP2 DUP4 PUSH2 0x199B JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP SWAP2 POP POP JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CE DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1B16 JUMP JUMPDEST PUSH1 0x0 PUSH4 0x3B9ACA00 DUP3 DUP2 MUL SWAP1 DUP4 SWAP1 DUP3 DIV EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x16BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x172D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x17A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x17C3 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x17EF DUP2 DUP5 PUSH2 0x199B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE SWAP1 SLOAD AND ISZERO PUSH2 0x188B JUMPI PUSH1 0x40 DUP1 SLOAD DUP2 MLOAD PUSH4 0x18C39F17 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP3 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH4 0x31873E2E SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1872 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1886 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x2 DUP4 MSTORE PUSH2 0x383 PUSH1 0xF4 SHL SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 PUSH2 0x17EF SWAP1 DUP3 SWAP1 DUP6 SWAP1 PUSH2 0x1B16 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3539 PUSH1 0xF0 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A DUP4 MSTORE DUP5 DUP2 KECCAK256 SWAP2 DUP8 AND DUP2 MSTORE SWAP2 MSTORE SWAP2 DUP3 KECCAK256 SLOAD PUSH2 0x191C SWAP2 DUP5 SWAP1 PUSH2 0x1B16 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP10 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP4 SWAP1 SSTORE SWAP2 SWAP3 POP SWAP1 PUSH32 0xDA919360433220E13B51E8C211E490D148E61A3BD53DE8C097194E458B97F3E1 PUSH2 0x1974 PUSH2 0xDA6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x14CE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1A13 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1C08 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1A13 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1C08 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1A54 DUP4 PUSH5 0xFFFFFFFFFF DUP7 AND PUSH2 0x1605 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1A6B JUMPI PUSH2 0x1A63 PUSH2 0x1B70 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x14CE JUMP JUMPDEST PUSH1 0x0 NOT DUP2 ADD PUSH1 0x0 PUSH1 0x2 DUP4 GT PUSH2 0x1A81 JUMPI PUSH1 0x0 PUSH2 0x1A86 JUMP JUMPDEST PUSH1 0x2 DUP4 SUB JUMPDEST SWAP1 POP PUSH4 0x1E13380 DUP8 DIV PUSH1 0x0 PUSH2 0x1A9B DUP3 DUP1 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1AA9 DUP3 DUP5 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x2 PUSH2 0x1AC3 DUP5 PUSH2 0x1ABD DUP11 DUP11 PUSH2 0x1B80 JUMP JUMPDEST SWAP1 PUSH2 0x1B80 JUMP JUMPDEST DUP2 PUSH2 0x1ACA JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x6 PUSH2 0x1AE1 DUP5 PUSH2 0x1ABD DUP10 DUP2 DUP14 DUP14 PUSH2 0x1B80 JUMP JUMPDEST DUP2 PUSH2 0x1AE8 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x1B06 DUP2 PUSH2 0xF07 DUP5 DUP2 PUSH2 0x1AFE DUP11 DUP15 PUSH2 0x1B80 JUMP JUMPDEST PUSH2 0xF07 PUSH2 0x1B70 JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1B68 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1B8F JUMPI POP PUSH1 0x0 PUSH2 0x8DF JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1B9C JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x14CE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1C9C PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x1C49 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x1C76 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x1C76 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1C76 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1C5B JUMP JUMPDEST POP PUSH2 0x1C82 SWAP3 SWAP2 POP PUSH2 0x1C86 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1C82 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1C87 JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77436F6E747261637420 PUSH10 0x6E7374616E6365206861 PUSH20 0x20616C7265616479206265656E20696E69746961 PUSH13 0x697A6564A26469706673582212 KECCAK256 PUSH4 0xD412B63D POP PUSH16 0x7B4A899605458CEAB29096A3C1CD9531 0x24 DUP2 0xC6 TIMESTAMP ADDRESS LOG0 0xCB SLT 0xF8 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0x6 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP1 DUP3 MSTORE PUSH14 0x111150951513D2D15397D2535413 PUSH1 0x92 SHL PUSH1 0x20 DUP1 DUP5 ADD DUP3 DUP2 MSTORE DUP6 MLOAD DUP1 DUP8 ADD SWAP1 SWAP7 MSTORE SWAP3 DUP6 MSTORE DUP5 ADD MSTORE DUP2 MLOAD SWAP2 SWAP3 SWAP2 PUSH1 0x0 SWAP2 PUSH3 0x64 SWAP2 PUSH1 0x3 SWAP2 SWAP1 PUSH3 0x98 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0x7A SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x98 JUMP JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0x134 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0xDB JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x10B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x10B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x10B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xEE JUMP JUMPDEST POP PUSH3 0x119 SWAP3 SWAP2 POP PUSH3 0x11D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x119 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x11E JUMP JUMPDEST PUSH2 0x17C7 DUP1 PUSH3 0x144 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x14D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x75D26413 GT PUSH2 0xC3 JUMPI DUP1 PUSH4 0xB3F1C93D GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xB3F1C93D EQ PUSH2 0x3D2 JUMPI DUP1 PUSH4 0xB9A7B622 EQ PUSH2 0x40E JUMPI DUP1 PUSH4 0xC04A8A10 EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0xC222EC8A EQ PUSH2 0x444 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x5ED JUMPI DUP1 PUSH4 0xF5298ACA EQ PUSH2 0x61B JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x75D26413 EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x38E JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x2E2 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x396 JUMPI DUP1 PUSH4 0xB16A19DE EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0xB1BF962D EQ PUSH2 0x3CA JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x115 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2E2 JUMPI DUP1 PUSH4 0x6BD76D24 EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x33C JUMPI DUP1 PUSH4 0x7535D246 EQ PUSH2 0x362 JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0xAFBCDC9 EQ PUSH2 0x20F JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0x1DA24F3E EQ PUSH2 0x268 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15A PUSH2 0x64D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x194 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1C1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6E3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x235 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x225 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x72B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x256 PUSH2 0x748 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7DB JUMP JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x7EE JUMP JUMPDEST PUSH2 0x2CC PUSH2 0x836 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x83F JUMP JUMPDEST PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x88E JUMP JUMPDEST PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8BB JUMP JUMPDEST PUSH2 0x36A PUSH2 0x967 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x36A PUSH2 0x976 JUMP JUMPDEST PUSH2 0x15A PUSH2 0x980 JUMP JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7EE JUMP JUMPDEST PUSH2 0x36A PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x256 PUSH2 0x9F0 JUMP JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x3E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x9FA JUMP JUMPDEST PUSH2 0x256 PUSH2 0xC13 JUMP JUMPDEST PUSH2 0x442 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x42C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC18 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x442 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x45A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 PUSH1 0xFF PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x527 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x539 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xCB4 JUMP JUMPDEST PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x603 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x83F JUMP JUMPDEST PUSH2 0x442 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF03 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x6D9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6AE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6D9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6BC JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1054141493D5905317D393D517D4D5541413D4951151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x737 DUP4 PUSH2 0x1097 JUMP JUMPDEST PUSH2 0x73F PUSH2 0x10B2 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x386497FD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 PUSH2 0x7D6 SWAP4 AND SWAP2 PUSH4 0x386497FD SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x79C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x7D0 PUSH2 0x10B2 JUMP JUMPDEST SWAP1 PUSH2 0x10B8 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7E6 DUP3 PUSH2 0x1097 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1514905394D1915497D393D517D4D5541413D4951151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x414C4C4F57414E43455F4E4F545F535550504F52544544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8C7 DUP4 PUSH2 0x1097 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x8D8 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x7E9 JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x386497FD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x960 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0x386497FD SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x92D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x941 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x957 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 SWAP1 PUSH2 0x10B8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D6 PUSH2 0x1176 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x6D9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6AE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6D9 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D6 PUSH2 0x10B2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA04 PUSH2 0x967 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA15 PUSH2 0x1185 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xAC3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xAB5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xAE8 JUMPI PUSH2 0xAE8 DUP5 DUP7 DUP6 PUSH2 0x1189 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAF3 DUP6 PUSH2 0x1097 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB01 DUP6 DUP6 PUSH2 0x1251 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1A9B PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0xB69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP PUSH2 0xB74 DUP7 DUP3 PUSH2 0x1358 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2F00E3CDD69A77BE7ED215EC7B2A36784DD158F921FCA79AC29DEFFA353FE6EE DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP ISZERO SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST DUP1 PUSH1 0x3A PUSH1 0x0 PUSH2 0xC25 PUSH2 0x1185 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0xC5D PUSH2 0x1185 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDA919360433220E13B51E8C211E490D148E61A3BD53DE8C097194E458B97F3E1 PUSH2 0xC8F PUSH2 0x9E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCBE PUSH2 0x14A9 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 PUSH2 0xCD5 JUMPI POP PUSH2 0xCD5 PUSH2 0x14AE JUMP JUMPDEST DUP1 PUSH2 0xCE1 JUMPI POP PUSH1 0x6 SLOAD DUP2 GT JUMPDEST PUSH2 0xD1C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1743 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0xD3C JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x6 DUP3 SWAP1 SSTORE JUMPDEST PUSH2 0xD45 DUP7 PUSH2 0x14B4 JUMP JUMPDEST PUSH2 0xD4E DUP6 PUSH2 0x14CB JUMP JUMPDEST PUSH2 0xD57 DUP8 PUSH2 0x14DE JUMP JUMPDEST PUSH1 0x3B DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP14 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x3C DUP1 SLOAD DUP14 DUP4 AND SWAP1 DUP5 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x3D DUP1 SLOAD SWAP3 DUP14 AND SWAP3 SWAP1 SWAP4 AND DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE PUSH1 0xFF DUP12 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 SWAP2 DUP4 ADD DUP3 DUP2 MSTORE DUP12 MLOAD SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP11 MLOAD PUSH32 0x40251FBFB6656CFA65A00D7879029FEC1FAD21D28FDCFF2F4F68F52795B74F2C SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x60 DUP5 ADD SWAP2 PUSH1 0x80 DUP6 ADD SWAP2 PUSH1 0xC0 DUP7 ADD SWAP2 SWAP1 DUP11 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE20 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE08 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE4D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP5 DUP2 SUB DUP4 MSTORE DUP8 MLOAD DUP2 MSTORE DUP8 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP10 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE80 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE68 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xEAD JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP7 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP12 POP SWAP1 SWAP10 POP POP POP POP POP POP POP POP POP POP LOG3 DUP1 ISZERO PUSH2 0xEF7 JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xF0B PUSH2 0x967 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF1C PUSH2 0x1185 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xF8D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xF9A DUP4 DUP4 PUSH2 0x1251 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x6A7 PUSH1 0xF3 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0x1002 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP PUSH2 0x100D DUP5 DUP3 PUSH2 0x14F4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP3 PUSH32 0x49995E5DD6158CF69AD3E9777C46755A1A826A446C6416992167462DAD033B2A SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x10C5 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x10D2 JUMPI POP PUSH1 0x0 PUSH2 0x8B5 JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x10E8 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1153 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP POP PUSH12 0x33B2E3C9FD0803CE8000000 SWAP2 MUL PUSH12 0x19D971E4FE8401E74000000 ADD DIV SWAP1 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3539 PUSH1 0xF0 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A DUP4 MSTORE DUP5 DUP2 KECCAK256 SWAP2 DUP8 AND DUP2 MSTORE SWAP2 MSTORE SWAP2 DUP3 KECCAK256 SLOAD PUSH2 0x11D2 SWAP2 DUP5 SWAP1 PUSH2 0x1592 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP10 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP4 SWAP1 SSTORE SWAP2 SWAP3 POP SWAP1 PUSH32 0xDA919360433220E13B51E8C211E490D148E61A3BD53DE8C097194E458B97F3E1 PUSH2 0x122A PUSH2 0x9E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x12B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x1335 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x134F JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x13B3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x13BF PUSH1 0x0 DUP4 DUP4 PUSH2 0x15EC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x13CC DUP2 DUP4 PUSH2 0x15F1 JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x13F2 DUP2 DUP5 PUSH2 0x15F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1416 PUSH2 0x1176 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x14A3 JUMPI PUSH2 0x142C PUSH2 0x1176 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP6 DUP5 DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x148A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x149E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x14C7 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x168D JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x14C7 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x168D JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1539 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1771 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1545 DUP3 PUSH1 0x0 DUP4 PUSH2 0x15EC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x1552 DUP2 DUP4 PUSH2 0x164B JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x22 DUP1 DUP5 MSTORE SWAP1 SWAP3 PUSH2 0x13F2 SWAP3 DUP7 SWAP3 SWAP1 PUSH2 0x1721 SWAP1 DUP4 ADD CODECOPY DUP4 SWAP2 SWAP1 JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x15E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x960 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x960 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1592 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x16CE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x16FB JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x16FB JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x16FB JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x16E0 JUMP JUMPDEST POP PUSH2 0x1707 SWAP3 SWAP2 POP PUSH2 0x170B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1707 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x170C JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E6365436F6E74 PUSH19 0x61637420696E7374616E63652068617320616C PUSH19 0x65616479206265656E20696E697469616C697A PUSH6 0x644552433230 GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F2061646472657373A2646970667358221220F2FE01913B59 DUP5 0x2F INVALID DUP14 PUSH20 0x63FE27844D555DE6F26A7451262077ECE0552D34 SGT PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCF 0xE7 LOG0 CODECOPY 0xC5 PUSH1 0x24 PUSH1 0x1F 0xF SLT SHR DUP5 GAS 0x5F 0x2C 0x2A 0xBB PUSH15 0xE5F303F0164B9377FF2CE7A2DE6473 PUSH16 0x6C634300060C00330000000000000000 ",
              "sourceMap": "449:1418:22:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;785:391;;;;;;:::i;:::-;;:::i;:::-;;1579:286;;;;;;:::i;:::-;;:::i;1610:135:11:-;;;:::i;1027:71::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1180:395:22;;;;;;:::i;:::-;;:::i;1884:226:11:-;;;;;;:::i;:::-;;:::i;785:391:22:-;1223:12:11;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;-1:-1:-1;;;1205:67:11;;;;;;;:::i;:::-;;;;;;;;;896:31:22;;::::1;888:66;;;;-1:-1:-1::0;;;888:66:22::1;;;;;;;:::i;:::-;968:4;::::0;-1:-1:-1;;;;;968:4:22::1;960:59;;;;-1:-1:-1::0;;;960:59:22::1;;;;;;;:::i;:::-;1030:9;1025:147;1045:17:::0;;::::1;1025:147;;;1082:83;1108:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;1140:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;1082:83;;;;;;;:::i;:::-;;;;;;;;1064:3;;1025:147;;;;785:391:::0;;;;:::o;1579:286::-;1223:12:11;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;-1:-1:-1;;;1205:67:11;;;;;;;:::i;:::-;-1:-1:-1;;;;;1671:19:22;::::1;1663:53;;;;-1:-1:-1::0;;;1663:53:22::1;;;;;;;:::i;:::-;1775:4;-1:-1:-1::0;;;;;1730:50:22::1;1748:6;-1:-1:-1::0;;;;;1730:31:22::1;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;1730:50:22::1;;1722:82;;;;-1:-1:-1::0;;;1722:82:22::1;;;;;;;:::i;:::-;1810:50;::::0;-1:-1:-1;;;1810:50:22;;-1:-1:-1;;;;;1810:43:22;::::1;::::0;::::1;::::0;:50:::1;::::0;1854:5;;1810:50:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1579:286:::0;;:::o;1610:135:11:-;1223:12;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;-1:-1:-1;;;1205:67:11;;;;;;;:::i;:::-;1712:1:::1;1696:6:::0;;1675:40:::1;::::0;-1:-1:-1;;;;;1696:6:11;;::::1;::::0;1675:40:::1;::::0;1712:1;;1675:40:::1;1738:1;1721:19:::0;;-1:-1:-1;;;;;;1721:19:11::1;::::0;;1610:135::o;1027:71::-;1065:7;1087:6;-1:-1:-1;;;;;1087:6:11;1027:71;:::o;1180:395:22:-;1223:12:11;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;-1:-1:-1;;;1205:67:11;;;;;;;:::i;:::-;1328:29:22;;::::1;1320:64;;;;-1:-1:-1::0;;;1320:64:22::1;;;;;;;:::i;:::-;1396:9;1391:180;1411:17:::0;;::::1;1391:180;;;1516:6;-1:-1:-1::0;;;;;1498:45:22::1;;1544:6;;1551:1;1544:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;1555:5;;1561:1;1555:8;;;;;;;;;;;;;1498:66;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1430:3:22::1;::::0;;::::1;::::0;-1:-1:-1;1391:180:22::1;::::0;-1:-1:-1;1391:180:22::1;1884:226:11::0;1223:12;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;-1:-1:-1;;;1205:67:11;;;;;;;:::i;:::-;-1:-1:-1;;;;;1968:22:11;::::1;1960:73;;;;-1:-1:-1::0;;;1960:73:11::1;;;;;;;:::i;:::-;2065:6;::::0;;2044:38:::1;::::0;-1:-1:-1;;;;;2044:38:11;;::::1;::::0;2065:6;::::1;::::0;2044:38:::1;::::0;::::1;2088:6;:17:::0;;-1:-1:-1;;;;;;2088:17:11::1;-1:-1:-1::0;;;;;2088:17:11;;;::::1;::::0;;;::::1;::::0;;1884:226::o;587:98:7:-;670:10;587:98;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;301:352::-;;;431:3;424:4;416:6;412:17;408:27;398:2;;-1:-1;;439:12;398:2;-1:-1;469:20;;509:18;498:30;;495:2;;;-1:-1;;531:12;495:2;575:4;567:6;563:17;551:29;;626:3;575:4;;610:6;606:17;567:6;592:32;;589:41;586:2;;;643:1;;633:12;586:2;391:262;;;;;:::o;1428:241::-;;1532:2;1520:9;1511:7;1507:23;1503:32;1500:2;;;-1:-1;;1538:12;1500:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1590:63;1494:175;-1:-1;;;1494:175::o;1676:263::-;;1791:2;1779:9;1770:7;1766:23;1762:32;1759:2;;;-1:-1;;1797:12;1759:2;226:6;220:13;238:33;265:5;238:33;:::i;1946:366::-;;;2067:2;2055:9;2046:7;2042:23;2038:32;2035:2;;;-1:-1;;2073:12;2035:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;2125:63;-1:-1;2225:2;2264:22;;72:20;97:33;72:20;97:33;:::i;:::-;2233:63;;;;2029:283;;;;;:::o;2319:702::-;;;;;2522:2;2510:9;2501:7;2497:23;2493:32;2490:2;;;-1:-1;;2528:12;2490:2;2586:17;2573:31;2624:18;;2616:6;2613:30;2610:2;;;-1:-1;;2646:12;2610:2;2684:80;2756:7;2747:6;2736:9;2732:22;2684:80;:::i;:::-;2666:98;;-1:-1;2666:98;-1:-1;2829:2;2814:18;;2801:32;;-1:-1;2842:30;;;2839:2;;;-1:-1;;2875:12;2839:2;;2913:92;2997:7;2988:6;2977:9;2973:22;2913:92;:::i;:::-;2484:537;;;;-1:-1;2895:110;-1:-1;;;;2484:537::o;3028:803::-;;;;;;3236:2;3224:9;3215:7;3211:23;3207:32;3204:2;;;-1:-1;;3242:12;3204:2;3300:17;3287:31;3338:18;;3330:6;3327:30;3324:2;;;-1:-1;;3360:12;3324:2;3398:80;3470:7;3461:6;3450:9;3446:22;3398:80;:::i;:::-;3380:98;;-1:-1;3380:98;-1:-1;3543:2;3528:18;;3515:32;;-1:-1;3556:30;;;3553:2;;;-1:-1;;3589:12;3553:2;;3627:80;3699:7;3690:6;3679:9;3675:22;3627:80;:::i;:::-;3609:98;;-1:-1;3609:98;-1:-1;;3744:2;3783:22;;72:20;97:33;72:20;97:33;:::i;:::-;3752:63;;;;3198:633;;;;;;;;:::o;6129:222::-;-1:-1;;;;;9908:54;;;;3909:37;;6256:2;6241:18;;6227:124::o;6358:333::-;-1:-1;;;;;9908:54;;;3909:37;;9908:54;;6677:2;6662:18;;3909:37;6513:2;6498:18;;6484:207::o;6698:333::-;-1:-1;;;;;9908:54;;;;3909:37;;7017:2;7002:18;;6080:37;6853:2;6838:18;;6824:207::o;7038:416::-;7238:2;7252:47;;;4183:2;7223:18;;;9680:19;4219:34;9720:14;;;4199:55;-1:-1;;;4274:12;;;4267:30;4316:12;;;7209:245::o;7461:416::-;7661:2;7675:47;;;7646:18;;;9680:19;4603:34;9720:14;;;4583:55;4657:12;;;7632:245::o;7884:416::-;8084:2;8098:47;;;4908:2;8069:18;;;9680:19;4944:30;9720:14;;;4924:51;4994:12;;;8055:245::o;8307:416::-;8507:2;8521:47;;;5245:2;8492:18;;;9680:19;-1:-1;;;9720:14;;;5261:42;5322:12;;;8478:245::o;8730:416::-;8930:2;8944:47;;;5573:2;8915:18;;;9680:19;-1:-1;;;9720:14;;;5589:44;5652:12;;;8901:245::o;9153:416::-;9353:2;9367:47;;;5903:2;9338:18;;;9680:19;-1:-1;;;9720:14;;;5919:45;5983:12;;;9324:245::o;10053:117::-;-1:-1;;;;;9908:54;;10112:35;;10102:2;;10161:1;;10151:12;10102:2;10096:74;:::o"
            },
            "methodIdentifiers": {
              "initDeployment(address[],string[])": "54fe1c94",
              "owner()": "8da5cb5b",
              "renounceOwnership()": "715018a6",
              "setOracleBorrowRates(address[],uint256[],address)": "c2d30321",
              "setOracleOwnership(address,address)": "563b1cb3",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        }
      },
      "contracts/deployments/StringLib.sol": {
        "StringLib": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209c5822176f3f63f512660d4280615ce0cef64449611d652a530d7dd4a7b8658864736f6c634300060c0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP13 PC 0x22 OR PUSH16 0x3F63F512660D4280615CE0CEF6444961 SAR PUSH6 0x2A530D7DD4A7 0xB8 PUSH6 0x8864736F6C63 NUMBER STOP MOD 0xC STOP CALLER ",
              "sourceMap": "62:160:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209c5822176f3f63f512660d4280615ce0cef64449611d652a530d7dd4a7b8658864736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP13 PC 0x22 OR PUSH16 0x3F63F512660D4280615CE0CEF6444961 SAR PUSH6 0x2A530D7DD4A7 0xB8 PUSH6 0x8864736F6C63 NUMBER STOP MOD 0xC STOP CALLER ",
              "sourceMap": "62:160:23:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "contracts/flashloan/base/FlashLoanReceiverBase.sol": {
        "FlashLoanReceiverBase": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPoolAddressesProvider",
                  "name": "provider",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "ADDRESSES_PROVIDER",
              "outputs": [
                {
                  "internalType": "contract ILendingPoolAddressesProvider",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LENDING_POOL",
              "outputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "assets",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "premiums",
                  "type": "uint256[]"
                },
                {
                  "internalType": "address",
                  "name": "initiator",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "executeOperation",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "ADDRESSES_PROVIDER()": "0542975c",
              "LENDING_POOL()": "b4dcfc77",
              "executeOperation(address[],uint256[],uint256[],address,bytes)": "920f5c84"
            }
          }
        }
      },
      "contracts/flashloan/interfaces/IFlashLoanReceiver.sol": {
        "IFlashLoanReceiver": {
          "abi": [
            {
              "inputs": [],
              "name": "ADDRESSES_PROVIDER",
              "outputs": [
                {
                  "internalType": "contract ILendingPoolAddressesProvider",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LENDING_POOL",
              "outputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "assets",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "premiums",
                  "type": "uint256[]"
                },
                {
                  "internalType": "address",
                  "name": "initiator",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "executeOperation",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "ADDRESSES_PROVIDER()": "0542975c",
              "LENDING_POOL()": "b4dcfc77",
              "executeOperation(address[],uint256[],uint256[],address,bytes)": "920f5c84"
            }
          }
        }
      },
      "contracts/interfaces/IAToken.sol": {
        "IAToken": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "BalanceTransfer",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "underlyingAsset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "treasury",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "incentivesController",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "aTokenDecimals",
                  "type": "uint8"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "aTokenName",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "aTokenSymbol",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "Mint",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "UNDERLYING_ASSET_ADDRESS",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiverOfUnderlying",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "burn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getIncentivesController",
              "outputs": [
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getScaledUserBalanceAndSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "handleRepayment",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "treasury",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "underlyingAsset",
                  "type": "address"
                },
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "incentivesController",
                  "type": "address"
                },
                {
                  "internalType": "uint8",
                  "name": "aTokenDecimals",
                  "type": "uint8"
                },
                {
                  "internalType": "string",
                  "name": "aTokenName",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "aTokenSymbol",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "mintToTreasury",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "scaledBalanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "scaledTotalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferOnLiquidation",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferUnderlyingTo",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "UNDERLYING_ASSET_ADDRESS()": "b16a19de",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "burn(address,address,uint256,uint256)": "d7020d0a",
              "getIncentivesController()": "75d26413",
              "getScaledUserBalanceAndSupply(address)": "0afbcdc9",
              "handleRepayment(address,uint256)": "88dd91a1",
              "initialize(address,address,address,address,uint8,string,string,bytes)": "183fb413",
              "mint(address,uint256,uint256)": "156e29f6",
              "mintToTreasury(uint256,uint256)": "7df5bd3b",
              "scaledBalanceOf(address)": "1da24f3e",
              "scaledTotalSupply()": "b1bf962d",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOnLiquidation(address,address,uint256)": "f866c319",
              "transferUnderlyingTo(address,uint256)": "4efecaa5"
            }
          }
        }
      },
      "contracts/interfaces/IAaveIncentivesController.sol": {
        "IAaveIncentivesController": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "claimer",
                  "type": "address"
                }
              ],
              "name": "ClaimerSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "RewardsAccrued",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "RewardsClaimed",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "claimer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "RewardsClaimed",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "DISTRIBUTION_END",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PRECISION",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "REWARD_TOKEN",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "assets",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "claimRewards",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "assets",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "claimRewardsOnBehalf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "assets",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "emissionsPerSecond",
                  "type": "uint256[]"
                }
              ],
              "name": "configureAssets",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "getAssetData",
              "outputs": [
                {
                  "internalType": "uint128",
                  "name": "",
                  "type": "uint128"
                },
                {
                  "internalType": "uint128",
                  "name": "",
                  "type": "uint128"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getClaimer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "assets",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getRewardsBalance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "getUserAssetData",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getUserUnclaimedRewards",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "userBalance",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "totalSupply",
                  "type": "uint256"
                }
              ],
              "name": "handleAction",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "claimer",
                  "type": "address"
                }
              ],
              "name": "setClaimer",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "DISTRIBUTION_END()": "919cd40f",
              "PRECISION()": "aaf5eb68",
              "REWARD_TOKEN()": "99248ea7",
              "claimRewards(address[],uint256,address)": "3111e7b3",
              "claimRewardsOnBehalf(address[],uint256,address,address)": "6d34b96e",
              "configureAssets(address[],uint256[])": "79f171b2",
              "getAssetData(address)": "1652e7b7",
              "getClaimer(address)": "74d945ec",
              "getRewardsBalance(address[],address)": "8b599f26",
              "getUserAssetData(address,address)": "3373ee4c",
              "getUserUnclaimedRewards(address)": "198fa81e",
              "handleAction(address,uint256,uint256)": "31873e2e",
              "setClaimer(address,address)": "f5cf673b"
            }
          }
        }
      },
      "contracts/interfaces/IChainlinkAggregator.sol": {
        "IChainlinkAggregator": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "int256",
                  "name": "current",
                  "type": "int256"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "roundId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "timestamp",
                  "type": "uint256"
                }
              ],
              "name": "AnswerUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "roundId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "startedBy",
                  "type": "address"
                }
              ],
              "name": "NewRound",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "roundId",
                  "type": "uint256"
                }
              ],
              "name": "getAnswer",
              "outputs": [
                {
                  "internalType": "int256",
                  "name": "",
                  "type": "int256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "roundId",
                  "type": "uint256"
                }
              ],
              "name": "getTimestamp",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "latestAnswer",
              "outputs": [
                {
                  "internalType": "int256",
                  "name": "",
                  "type": "int256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "latestRound",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "latestTimestamp",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "getAnswer(uint256)": "b5ab58dc",
              "getTimestamp(uint256)": "b633620c",
              "latestAnswer()": "50d25bcd",
              "latestRound()": "668a0f02",
              "latestTimestamp()": "8205bf6a"
            }
          }
        }
      },
      "contracts/interfaces/ICreditDelegationToken.sol": {
        "ICreditDelegationToken": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "fromUser",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "toUser",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "BorrowAllowanceDelegated",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approveDelegation",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "fromUser",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "toUser",
                  "type": "address"
                }
              ],
              "name": "borrowAllowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "approveDelegation(address,uint256)": "c04a8a10",
              "borrowAllowance(address,address)": "6bd76d24"
            }
          }
        }
      },
      "contracts/interfaces/IDelegationToken.sol": {
        "IDelegationToken": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                }
              ],
              "name": "delegate",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "delegate(address)": "5c19a95c"
            }
          }
        }
      },
      "contracts/interfaces/IERC20WithPermit.sol": {
        "IERC20WithPermit": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "contracts/interfaces/IExchangeAdapter.sol": {
        "IExchangeAdapter": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "platform",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "fromAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "toAmount",
                  "type": "uint256"
                }
              ],
              "name": "Exchange",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IERC20[]",
                  "name": "tokens",
                  "type": "address[]"
                }
              ],
              "name": "approveExchange",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxSlippage",
                  "type": "uint256"
                }
              ],
              "name": "exchange",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "approveExchange(address[])": "93ed4309",
              "exchange(address,address,uint256,uint256)": "0ed2fc95"
            }
          }
        }
      },
      "contracts/interfaces/IInitializableAToken.sol": {
        "IInitializableAToken": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "underlyingAsset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "treasury",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "incentivesController",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "aTokenDecimals",
                  "type": "uint8"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "aTokenName",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "aTokenSymbol",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "treasury",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "underlyingAsset",
                  "type": "address"
                },
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "incentivesController",
                  "type": "address"
                },
                {
                  "internalType": "uint8",
                  "name": "aTokenDecimals",
                  "type": "uint8"
                },
                {
                  "internalType": "string",
                  "name": "aTokenName",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "aTokenSymbol",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "initialize(address,address,address,address,uint8,string,string,bytes)": "183fb413"
            }
          }
        }
      },
      "contracts/interfaces/IInitializableDebtToken.sol": {
        "IInitializableDebtToken": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "underlyingAsset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "incentivesController",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "debtTokenDecimals",
                  "type": "uint8"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "debtTokenName",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "debtTokenSymbol",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "underlyingAsset",
                  "type": "address"
                },
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "incentivesController",
                  "type": "address"
                },
                {
                  "internalType": "uint8",
                  "name": "debtTokenDecimals",
                  "type": "uint8"
                },
                {
                  "internalType": "string",
                  "name": "debtTokenName",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "debtTokenSymbol",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "initialize(address,address,address,uint8,string,string,bytes)": "c222ec8a"
            }
          }
        }
      },
      "contracts/interfaces/IInitializableStaticATokenLM.sol": {
        "IInitializableStaticATokenLM": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "aToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "staticATokenName",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "staticATokenSymbol",
                  "type": "string"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "aToken",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "staticATokenName",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "staticATokenSymbol",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "l1TokenBridge",
                  "type": "address"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "initialize(address,address,string,string,address)": "362925c2"
            }
          }
        }
      },
      "contracts/interfaces/ILendingPool.sol": {
        "ILendingPool": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "borrowRateMode",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "borrowRate",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "uint16",
                  "name": "referral",
                  "type": "uint16"
                }
              ],
              "name": "Borrow",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "uint16",
                  "name": "referral",
                  "type": "uint16"
                }
              ],
              "name": "Deposit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "initiator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "premium",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint16",
                  "name": "referralCode",
                  "type": "uint16"
                }
              ],
              "name": "FlashLoan",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "collateralAsset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "debtAsset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "debtToCover",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "liquidatedCollateralAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "liquidator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "receiveAToken",
                  "type": "bool"
                }
              ],
              "name": "LiquidationCall",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "Paused",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "RebalanceStableBorrowRate",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "repayer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Repay",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "liquidityRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "stableBorrowRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "variableBorrowRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "liquidityIndex",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "variableBorrowIndex",
                  "type": "uint256"
                }
              ],
              "name": "ReserveDataUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "ReserveUsedAsCollateralDisabled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "ReserveUsedAsCollateralEnabled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "rateMode",
                  "type": "uint256"
                }
              ],
              "name": "Swap",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "Unpaused",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Withdraw",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRateMode",
                  "type": "uint256"
                },
                {
                  "internalType": "uint16",
                  "name": "referralCode",
                  "type": "uint16"
                },
                {
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                }
              ],
              "name": "borrow",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                },
                {
                  "internalType": "uint16",
                  "name": "referralCode",
                  "type": "uint16"
                }
              ],
              "name": "deposit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "balanceFromAfter",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "balanceToBefore",
                  "type": "uint256"
                }
              ],
              "name": "finalizeTransfer",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiverAddress",
                  "type": "address"
                },
                {
                  "internalType": "address[]",
                  "name": "assets",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "modes",
                  "type": "uint256[]"
                },
                {
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                },
                {
                  "internalType": "uint16",
                  "name": "referralCode",
                  "type": "uint16"
                }
              ],
              "name": "flashLoan",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAddressesProvider",
              "outputs": [
                {
                  "internalType": "contract ILendingPoolAddressesProvider",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "getConfiguration",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "data",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct DataTypes.ReserveConfigurationMap",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "getReserveData",
              "outputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "uint256",
                          "name": "data",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct DataTypes.ReserveConfigurationMap",
                      "name": "configuration",
                      "type": "tuple"
                    },
                    {
                      "internalType": "uint128",
                      "name": "liquidityIndex",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint128",
                      "name": "variableBorrowIndex",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint128",
                      "name": "currentLiquidityRate",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint128",
                      "name": "currentVariableBorrowRate",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint128",
                      "name": "currentStableBorrowRate",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint40",
                      "name": "lastUpdateTimestamp",
                      "type": "uint40"
                    },
                    {
                      "internalType": "address",
                      "name": "aTokenAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "stableDebtTokenAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "variableDebtTokenAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "interestRateStrategyAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "uint8",
                      "name": "id",
                      "type": "uint8"
                    }
                  ],
                  "internalType": "struct DataTypes.ReserveData",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "getReserveNormalizedIncome",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "getReserveNormalizedVariableDebt",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getReservesList",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getUserAccountData",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "totalCollateralETH",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "totalDebtETH",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "availableBorrowsETH",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "currentLiquidationThreshold",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "ltv",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "healthFactor",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getUserConfiguration",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "data",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct DataTypes.UserConfigurationMap",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "aTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "stableDebtAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "variableDebtAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "interestRateStrategyAddress",
                  "type": "address"
                }
              ],
              "name": "initReserve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "collateralAsset",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "debtAsset",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "debtToCover",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "receiveAToken",
                  "type": "bool"
                }
              ],
              "name": "liquidationCall",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "paused",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "rebalanceStableBorrowRate",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "rateMode",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                }
              ],
              "name": "repay",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "configuration",
                  "type": "uint256"
                }
              ],
              "name": "setConfiguration",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "val",
                  "type": "bool"
                }
              ],
              "name": "setPause",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "rateStrategyAddress",
                  "type": "address"
                }
              ],
              "name": "setReserveInterestRateStrategyAddress",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "useAsCollateral",
                  "type": "bool"
                }
              ],
              "name": "setUserUseReserveAsCollateral",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "rateMode",
                  "type": "uint256"
                }
              ],
              "name": "swapBorrowRateMode",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "withdraw",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "borrow(address,uint256,uint256,uint16,address)": "a415bcad",
              "deposit(address,uint256,address,uint16)": "e8eda9df",
              "finalizeTransfer(address,address,address,uint256,uint256,uint256)": "d5ed3933",
              "flashLoan(address,address[],uint256[],uint256[],address,bytes,uint16)": "ab9c4b5d",
              "getAddressesProvider()": "fe65acfe",
              "getConfiguration(address)": "c44b11f7",
              "getReserveData(address)": "35ea6a75",
              "getReserveNormalizedIncome(address)": "d15e0053",
              "getReserveNormalizedVariableDebt(address)": "386497fd",
              "getReservesList()": "d1946dbc",
              "getUserAccountData(address)": "bf92857c",
              "getUserConfiguration(address)": "4417a583",
              "initReserve(address,address,address,address,address)": "7a708e92",
              "liquidationCall(address,address,address,uint256,bool)": "00a718a9",
              "paused()": "5c975abb",
              "rebalanceStableBorrowRate(address,address)": "cd112382",
              "repay(address,uint256,uint256,address)": "573ade81",
              "setConfiguration(address,uint256)": "b8d29276",
              "setPause(bool)": "bedb86fb",
              "setReserveInterestRateStrategyAddress(address,address)": "1d2118f9",
              "setUserUseReserveAsCollateral(address,bool)": "5a3b74b9",
              "swapBorrowRateMode(address,uint256)": "94ba89a2",
              "withdraw(address,uint256,address)": "69328dec"
            }
          }
        }
      },
      "contracts/interfaces/ILendingPoolAddressesProvider.sol": {
        "ILendingPoolAddressesProvider": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "hasProxy",
                  "type": "bool"
                }
              ],
              "name": "AddressSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                }
              ],
              "name": "ConfigurationAdminUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                }
              ],
              "name": "EmergencyAdminUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                }
              ],
              "name": "LendingPoolCollateralManagerUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                }
              ],
              "name": "LendingPoolConfiguratorUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                }
              ],
              "name": "LendingPoolUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                }
              ],
              "name": "LendingRateOracleUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "newMarketId",
                  "type": "string"
                }
              ],
              "name": "MarketIdSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                }
              ],
              "name": "PriceOracleUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                }
              ],
              "name": "ProxyCreated",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                }
              ],
              "name": "getAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getEmergencyAdmin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getLendingPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getLendingPoolCollateralManager",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getLendingPoolConfigurator",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getLendingRateOracle",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getMarketId",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getPoolAdmin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getPriceOracle",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                }
              ],
              "name": "setAddress",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "impl",
                  "type": "address"
                }
              ],
              "name": "setAddressAsProxy",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "setEmergencyAdmin",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "manager",
                  "type": "address"
                }
              ],
              "name": "setLendingPoolCollateralManager",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "configurator",
                  "type": "address"
                }
              ],
              "name": "setLendingPoolConfiguratorImpl",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                }
              ],
              "name": "setLendingPoolImpl",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "lendingRateOracle",
                  "type": "address"
                }
              ],
              "name": "setLendingRateOracle",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "marketId",
                  "type": "string"
                }
              ],
              "name": "setMarketId",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "setPoolAdmin",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "priceOracle",
                  "type": "address"
                }
              ],
              "name": "setPriceOracle",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "getAddress(bytes32)": "21f8a721",
              "getEmergencyAdmin()": "ddcaa9ea",
              "getLendingPool()": "0261bf8b",
              "getLendingPoolCollateralManager()": "712d9171",
              "getLendingPoolConfigurator()": "85c858b1",
              "getLendingRateOracle()": "3618abba",
              "getMarketId()": "568ef470",
              "getPoolAdmin()": "aecda378",
              "getPriceOracle()": "fca513a8",
              "setAddress(bytes32,address)": "ca446dd9",
              "setAddressAsProxy(bytes32,address)": "5dcc528c",
              "setEmergencyAdmin(address)": "35da3394",
              "setLendingPoolCollateralManager(address)": "398e5553",
              "setLendingPoolConfiguratorImpl(address)": "c12542df",
              "setLendingPoolImpl(address)": "5aef021f",
              "setLendingRateOracle(address)": "820d1274",
              "setMarketId(string)": "f67b1847",
              "setPoolAdmin(address)": "283d62ad",
              "setPriceOracle(address)": "530e784f"
            }
          }
        }
      },
      "contracts/interfaces/ILendingPoolAddressesProviderRegistry.sol": {
        "ILendingPoolAddressesProviderRegistry": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                }
              ],
              "name": "AddressesProviderRegistered",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                }
              ],
              "name": "AddressesProviderUnregistered",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "addressesProvider",
                  "type": "address"
                }
              ],
              "name": "getAddressesProviderIdByAddress",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAddressesProvidersList",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "provider",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "registerAddressesProvider",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "provider",
                  "type": "address"
                }
              ],
              "name": "unregisterAddressesProvider",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "getAddressesProviderIdByAddress(address)": "d0267be7",
              "getAddressesProvidersList()": "365ccbbf",
              "registerAddressesProvider(address,uint256)": "d258191e",
              "unregisterAddressesProvider(address)": "0de26707"
            }
          }
        }
      },
      "contracts/interfaces/ILendingPoolCollateralManager.sol": {
        "ILendingPoolCollateralManager": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "collateral",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "principal",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "debtToCover",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "liquidatedCollateralAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "liquidator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "receiveAToken",
                  "type": "bool"
                }
              ],
              "name": "LiquidationCall",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "ReserveUsedAsCollateralDisabled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "ReserveUsedAsCollateralEnabled",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "collateral",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "principal",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "debtToCover",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "receiveAToken",
                  "type": "bool"
                }
              ],
              "name": "liquidationCall",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "liquidationCall(address,address,address,uint256,bool)": "00a718a9"
            }
          }
        }
      },
      "contracts/interfaces/ILendingPoolConfigurator.sol": {
        "ILendingPoolConfigurator": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "proxy",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "ATokenUpgraded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "BorrowingDisabledOnReserve",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "stableRateEnabled",
                  "type": "bool"
                }
              ],
              "name": "BorrowingEnabledOnReserve",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "ltv",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "liquidationThreshold",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "liquidationBonus",
                  "type": "uint256"
                }
              ],
              "name": "CollateralConfigurationChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "ReserveActivated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "ReserveDeactivated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "decimals",
                  "type": "uint256"
                }
              ],
              "name": "ReserveDecimalsChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "factor",
                  "type": "uint256"
                }
              ],
              "name": "ReserveFactorChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "ReserveFrozen",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "aToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "stableDebtToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "variableDebtToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "interestRateStrategyAddress",
                  "type": "address"
                }
              ],
              "name": "ReserveInitialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "strategy",
                  "type": "address"
                }
              ],
              "name": "ReserveInterestRateStrategyChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "ReserveUnfrozen",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "proxy",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "StableDebtTokenUpgraded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "StableRateDisabledOnReserve",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "StableRateEnabledOnReserve",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "proxy",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "VariableDebtTokenUpgraded",
              "type": "event"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          }
        }
      },
      "contracts/interfaces/ILendingRateOracle.sol": {
        "ILendingRateOracle": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "getMarketBorrowRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "rate",
                  "type": "uint256"
                }
              ],
              "name": "setMarketBorrowRate",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "getMarketBorrowRate(address)": "bb85c0bb",
              "setMarketBorrowRate(address,uint256)": "72eb293d"
            }
          }
        }
      },
      "contracts/interfaces/IPriceOracleGetter.sol": {
        "IPriceOracleGetter": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "getAssetPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "getAssetPrice(address)": "b3596f07"
            }
          }
        }
      },
      "contracts/interfaces/IReserveInterestRateStrategy.sol": {
        "IReserveInterestRateStrategy": {
          "abi": [
            {
              "inputs": [],
              "name": "baseVariableBorrowRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "aToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidityAdded",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidityTaken",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "totalStableDebt",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "totalVariableDebt",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "averageStableBorrowRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "reserveFactor",
                  "type": "uint256"
                }
              ],
              "name": "calculateInterestRates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "liquidityRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "stableBorrowRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "variableBorrowRate",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "availableLiquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "totalStableDebt",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "totalVariableDebt",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "averageStableBorrowRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "reserveFactor",
                  "type": "uint256"
                }
              ],
              "name": "calculateInterestRates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getMaxVariableBorrowRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "baseVariableBorrowRate()": "b2589544",
              "calculateInterestRates(address,address,uint256,uint256,uint256,uint256,uint256,uint256)": "29db497d",
              "calculateInterestRates(address,uint256,uint256,uint256,uint256,uint256)": "9584df28",
              "getMaxVariableBorrowRate()": "80031e37"
            }
          }
        }
      },
      "contracts/interfaces/IScaledBalanceToken.sol": {
        "IScaledBalanceToken": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getScaledUserBalanceAndSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "scaledBalanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "scaledTotalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "getScaledUserBalanceAndSupply(address)": "0afbcdc9",
              "scaledBalanceOf(address)": "1da24f3e",
              "scaledTotalSupply()": "b1bf962d"
            }
          }
        }
      },
      "contracts/interfaces/IStableDebtToken.sol": {
        "IStableDebtToken": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "currentBalance",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "balanceIncrease",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "avgStableRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newTotalSupply",
                  "type": "uint256"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "underlyingAsset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "incentivesController",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "debtTokenDecimals",
                  "type": "uint8"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "debtTokenName",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "debtTokenSymbol",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "currentBalance",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "balanceIncrease",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "avgStableRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newTotalSupply",
                  "type": "uint256"
                }
              ],
              "name": "Mint",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "burn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAverageStableRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getIncentivesController",
              "outputs": [
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getSupplyData",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint40",
                  "name": "",
                  "type": "uint40"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getTotalSupplyAndAvgRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getTotalSupplyLastUpdated",
              "outputs": [
                {
                  "internalType": "uint40",
                  "name": "",
                  "type": "uint40"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getUserLastUpdated",
              "outputs": [
                {
                  "internalType": "uint40",
                  "name": "",
                  "type": "uint40"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getUserStableRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "underlyingAsset",
                  "type": "address"
                },
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "incentivesController",
                  "type": "address"
                },
                {
                  "internalType": "uint8",
                  "name": "debtTokenDecimals",
                  "type": "uint8"
                },
                {
                  "internalType": "string",
                  "name": "debtTokenName",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "debtTokenSymbol",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "rate",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "principalBalanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "burn(address,uint256)": "9dc29fac",
              "getAverageStableRate()": "90f6fcf2",
              "getIncentivesController()": "75d26413",
              "getSupplyData()": "79774338",
              "getTotalSupplyAndAvgRate()": "f731e9be",
              "getTotalSupplyLastUpdated()": "e7484890",
              "getUserLastUpdated(address)": "79ce6b8c",
              "getUserStableRate(address)": "e78c9b3b",
              "initialize(address,address,address,uint8,string,string,bytes)": "c222ec8a",
              "mint(address,address,uint256,uint256)": "b3f1c93d",
              "principalBalanceOf(address)": "c634dfaa"
            }
          }
        }
      },
      "contracts/interfaces/IStaticATokenLM.sol": {
        "IStaticATokenLM": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "aToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "staticATokenName",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "staticATokenSymbol",
                  "type": "string"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "ASSET",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "ATOKEN",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "INCENTIVES_CONTROLLER",
              "outputs": [
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LENDING_POOL",
              "outputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "REWARD_TOKEN",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "UNDERLYING_ASSET_ADDRESS",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "claimRewards",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "claimRewardsOnBehalf",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "claimRewardsToSelf",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "collectAndUpdateRewards",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint16",
                  "name": "referralCode",
                  "type": "uint16"
                },
                {
                  "internalType": "bool",
                  "name": "fromUnderlying",
                  "type": "bool"
                }
              ],
              "name": "deposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "dynamicBalanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "dynamicToStaticAmount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getClaimableRewards",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getCurrentRewardsIndex",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getDomainSeparator",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getIncentivesController",
              "outputs": [
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getTotalClaimableRewards",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getUnclaimedRewards",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "aToken",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "staticATokenName",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "staticATokenSymbol",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "l1TokenBridge",
                  "type": "address"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "depositor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint16",
                  "name": "referralCode",
                  "type": "uint16"
                },
                {
                  "internalType": "bool",
                  "name": "fromUnderlying",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "components": [
                    {
                      "internalType": "uint8",
                      "name": "v",
                      "type": "uint8"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "r",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "s",
                      "type": "bytes32"
                    }
                  ],
                  "internalType": "struct IStaticATokenLM.SignatureParams",
                  "name": "sigParams",
                  "type": "tuple"
                }
              ],
              "name": "metaDeposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "staticAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "dynamicAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "toUnderlying",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "components": [
                    {
                      "internalType": "uint8",
                      "name": "v",
                      "type": "uint8"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "r",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "s",
                      "type": "bytes32"
                    }
                  ],
                  "internalType": "struct IStaticATokenLM.SignatureParams",
                  "name": "sigParams",
                  "type": "tuple"
                }
              ],
              "name": "metaWithdraw",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "rate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "staticToDynamicAmount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "toUnderlying",
                  "type": "bool"
                }
              ],
              "name": "withdraw",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "toUnderlying",
                  "type": "bool"
                }
              ],
              "name": "withdrawDynamicAmount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "ASSET()": "4800d97f",
              "ATOKEN()": "51c0e061",
              "INCENTIVES_CONTROLLER()": "10d0ab22",
              "LENDING_POOL()": "b4dcfc77",
              "REWARD_TOKEN()": "99248ea7",
              "UNDERLYING_ASSET_ADDRESS()": "b16a19de",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "claimRewards(address)": "ef5cfb8c",
              "claimRewardsOnBehalf(address,address)": "8ba2855d",
              "claimRewardsToSelf()": "a868dd5d",
              "collectAndUpdateRewards()": "3eb2eba6",
              "deposit(address,uint256,uint16,bool)": "2f2cab87",
              "dynamicBalanceOf(address)": "44b68c3f",
              "dynamicToStaticAmount(uint256)": "36a5a6d6",
              "getClaimableRewards(address)": "308e401e",
              "getCurrentRewardsIndex()": "189956a2",
              "getDomainSeparator()": "ed24911d",
              "getIncentivesController()": "75d26413",
              "getTotalClaimableRewards()": "7f372cff",
              "getUnclaimedRewards(address)": "69a69e29",
              "initialize(address,address,string,string,address)": "362925c2",
              "metaDeposit(address,address,uint256,uint16,bool,uint256,(uint8,bytes32,bytes32))": "c485852b",
              "metaWithdraw(address,address,uint256,uint256,bool,uint256,(uint8,bytes32,bytes32))": "60266557",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "rate()": "2c4e722e",
              "staticToDynamicAmount(uint256)": "f57d0b40",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "withdraw(address,uint256,bool)": "ead5d359",
              "withdrawDynamicAmount(address,uint256,bool)": "288587ce"
            }
          }
        }
      },
      "contracts/interfaces/IUniswapV2Router02.sol": {
        "IUniswapV2Router02": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                }
              ],
              "name": "getAmountsIn",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                }
              ],
              "name": "getAmountsOut",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountOutMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "swapExactTokensForTokens",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountInMax",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "swapTokensForExactTokens",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "getAmountsIn(uint256,address[])": "1f00ca74",
              "getAmountsOut(uint256,address[])": "d06ca61f",
              "swapExactTokensForTokens(uint256,uint256,address[],address,uint256)": "38ed1739",
              "swapTokensForExactTokens(uint256,uint256,address[],address,uint256)": "8803dbee"
            }
          }
        }
      },
      "contracts/interfaces/IVariableDebtToken.sol": {
        "IVariableDebtToken": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "underlyingAsset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "incentivesController",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "debtTokenDecimals",
                  "type": "uint8"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "debtTokenName",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "debtTokenSymbol",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "Mint",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "burn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getIncentivesController",
              "outputs": [
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getScaledUserBalanceAndSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "underlyingAsset",
                  "type": "address"
                },
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "incentivesController",
                  "type": "address"
                },
                {
                  "internalType": "uint8",
                  "name": "debtTokenDecimals",
                  "type": "uint8"
                },
                {
                  "internalType": "string",
                  "name": "debtTokenName",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "debtTokenSymbol",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "scaledBalanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "scaledTotalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "burn(address,uint256,uint256)": "f5298aca",
              "getIncentivesController()": "75d26413",
              "getScaledUserBalanceAndSupply(address)": "0afbcdc9",
              "initialize(address,address,address,uint8,string,string,bytes)": "c222ec8a",
              "mint(address,address,uint256,uint256)": "b3f1c93d",
              "scaledBalanceOf(address)": "1da24f3e",
              "scaledTotalSupply()": "b1bf962d"
            }
          }
        }
      },
      "contracts/misc/AaveOracle.sol": {
        "AaveOracle": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "assets",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "sources",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "fallbackOracle",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "weth",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "source",
                  "type": "address"
                }
              ],
              "name": "AssetSourceUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "fallbackOracle",
                  "type": "address"
                }
              ],
              "name": "FallbackOracleUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "weth",
                  "type": "address"
                }
              ],
              "name": "WethSet",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "WETH",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "getAssetPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "assets",
                  "type": "address[]"
                }
              ],
              "name": "getAssetsPrices",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getFallbackOracle",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "getSourceOfAsset",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "assets",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "sources",
                  "type": "address[]"
                }
              ],
              "name": "setAssetSources",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "fallbackOracle",
                  "type": "address"
                }
              ],
              "name": "setFallbackOracle",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60a06040523480156200001157600080fd5b5060405162000ead38038062000ead833981810160405260808110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82518660208202830111640100000000821117156200008c57600080fd5b82525081516020918201928201910280838360005b83811015620000bb578181015183820152602001620000a1565b5050505090500160405260200180516040519392919084640100000000821115620000e557600080fd5b908301906020820185811115620000fb57600080fd5b82518660208202830111640100000000821117156200011957600080fd5b82525081516020918201928201910280838360005b83811015620001485781810151838201526020016200012e565b505050509190910160409081526020830151920151919350909150600090506200017162000222565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620001c68262000226565b620001d2848462000270565b6001600160601b0319606082901b166080526040516001600160a01b038216907f13a533084dcbb1cfe0dbea708ea977223c27c44d94f2fa3867a167c9cd340bf990600090a250505050620003bc565b3390565b600280546001600160a01b0319166001600160a01b0383169081179091556040517fce7a780d33665b1ea097af5f155e3821b809ecbaa839d3b33aa83ba28168cefb90600090a250565b8051825114620002c7576040805162461bcd60e51b815260206004820152601a60248201527f494e434f4e53495354454e545f504152414d535f4c454e475448000000000000604482015290519081900360640190fd5b60005b8251811015620003b757818181518110620002e157fe5b602002602001015160016000858481518110620002fa57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508181815181106200035357fe5b60200260200101516001600160a01b03168382815181106200037157fe5b60200260200101516001600160a01b03167f22c5b7b2d8561d39f7f210b6b326a1aa69f15311163082308ac4877db6339dc160405160405180910390a3600101620002ca565b505050565b60805160601c610ace620003df600039806105bc52806106005250610ace6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80639d23d9f2116100665780639d23d9f214610125578063abfd5310146101e5578063ad5c4648146102a7578063b3596f07146102af578063f2fde38b146102e75761009e565b8063170aee73146100a35780636210308c146100cb578063715018a6146100ef5780638da5cb5b146100f757806392bf2be0146100ff575b600080fd5b6100c9600480360360208110156100b957600080fd5b50356001600160a01b031661030d565b005b6100d3610371565b604080516001600160a01b039092168252519081900360200190f35b6100c9610380565b6100d3610422565b6100d36004803603602081101561011557600080fd5b50356001600160a01b0316610431565b6101956004803603602081101561013b57600080fd5b81019060208101813564010000000081111561015657600080fd5b82018360208201111561016857600080fd5b8035906020019184602083028401116401000000008311171561018a57600080fd5b509092509050610452565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156101d15781810151838201526020016101b9565b505050509050019250505060405180910390f35b6100c9600480360360408110156101fb57600080fd5b81019060208101813564010000000081111561021657600080fd5b82018360208201111561022857600080fd5b8035906020019184602083028401116401000000008311171561024a57600080fd5b91939092909160208101903564010000000081111561026857600080fd5b82018360208201111561027a57600080fd5b8035906020019184602083028401116401000000008311171561029c57600080fd5b5090925090506104ef565b6100d36105ba565b6102d5600480360360208110156102c557600080fd5b50356001600160a01b03166105de565b60408051918252519081900360200190f35b6100c9600480360360208110156102fd57600080fd5b50356001600160a01b03166107c7565b6103156108bf565b6000546001600160a01b03908116911614610365576040805162461bcd60e51b81526020600482018190526024820152600080516020610a79833981519152604482015290519081900360640190fd5b61036e816108c3565b50565b6002546001600160a01b031690565b6103886108bf565b6000546001600160a01b039081169116146103d8576040805162461bcd60e51b81526020600482018190526024820152600080516020610a79833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6001600160a01b03808216600090815260016020526040902054165b919050565b6060808267ffffffffffffffff8111801561046c57600080fd5b50604051908082528060200260200182016040528015610496578160200160208202803683370190505b50905060005b838110156104e7576104c88585838181106104b357fe5b905060200201356001600160a01b03166105de565b8282815181106104d457fe5b602090810291909101015260010161049c565b509392505050565b6104f76108bf565b6000546001600160a01b03908116911614610547576040805162461bcd60e51b81526020600482018190526024820152600080516020610a79833981519152604482015290519081900360640190fd5b6105b48484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060408051602080880282810182019093528782529093508792508691829185019084908082843760009201919091525061090d92505050565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b038082166000818152600160205260408120549092908116917f0000000000000000000000000000000000000000000000000000000000000000909116141561063957670de0b6b3a764000091505061044d565b6001600160a01b0381166106c9576002546040805163b3596f0760e01b81526001600160a01b0386811660048301529151919092169163b3596f07916024808301926020929190829003018186803b15801561069457600080fd5b505afa1580156106a8573d6000803e3d6000fd5b505050506040513d60208110156106be57600080fd5b5051915061044d9050565b6000816001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561070457600080fd5b505afa158015610718573d6000803e3d6000fd5b505050506040513d602081101561072e57600080fd5b50519050600081131561074457915061044d9050565b6002546040805163b3596f0760e01b81526001600160a01b0387811660048301529151919092169163b3596f07916024808301926020929190829003018186803b15801561079157600080fd5b505afa1580156107a5573d6000803e3d6000fd5b505050506040513d60208110156107bb57600080fd5b5051925061044d915050565b6107cf6108bf565b6000546001600160a01b0390811691161461081f576040805162461bcd60e51b81526020600482018190526024820152600080516020610a79833981519152604482015290519081900360640190fd5b6001600160a01b0381166108645760405162461bcd60e51b8152600401808060200182810382526026815260200180610a536026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b600280546001600160a01b0319166001600160a01b0383169081179091556040517fce7a780d33665b1ea097af5f155e3821b809ecbaa839d3b33aa83ba28168cefb90600090a250565b8051825114610963576040805162461bcd60e51b815260206004820152601a60248201527f494e434f4e53495354454e545f504152414d535f4c454e475448000000000000604482015290519081900360640190fd5b60005b8251811015610a4d5781818151811061097b57fe5b60200260200101516001600085848151811061099357fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508181815181106109eb57fe5b60200260200101516001600160a01b0316838281518110610a0857fe5b60200260200101516001600160a01b03167f22c5b7b2d8561d39f7f210b6b326a1aa69f15311163082308ac4877db6339dc160405160405180910390a3600101610966565b50505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220c19dff02f9fbd1e192fa486447c21744e8c315bfb491564283359aabc2f3034c64736f6c634300060c0033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xEAD CODESIZE SUB DUP1 PUSH3 0xEAD DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x80 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0x8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xBB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xA1 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0xE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0xFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0x119 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x148 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x12E JUMP JUMPDEST POP POP POP POP SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD SWAP3 ADD MLOAD SWAP2 SWAP4 POP SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 POP PUSH3 0x171 PUSH3 0x222 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH3 0x1C6 DUP3 PUSH3 0x226 JUMP JUMPDEST PUSH3 0x1D2 DUP5 DUP5 PUSH3 0x270 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP3 SWAP1 SHL AND PUSH1 0x80 MSTORE PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0x13A533084DCBB1CFE0DBEA708EA977223C27C44D94F2FA3867A167C9CD340BF9 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP POP PUSH3 0x3BC JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xCE7A780D33665B1EA097AF5F155E3821B809ECBAA839D3B33AA83BA28168CEFB SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH3 0x2C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E434F4E53495354454E545F504152414D535F4C454E475448000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH3 0x3B7 JUMPI DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH3 0x2E1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x2FA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH3 0x353 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x371 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x22C5B7B2D8561D39F7F210B6B326A1AA69F15311163082308AC4877DB6339DC1 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 ADD PUSH3 0x2CA JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH2 0xACE PUSH3 0x3DF PUSH1 0x0 CODECOPY DUP1 PUSH2 0x5BC MSTORE DUP1 PUSH2 0x600 MSTORE POP PUSH2 0xACE PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x9E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9D23D9F2 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x9D23D9F2 EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0xABFD5310 EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0xAD5C4648 EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0xB3596F07 EQ PUSH2 0x2AF JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x2E7 JUMPI PUSH2 0x9E JUMP JUMPDEST DUP1 PUSH4 0x170AEE73 EQ PUSH2 0xA3 JUMPI DUP1 PUSH4 0x6210308C EQ PUSH2 0xCB JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xF7 JUMPI DUP1 PUSH4 0x92BF2BE0 EQ PUSH2 0xFF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x30D JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD3 PUSH2 0x371 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xC9 PUSH2 0x380 JUMP JUMPDEST PUSH2 0xD3 PUSH2 0x422 JUMP JUMPDEST PUSH2 0xD3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x115 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x431 JUMP JUMPDEST PUSH2 0x195 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x18A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x452 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1D1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1B9 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x24A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x27A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x29C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x4EF JUMP JUMPDEST PUSH2 0xD3 PUSH2 0x5BA JUMP JUMPDEST PUSH2 0x2D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5DE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xC9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7C7 JUMP JUMPDEST PUSH2 0x315 PUSH2 0x8BF JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x365 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA79 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x36E DUP2 PUSH2 0x8C3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x388 PUSH2 0x8BF JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x3D8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA79 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x46C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x496 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4E7 JUMPI PUSH2 0x4C8 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x4B3 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5DE JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4D4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x49C JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x4F7 PUSH2 0x8BF JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x547 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA79 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x5B4 DUP5 DUP5 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP9 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP8 DUP3 MSTORE SWAP1 SWAP4 POP DUP8 SWAP3 POP DUP7 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x90D SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 SWAP3 SWAP1 DUP2 AND SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND EQ ISZERO PUSH2 0x639 JUMPI PUSH8 0xDE0B6B3A7640000 SWAP2 POP POP PUSH2 0x44D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x6C9 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xB3596F07 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xB3596F07 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x694 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH2 0x44D SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x50D25BCD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x704 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x718 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x72E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 SGT ISZERO PUSH2 0x744 JUMPI SWAP2 POP PUSH2 0x44D SWAP1 POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xB3596F07 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xB3596F07 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x791 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7A5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP PUSH2 0x44D SWAP2 POP POP JUMP JUMPDEST PUSH2 0x7CF PUSH2 0x8BF JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x81F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA79 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x864 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xA53 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xCE7A780D33665B1EA097AF5F155E3821B809ECBAA839D3B33AA83BA28168CEFB SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0x963 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E434F4E53495354454E545F504152414D535F4C454E475448000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xA4D JUMPI DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x97B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x993 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x9EB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA08 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x22C5B7B2D8561D39F7F210B6B326A1AA69F15311163082308AC4877DB6339DC1 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 ADD PUSH2 0x966 JUMP JUMPDEST POP POP POP JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F20616464726573734F776E61626C653A2063616C6C657220 PUSH10 0x73206E6F742074686520 PUSH16 0x776E6572A2646970667358221220C19D SELFDESTRUCT MUL 0xF9 0xFB 0xD1 0xE1 SWAP3 STATICCALL 0x48 PUSH5 0x47C21744E8 0xC3 ISZERO 0xBF 0xB4 SWAP2 JUMP TIMESTAMP DUP4 CALLDATALOAD SWAP11 0xAB 0xC2 RETURN SUB 0x4C PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "870:3863:49:-:0;;;1545:254;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1545:254:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1545:254:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1545:254:49;;;;;;;;;;;;;;;;;-1:-1:-1;1545:254:49;;-1:-1:-1;844:17:11;;-1:-1:-1;864:12:11;:10;:12::i;:::-;882:6;:18;;-1:-1:-1;;;;;;882:18:11;-1:-1:-1;;;;;882:18:11;;;;;;;911:43;;882:18;;-1:-1:-1;882:18:11;911:43;;882:6;;911:43;-1:-1:-1;1679:34:49;1698:14;1679:18;:34::i;:::-;1719;1737:6;1745:7;1719:17;:34::i;:::-;-1:-1:-1;;;;;;1759:11:49;;;;;;;1781:13;;-1:-1:-1;;;;;1759:11:49;;;1781:13;;;;;1545:254;;;;870:3863;;587:98:7;670:10;587:98;:::o;3076:172:49:-;3143:15;:52;;-1:-1:-1;;;;;;3143:52:49;-1:-1:-1;;;;;3143:52:49;;;;;;;;3206:37;;;;-1:-1:-1;;3206:37:49;3076:172;:::o;2607:345::-;2725:7;:14;2708:6;:13;:31;2700:70;;;;;-1:-1:-1;;;2700:70:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;2781:9;2776:172;2800:6;:13;2796:1;:17;2776:172;;;2876:7;2884:1;2876:10;;;;;;;;;;;;;;2828:13;:24;2842:6;2849:1;2842:9;;;;;;;;;;;;;;-1:-1:-1;;;;;2828:24:49;-1:-1:-1;;;;;2828:24:49;;;;;;;;;;;;;:59;;;;;-1:-1:-1;;;;;2828:59:49;;;;;-1:-1:-1;;;;;2828:59:49;;;;;;2930:7;2938:1;2930:10;;;;;;;;;;;;;;-1:-1:-1;;;;;2900:41:49;2919:6;2926:1;2919:9;;;;;;;;;;;;;;-1:-1:-1;;;;;2900:41:49;;;;;;;;;;;2815:3;;2776:172;;;;2607:345;;:::o;870:3863::-;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "7546": [
                  {
                    "length": 32,
                    "start": 1468
                  },
                  {
                    "length": 32,
                    "start": 1536
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061009e5760003560e01c80639d23d9f2116100665780639d23d9f214610125578063abfd5310146101e5578063ad5c4648146102a7578063b3596f07146102af578063f2fde38b146102e75761009e565b8063170aee73146100a35780636210308c146100cb578063715018a6146100ef5780638da5cb5b146100f757806392bf2be0146100ff575b600080fd5b6100c9600480360360208110156100b957600080fd5b50356001600160a01b031661030d565b005b6100d3610371565b604080516001600160a01b039092168252519081900360200190f35b6100c9610380565b6100d3610422565b6100d36004803603602081101561011557600080fd5b50356001600160a01b0316610431565b6101956004803603602081101561013b57600080fd5b81019060208101813564010000000081111561015657600080fd5b82018360208201111561016857600080fd5b8035906020019184602083028401116401000000008311171561018a57600080fd5b509092509050610452565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156101d15781810151838201526020016101b9565b505050509050019250505060405180910390f35b6100c9600480360360408110156101fb57600080fd5b81019060208101813564010000000081111561021657600080fd5b82018360208201111561022857600080fd5b8035906020019184602083028401116401000000008311171561024a57600080fd5b91939092909160208101903564010000000081111561026857600080fd5b82018360208201111561027a57600080fd5b8035906020019184602083028401116401000000008311171561029c57600080fd5b5090925090506104ef565b6100d36105ba565b6102d5600480360360208110156102c557600080fd5b50356001600160a01b03166105de565b60408051918252519081900360200190f35b6100c9600480360360208110156102fd57600080fd5b50356001600160a01b03166107c7565b6103156108bf565b6000546001600160a01b03908116911614610365576040805162461bcd60e51b81526020600482018190526024820152600080516020610a79833981519152604482015290519081900360640190fd5b61036e816108c3565b50565b6002546001600160a01b031690565b6103886108bf565b6000546001600160a01b039081169116146103d8576040805162461bcd60e51b81526020600482018190526024820152600080516020610a79833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6001600160a01b03808216600090815260016020526040902054165b919050565b6060808267ffffffffffffffff8111801561046c57600080fd5b50604051908082528060200260200182016040528015610496578160200160208202803683370190505b50905060005b838110156104e7576104c88585838181106104b357fe5b905060200201356001600160a01b03166105de565b8282815181106104d457fe5b602090810291909101015260010161049c565b509392505050565b6104f76108bf565b6000546001600160a01b03908116911614610547576040805162461bcd60e51b81526020600482018190526024820152600080516020610a79833981519152604482015290519081900360640190fd5b6105b48484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060408051602080880282810182019093528782529093508792508691829185019084908082843760009201919091525061090d92505050565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b038082166000818152600160205260408120549092908116917f0000000000000000000000000000000000000000000000000000000000000000909116141561063957670de0b6b3a764000091505061044d565b6001600160a01b0381166106c9576002546040805163b3596f0760e01b81526001600160a01b0386811660048301529151919092169163b3596f07916024808301926020929190829003018186803b15801561069457600080fd5b505afa1580156106a8573d6000803e3d6000fd5b505050506040513d60208110156106be57600080fd5b5051915061044d9050565b6000816001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561070457600080fd5b505afa158015610718573d6000803e3d6000fd5b505050506040513d602081101561072e57600080fd5b50519050600081131561074457915061044d9050565b6002546040805163b3596f0760e01b81526001600160a01b0387811660048301529151919092169163b3596f07916024808301926020929190829003018186803b15801561079157600080fd5b505afa1580156107a5573d6000803e3d6000fd5b505050506040513d60208110156107bb57600080fd5b5051925061044d915050565b6107cf6108bf565b6000546001600160a01b0390811691161461081f576040805162461bcd60e51b81526020600482018190526024820152600080516020610a79833981519152604482015290519081900360640190fd5b6001600160a01b0381166108645760405162461bcd60e51b8152600401808060200182810382526026815260200180610a536026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b600280546001600160a01b0319166001600160a01b0383169081179091556040517fce7a780d33665b1ea097af5f155e3821b809ecbaa839d3b33aa83ba28168cefb90600090a250565b8051825114610963576040805162461bcd60e51b815260206004820152601a60248201527f494e434f4e53495354454e545f504152414d535f4c454e475448000000000000604482015290519081900360640190fd5b60005b8251811015610a4d5781818151811061097b57fe5b60200260200101516001600085848151811061099357fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508181815181106109eb57fe5b60200260200101516001600160a01b0316838281518110610a0857fe5b60200260200101516001600160a01b03167f22c5b7b2d8561d39f7f210b6b326a1aa69f15311163082308ac4877db6339dc160405160405180910390a3600101610966565b50505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220c19dff02f9fbd1e192fa486447c21744e8c315bfb491564283359aabc2f3034c64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x9E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9D23D9F2 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x9D23D9F2 EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0xABFD5310 EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0xAD5C4648 EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0xB3596F07 EQ PUSH2 0x2AF JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x2E7 JUMPI PUSH2 0x9E JUMP JUMPDEST DUP1 PUSH4 0x170AEE73 EQ PUSH2 0xA3 JUMPI DUP1 PUSH4 0x6210308C EQ PUSH2 0xCB JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xF7 JUMPI DUP1 PUSH4 0x92BF2BE0 EQ PUSH2 0xFF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x30D JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD3 PUSH2 0x371 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xC9 PUSH2 0x380 JUMP JUMPDEST PUSH2 0xD3 PUSH2 0x422 JUMP JUMPDEST PUSH2 0xD3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x115 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x431 JUMP JUMPDEST PUSH2 0x195 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x18A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x452 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1D1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1B9 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x24A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x27A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x29C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x4EF JUMP JUMPDEST PUSH2 0xD3 PUSH2 0x5BA JUMP JUMPDEST PUSH2 0x2D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5DE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xC9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7C7 JUMP JUMPDEST PUSH2 0x315 PUSH2 0x8BF JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x365 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA79 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x36E DUP2 PUSH2 0x8C3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x388 PUSH2 0x8BF JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x3D8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA79 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x46C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x496 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4E7 JUMPI PUSH2 0x4C8 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x4B3 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5DE JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4D4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x49C JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x4F7 PUSH2 0x8BF JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x547 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA79 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x5B4 DUP5 DUP5 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP9 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP8 DUP3 MSTORE SWAP1 SWAP4 POP DUP8 SWAP3 POP DUP7 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x90D SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 SWAP3 SWAP1 DUP2 AND SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND EQ ISZERO PUSH2 0x639 JUMPI PUSH8 0xDE0B6B3A7640000 SWAP2 POP POP PUSH2 0x44D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x6C9 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xB3596F07 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xB3596F07 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x694 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 POP PUSH2 0x44D SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x50D25BCD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x704 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x718 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x72E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 DUP2 SGT ISZERO PUSH2 0x744 JUMPI SWAP2 POP PUSH2 0x44D SWAP1 POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xB3596F07 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xB3596F07 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x791 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7A5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP PUSH2 0x44D SWAP2 POP POP JUMP JUMPDEST PUSH2 0x7CF PUSH2 0x8BF JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x81F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xA79 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x864 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xA53 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xCE7A780D33665B1EA097AF5F155E3821B809ECBAA839D3B33AA83BA28168CEFB SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0x963 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E434F4E53495354454E545F504152414D535F4C454E475448000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xA4D JUMPI DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x97B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x993 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x9EB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA08 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x22C5B7B2D8561D39F7F210B6B326A1AA69F15311163082308AC4877DB6339DC1 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 ADD PUSH2 0x966 JUMP JUMPDEST POP POP POP JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F20616464726573734F776E61626C653A2063616C6C657220 PUSH10 0x73206E6F742074686520 PUSH16 0x776E6572A2646970667358221220C19D SELFDESTRUCT MUL 0xF9 0xFB 0xD1 0xE1 SWAP3 STATICCALL 0x48 PUSH5 0x47C21744E8 0xC3 ISZERO 0xBF 0xB4 SWAP2 JUMP TIMESTAMP DUP4 CALLDATALOAD SWAP11 0xAB 0xC2 RETURN SUB 0x4C PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "870:3863:49:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2313:115;;;;;;;;;;;;;;;;-1:-1:-1;2313:115:49;-1:-1:-1;;;;;2313:115:49;;:::i;:::-;;4628:103;;;:::i;:::-;;;;-1:-1:-1;;;;;4628:103:49;;;;;;;;;;;;;;1610:135:11;;;:::i;1027:71::-;;;:::i;4394:120:49:-;;;;;;;;;;;;;;;;-1:-1:-1;4394:120:49;-1:-1:-1;;;;;4394:120:49;;:::i;3955:277::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3955:277:49;;-1:-1:-1;3955:277:49;-1:-1:-1;3955:277:49;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2010:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2010:154:49;;-1:-1:-1;2010:154:49;-1:-1:-1;2010:154:49;:::i;1246:29::-;;;:::i;3334:500::-;;;;;;;;;;;;;;;;-1:-1:-1;3334:500:49;-1:-1:-1;;;;;3334:500:49;;:::i;:::-;;;;;;;;;;;;;;;;1884:226:11;;;;;;;;;;;;;;;;-1:-1:-1;1884:226:11;-1:-1:-1;;;;;1884:226:11;;:::i;2313:115:49:-;1223:12:11;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;;-1:-1:-1;;;1205:67:11;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1205:67:11;;;;;;;;;;;;;;;2389:34:49::1;2408:14;2389:18;:34::i;:::-;2313:115:::0;:::o;4628:103::-;4710:15;;-1:-1:-1;;;;;4710:15:49;4628:103;:::o;1610:135:11:-;1223:12;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;;-1:-1:-1;;;1205:67:11;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1205:67:11;;;;;;;;;;;;;;;1712:1:::1;1696:6:::0;;1675:40:::1;::::0;-1:-1:-1;;;;;1696:6:11;;::::1;::::0;1675:40:::1;::::0;1712:1;;1675:40:::1;1738:1;1721:19:::0;;-1:-1:-1;;;;;;1721:19:11::1;::::0;;1610:135::o;1027:71::-;1065:7;1087:6;-1:-1:-1;;;;;1087:6:11;1027:71;:::o;4394:120:49:-;-1:-1:-1;;;;;4488:20:49;;;4458:7;4488:20;;;:13;:20;;;;;;;4394:120;;;;:::o;3955:277::-;4030:16;;4094:6;4080:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4080:28:49;;4054:54;;4119:9;4114:95;4134:17;;;4114:95;;;4178:24;4192:6;;4199:1;4192:9;;;;;;;;;;;;;-1:-1:-1;;;;;4192:9:49;4178:13;:24::i;:::-;4166:6;4173:1;4166:9;;;;;;;;;;;;;;;;;:36;4153:3;;4114:95;;;-1:-1:-1;4221:6:49;3955:277;-1:-1:-1;;;3955:277:49:o;2010:154::-;1223:12:11;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;;-1:-1:-1;;;1205:67:11;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1205:67:11;;;;;;;;;;;;;;;2125:34:49::1;2143:6;;2125:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;2125:34:49::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;;;;;;-1:-1:-1;2151:7:49;;-1:-1:-1;2151:7:49;;;;2125:34;::::1;::::0;2151:7;;2125:34;2151:7;2125:34;::::1;;::::0;::::1;::::0;;;;-1:-1:-1;2125:17:49::1;::::0;-1:-1:-1;;;2125:34:49:i:1;:::-;2010:154:::0;;;;:::o;1246:29::-;;;:::o;3334:500::-;-1:-1:-1;;;;;3447:20:49;;;3402:7;3447:20;;;:13;:20;;;;;;3402:7;;3447:20;;;;3487:4;3478:13;;;;3474:356;;;3508:7;3501:14;;;;;3474:356;-1:-1:-1;;;;;3532:29:49;;3528:302;;3578:15;;:36;;;-1:-1:-1;;;3578:36:49;;-1:-1:-1;;;;;3578:36:49;;;;;;;;;:15;;;;;:29;;:36;;;;;;;;;;;;;;:15;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3578:36:49;;-1:-1:-1;3571:43:49;;-1:-1:-1;3571:43:49;3528:302;3635:12;3671:6;-1:-1:-1;;;;;3650:41:49;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3650:43:49;;-1:-1:-1;3713:1:49;3705:9;;3701:123;;;3741:5;-1:-1:-1;3726:21:49;;-1:-1:-1;3726:21:49;3701:123;3779:15;;:36;;;-1:-1:-1;;;3779:36:49;;-1:-1:-1;;;;;3779:36:49;;;;;;;;;:15;;;;;:29;;:36;;;;;;;;;;;;;;:15;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3779:36:49;;-1:-1:-1;3772:43:49;;-1:-1:-1;;3772:43:49;1884:226:11;1223:12;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;;-1:-1:-1;;;1205:67:11;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1205:67:11;;;;;;;;;;;;;;;-1:-1:-1;;;;;1968:22:11;::::1;1960:73;;;;-1:-1:-1::0;;;1960:73:11::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2065:6;::::0;;2044:38:::1;::::0;-1:-1:-1;;;;;2044:38:11;;::::1;::::0;2065:6;::::1;::::0;2044:38:::1;::::0;::::1;2088:6;:17:::0;;-1:-1:-1;;;;;;2088:17:11::1;-1:-1:-1::0;;;;;2088:17:11;;;::::1;::::0;;;::::1;::::0;;1884:226::o;587:98:7:-;670:10;587:98;:::o;3076:172:49:-;3143:15;:52;;-1:-1:-1;;;;;;3143:52:49;-1:-1:-1;;;;;3143:52:49;;;;;;;;3206:37;;;;-1:-1:-1;;3206:37:49;3076:172;:::o;2607:345::-;2725:7;:14;2708:6;:13;:31;2700:70;;;;;-1:-1:-1;;;2700:70:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;2781:9;2776:172;2800:6;:13;2796:1;:17;2776:172;;;2876:7;2884:1;2876:10;;;;;;;;;;;;;;2828:13;:24;2842:6;2849:1;2842:9;;;;;;;;;;;;;;-1:-1:-1;;;;;2828:24:49;-1:-1:-1;;;;;2828:24:49;;;;;;;;;;;;;:59;;;;;-1:-1:-1;;;;;2828:59:49;;;;;-1:-1:-1;;;;;2828:59:49;;;;;;2930:7;2938:1;2930:10;;;;;;;;;;;;;;-1:-1:-1;;;;;2900:41:49;2919:6;2926:1;2919:9;;;;;;;;;;;;;;-1:-1:-1;;;;;2900:41:49;;;;;;;;;;;2815:3;;2776:172;;;;2607:345;;:::o"
            },
            "methodIdentifiers": {
              "WETH()": "ad5c4648",
              "getAssetPrice(address)": "b3596f07",
              "getAssetsPrices(address[])": "9d23d9f2",
              "getFallbackOracle()": "6210308c",
              "getSourceOfAsset(address)": "92bf2be0",
              "owner()": "8da5cb5b",
              "renounceOwnership()": "715018a6",
              "setAssetSources(address[],address[])": "abfd5310",
              "setFallbackOracle(address)": "170aee73",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        }
      },
      "contracts/misc/AaveProtocolDataProvider.sol": {
        "AaveProtocolDataProvider": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPoolAddressesProvider",
                  "name": "addressesProvider",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "ADDRESSES_PROVIDER",
              "outputs": [
                {
                  "internalType": "contract ILendingPoolAddressesProvider",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAllATokens",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "string",
                      "name": "symbol",
                      "type": "string"
                    },
                    {
                      "internalType": "address",
                      "name": "tokenAddress",
                      "type": "address"
                    }
                  ],
                  "internalType": "struct AaveProtocolDataProvider.TokenData[]",
                  "name": "",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAllReservesTokens",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "string",
                      "name": "symbol",
                      "type": "string"
                    },
                    {
                      "internalType": "address",
                      "name": "tokenAddress",
                      "type": "address"
                    }
                  ],
                  "internalType": "struct AaveProtocolDataProvider.TokenData[]",
                  "name": "",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "getReserveConfigurationData",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "decimals",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "ltv",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidationThreshold",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidationBonus",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "reserveFactor",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "usageAsCollateralEnabled",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "borrowingEnabled",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "stableBorrowRateEnabled",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "isActive",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "isFrozen",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "getReserveData",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "availableLiquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "totalStableDebt",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "totalVariableDebt",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidityRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "variableBorrowRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "stableBorrowRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "averageStableBorrowRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidityIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "variableBorrowIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint40",
                  "name": "lastUpdateTimestamp",
                  "type": "uint40"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "getReserveTokensAddresses",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "aTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "stableDebtTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "variableDebtTokenAddress",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getUserReserveData",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "currentATokenBalance",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "currentStableDebt",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "currentVariableDebt",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "principalStableDebt",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "scaledVariableDebt",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "stableBorrowRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidityRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint40",
                  "name": "stableRateLastUpdated",
                  "type": "uint40"
                },
                {
                  "internalType": "bool",
                  "name": "usageAsCollateralEnabled",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60a060405234801561001057600080fd5b50604051611be3380380611be383398101604081905261002f91610044565b60601b6001600160601b031916608052610072565b600060208284031215610055578081fd5b81516001600160a01b038116811461006b578182fd5b9392505050565b60805160601c611b316100b26000398061015b528061019552806102ac52806107a75280610b2b5280610c7b5280610ff952806111295250611b316000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80633e1501411161005b5780633e150141146100f1578063b316ff891461011a578063d2493b6c1461012f578063f561ae41146101515761007d565b80630542975c1461008257806328dd2d01146100a057806335ea6a75146100c8575b600080fd5b61008a610159565b60405161009791906118e3565b60405180910390f35b6100b36100ae3660046115f5565b61017d565b60405161009799989796959493929190611a44565b6100db6100d63660046115b6565b61078e565b6040516100979a999897969594939291906119f8565b6101046100ff3660046115b6565b610b12565b6040516100979a999897969594939291906119a9565b610122610c75565b604051610097919061191a565b61014261013d3660046115b6565b610fea565b604051610097939291906118f7565b610122611123565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060008060008060008060006101936114b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101ec57600080fd5b505afa158015610200573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022491906115d9565b6001600160a01b03166335ea6a758d6040518263ffffffff1660e01b815260040161024f91906118e3565b6101806040518083038186803b15801561026857600080fd5b505afa15801561027c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a0919061177f565b90506102aa61151e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561030357600080fd5b505afa158015610317573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033b91906115d9565b6001600160a01b0316634417a5838d6040518263ffffffff1660e01b815260040161036691906118e3565b60206040518083038186803b15801561037e57600080fd5b505afa158015610392573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b69190611764565b60e08301516040516370a0823160e01b81529192506001600160a01b0316906370a08231906103e9908f906004016118e3565b60206040518083038186803b15801561040157600080fd5b505afa158015610415573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610439919061187a565b6101208301516040516370a0823160e01b8152919c506001600160a01b0316906370a082319061046d908f906004016118e3565b60206040518083038186803b15801561048557600080fd5b505afa158015610499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bd919061187a565b6101008301516040516370a0823160e01b8152919a506001600160a01b0316906370a08231906104f1908f906004016118e3565b60206040518083038186803b15801561050957600080fd5b505afa15801561051d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610541919061187a565b61010083015160405163631a6fd560e11b8152919b506001600160a01b03169063c634dfaa90610575908f906004016118e3565b60206040518083038186803b15801561058d57600080fd5b505afa1580156105a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c5919061187a565b610120830151604051630ed1279f60e11b81529199506001600160a01b031690631da24f3e906105f9908f906004016118e3565b60206040518083038186803b15801561061157600080fd5b505afa158015610625573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610649919061187a565b965081606001516001600160801b031694508161010001516001600160a01b031663e78c9b3b8d6040518263ffffffff1660e01b815260040161068c91906118e3565b60206040518083038186803b1580156106a457600080fd5b505afa1580156106b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106dc919061187a565b610100830151604051631e739ae360e21b81529197506001600160a01b0316906379ce6b8c90610710908f906004016118e3565b60206040518083038186803b15801561072857600080fd5b505afa15801561073c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107609190611892565b935061077d82610160015160ff16826113ea90919063ffffffff16565b925050509295985092959850929598565b6000806000806000806000806000806107a56114b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107fe57600080fd5b505afa158015610812573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083691906115d9565b6001600160a01b03166335ea6a758d6040518263ffffffff1660e01b815260040161086191906118e3565b6101806040518083038186803b15801561087a57600080fd5b505afa15801561088e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b2919061177f565b60e08101516040516370a0823160e01b81529192506001600160a01b038e16916370a08231916108e4916004016118e3565b60206040518083038186803b1580156108fc57600080fd5b505afa158015610910573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610934919061187a565b8161010001516001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561097257600080fd5b505afa158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa919061187a565b8261012001516001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109e857600080fd5b505afa1580156109fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a20919061187a565b836060015184608001518560a001518661010001516001600160a01b03166390f6fcf26040518163ffffffff1660e01b815260040160206040518083038186803b158015610a6d57600080fd5b505afa158015610a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa5919061187a565b876020015188604001518960c00151866001600160801b03169650856001600160801b03169550846001600160801b03169450826001600160801b03169250816001600160801b031691509a509a509a509a509a509a509a509a509a509a50509193959799509193959799565b600080600080600080600080600080610b2961151e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8257600080fd5b505afa158015610b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bba91906115d9565b6001600160a01b031663c44b11f78d6040518263ffffffff1660e01b8152600401610be591906118e3565b60206040518083038186803b158015610bfd57600080fd5b505afa158015610c11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c359190611764565b9050610c408161144c565b909e50929c50909a5098509650610c5681611477565b9d9f9c9e509a9c999b989a8d15159a9099909850919650945092505050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cd257600080fd5b505afa158015610ce6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0a91906115d9565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b158015610d4757600080fd5b505afa158015610d5b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d83919081019061162d565b90506060815167ffffffffffffffff81118015610d9f57600080fd5b50604051908082528060200260200182016040528015610dd957816020015b610dc6611531565b815260200190600190039081610dbe5790505b50905060005b8251811015610fe257739f8f72aa9304c8b593d555f12ef6589cc3a579a26001600160a01b0316838281518110610e1257fe5b60200260200101516001600160a01b03161415610e915760405180604001604052806040518060400160405280600381526020016226a5a960e91b8152508152602001848381518110610e6157fe5b60200260200101516001600160a01b0316815250828281518110610e8157fe5b6020026020010181905250610fda565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316838281518110610ebb57fe5b60200260200101516001600160a01b03161415610f0a5760405180604001604052806040518060400160405280600381526020016208aa8960eb1b8152508152602001848381518110610e6157fe5b6040518060400160405280848381518110610f2157fe5b60200260200101516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015610f6157600080fd5b505afa158015610f75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f9d91908101906116d8565b8152602001848381518110610fae57fe5b60200260200101516001600160a01b0316815250828281518110610fce57fe5b60200260200101819052505b600101610ddf565b509250505090565b6000806000610ff76114b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561105057600080fd5b505afa158015611064573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108891906115d9565b6001600160a01b03166335ea6a75866040518263ffffffff1660e01b81526004016110b391906118e3565b6101806040518083038186803b1580156110cc57600080fd5b505afa1580156110e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611104919061177f565b60e0810151610100820151610120909201519097919650945092505050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561118057600080fd5b505afa158015611194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b891906115d9565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b1580156111f557600080fd5b505afa158015611209573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611231919081019061162d565b90506060815167ffffffffffffffff8111801561124d57600080fd5b5060405190808252806020026020018201604052801561128757816020015b611274611531565b81526020019060019003908161126c5790505b50905060005b8251811015610fe25761129e6114b3565b846001600160a01b03166335ea6a758584815181106112b957fe5b60200260200101516040518263ffffffff1660e01b81526004016112dd91906118e3565b6101806040518083038186803b1580156112f657600080fd5b505afa15801561130a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132e919061177f565b905060405180604001604052808260e001516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561137857600080fd5b505afa15801561138c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113b491908101906116d8565b81526020018260e001516001600160a01b03168152508383815181106113d657fe5b60209081029190910101525060010161128d565b60006080821060405180604001604052806002815260200161373760f01b815250906114325760405162461bcd60e51b81526004016114299190611996565b60405180910390fd5b5050815160016002830281019190911c1615155b92915050565b5161ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b51670100000000000000811615159167020000000000000082161515916704000000000000008116151591670800000000000000909116151590565b6040518061018001604052806114c761151e565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040518060200160405280600081525090565b60408051808201909152606081526000602082015290565b805161144681611ae3565b600060208284031215611565578081fd5b61156f6020611a8c565b9151825250919050565b80516001600160801b038116811461144657600080fd5b805164ffffffffff8116811461144657600080fd5b805160ff8116811461144657600080fd5b6000602082840312156115c7578081fd5b81356115d281611ae3565b9392505050565b6000602082840312156115ea578081fd5b81516115d281611ae3565b60008060408385031215611607578081fd5b823561161281611ae3565b9150602083013561162281611ae3565b809150509250929050565b6000602080838503121561163f578182fd5b825167ffffffffffffffff80821115611656578384fd5b818501915085601f830112611669578384fd5b815181811115611677578485fd5b8381029150611687848301611a8c565b8181528481019084860184860187018a10156116a1578788fd5b8795505b838610156116cb576116b78a82611549565b8352600195909501949186019186016116a5565b5098975050505050505050565b6000602082840312156116e9578081fd5b815167ffffffffffffffff80821115611700578283fd5b818401915084601f830112611713578283fd5b815181811115611721578384fd5b611734601f8201601f1916602001611a8c565b915080825285602082850101111561174a578384fd5b61175b816020840160208601611ab3565b50949350505050565b600060208284031215611775578081fd5b6115d28383611554565b6000610180808385031215611792578182fd5b61179b81611a8c565b90506117a78484611554565b81526117b68460208501611579565b60208201526117c88460408501611579565b60408201526117da8460608501611579565b60608201526117ec8460808501611579565b60808201526117fe8460a08501611579565b60a08201526118108460c08501611590565b60c08201526118228460e08501611549565b60e082015261010061183685828601611549565b9082015261012061184985858301611549565b9082015261014061185c85858301611549565b9082015261016061186f858583016115a5565b908201529392505050565b60006020828403121561188b578081fd5b5051919050565b6000602082840312156118a3578081fd5b815164ffffffffff811681146115d2578182fd5b600081518084526118cf816020860160208601611ab3565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b60208082528251828201819052600091906040908185019080840286018301878501865b8381101561198857888303603f1901855281518051878552611962888601826118b7565b918901516001600160a01b0316948901949094529487019492509086019060010161193e565b509098975050505050505050565b6000602082526115d260208301846118b7565b998a5260208a0198909852604089019690965260608801949094526080870192909252151560a0860152151560c0850152151560e0840152151561010083015215156101208201526101400190565b998a5260208a019890985260408901969096526060880194909452608087019290925260a086015260c085015260e084015261010083015264ffffffffff166101208201526101400190565b988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015264ffffffffff1660e083015215156101008201526101200190565b60405181810167ffffffffffffffff81118282101715611aab57600080fd5b604052919050565b60005b83811015611ace578181015183820152602001611ab6565b83811115611add576000848401525b50505050565b6001600160a01b0381168114611af857600080fd5b5056fea2646970667358221220835d19d7f2aa51c93dba3583b1bf3664228c225d71fa2fa6249fbaffee98d30c64736f6c634300060c0033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1BE3 CODESIZE SUB DUP1 PUSH2 0x1BE3 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x44 JUMP JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE PUSH2 0x72 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x55 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x6B JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH2 0x1B31 PUSH2 0xB2 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x15B MSTORE DUP1 PUSH2 0x195 MSTORE DUP1 PUSH2 0x2AC MSTORE DUP1 PUSH2 0x7A7 MSTORE DUP1 PUSH2 0xB2B MSTORE DUP1 PUSH2 0xC7B MSTORE DUP1 PUSH2 0xFF9 MSTORE DUP1 PUSH2 0x1129 MSTORE POP PUSH2 0x1B31 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3E150141 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x3E150141 EQ PUSH2 0xF1 JUMPI DUP1 PUSH4 0xB316FF89 EQ PUSH2 0x11A JUMPI DUP1 PUSH4 0xD2493B6C EQ PUSH2 0x12F JUMPI DUP1 PUSH4 0xF561AE41 EQ PUSH2 0x151 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x542975C EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x28DD2D01 EQ PUSH2 0xA0 JUMPI DUP1 PUSH4 0x35EA6A75 EQ PUSH2 0xC8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x159 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x18E3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB3 PUSH2 0xAE CALLDATASIZE PUSH1 0x4 PUSH2 0x15F5 JUMP JUMPDEST PUSH2 0x17D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1A44 JUMP JUMPDEST PUSH2 0xDB PUSH2 0xD6 CALLDATASIZE PUSH1 0x4 PUSH2 0x15B6 JUMP JUMPDEST PUSH2 0x78E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x19F8 JUMP JUMPDEST PUSH2 0x104 PUSH2 0xFF CALLDATASIZE PUSH1 0x4 PUSH2 0x15B6 JUMP JUMPDEST PUSH2 0xB12 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x19A9 JUMP JUMPDEST PUSH2 0x122 PUSH2 0xC75 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x191A JUMP JUMPDEST PUSH2 0x142 PUSH2 0x13D CALLDATASIZE PUSH1 0x4 PUSH2 0x15B6 JUMP JUMPDEST PUSH2 0xFEA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x18F7 JUMP JUMPDEST PUSH2 0x122 PUSH2 0x1123 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x193 PUSH2 0x14B3 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x261BF8B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x200 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x224 SWAP2 SWAP1 PUSH2 0x15D9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x35EA6A75 DUP14 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24F SWAP2 SWAP1 PUSH2 0x18E3 JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x27C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A0 SWAP2 SWAP1 PUSH2 0x177F JUMP JUMPDEST SWAP1 POP PUSH2 0x2AA PUSH2 0x151E JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x261BF8B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x317 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x33B SWAP2 SWAP1 PUSH2 0x15D9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4417A583 DUP14 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x366 SWAP2 SWAP1 PUSH2 0x18E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x37E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x392 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3B6 SWAP2 SWAP1 PUSH2 0x1764 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x3E9 SWAP1 DUP16 SWAP1 PUSH1 0x4 ADD PUSH2 0x18E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x415 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x439 SWAP2 SWAP1 PUSH2 0x187A JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP13 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x46D SWAP1 DUP16 SWAP1 PUSH1 0x4 ADD PUSH2 0x18E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x485 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x499 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4BD SWAP2 SWAP1 PUSH2 0x187A JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP11 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x4F1 SWAP1 DUP16 SWAP1 PUSH1 0x4 ADD PUSH2 0x18E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x509 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x51D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x541 SWAP2 SWAP1 PUSH2 0x187A JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x631A6FD5 PUSH1 0xE1 SHL DUP2 MSTORE SWAP2 SWAP12 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xC634DFAA SWAP1 PUSH2 0x575 SWAP1 DUP16 SWAP1 PUSH1 0x4 ADD PUSH2 0x18E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x58D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5A1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5C5 SWAP2 SWAP1 PUSH2 0x187A JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xED1279F PUSH1 0xE1 SHL DUP2 MSTORE SWAP2 SWAP10 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x1DA24F3E SWAP1 PUSH2 0x5F9 SWAP1 DUP16 SWAP1 PUSH1 0x4 ADD PUSH2 0x18E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x611 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x625 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x649 SWAP2 SWAP1 PUSH2 0x187A JUMP JUMPDEST SWAP7 POP DUP2 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP5 POP DUP2 PUSH2 0x100 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE78C9B3B DUP14 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x68C SWAP2 SWAP1 PUSH2 0x18E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6DC SWAP2 SWAP1 PUSH2 0x187A JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x1E739AE3 PUSH1 0xE2 SHL DUP2 MSTORE SWAP2 SWAP8 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x79CE6B8C SWAP1 PUSH2 0x710 SWAP1 DUP16 SWAP1 PUSH1 0x4 ADD PUSH2 0x18E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x728 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x73C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x760 SWAP2 SWAP1 PUSH2 0x1892 JUMP JUMPDEST SWAP4 POP PUSH2 0x77D DUP3 PUSH2 0x160 ADD MLOAD PUSH1 0xFF AND DUP3 PUSH2 0x13EA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP3 POP POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x7A5 PUSH2 0x14B3 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x261BF8B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x812 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x836 SWAP2 SWAP1 PUSH2 0x15D9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x35EA6A75 DUP14 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x861 SWAP2 SWAP1 PUSH2 0x18E3 JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x87A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x88E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8B2 SWAP2 SWAP1 PUSH2 0x177F JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH2 0x8E4 SWAP2 PUSH1 0x4 ADD PUSH2 0x18E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x910 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x934 SWAP2 SWAP1 PUSH2 0x187A JUMP JUMPDEST DUP2 PUSH2 0x100 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x986 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9AA SWAP2 SWAP1 PUSH2 0x187A JUMP JUMPDEST DUP3 PUSH2 0x120 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9FC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA20 SWAP2 SWAP1 PUSH2 0x187A JUMP JUMPDEST DUP4 PUSH1 0x60 ADD MLOAD DUP5 PUSH1 0x80 ADD MLOAD DUP6 PUSH1 0xA0 ADD MLOAD DUP7 PUSH2 0x100 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x90F6FCF2 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA81 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAA5 SWAP2 SWAP1 PUSH2 0x187A JUMP JUMPDEST DUP8 PUSH1 0x20 ADD MLOAD DUP9 PUSH1 0x40 ADD MLOAD DUP10 PUSH1 0xC0 ADD MLOAD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP7 POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP6 POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP5 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP3 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP2 POP SWAP11 POP SWAP11 POP SWAP11 POP SWAP11 POP SWAP11 POP SWAP11 POP SWAP11 POP SWAP11 POP SWAP11 POP SWAP11 POP POP SWAP2 SWAP4 SWAP6 SWAP8 SWAP10 POP SWAP2 SWAP4 SWAP6 SWAP8 SWAP10 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0xB29 PUSH2 0x151E JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x261BF8B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB96 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBBA SWAP2 SWAP1 PUSH2 0x15D9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC44B11F7 DUP14 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBE5 SWAP2 SWAP1 PUSH2 0x18E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC11 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC35 SWAP2 SWAP1 PUSH2 0x1764 JUMP JUMPDEST SWAP1 POP PUSH2 0xC40 DUP2 PUSH2 0x144C JUMP JUMPDEST SWAP1 SWAP15 POP SWAP3 SWAP13 POP SWAP1 SWAP11 POP SWAP9 POP SWAP7 POP PUSH2 0xC56 DUP2 PUSH2 0x1477 JUMP JUMPDEST SWAP14 SWAP16 SWAP13 SWAP15 POP SWAP11 SWAP13 SWAP10 SWAP12 SWAP9 SWAP11 DUP14 ISZERO ISZERO SWAP11 SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP2 SWAP7 POP SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x261BF8B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCE6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD0A SWAP2 SWAP1 PUSH2 0x15D9 JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD1946DBC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD5B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xD83 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x162D JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xD9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xDD9 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xDC6 PUSH2 0x1531 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xDBE JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xFE2 JUMPI PUSH20 0x9F8F72AA9304C8B593D555F12EF6589CC3A579A2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xE12 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xE91 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x26A5A9 PUSH1 0xE9 SHL DUP2 MSTORE POP DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xE61 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xE81 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH2 0xFDA JUMP JUMPDEST PUSH20 0xEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xEBB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xF0A JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x8AA89 PUSH1 0xEB SHL DUP2 MSTORE POP DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xE61 JUMPI INVALID JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xF21 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95D89B41 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF75 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xF9D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x16D8 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xFAE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xFCE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP JUMPDEST PUSH1 0x1 ADD PUSH2 0xDDF JUMP JUMPDEST POP SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xFF7 PUSH2 0x14B3 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x261BF8B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1050 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1064 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1088 SWAP2 SWAP1 PUSH2 0x15D9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x35EA6A75 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10B3 SWAP2 SWAP1 PUSH2 0x18E3 JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10E0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1104 SWAP2 SWAP1 PUSH2 0x177F JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD PUSH2 0x100 DUP3 ADD MLOAD PUSH2 0x120 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP8 SWAP2 SWAP7 POP SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x261BF8B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1180 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1194 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11B8 SWAP2 SWAP1 PUSH2 0x15D9 JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD1946DBC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1209 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1231 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x162D JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x124D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1287 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1274 PUSH2 0x1531 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x126C JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xFE2 JUMPI PUSH2 0x129E PUSH2 0x14B3 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x35EA6A75 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x12B9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12DD SWAP2 SWAP1 PUSH2 0x18E3 JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x130A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x132E SWAP2 SWAP1 PUSH2 0x177F JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH1 0xE0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95D89B41 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1378 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x138C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x13B4 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x16D8 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0xE0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x13D6 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 ADD PUSH2 0x128D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1432 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1429 SWAP2 SWAP1 PUSH2 0x1996 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP DUP2 MLOAD PUSH1 0x1 PUSH1 0x2 DUP4 MUL DUP2 ADD SWAP2 SWAP1 SWAP2 SHR AND ISZERO ISZERO JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST MLOAD PUSH2 0xFFFF DUP1 DUP3 AND SWAP3 PUSH1 0x10 DUP4 SWAP1 SHR DUP3 AND SWAP3 PUSH1 0x20 DUP2 SWAP1 SHR DUP4 AND SWAP3 PUSH1 0x30 DUP3 SWAP1 SHR PUSH1 0xFF AND SWAP3 PUSH1 0x40 SWAP3 SWAP1 SWAP3 SHR AND SWAP1 JUMP JUMPDEST MLOAD PUSH8 0x100000000000000 DUP2 AND ISZERO ISZERO SWAP2 PUSH8 0x200000000000000 DUP3 AND ISZERO ISZERO SWAP2 PUSH8 0x400000000000000 DUP2 AND ISZERO ISZERO SWAP2 PUSH8 0x800000000000000 SWAP1 SWAP2 AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x14C7 PUSH2 0x151E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x100 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x140 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x160 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1446 DUP2 PUSH2 0x1AE3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1565 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x156F PUSH1 0x20 PUSH2 0x1A8C JUMP JUMPDEST SWAP2 MLOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x1446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15C7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x15D2 DUP2 PUSH2 0x1AE3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15EA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x15D2 DUP2 PUSH2 0x1AE3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1607 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1612 DUP2 PUSH2 0x1AE3 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1622 DUP2 PUSH2 0x1AE3 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x163F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1656 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1669 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x1677 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP4 DUP2 MUL SWAP2 POP PUSH2 0x1687 DUP5 DUP4 ADD PUSH2 0x1A8C JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 DUP2 ADD SWAP1 DUP5 DUP7 ADD DUP5 DUP7 ADD DUP8 ADD DUP11 LT ISZERO PUSH2 0x16A1 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP6 POP JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0x16CB JUMPI PUSH2 0x16B7 DUP11 DUP3 PUSH2 0x1549 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP2 DUP7 ADD SWAP2 DUP7 ADD PUSH2 0x16A5 JUMP JUMPDEST POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16E9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1700 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1713 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x1721 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1734 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x1A8C JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP6 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x174A JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x175B DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1AB3 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1775 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x15D2 DUP4 DUP4 PUSH2 0x1554 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1792 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x179B DUP2 PUSH2 0x1A8C JUMP JUMPDEST SWAP1 POP PUSH2 0x17A7 DUP5 DUP5 PUSH2 0x1554 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x17B6 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x1579 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x17C8 DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x1579 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x17DA DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x1579 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x17EC DUP5 PUSH1 0x80 DUP6 ADD PUSH2 0x1579 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x17FE DUP5 PUSH1 0xA0 DUP6 ADD PUSH2 0x1579 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x1810 DUP5 PUSH1 0xC0 DUP6 ADD PUSH2 0x1590 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x1822 DUP5 PUSH1 0xE0 DUP6 ADD PUSH2 0x1549 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 PUSH2 0x1836 DUP6 DUP3 DUP7 ADD PUSH2 0x1549 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x120 PUSH2 0x1849 DUP6 DUP6 DUP4 ADD PUSH2 0x1549 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x140 PUSH2 0x185C DUP6 DUP6 DUP4 ADD PUSH2 0x1549 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x160 PUSH2 0x186F DUP6 DUP6 DUP4 ADD PUSH2 0x15A5 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x188B JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18A3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x15D2 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x18CF DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1AB3 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP1 DUP5 MUL DUP7 ADD DUP4 ADD DUP8 DUP6 ADD DUP7 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1988 JUMPI DUP9 DUP4 SUB PUSH1 0x3F NOT ADD DUP6 MSTORE DUP2 MLOAD DUP1 MLOAD DUP8 DUP6 MSTORE PUSH2 0x1962 DUP9 DUP7 ADD DUP3 PUSH2 0x18B7 JUMP JUMPDEST SWAP2 DUP10 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 DUP10 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP5 DUP8 ADD SWAP5 SWAP3 POP SWAP1 DUP7 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x193E JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x15D2 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x18B7 JUMP JUMPDEST SWAP10 DUP11 MSTORE PUSH1 0x20 DUP11 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x40 DUP10 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x60 DUP9 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x80 DUP8 ADD SWAP3 SWAP1 SWAP3 MSTORE ISZERO ISZERO PUSH1 0xA0 DUP7 ADD MSTORE ISZERO ISZERO PUSH1 0xC0 DUP6 ADD MSTORE ISZERO ISZERO PUSH1 0xE0 DUP5 ADD MSTORE ISZERO ISZERO PUSH2 0x100 DUP4 ADD MSTORE ISZERO ISZERO PUSH2 0x120 DUP3 ADD MSTORE PUSH2 0x140 ADD SWAP1 JUMP JUMPDEST SWAP10 DUP11 MSTORE PUSH1 0x20 DUP11 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x40 DUP10 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x60 DUP9 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x80 DUP8 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xA0 DUP7 ADD MSTORE PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x100 DUP4 ADD MSTORE PUSH5 0xFFFFFFFFFF AND PUSH2 0x120 DUP3 ADD MSTORE PUSH2 0x140 ADD SWAP1 JUMP JUMPDEST SWAP9 DUP10 MSTORE PUSH1 0x20 DUP10 ADD SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x40 DUP9 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x60 DUP8 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x80 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0xC0 DUP5 ADD MSTORE PUSH5 0xFFFFFFFFFF AND PUSH1 0xE0 DUP4 ADD MSTORE ISZERO ISZERO PUSH2 0x100 DUP3 ADD MSTORE PUSH2 0x120 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1AAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1ACE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1AB6 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1ADD JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1AF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP4 0x5D NOT 0xD7 CALLCODE 0xAA MLOAD 0xC9 RETURNDATASIZE 0xBA CALLDATALOAD DUP4 0xB1 0xBF CALLDATASIZE PUSH5 0x228C225D71 STATICCALL 0x2F 0xA6 0x24 SWAP16 0xBA SELFDESTRUCT 0xEE SWAP9 0xD3 0xC PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "746:5766:50:-:0;;;1195:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1269:38;;-1:-1:-1;;;;;;1269:38:50;;;746:5766;;222:339:-1;;375:2;363:9;354:7;350:23;346:32;343:2;;;-1:-1;;381:12;343:2;121:13;;-1:-1;;;;;864:54;;1027:73;;1017:2;;-1:-1;;1104:12;1017:2;433:112;337:224;-1:-1;;;337:224::o;:::-;746:5766:50;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "7859": [
                  {
                    "length": 32,
                    "start": 347
                  },
                  {
                    "length": 32,
                    "start": 405
                  },
                  {
                    "length": 32,
                    "start": 684
                  },
                  {
                    "length": 32,
                    "start": 1959
                  },
                  {
                    "length": 32,
                    "start": 2859
                  },
                  {
                    "length": 32,
                    "start": 3195
                  },
                  {
                    "length": 32,
                    "start": 4089
                  },
                  {
                    "length": 32,
                    "start": 4393
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061007d5760003560e01c80633e1501411161005b5780633e150141146100f1578063b316ff891461011a578063d2493b6c1461012f578063f561ae41146101515761007d565b80630542975c1461008257806328dd2d01146100a057806335ea6a75146100c8575b600080fd5b61008a610159565b60405161009791906118e3565b60405180910390f35b6100b36100ae3660046115f5565b61017d565b60405161009799989796959493929190611a44565b6100db6100d63660046115b6565b61078e565b6040516100979a999897969594939291906119f8565b6101046100ff3660046115b6565b610b12565b6040516100979a999897969594939291906119a9565b610122610c75565b604051610097919061191a565b61014261013d3660046115b6565b610fea565b604051610097939291906118f7565b610122611123565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060008060008060008060006101936114b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101ec57600080fd5b505afa158015610200573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022491906115d9565b6001600160a01b03166335ea6a758d6040518263ffffffff1660e01b815260040161024f91906118e3565b6101806040518083038186803b15801561026857600080fd5b505afa15801561027c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a0919061177f565b90506102aa61151e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561030357600080fd5b505afa158015610317573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033b91906115d9565b6001600160a01b0316634417a5838d6040518263ffffffff1660e01b815260040161036691906118e3565b60206040518083038186803b15801561037e57600080fd5b505afa158015610392573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b69190611764565b60e08301516040516370a0823160e01b81529192506001600160a01b0316906370a08231906103e9908f906004016118e3565b60206040518083038186803b15801561040157600080fd5b505afa158015610415573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610439919061187a565b6101208301516040516370a0823160e01b8152919c506001600160a01b0316906370a082319061046d908f906004016118e3565b60206040518083038186803b15801561048557600080fd5b505afa158015610499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bd919061187a565b6101008301516040516370a0823160e01b8152919a506001600160a01b0316906370a08231906104f1908f906004016118e3565b60206040518083038186803b15801561050957600080fd5b505afa15801561051d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610541919061187a565b61010083015160405163631a6fd560e11b8152919b506001600160a01b03169063c634dfaa90610575908f906004016118e3565b60206040518083038186803b15801561058d57600080fd5b505afa1580156105a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c5919061187a565b610120830151604051630ed1279f60e11b81529199506001600160a01b031690631da24f3e906105f9908f906004016118e3565b60206040518083038186803b15801561061157600080fd5b505afa158015610625573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610649919061187a565b965081606001516001600160801b031694508161010001516001600160a01b031663e78c9b3b8d6040518263ffffffff1660e01b815260040161068c91906118e3565b60206040518083038186803b1580156106a457600080fd5b505afa1580156106b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106dc919061187a565b610100830151604051631e739ae360e21b81529197506001600160a01b0316906379ce6b8c90610710908f906004016118e3565b60206040518083038186803b15801561072857600080fd5b505afa15801561073c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107609190611892565b935061077d82610160015160ff16826113ea90919063ffffffff16565b925050509295985092959850929598565b6000806000806000806000806000806107a56114b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107fe57600080fd5b505afa158015610812573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083691906115d9565b6001600160a01b03166335ea6a758d6040518263ffffffff1660e01b815260040161086191906118e3565b6101806040518083038186803b15801561087a57600080fd5b505afa15801561088e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b2919061177f565b60e08101516040516370a0823160e01b81529192506001600160a01b038e16916370a08231916108e4916004016118e3565b60206040518083038186803b1580156108fc57600080fd5b505afa158015610910573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610934919061187a565b8161010001516001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561097257600080fd5b505afa158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa919061187a565b8261012001516001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109e857600080fd5b505afa1580156109fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a20919061187a565b836060015184608001518560a001518661010001516001600160a01b03166390f6fcf26040518163ffffffff1660e01b815260040160206040518083038186803b158015610a6d57600080fd5b505afa158015610a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa5919061187a565b876020015188604001518960c00151866001600160801b03169650856001600160801b03169550846001600160801b03169450826001600160801b03169250816001600160801b031691509a509a509a509a509a509a509a509a509a509a50509193959799509193959799565b600080600080600080600080600080610b2961151e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8257600080fd5b505afa158015610b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bba91906115d9565b6001600160a01b031663c44b11f78d6040518263ffffffff1660e01b8152600401610be591906118e3565b60206040518083038186803b158015610bfd57600080fd5b505afa158015610c11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c359190611764565b9050610c408161144c565b909e50929c50909a5098509650610c5681611477565b9d9f9c9e509a9c999b989a8d15159a9099909850919650945092505050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cd257600080fd5b505afa158015610ce6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0a91906115d9565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b158015610d4757600080fd5b505afa158015610d5b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d83919081019061162d565b90506060815167ffffffffffffffff81118015610d9f57600080fd5b50604051908082528060200260200182016040528015610dd957816020015b610dc6611531565b815260200190600190039081610dbe5790505b50905060005b8251811015610fe257739f8f72aa9304c8b593d555f12ef6589cc3a579a26001600160a01b0316838281518110610e1257fe5b60200260200101516001600160a01b03161415610e915760405180604001604052806040518060400160405280600381526020016226a5a960e91b8152508152602001848381518110610e6157fe5b60200260200101516001600160a01b0316815250828281518110610e8157fe5b6020026020010181905250610fda565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316838281518110610ebb57fe5b60200260200101516001600160a01b03161415610f0a5760405180604001604052806040518060400160405280600381526020016208aa8960eb1b8152508152602001848381518110610e6157fe5b6040518060400160405280848381518110610f2157fe5b60200260200101516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015610f6157600080fd5b505afa158015610f75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f9d91908101906116d8565b8152602001848381518110610fae57fe5b60200260200101516001600160a01b0316815250828281518110610fce57fe5b60200260200101819052505b600101610ddf565b509250505090565b6000806000610ff76114b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561105057600080fd5b505afa158015611064573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108891906115d9565b6001600160a01b03166335ea6a75866040518263ffffffff1660e01b81526004016110b391906118e3565b6101806040518083038186803b1580156110cc57600080fd5b505afa1580156110e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611104919061177f565b60e0810151610100820151610120909201519097919650945092505050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561118057600080fd5b505afa158015611194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b891906115d9565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b1580156111f557600080fd5b505afa158015611209573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611231919081019061162d565b90506060815167ffffffffffffffff8111801561124d57600080fd5b5060405190808252806020026020018201604052801561128757816020015b611274611531565b81526020019060019003908161126c5790505b50905060005b8251811015610fe25761129e6114b3565b846001600160a01b03166335ea6a758584815181106112b957fe5b60200260200101516040518263ffffffff1660e01b81526004016112dd91906118e3565b6101806040518083038186803b1580156112f657600080fd5b505afa15801561130a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132e919061177f565b905060405180604001604052808260e001516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561137857600080fd5b505afa15801561138c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113b491908101906116d8565b81526020018260e001516001600160a01b03168152508383815181106113d657fe5b60209081029190910101525060010161128d565b60006080821060405180604001604052806002815260200161373760f01b815250906114325760405162461bcd60e51b81526004016114299190611996565b60405180910390fd5b5050815160016002830281019190911c1615155b92915050565b5161ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b51670100000000000000811615159167020000000000000082161515916704000000000000008116151591670800000000000000909116151590565b6040518061018001604052806114c761151e565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040518060200160405280600081525090565b60408051808201909152606081526000602082015290565b805161144681611ae3565b600060208284031215611565578081fd5b61156f6020611a8c565b9151825250919050565b80516001600160801b038116811461144657600080fd5b805164ffffffffff8116811461144657600080fd5b805160ff8116811461144657600080fd5b6000602082840312156115c7578081fd5b81356115d281611ae3565b9392505050565b6000602082840312156115ea578081fd5b81516115d281611ae3565b60008060408385031215611607578081fd5b823561161281611ae3565b9150602083013561162281611ae3565b809150509250929050565b6000602080838503121561163f578182fd5b825167ffffffffffffffff80821115611656578384fd5b818501915085601f830112611669578384fd5b815181811115611677578485fd5b8381029150611687848301611a8c565b8181528481019084860184860187018a10156116a1578788fd5b8795505b838610156116cb576116b78a82611549565b8352600195909501949186019186016116a5565b5098975050505050505050565b6000602082840312156116e9578081fd5b815167ffffffffffffffff80821115611700578283fd5b818401915084601f830112611713578283fd5b815181811115611721578384fd5b611734601f8201601f1916602001611a8c565b915080825285602082850101111561174a578384fd5b61175b816020840160208601611ab3565b50949350505050565b600060208284031215611775578081fd5b6115d28383611554565b6000610180808385031215611792578182fd5b61179b81611a8c565b90506117a78484611554565b81526117b68460208501611579565b60208201526117c88460408501611579565b60408201526117da8460608501611579565b60608201526117ec8460808501611579565b60808201526117fe8460a08501611579565b60a08201526118108460c08501611590565b60c08201526118228460e08501611549565b60e082015261010061183685828601611549565b9082015261012061184985858301611549565b9082015261014061185c85858301611549565b9082015261016061186f858583016115a5565b908201529392505050565b60006020828403121561188b578081fd5b5051919050565b6000602082840312156118a3578081fd5b815164ffffffffff811681146115d2578182fd5b600081518084526118cf816020860160208601611ab3565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b60208082528251828201819052600091906040908185019080840286018301878501865b8381101561198857888303603f1901855281518051878552611962888601826118b7565b918901516001600160a01b0316948901949094529487019492509086019060010161193e565b509098975050505050505050565b6000602082526115d260208301846118b7565b998a5260208a0198909852604089019690965260608801949094526080870192909252151560a0860152151560c0850152151560e0840152151561010083015215156101208201526101400190565b998a5260208a019890985260408901969096526060880194909452608087019290925260a086015260c085015260e084015261010083015264ffffffffff166101208201526101400190565b988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015264ffffffffff1660e083015215156101008201526101200190565b60405181810167ffffffffffffffff81118282101715611aab57600080fd5b604052919050565b60005b83811015611ace578181015183820152602001611ab6565b83811115611add576000848401525b50505050565b6001600160a01b0381168114611af857600080fd5b5056fea2646970667358221220835d19d7f2aa51c93dba3583b1bf3664228c225d71fa2fa6249fbaffee98d30c64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3E150141 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x3E150141 EQ PUSH2 0xF1 JUMPI DUP1 PUSH4 0xB316FF89 EQ PUSH2 0x11A JUMPI DUP1 PUSH4 0xD2493B6C EQ PUSH2 0x12F JUMPI DUP1 PUSH4 0xF561AE41 EQ PUSH2 0x151 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x542975C EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x28DD2D01 EQ PUSH2 0xA0 JUMPI DUP1 PUSH4 0x35EA6A75 EQ PUSH2 0xC8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x159 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x18E3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB3 PUSH2 0xAE CALLDATASIZE PUSH1 0x4 PUSH2 0x15F5 JUMP JUMPDEST PUSH2 0x17D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1A44 JUMP JUMPDEST PUSH2 0xDB PUSH2 0xD6 CALLDATASIZE PUSH1 0x4 PUSH2 0x15B6 JUMP JUMPDEST PUSH2 0x78E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x19F8 JUMP JUMPDEST PUSH2 0x104 PUSH2 0xFF CALLDATASIZE PUSH1 0x4 PUSH2 0x15B6 JUMP JUMPDEST PUSH2 0xB12 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x19A9 JUMP JUMPDEST PUSH2 0x122 PUSH2 0xC75 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x191A JUMP JUMPDEST PUSH2 0x142 PUSH2 0x13D CALLDATASIZE PUSH1 0x4 PUSH2 0x15B6 JUMP JUMPDEST PUSH2 0xFEA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x18F7 JUMP JUMPDEST PUSH2 0x122 PUSH2 0x1123 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x193 PUSH2 0x14B3 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x261BF8B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x200 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x224 SWAP2 SWAP1 PUSH2 0x15D9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x35EA6A75 DUP14 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24F SWAP2 SWAP1 PUSH2 0x18E3 JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x27C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A0 SWAP2 SWAP1 PUSH2 0x177F JUMP JUMPDEST SWAP1 POP PUSH2 0x2AA PUSH2 0x151E JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x261BF8B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x317 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x33B SWAP2 SWAP1 PUSH2 0x15D9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4417A583 DUP14 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x366 SWAP2 SWAP1 PUSH2 0x18E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x37E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x392 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3B6 SWAP2 SWAP1 PUSH2 0x1764 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x3E9 SWAP1 DUP16 SWAP1 PUSH1 0x4 ADD PUSH2 0x18E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x415 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x439 SWAP2 SWAP1 PUSH2 0x187A JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP13 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x46D SWAP1 DUP16 SWAP1 PUSH1 0x4 ADD PUSH2 0x18E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x485 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x499 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4BD SWAP2 SWAP1 PUSH2 0x187A JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP11 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x4F1 SWAP1 DUP16 SWAP1 PUSH1 0x4 ADD PUSH2 0x18E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x509 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x51D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x541 SWAP2 SWAP1 PUSH2 0x187A JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x631A6FD5 PUSH1 0xE1 SHL DUP2 MSTORE SWAP2 SWAP12 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xC634DFAA SWAP1 PUSH2 0x575 SWAP1 DUP16 SWAP1 PUSH1 0x4 ADD PUSH2 0x18E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x58D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5A1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5C5 SWAP2 SWAP1 PUSH2 0x187A JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xED1279F PUSH1 0xE1 SHL DUP2 MSTORE SWAP2 SWAP10 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x1DA24F3E SWAP1 PUSH2 0x5F9 SWAP1 DUP16 SWAP1 PUSH1 0x4 ADD PUSH2 0x18E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x611 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x625 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x649 SWAP2 SWAP1 PUSH2 0x187A JUMP JUMPDEST SWAP7 POP DUP2 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP5 POP DUP2 PUSH2 0x100 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE78C9B3B DUP14 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x68C SWAP2 SWAP1 PUSH2 0x18E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6DC SWAP2 SWAP1 PUSH2 0x187A JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x1E739AE3 PUSH1 0xE2 SHL DUP2 MSTORE SWAP2 SWAP8 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x79CE6B8C SWAP1 PUSH2 0x710 SWAP1 DUP16 SWAP1 PUSH1 0x4 ADD PUSH2 0x18E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x728 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x73C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x760 SWAP2 SWAP1 PUSH2 0x1892 JUMP JUMPDEST SWAP4 POP PUSH2 0x77D DUP3 PUSH2 0x160 ADD MLOAD PUSH1 0xFF AND DUP3 PUSH2 0x13EA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP3 POP POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x7A5 PUSH2 0x14B3 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x261BF8B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x812 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x836 SWAP2 SWAP1 PUSH2 0x15D9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x35EA6A75 DUP14 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x861 SWAP2 SWAP1 PUSH2 0x18E3 JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x87A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x88E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8B2 SWAP2 SWAP1 PUSH2 0x177F JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH2 0x8E4 SWAP2 PUSH1 0x4 ADD PUSH2 0x18E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x910 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x934 SWAP2 SWAP1 PUSH2 0x187A JUMP JUMPDEST DUP2 PUSH2 0x100 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x986 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9AA SWAP2 SWAP1 PUSH2 0x187A JUMP JUMPDEST DUP3 PUSH2 0x120 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9FC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA20 SWAP2 SWAP1 PUSH2 0x187A JUMP JUMPDEST DUP4 PUSH1 0x60 ADD MLOAD DUP5 PUSH1 0x80 ADD MLOAD DUP6 PUSH1 0xA0 ADD MLOAD DUP7 PUSH2 0x100 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x90F6FCF2 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA81 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAA5 SWAP2 SWAP1 PUSH2 0x187A JUMP JUMPDEST DUP8 PUSH1 0x20 ADD MLOAD DUP9 PUSH1 0x40 ADD MLOAD DUP10 PUSH1 0xC0 ADD MLOAD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP7 POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP6 POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP5 POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP3 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP2 POP SWAP11 POP SWAP11 POP SWAP11 POP SWAP11 POP SWAP11 POP SWAP11 POP SWAP11 POP SWAP11 POP SWAP11 POP SWAP11 POP POP SWAP2 SWAP4 SWAP6 SWAP8 SWAP10 POP SWAP2 SWAP4 SWAP6 SWAP8 SWAP10 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0xB29 PUSH2 0x151E JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x261BF8B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB96 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBBA SWAP2 SWAP1 PUSH2 0x15D9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC44B11F7 DUP14 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBE5 SWAP2 SWAP1 PUSH2 0x18E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC11 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC35 SWAP2 SWAP1 PUSH2 0x1764 JUMP JUMPDEST SWAP1 POP PUSH2 0xC40 DUP2 PUSH2 0x144C JUMP JUMPDEST SWAP1 SWAP15 POP SWAP3 SWAP13 POP SWAP1 SWAP11 POP SWAP9 POP SWAP7 POP PUSH2 0xC56 DUP2 PUSH2 0x1477 JUMP JUMPDEST SWAP14 SWAP16 SWAP13 SWAP15 POP SWAP11 SWAP13 SWAP10 SWAP12 SWAP9 SWAP11 DUP14 ISZERO ISZERO SWAP11 SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP2 SWAP7 POP SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x261BF8B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCE6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD0A SWAP2 SWAP1 PUSH2 0x15D9 JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD1946DBC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD5B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xD83 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x162D JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xD9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xDD9 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xDC6 PUSH2 0x1531 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xDBE JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xFE2 JUMPI PUSH20 0x9F8F72AA9304C8B593D555F12EF6589CC3A579A2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xE12 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xE91 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x26A5A9 PUSH1 0xE9 SHL DUP2 MSTORE POP DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xE61 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xE81 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH2 0xFDA JUMP JUMPDEST PUSH20 0xEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xEBB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xF0A JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x8AA89 PUSH1 0xEB SHL DUP2 MSTORE POP DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xE61 JUMPI INVALID JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xF21 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95D89B41 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF75 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xF9D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x16D8 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xFAE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xFCE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP JUMPDEST PUSH1 0x1 ADD PUSH2 0xDDF JUMP JUMPDEST POP SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xFF7 PUSH2 0x14B3 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x261BF8B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1050 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1064 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1088 SWAP2 SWAP1 PUSH2 0x15D9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x35EA6A75 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10B3 SWAP2 SWAP1 PUSH2 0x18E3 JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10E0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1104 SWAP2 SWAP1 PUSH2 0x177F JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD PUSH2 0x100 DUP3 ADD MLOAD PUSH2 0x120 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP8 SWAP2 SWAP7 POP SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x261BF8B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1180 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1194 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11B8 SWAP2 SWAP1 PUSH2 0x15D9 JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD1946DBC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1209 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1231 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x162D JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x124D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1287 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1274 PUSH2 0x1531 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x126C JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xFE2 JUMPI PUSH2 0x129E PUSH2 0x14B3 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x35EA6A75 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x12B9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12DD SWAP2 SWAP1 PUSH2 0x18E3 JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x130A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x132E SWAP2 SWAP1 PUSH2 0x177F JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH1 0xE0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95D89B41 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1378 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x138C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x13B4 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x16D8 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0xE0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x13D6 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 ADD PUSH2 0x128D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1432 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1429 SWAP2 SWAP1 PUSH2 0x1996 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP DUP2 MLOAD PUSH1 0x1 PUSH1 0x2 DUP4 MUL DUP2 ADD SWAP2 SWAP1 SWAP2 SHR AND ISZERO ISZERO JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST MLOAD PUSH2 0xFFFF DUP1 DUP3 AND SWAP3 PUSH1 0x10 DUP4 SWAP1 SHR DUP3 AND SWAP3 PUSH1 0x20 DUP2 SWAP1 SHR DUP4 AND SWAP3 PUSH1 0x30 DUP3 SWAP1 SHR PUSH1 0xFF AND SWAP3 PUSH1 0x40 SWAP3 SWAP1 SWAP3 SHR AND SWAP1 JUMP JUMPDEST MLOAD PUSH8 0x100000000000000 DUP2 AND ISZERO ISZERO SWAP2 PUSH8 0x200000000000000 DUP3 AND ISZERO ISZERO SWAP2 PUSH8 0x400000000000000 DUP2 AND ISZERO ISZERO SWAP2 PUSH8 0x800000000000000 SWAP1 SWAP2 AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x14C7 PUSH2 0x151E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x100 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x140 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x160 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1446 DUP2 PUSH2 0x1AE3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1565 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x156F PUSH1 0x20 PUSH2 0x1A8C JUMP JUMPDEST SWAP2 MLOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x1446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15C7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x15D2 DUP2 PUSH2 0x1AE3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15EA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x15D2 DUP2 PUSH2 0x1AE3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1607 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1612 DUP2 PUSH2 0x1AE3 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1622 DUP2 PUSH2 0x1AE3 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x163F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1656 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1669 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x1677 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP4 DUP2 MUL SWAP2 POP PUSH2 0x1687 DUP5 DUP4 ADD PUSH2 0x1A8C JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 DUP2 ADD SWAP1 DUP5 DUP7 ADD DUP5 DUP7 ADD DUP8 ADD DUP11 LT ISZERO PUSH2 0x16A1 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP6 POP JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0x16CB JUMPI PUSH2 0x16B7 DUP11 DUP3 PUSH2 0x1549 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP2 DUP7 ADD SWAP2 DUP7 ADD PUSH2 0x16A5 JUMP JUMPDEST POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16E9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1700 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1713 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x1721 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1734 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x1A8C JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP6 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x174A JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x175B DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1AB3 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1775 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x15D2 DUP4 DUP4 PUSH2 0x1554 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1792 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x179B DUP2 PUSH2 0x1A8C JUMP JUMPDEST SWAP1 POP PUSH2 0x17A7 DUP5 DUP5 PUSH2 0x1554 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x17B6 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x1579 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x17C8 DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x1579 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x17DA DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x1579 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x17EC DUP5 PUSH1 0x80 DUP6 ADD PUSH2 0x1579 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x17FE DUP5 PUSH1 0xA0 DUP6 ADD PUSH2 0x1579 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x1810 DUP5 PUSH1 0xC0 DUP6 ADD PUSH2 0x1590 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x1822 DUP5 PUSH1 0xE0 DUP6 ADD PUSH2 0x1549 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 PUSH2 0x1836 DUP6 DUP3 DUP7 ADD PUSH2 0x1549 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x120 PUSH2 0x1849 DUP6 DUP6 DUP4 ADD PUSH2 0x1549 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x140 PUSH2 0x185C DUP6 DUP6 DUP4 ADD PUSH2 0x1549 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x160 PUSH2 0x186F DUP6 DUP6 DUP4 ADD PUSH2 0x15A5 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x188B JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18A3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x15D2 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x18CF DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1AB3 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP1 DUP5 MUL DUP7 ADD DUP4 ADD DUP8 DUP6 ADD DUP7 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1988 JUMPI DUP9 DUP4 SUB PUSH1 0x3F NOT ADD DUP6 MSTORE DUP2 MLOAD DUP1 MLOAD DUP8 DUP6 MSTORE PUSH2 0x1962 DUP9 DUP7 ADD DUP3 PUSH2 0x18B7 JUMP JUMPDEST SWAP2 DUP10 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 DUP10 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP5 DUP8 ADD SWAP5 SWAP3 POP SWAP1 DUP7 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x193E JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x15D2 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x18B7 JUMP JUMPDEST SWAP10 DUP11 MSTORE PUSH1 0x20 DUP11 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x40 DUP10 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x60 DUP9 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x80 DUP8 ADD SWAP3 SWAP1 SWAP3 MSTORE ISZERO ISZERO PUSH1 0xA0 DUP7 ADD MSTORE ISZERO ISZERO PUSH1 0xC0 DUP6 ADD MSTORE ISZERO ISZERO PUSH1 0xE0 DUP5 ADD MSTORE ISZERO ISZERO PUSH2 0x100 DUP4 ADD MSTORE ISZERO ISZERO PUSH2 0x120 DUP3 ADD MSTORE PUSH2 0x140 ADD SWAP1 JUMP JUMPDEST SWAP10 DUP11 MSTORE PUSH1 0x20 DUP11 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x40 DUP10 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x60 DUP9 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x80 DUP8 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xA0 DUP7 ADD MSTORE PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x100 DUP4 ADD MSTORE PUSH5 0xFFFFFFFFFF AND PUSH2 0x120 DUP3 ADD MSTORE PUSH2 0x140 ADD SWAP1 JUMP JUMPDEST SWAP9 DUP10 MSTORE PUSH1 0x20 DUP10 ADD SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x40 DUP9 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x60 DUP8 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x80 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0xC0 DUP5 ADD MSTORE PUSH5 0xFFFFFFFFFF AND PUSH1 0xE0 DUP4 ADD MSTORE ISZERO ISZERO PUSH2 0x100 DUP3 ADD MSTORE PUSH2 0x120 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1AAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1ACE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1AB6 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1ADD JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1AF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP4 0x5D NOT 0xD7 CALLCODE 0xAA MLOAD 0xC9 RETURNDATASIZE 0xBA CALLDATALOAD DUP4 0xB1 0xBF CALLDATASIZE PUSH5 0x228C225D71 STATICCALL 0x2F 0xA6 0x24 SWAP16 0xBA SELFDESTRUCT 0xEE SWAP9 0xD3 0xC PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "746:5766:50:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1125:65;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4576:1476;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;3517:1055::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;:::i;2701:812::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;:::i;1316:788::-;;;:::i;:::-;;;;;;;:::i;6056:454::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;2108:589::-;;;:::i;1125:65::-;;;:::o;4576:1476::-;4675:28;4711:25;4744:27;4779;4814:26;4848:24;4880:21;4909:28;4945:29;4989:36;;:::i;:::-;5047:18;-1:-1:-1;;;;;5047:33:50;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5034:64:50;;5099:5;5034:71;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4989:116;;5112:48;;:::i;:::-;5182:18;-1:-1:-1;;;;;5182:33:50;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5169:70:50;;5240:4;5169:76;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5290:21;;;;5275:53;;-1:-1:-1;;;5275:53:50;;5112:133;;-1:-1:-1;;;;;;5275:47:50;;;;:53;;5323:4;;5275:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5371:32;;;;5356:64;;-1:-1:-1;;;5356:64:50;;5252:76;;-1:-1:-1;;;;;;5356:58:50;;;;:64;;5415:4;;5356:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5461:30;;;;5446:62;;-1:-1:-1;;;5446:62:50;;5334:86;;-1:-1:-1;;;;;;5446:56:50;;;;:62;;5503:4;;5446:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5553:30;;;;5536:73;;-1:-1:-1;;;5536:73:50;;5426:82;;-1:-1:-1;;;;;;5536:67:50;;;;:73;;5604:4;;5536:73;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5655:32;;;;5636:74;;-1:-1:-1;;;5636:74:50;;5514:95;;-1:-1:-1;;;;;;5636:68:50;;;;:74;;5705:4;;5636:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5615:95;;5732:7;:28;;;-1:-1:-1;;;;;5716:44:50;;;5802:7;:30;;;-1:-1:-1;;;;;5785:66:50;;5852:4;5785:72;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5904:30;;;;5887:85;;-1:-1:-1;;;5887:85:50;;5766:91;;-1:-1:-1;;;;;;5887:67:50;;;;:85;;5962:4;;5887:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5863:109;;6005:42;6036:7;:10;;;6005:42;;:10;:30;;:42;;;;:::i;:::-;5978:69;;4576:1476;;;;;;;;;;;;;:::o;3517:1055::-;3598:26;3632:23;3663:25;3696:21;3725:26;3759:24;3791:31;3830:22;3860:27;3895:26;3936:36;;:::i;:::-;3994:18;-1:-1:-1;;;;;3994:33:50;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3981:64:50;;4046:5;3981:71;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4106:21;;;;4074:54;;-1:-1:-1;;;4074:54:50;;3936:116;;-1:-1:-1;;;;;;4074:31:50;;;;;:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4151:7;:30;;;-1:-1:-1;;;;;4136:58:50;;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4219:7;:32;;;-1:-1:-1;;;;;4204:60:50;;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4274:7;:28;;;4310:7;:33;;;4351:7;:31;;;4407:7;:30;;;-1:-1:-1;;;;;4390:69:50;;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4469:7;:22;;;4499:7;:27;;;4534:7;:27;;;4059:508;-1:-1:-1;;;;;4059:508:50;;;;-1:-1:-1;;;;;4059:508:50;;;;-1:-1:-1;;;;;4059:508:50;;;;-1:-1:-1;;;;;4059:508:50;;;;-1:-1:-1;;;;;4059:508:50;;;;;;;;;;;;;;;;;;;;;;;;3517:1055;;;;;;;;;;;:::o;2701:812::-;2795:16;2819:11;2838:28;2874:24;2906:21;2935:29;2972:21;3001:28;3037:13;3058;3086:54;;:::i;:::-;3162:18;-1:-1:-1;;;;;3162:33:50;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3149:66:50;;3216:5;3149:73;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3086:136;;3302:38;:13;:36;:38::i;:::-;3229:111;;-1:-1:-1;3229:111:50;;-1:-1:-1;3229:111:50;;-1:-1:-1;3229:111:50;-1:-1:-1;3229:111:50;-1:-1:-1;3413:37:50;:13;:35;:37::i;:::-;2701:812;;;;-1:-1:-1;3484:20:50;;2701:812;;;;3484:24;;;;3347:103;;;;-1:-1:-1;3347:103:50;;-1:-1:-1;3347:103:50;-1:-1:-1;2701:812:50;-1:-1:-1;;;2701:812:50:o;1316:788::-;1371:18;1397:17;1430:18;-1:-1:-1;;;;;1430:33:50;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1397:69;;1472:25;1500:4;-1:-1:-1;;;;;1500:20:50;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1500:22:50;;;;;;;;;;;;:::i;:::-;1472:50;;1528:33;1580:8;:15;1564:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1528:68;;1607:9;1602:471;1626:8;:15;1622:1;:19;1602:471;;;938:42;-1:-1:-1;;;;;1660:18:50;:8;1669:1;1660:11;;;;;;;;;;;;;;-1:-1:-1;;;;;1660:18:50;;1656:134;;;1710:53;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1710:53:50;;;;;;;1750:8;1759:1;1750:11;;;;;;;;;;;;;;-1:-1:-1;;;;;1710:53:50;;;;1690:14;1705:1;1690:17;;;;;;;;;;;;;:73;;;;1773:8;;1656:134;1007:42;-1:-1:-1;;;;;1801:18:50;:8;1810:1;1801:11;;;;;;;;;;;;;;-1:-1:-1;;;;;1801:18:50;;1797:134;;;1851:53;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1851:53:50;;;;;;;1891:8;1900:1;1891:11;;;;;;;1797:134;1958:108;;;;;;;;2001:8;2010:1;2001:11;;;;;;;;;;;;;;-1:-1:-1;;;;;1986:34:50;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1986:36:50;;;;;;;;;;;;:::i;:::-;1958:108;;;;2046:8;2055:1;2046:11;;;;;;;;;;;;;;-1:-1:-1;;;;;1958:108:50;;;;1938:14;1953:1;1938:17;;;;;;;;;;;;;:128;;;;1602:471;1643:3;;1602:471;;;-1:-1:-1;2085:14:50;-1:-1:-1;;;1316:788:50;:::o;6056:454::-;6148:21;6177:30;6215:32;6262:36;;:::i;:::-;6320:18;-1:-1:-1;;;;;6320:33:50;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6307:64:50;;6372:5;6307:71;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6400:21;;;;6429:30;;;;6467:32;;;;;6400:21;;6429:30;;-1:-1:-1;6467:32:50;-1:-1:-1;6056:454:50;-1:-1:-1;;;6056:454:50:o;2108:589::-;2156:18;2182:17;2215:18;-1:-1:-1;;;;;2215:33:50;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2182:69;;2257:25;2285:4;-1:-1:-1;;;;;2285:20:50;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2285:22:50;;;;;;;;;;;;:::i;:::-;2257:50;;2313:26;2358:8;:15;2342:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2313:61;;2385:9;2380:293;2404:8;:15;2400:1;:19;2380:293;;;2434:40;;:::i;:::-;2477:4;-1:-1:-1;;;;;2477:19:50;;2497:8;2506:1;2497:11;;;;;;;;;;;;;;2477:32;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2434:75;;2530:136;;;;;;;;2573:11;:25;;;-1:-1:-1;;;;;2558:48:50;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2558:50:50;;;;;;;;;;;;:::i;:::-;2530:136;;;;2632:11;:25;;;-1:-1:-1;;;;;2530:136:50;;;;2517:7;2525:1;2517:10;;;;;;;;;;;;;;;;;:149;-1:-1:-1;2421:3:50;;2380:293;;3100:260:76;3230:4;3267:3;3252:12;:18;3272:23;;;;;;;;;;;;;-1:-1:-1;;;3272:23:76;;;3244:52;;;;;-1:-1:-1;;;3244:52:76;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;3310:9:76;;3343:1;3339;3324:16;;:20;;3310:35;;;;3309:41;:46;;3100:260;;;;;:::o;10941:575:75:-;11152:9;11164;11152:21;;;;1692:2;11181:85;;;;;;1754:2;11274:77;;;;;;1815:2;11359:67;;;;;;2113:2;11434:71;;;;;;10941:575::o;11756:355::-;11940:9;11952:12;11940:24;;11939:31;;;11991:12;11979:24;;11978:31;;;12030:15;12018:27;;12017:34;;;12072:22;12060:34;;;12059:41;;;11756:355::o;-1:-1:-1:-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;142:134::-;220:13;;238:33;220:13;238:33;:::i;1531:362::-;;1673:4;1661:9;1656:3;1652:19;1648:30;1645:2;;;-1:-1;;1681:12;1645:2;1709:20;1673:4;1709:20;:::i;:::-;4858:13;;1786:86;;-1:-1;1700:29;1639:254;-1:-1;1639:254::o;4639:134::-;4717:13;;-1:-1;;;;;19648:46;;21020:35;;21010:2;;21069:1;;21059:12;4921:132;4998:13;;19985:12;19974:24;;21267:34;;21257:2;;21315:1;;21305:12;5060:130;5136:13;;20081:4;20070:16;;21388:33;;21378:2;;21435:1;;21425:12;5197:241;;5301:2;5289:9;5280:7;5276:23;5272:32;5269:2;;;-1:-1;;5307:12;5269:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;5359:63;5263:175;-1:-1;;;5263:175::o;5445:263::-;;5560:2;5548:9;5539:7;5535:23;5531:32;5528:2;;;-1:-1;;5566:12;5528:2;226:6;220:13;238:33;265:5;238:33;:::i;5715:366::-;;;5836:2;5824:9;5815:7;5811:23;5807:32;5804:2;;;-1:-1;;5842:12;5804:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;5894:63;-1:-1;5994:2;6033:22;;72:20;97:33;72:20;97:33;:::i;:::-;6002:63;;;;5798:283;;;;;:::o;6088:392::-;;6228:2;;6216:9;6207:7;6203:23;6199:32;6196:2;;;-1:-1;;6234:12;6196:2;6285:17;6279:24;6323:18;;6315:6;6312:30;6309:2;;;-1:-1;;6345:12;6309:2;6447:6;6436:9;6432:22;;;429:3;422:4;414:6;410:17;406:27;396:2;;-1:-1;;437:12;396:2;477:6;471:13;6323:18;17732:6;17729:30;17726:2;;;-1:-1;;17762:12;17726:2;6228;17799:6;17795:17;;;499:80;6228:2;17795:17;17860:15;499:80;:::i;:::-;607:21;;;664:14;;;;639:17;;;744:27;;;;;741:36;-1:-1;738:2;;;-1:-1;;780:12;738:2;-1:-1;806:10;;800:217;825:6;822:1;819:13;800:217;;;905:48;949:3;937:10;905:48;:::i;:::-;893:61;;847:1;840:9;;;;;968:14;;;;996;;800:217;;;-1:-1;6365:99;6190:290;-1:-1;;;;;;;;6190:290::o;6487:362::-;;6612:2;6600:9;6591:7;6587:23;6583:32;6580:2;;;-1:-1;;6618:12;6580:2;6669:17;6663:24;6707:18;;6699:6;6696:30;6693:2;;;-1:-1;;6729:12;6693:2;6816:6;6805:9;6801:22;;;1145:3;1138:4;1130:6;1126:17;1122:27;1112:2;;-1:-1;;1153:12;1112:2;1193:6;1187:13;6707:18;18028:6;18025:30;18022:2;;;-1:-1;;18058:12;18022:2;1215:65;18131:9;18112:17;;-1:-1;;18108:33;6612:2;18189:15;1215:65;:::i;:::-;1206:74;;1300:6;1293:5;1286:21;1404:3;6612:2;1395:6;1328;1386:16;;1383:25;1380:2;;;-1:-1;;1411:12;1380:2;1431:39;1463:6;6612:2;1362:5;1358:16;6612:2;1328:6;1324:17;1431:39;:::i;:::-;-1:-1;6749:84;6574:275;-1:-1;;;;6574:275::o;6856:347::-;;7013:2;7001:9;6992:7;6988:23;6984:32;6981:2;;;-1:-1;;7019:12;6981:2;7081:106;7179:7;7155:22;7081:106;:::i;7210:324::-;;7355:3;;7343:9;7334:7;7330:23;7326:33;7323:2;;;-1:-1;;7362:12;7323:2;2103:22;7355:3;2103:22;:::i;:::-;2094:31;;2216:102;2314:3;2290:22;2216:102;:::i;:::-;2198:16;2191:128;2423:60;2479:3;2390:2;2459:9;2455:22;2423:60;:::i;:::-;2390:2;2409:5;2405:16;2398:86;2593:60;2649:3;2560:2;2629:9;2625:22;2593:60;:::i;:::-;2560:2;2579:5;2575:16;2568:86;2764:60;2820:3;2731:2;2800:9;2796:22;2764:60;:::i;:::-;2731:2;2750:5;2746:16;2739:86;2941:60;2997:3;2907;2977:9;2973:22;2941:60;:::i;:::-;2907:3;2927:5;2923:16;2916:86;3116:60;3172:3;3082;3152:9;3148:22;3116:60;:::i;:::-;3082:3;3102:5;3098:16;3091:86;3287:59;3342:3;3253;3322:9;3318:22;3287:59;:::i;:::-;3253:3;3273:5;3269:16;3262:85;3451:60;3507:3;3417;3487:9;3483:22;3451:60;:::i;:::-;3417:3;3437:5;3433:16;3426:86;3591:3;3627:60;3683:3;3591;3663:9;3659:22;3627:60;:::i;:::-;3607:18;;;3600:88;3769:3;3805:60;3861:3;3837:22;;;3805:60;:::i;:::-;3785:18;;;3778:88;3950:3;3986:60;4042:3;4018:22;;;3986:60;:::i;:::-;3966:18;;;3959:88;4106:3;4142:58;4196:3;4172:22;;;4142:58;:::i;:::-;4122:18;;;4115:86;4126:5;7317:217;-1:-1;;;7317:217::o;7889:263::-;;8004:2;7992:9;7983:7;7979:23;7975:32;7972:2;;;-1:-1;;8010:12;7972:2;-1:-1;4858:13;;7966:186;-1:-1;7966:186::o;8159:261::-;;8273:2;8261:9;8252:7;8248:23;8244:32;8241:2;;;-1:-1;;8279:12;8241:2;5004:6;4998:13;19985:12;21294:5;19974:24;21270:5;21267:34;21257:2;;-1:-1;;21305:12;10418:327;;10553:5;18536:12;19006:6;19001:3;18994:19;10637:52;10682:6;19043:4;19038:3;19034:14;19043:4;10663:5;10659:16;10637:52;:::i;:::-;18131:9;20800:14;-1:-1;;20796:28;10701:39;;;;19043:4;10701:39;;10500:245;-1:-1;;10500:245::o;12018:222::-;-1:-1;;;;;19768:54;;;;8758:37;;12145:2;12130:18;;12116:124::o;12247:444::-;-1:-1;;;;;19768:54;;;8758:37;;19768:54;;;12594:2;12579:18;;8758:37;19768:54;;;12677:2;12662:18;;8758:37;12430:2;12415:18;;12401:290::o;12698:478::-;12929:2;12943:47;;;18536:12;;12914:18;;;18994:19;;;12698:478;;12929:2;19034:14;;;;;;9485:17;;;9476:27;;;;18363:14;;;12698:478;9640:411;9665:6;9662:1;9659:13;9640:411;;;9717:20;;;-1:-1;;9717:20;9705:33;;9766:13;;11412:23;;11448:38;;;11501:73;11335:14;;;11412:23;11501:73;:::i;:::-;11656:16;;;11650:23;-1:-1;;;;;19768:54;11727:14;;;8758:37;;;;10030:14;;;;11493:81;-1:-1;18822:14;;;;19659:34;9680:9;9640:411;;;-1:-1;12996:170;;12900:276;-1:-1;;;;;;;;12900:276::o;13488:310::-;;13635:2;13656:17;13649:47;13710:78;13635:2;13624:9;13620:18;13774:6;13710:78;:::i;13805:1168::-;11852:37;;;14319:2;14304:18;;11852:37;;;;14402:2;14387:18;;11852:37;;;;14485:2;14470:18;;11852:37;;;;14568:3;14553:19;;11852:37;;;;19560:13;19553:21;14646:3;14631:19;;10163:34;19560:13;19553:21;14724:3;14709:19;;10163:34;19560:13;19553:21;14802:3;14787:19;;10163:34;19560:13;19553:21;14880:3;14865:19;;10163:34;19560:13;19553:21;14958:3;14943:19;;10163:34;14154:3;14139:19;;14125:848::o;14980:1224::-;11852:37;;;15522:2;15507:18;;11852:37;;;;15605:2;15590:18;;11852:37;;;;15688:2;15673:18;;11852:37;;;;15771:3;15756:19;;11852:37;;;;15855:3;15840:19;;11852:37;15939:3;15924:19;;11852:37;16023:3;16008:19;;11852:37;16107:3;16092:19;;11852:37;19985:12;19974:24;16189:3;16174:19;;11970:36;15357:3;15342:19;;15328:876::o;16211:1100::-;11852:37;;;16719:2;16704:18;;11852:37;;;;16802:2;16787:18;;11852:37;;;;16885:2;16870:18;;11852:37;;;;16968:3;16953:19;;11852:37;;;;17052:3;17037:19;;11852:37;17136:3;17121:19;;11852:37;19985:12;19974:24;17218:3;17203:19;;11970:36;19560:13;19553:21;17296:3;17281:19;;10163:34;16554:3;16539:19;;16525:786::o;17318:256::-;17380:2;17374:9;17406:17;;;17481:18;17466:34;;17502:22;;;17463:62;17460:2;;;17538:1;;17528:12;17460:2;17380;17547:22;17358:216;;-1:-1;17358:216::o;20456:268::-;20521:1;20528:101;20542:6;20539:1;20536:13;20528:101;;;20609:11;;;20603:18;20590:11;;;20583:39;20564:2;20557:10;20528:101;;;20644:6;20641:1;20638:13;20635:2;;;20521:1;20700:6;20695:3;20691:16;20684:27;20635:2;;20505:219;;;:::o;20837:117::-;-1:-1;;;;;19768:54;;20896:35;;20886:2;;20945:1;;20935:12;20886:2;20880:74;:::o"
            },
            "methodIdentifiers": {
              "ADDRESSES_PROVIDER()": "0542975c",
              "getAllATokens()": "f561ae41",
              "getAllReservesTokens()": "b316ff89",
              "getReserveConfigurationData(address)": "3e150141",
              "getReserveData(address)": "35ea6a75",
              "getReserveTokensAddresses(address)": "d2493b6c",
              "getUserReserveData(address,address)": "28dd2d01"
            }
          }
        }
      },
      "contracts/misc/UiPoolDataProvider.sol": {
        "UiPoolDataProvider": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "_incentivesController",
                  "type": "address"
                },
                {
                  "internalType": "contract IPriceOracleGetter",
                  "name": "_oracle",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "MOCK_USD_ADDRESS",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPoolAddressesProvider",
                  "name": "provider",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getReservesData",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "underlyingAsset",
                      "type": "address"
                    },
                    {
                      "internalType": "string",
                      "name": "name",
                      "type": "string"
                    },
                    {
                      "internalType": "string",
                      "name": "symbol",
                      "type": "string"
                    },
                    {
                      "internalType": "uint256",
                      "name": "decimals",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "baseLTVasCollateral",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "reserveLiquidationThreshold",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "reserveLiquidationBonus",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "reserveFactor",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bool",
                      "name": "usageAsCollateralEnabled",
                      "type": "bool"
                    },
                    {
                      "internalType": "bool",
                      "name": "borrowingEnabled",
                      "type": "bool"
                    },
                    {
                      "internalType": "bool",
                      "name": "stableBorrowRateEnabled",
                      "type": "bool"
                    },
                    {
                      "internalType": "bool",
                      "name": "isActive",
                      "type": "bool"
                    },
                    {
                      "internalType": "bool",
                      "name": "isFrozen",
                      "type": "bool"
                    },
                    {
                      "internalType": "uint128",
                      "name": "liquidityIndex",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint128",
                      "name": "variableBorrowIndex",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint128",
                      "name": "liquidityRate",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint128",
                      "name": "variableBorrowRate",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint128",
                      "name": "stableBorrowRate",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint40",
                      "name": "lastUpdateTimestamp",
                      "type": "uint40"
                    },
                    {
                      "internalType": "address",
                      "name": "aTokenAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "stableDebtTokenAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "variableDebtTokenAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "interestRateStrategyAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "availableLiquidity",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "totalPrincipalStableDebt",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "averageStableRate",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "stableDebtLastUpdateTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "totalScaledVariableDebt",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "priceInEth",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "variableRateSlope1",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "variableRateSlope2",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "stableRateSlope1",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "stableRateSlope2",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "aEmissionPerSecond",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "vEmissionPerSecond",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "sEmissionPerSecond",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "aIncentivesLastUpdateTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "vIncentivesLastUpdateTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "sIncentivesLastUpdateTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "aTokenIncentivesIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "vTokenIncentivesIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "sTokenIncentivesIndex",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IUiPoolDataProvider.AggregatedReserveData[]",
                  "name": "",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "underlyingAsset",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "scaledATokenBalance",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bool",
                      "name": "usageAsCollateralEnabledOnUser",
                      "type": "bool"
                    },
                    {
                      "internalType": "uint256",
                      "name": "stableBorrowRate",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "scaledVariableDebt",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "principalStableDebt",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "stableBorrowLastUpdateTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "aTokenincentivesUserIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "vTokenincentivesUserIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "sTokenincentivesUserIndex",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IUiPoolDataProvider.UserReserveData[]",
                  "name": "",
                  "type": "tuple[]"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "incentivesController",
              "outputs": [
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "oracle",
              "outputs": [
                {
                  "internalType": "contract IPriceOracleGetter",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60c06040523480156200001157600080fd5b506040516200216a3803806200216a833981016040819052620000349162000053565b6001600160601b0319606092831b8116608052911b1660a052620000aa565b6000806040838503121562000066578182fd5b8251620000738162000091565b6020840151909250620000868162000091565b809150509250929050565b6001600160a01b0381168114620000a757600080fd5b50565b60805160601c60a05160601c6120606200010a6000398060a45280610487528061106d5250806107d9528061081b52806108da52806109995280610a555280610a7c5280610b3b5280610bfb528061111d52806111ce52506120606000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80637dc0d1d01461005157806387e40db71461006f578063af1df25514610092578063b8c0a5b11461009a575b600080fd5b6100596100a2565b6040516100669190611e9b565b60405180910390f35b61008261007d3660046118b0565b6100c6565b6040516100669493929190611ec9565b6100596111cc565b6100596111f0565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060806000806000866001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561010757600080fd5b505afa15801561011b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061013f91906117e2565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561017c57600080fd5b505afa158015610190573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101b89190810190611805565b90506101c26114fb565b604051634417a58360e01b81526001600160a01b03841690634417a583906101ee908b90600401611e9b565b60206040518083038186803b15801561020657600080fd5b505afa15801561021a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023e9190611a6f565b90506060825167ffffffffffffffff8111801561025a57600080fd5b5060405190808252806020026020018201604052801561029457816020015b61028161150e565b8152602001906001900390816102795790505b50905060606001600160a01b038a166102ae5760006102b1565b83515b67ffffffffffffffff811180156102c757600080fd5b5060405190808252806020026020018201604052801561030157816020015b6102ee6116ac565b8152602001906001900390816102e65790505b50905060005b84518110156110685761031861150e565b83828151811061032457fe5b6020026020010151905085828151811061033a57fe5b60209081029190910101516001600160a01b0316815261035861170a565b81516040516335ea6a7560e01b81526001600160a01b038a16916335ea6a75916103859190600401611e9b565b6101806040518083038186803b15801561039e57600080fd5b505afa1580156103b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d69190611974565b60208101516001600160801b039081166101a085015260408083015182166101c0860152606083015182166101e08601526080830151821661020086015260a083015190911661022085015260c082015164ffffffffff1661024085015260e08201516001600160a01b03908116610260860152610100830151811661028086015261012083015181166102a086015261014083015181166102c08601528451915163b3596f0760e01b81529293507f0000000000000000000000000000000000000000000000000000000000000000169163b3596f07916104ba91600401611e9b565b60206040518083038186803b1580156104d257600080fd5b505afa1580156104e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050a9190611acc565b61038083015281516102608301516040516370a0823160e01b81526001600160a01b03909216916370a082319161054391600401611e9b565b60206040518083038186803b15801561055b57600080fd5b505afa15801561056f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105939190611acc565b826102e00181815250508161028001516001600160a01b031663797743386040518163ffffffff1660e01b815260040160806040518083038186803b1580156105db57600080fd5b505afa1580156105ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106139190611ae4565b64ffffffffff16610340860152610320850152506103008301526102a08201516040805163b1bf962d60e01b815290516001600160a01b039092169163b1bf962d91600480820192602092909190829003018186803b15801561067557600080fd5b505afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad9190611acc565b826103600181815250508161026001516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156106f557600080fd5b505afa158015610709573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261073191908101906118e8565b604080840191909152805160208082019092526000815290830152805161075790611208565b60e0870152606086015260c085015260a08401526080830152805161077b90611233565b1515610140860152151561012085015215156101808401521515610160830152608082015115156101008301526102c08201516107b79061126f565b6104008601526103e08501526103c08401526103a08301526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001615610a3c57610260820151604051631652e7b760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691631652e7b79161084f9190600401611e9b565b60606040518083038186803b15801561086757600080fd5b505afa15801561087b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089f9190611a8a565b6104e08501526001600160801b0390811661048085015216610420830152610280820151604051631652e7b760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691631652e7b79161090e9190600401611e9b565b60606040518083038186803b15801561092657600080fd5b505afa15801561093a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095e9190611a8a565b6105208501526001600160801b039081166104c0850152166104608301526102a0820151604051631652e7b760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691631652e7b7916109cd9190600401611e9b565b60606040518083038186803b1580156109e557600080fd5b505afa1580156109f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1d9190611a8a565b6105008501526001600160801b039081166104a0850152166104408301525b6001600160a01b038d161561105e576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001615610cba577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633373ee4c8e8461026001516040518363ffffffff1660e01b8152600401610acd929190611eaf565b60206040518083038186803b158015610ae557600080fd5b505afa158015610af9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1d9190611acc565b848481518110610b2957fe5b602002602001015160e00181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633373ee4c8e846102a001516040518363ffffffff1660e01b8152600401610b8c929190611eaf565b60206040518083038186803b158015610ba457600080fd5b505afa158015610bb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdc9190611acc565b848481518110610be857fe5b60200260200101516101000181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633373ee4c8e8461028001516040518363ffffffff1660e01b8152600401610c4c929190611eaf565b60206040518083038186803b158015610c6457600080fd5b505afa158015610c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9c9190611acc565b848481518110610ca857fe5b60200260200101516101200181815250505b8160000151848481518110610ccb57fe5b6020026020010151600001906001600160a01b031690816001600160a01b0316815250508161026001516001600160a01b0316631da24f3e8e6040518263ffffffff1660e01b8152600401610d209190611e9b565b60206040518083038186803b158015610d3857600080fd5b505afa158015610d4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d709190611acc565b848481518110610d7c57fe5b6020908102919091018101510152610d948684611448565b848481518110610da057fe5b6020908102919091010151901515604090910152610dbe86846114aa565b1561105e57816102a001516001600160a01b0316631da24f3e8e6040518263ffffffff1660e01b8152600401610df49190611e9b565b60206040518083038186803b158015610e0c57600080fd5b505afa158015610e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e449190611acc565b848481518110610e5057fe5b602002602001015160800181815250508161028001516001600160a01b031663c634dfaa8e6040518263ffffffff1660e01b8152600401610e919190611e9b565b60206040518083038186803b158015610ea957600080fd5b505afa158015610ebd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee19190611acc565b848481518110610eed57fe5b602002602001015160a0018181525050838381518110610f0957fe5b602002602001015160a0015160001461105e578161028001516001600160a01b031663e78c9b3b8e6040518263ffffffff1660e01b8152600401610f4d9190611e9b565b60206040518083038186803b158015610f6557600080fd5b505afa158015610f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9d9190611acc565b848481518110610fa957fe5b602002602001015160600181815250508161028001516001600160a01b03166379ce6b8c8e6040518263ffffffff1660e01b8152600401610fea9190611e9b565b60206040518083038186803b15801561100257600080fd5b505afa158015611016573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103a9190611b24565b64ffffffffff1684848151811061104d57fe5b602002602001015160c00181815250505b5050600101610307565b5081817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b3596f077310f7fc1f91ba351f9c629c5947ad69bd03c05b966040518263ffffffff1660e01b81526004016110cb9190611e9b565b60206040518083038186803b1580156110e357600080fd5b505afa1580156110f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111b9190611acc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663198fa81e8e6040518263ffffffff1660e01b81526004016111679190611e9b565b60206040518083038186803b15801561117f57600080fd5b505afa158015611193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b79190611acc565b929e919d509b50909950975050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7310f7fc1f91ba351f9c629c5947ad69bd03c05b9681565b5161ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b51670100000000000000811615159167020000000000000082161515916704000000000000008116151591670800000000000000909116151590565b600080600080846001600160a01b0316637b832f586040518163ffffffff1660e01b815260040160206040518083038186803b1580156112ae57600080fd5b505afa1580156112c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e69190611acc565b856001600160a01b03166365614f816040518163ffffffff1660e01b815260040160206040518083038186803b15801561131f57600080fd5b505afa158015611333573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113579190611acc565b866001600160a01b0316630bdf953f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561139057600080fd5b505afa1580156113a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c89190611acc565b876001600160a01b031663ccab01a36040518163ffffffff1660e01b815260040160206040518083038186803b15801561140157600080fd5b505afa158015611415573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114399190611acc565b93509350935093509193509193565b60006080821060405180604001604052806002815260200161373760f01b815250906114905760405162461bcd60e51b81526004016114879190611f77565b60405180910390fd5b5050815160016002830281019190911c1615155b92915050565b60006080821060405180604001604052806002815260200161373760f01b815250906114e95760405162461bcd60e51b81526004016114879190611f77565b50509051600160029092021c16151590565b6040518060200160405280600081525090565b60405180610540016040528060006001600160a01b031681526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160001515815260200160001515815260200160001515815260200160001515815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b03168152602001600064ffffffffff16815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180610140016040528060006001600160a01b0316815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180610180016040528061171e6114fb565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b80516114a481611fea565b600060208284031215611791578081fd5b61179b6020611f8a565b9151825250919050565b80516001600160801b03811681146114a457600080fd5b805164ffffffffff811681146114a457600080fd5b805160ff811681146114a457600080fd5b6000602082840312156117f3578081fd5b81516117fe81611fea565b9392505050565b60006020808385031215611817578182fd5b825167ffffffffffffffff8082111561182e578384fd5b818501915085601f830112611841578384fd5b81518181111561184f578485fd5b838102915061185f848301611f8a565b8181528481019084860184860187018a1015611879578788fd5b8795505b838610156118a35761188f8a82611775565b83526001959095019491860191860161187d565b5098975050505050505050565b600080604083850312156118c2578081fd5b82356118cd81611fea565b915060208301356118dd81611fea565b809150509250929050565b6000602082840312156118f9578081fd5b815167ffffffffffffffff80821115611910578283fd5b818401915084601f830112611923578283fd5b815181811115611931578384fd5b611944601f8201601f1916602001611f8a565b915080825285602082850101111561195a578384fd5b61196b816020840160208601611fba565b50949350505050565b6000610180808385031215611987578182fd5b61199081611f8a565b905061199c8484611780565b81526119ab84602085016117a5565b60208201526119bd84604085016117a5565b60408201526119cf84606085016117a5565b60608201526119e184608085016117a5565b60808201526119f38460a085016117a5565b60a0820152611a058460c085016117bc565b60c0820152611a178460e08501611775565b60e0820152610100611a2b85828601611775565b90820152610120611a3e85858301611775565b90820152610140611a5185858301611775565b90820152610160611a64858583016117d1565b908201529392505050565b600060208284031215611a80578081fd5b6117fe8383611780565b600080600060608486031215611a9e578081fd5b8351611aa981612002565b6020850151909350611aba81612002565b80925050604084015190509250925092565b600060208284031215611add578081fd5b5051919050565b60008060008060808587031215611af9578081fd5b8451935060208501519250604085015191506060850151611b1981612017565b939692955090935050565b600060208284031215611b35578081fd5b81516117fe81612017565b6000610540611b50848451611e44565b6020830151816020860152611b6782860182611e57565b91505060408301518482036040860152611b818282611e57565b915050606083015160608501526080830151608085015260a083015160a085015260c083015160c085015260e083015160e085015261010080840151611bc982870182611e51565b505061012080840151611bde82870182611e51565b505061014080840151611bf382870182611e51565b505061016080840151611c0882870182611e51565b505061018080840151611c1d82870182611e51565b50506101a080840151611c3282870182611e83565b50506101c080840151611c4782870182611e83565b50506101e080840151611c5c82870182611e83565b505061020080840151611c7182870182611e83565b505061022080840151611c8682870182611e83565b505061024080840151611c9b82870182611e90565b505061026080840151611cb082870182611e44565b505061028080840151611cc582870182611e44565b50506102a080840151611cda82870182611e44565b50506102c080840151611cef82870182611e44565b50506102e08381015190850152610300808401519085015261032080840151908501526103408084015190850152610360808401519085015261038080840151908501526103a080840151908501526103c080840151908501526103e08084015190850152610400808401519085015261042080840151908501526104408084015190850152610460808401519085015261048080840151908501526104a080840151908501526104c080840151908501526104e0808401519085015261050080840151908501526105209283015192909301919091525090565b6000611dd7838351611e44565b602082015160208401526040820151611df36040850182611e51565b5050606081810151908301526080808201519083015260a0808201519083015260c0808201519083015260e08082015190830152610100808201519083015261012090810151908201526101400190565b6001600160a01b03169052565b15159052565b60008151808452611e6f816020860160208601611fba565b601f01601f19169290920160200192915050565b6001600160801b03169052565b64ffffffffff169052565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b60006080820160808352808751611ee08184611fb1565b915081925060208082028301818b01865b84811015611f1b578683038652611f09838351611b40565b95840195925090830190600101611ef1565b50508681038288015280945089519350611f358482611fb1565b9450508089019150845b83811015611f6057611f52858451611dca565b945091810191600101611f3f565b505050506040830194909452506060015292915050565b6000602082526117fe6020830184611e57565b60405181810167ffffffffffffffff81118282101715611fa957600080fd5b604052919050565b90815260200190565b60005b83811015611fd5578181015183820152602001611fbd565b83811115611fe4576000848401525b50505050565b6001600160a01b0381168114611fff57600080fd5b50565b6001600160801b0381168114611fff57600080fd5b64ffffffffff81168114611fff57600080fdfea2646970667358221220e724b03f0d15876a50ba0854d713d950bc4c89e60ceae0604da1a4ff2903d0ab64736f6c634300060c0033",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x216A CODESIZE SUB DUP1 PUSH3 0x216A DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x53 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH3 0xAA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x66 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH3 0x73 DUP2 PUSH3 0x91 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x86 DUP2 PUSH3 0x91 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0xA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x2060 PUSH3 0x10A PUSH1 0x0 CODECOPY DUP1 PUSH1 0xA4 MSTORE DUP1 PUSH2 0x487 MSTORE DUP1 PUSH2 0x106D MSTORE POP DUP1 PUSH2 0x7D9 MSTORE DUP1 PUSH2 0x81B MSTORE DUP1 PUSH2 0x8DA MSTORE DUP1 PUSH2 0x999 MSTORE DUP1 PUSH2 0xA55 MSTORE DUP1 PUSH2 0xA7C MSTORE DUP1 PUSH2 0xB3B MSTORE DUP1 PUSH2 0xBFB MSTORE DUP1 PUSH2 0x111D MSTORE DUP1 PUSH2 0x11CE MSTORE POP PUSH2 0x2060 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7DC0D1D0 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x87E40DB7 EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0xAF1DF255 EQ PUSH2 0x92 JUMPI DUP1 PUSH4 0xB8C0A5B1 EQ PUSH2 0x9A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0xA2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x82 PUSH2 0x7D CALLDATASIZE PUSH1 0x4 PUSH2 0x18B0 JUMP JUMPDEST PUSH2 0xC6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1EC9 JUMP JUMPDEST PUSH2 0x59 PUSH2 0x11CC JUMP JUMPDEST PUSH2 0x59 PUSH2 0x11F0 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x261BF8B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13F SWAP2 SWAP1 PUSH2 0x17E2 JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD1946DBC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x190 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1B8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1805 JUMP JUMPDEST SWAP1 POP PUSH2 0x1C2 PUSH2 0x14FB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x4417A583 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x4417A583 SWAP1 PUSH2 0x1EE SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x206 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x21A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x23E SWAP2 SWAP1 PUSH2 0x1A6F JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x25A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x294 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x281 PUSH2 0x150E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x279 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH2 0x2AE JUMPI PUSH1 0x0 PUSH2 0x2B1 JUMP JUMPDEST DUP4 MLOAD JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x301 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x2EE PUSH2 0x16AC JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x2E6 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1068 JUMPI PUSH2 0x318 PUSH2 0x150E JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x324 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x33A JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH2 0x358 PUSH2 0x170A JUMP JUMPDEST DUP2 MLOAD PUSH1 0x40 MLOAD PUSH4 0x35EA6A75 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP2 PUSH4 0x35EA6A75 SWAP2 PUSH2 0x385 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x1E9B JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3D6 SWAP2 SWAP1 PUSH2 0x1974 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND PUSH2 0x1A0 DUP6 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND PUSH2 0x1C0 DUP7 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD DUP3 AND PUSH2 0x1E0 DUP7 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD DUP3 AND PUSH2 0x200 DUP7 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD SWAP1 SWAP2 AND PUSH2 0x220 DUP6 ADD MSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH5 0xFFFFFFFFFF AND PUSH2 0x240 DUP6 ADD MSTORE PUSH1 0xE0 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x260 DUP7 ADD MSTORE PUSH2 0x100 DUP4 ADD MLOAD DUP2 AND PUSH2 0x280 DUP7 ADD MSTORE PUSH2 0x120 DUP4 ADD MLOAD DUP2 AND PUSH2 0x2A0 DUP7 ADD MSTORE PUSH2 0x140 DUP4 ADD MLOAD DUP2 AND PUSH2 0x2C0 DUP7 ADD MSTORE DUP5 MLOAD SWAP2 MLOAD PUSH4 0xB3596F07 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP4 POP PUSH32 0x0 AND SWAP2 PUSH4 0xB3596F07 SWAP2 PUSH2 0x4BA SWAP2 PUSH1 0x4 ADD PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x50A SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST PUSH2 0x380 DUP4 ADD MSTORE DUP2 MLOAD PUSH2 0x260 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH2 0x543 SWAP2 PUSH1 0x4 ADD PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x56F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x593 SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST DUP3 PUSH2 0x2E0 ADD DUP2 DUP2 MSTORE POP POP DUP2 PUSH2 0x280 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x79774338 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5EF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x613 SWAP2 SWAP1 PUSH2 0x1AE4 JUMP JUMPDEST PUSH5 0xFFFFFFFFFF AND PUSH2 0x340 DUP7 ADD MSTORE PUSH2 0x320 DUP6 ADD MSTORE POP PUSH2 0x300 DUP4 ADD MSTORE PUSH2 0x2A0 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xB1BF962D PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB1BF962D SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x675 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x689 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6AD SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST DUP3 PUSH2 0x360 ADD DUP2 DUP2 MSTORE POP POP DUP2 PUSH2 0x260 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95D89B41 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x709 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x731 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x18E8 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 DUP4 ADD MSTORE DUP1 MLOAD PUSH2 0x757 SWAP1 PUSH2 0x1208 JUMP JUMPDEST PUSH1 0xE0 DUP8 ADD MSTORE PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE DUP1 MLOAD PUSH2 0x77B SWAP1 PUSH2 0x1233 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x140 DUP7 ADD MSTORE ISZERO ISZERO PUSH2 0x120 DUP6 ADD MSTORE ISZERO ISZERO PUSH2 0x180 DUP5 ADD MSTORE ISZERO ISZERO PUSH2 0x160 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MLOAD ISZERO ISZERO PUSH2 0x100 DUP4 ADD MSTORE PUSH2 0x2C0 DUP3 ADD MLOAD PUSH2 0x7B7 SWAP1 PUSH2 0x126F JUMP JUMPDEST PUSH2 0x400 DUP7 ADD MSTORE PUSH2 0x3E0 DUP6 ADD MSTORE PUSH2 0x3C0 DUP5 ADD MSTORE PUSH2 0x3A0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ISZERO PUSH2 0xA3C JUMPI PUSH2 0x260 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x1652E7B7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH4 0x1652E7B7 SWAP2 PUSH2 0x84F SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x867 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x87B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x89F SWAP2 SWAP1 PUSH2 0x1A8A JUMP JUMPDEST PUSH2 0x4E0 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND PUSH2 0x480 DUP6 ADD MSTORE AND PUSH2 0x420 DUP4 ADD MSTORE PUSH2 0x280 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x1652E7B7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH4 0x1652E7B7 SWAP2 PUSH2 0x90E SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x926 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x93A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x95E SWAP2 SWAP1 PUSH2 0x1A8A JUMP JUMPDEST PUSH2 0x520 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND PUSH2 0x4C0 DUP6 ADD MSTORE AND PUSH2 0x460 DUP4 ADD MSTORE PUSH2 0x2A0 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x1652E7B7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH4 0x1652E7B7 SWAP2 PUSH2 0x9CD SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA1D SWAP2 SWAP1 PUSH2 0x1A8A JUMP JUMPDEST PUSH2 0x500 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND PUSH2 0x4A0 DUP6 ADD MSTORE AND PUSH2 0x440 DUP4 ADD MSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND ISZERO PUSH2 0x105E JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ISZERO PUSH2 0xCBA JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3373EE4C DUP15 DUP5 PUSH2 0x260 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xACD SWAP3 SWAP2 SWAP1 PUSH2 0x1EAF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAF9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB1D SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xB29 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xE0 ADD DUP2 DUP2 MSTORE POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3373EE4C DUP15 DUP5 PUSH2 0x2A0 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB8C SWAP3 SWAP2 SWAP1 PUSH2 0x1EAF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBB8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBDC SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xBE8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x100 ADD DUP2 DUP2 MSTORE POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3373EE4C DUP15 DUP5 PUSH2 0x280 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC4C SWAP3 SWAP2 SWAP1 PUSH2 0x1EAF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC78 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC9C SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xCA8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x120 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST DUP2 PUSH1 0x0 ADD MLOAD DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xCCB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP2 PUSH2 0x260 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x1DA24F3E DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD20 SWAP2 SWAP1 PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD4C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD70 SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xD7C JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD ADD MSTORE PUSH2 0xD94 DUP7 DUP5 PUSH2 0x1448 JUMP JUMPDEST DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xDA0 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD SWAP1 ISZERO ISZERO PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE PUSH2 0xDBE DUP7 DUP5 PUSH2 0x14AA JUMP JUMPDEST ISZERO PUSH2 0x105E JUMPI DUP2 PUSH2 0x2A0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x1DA24F3E DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDF4 SWAP2 SWAP1 PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE20 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE44 SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xE50 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 ADD DUP2 DUP2 MSTORE POP POP DUP2 PUSH2 0x280 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC634DFAA DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE91 SWAP2 SWAP1 PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEBD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xEE1 SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xEED JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xA0 ADD DUP2 DUP2 MSTORE POP POP DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xF09 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xA0 ADD MLOAD PUSH1 0x0 EQ PUSH2 0x105E JUMPI DUP2 PUSH2 0x280 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE78C9B3B DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF4D SWAP2 SWAP1 PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF79 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF9D SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xFA9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP DUP2 PUSH2 0x280 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x79CE6B8C DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFEA SWAP2 SWAP1 PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1002 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1016 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x103A SWAP2 SWAP1 PUSH2 0x1B24 JUMP JUMPDEST PUSH5 0xFFFFFFFFFF AND DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x104D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xC0 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x307 JUMP JUMPDEST POP DUP2 DUP2 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB3596F07 PUSH20 0x10F7FC1F91BA351F9C629C5947AD69BD03C05B96 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10CB SWAP2 SWAP1 PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x111B SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x198FA81E DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1167 SWAP2 SWAP1 PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x117F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1193 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11B7 SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST SWAP3 SWAP15 SWAP2 SWAP14 POP SWAP12 POP SWAP1 SWAP10 POP SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH20 0x10F7FC1F91BA351F9C629C5947AD69BD03C05B96 DUP2 JUMP JUMPDEST MLOAD PUSH2 0xFFFF DUP1 DUP3 AND SWAP3 PUSH1 0x10 DUP4 SWAP1 SHR DUP3 AND SWAP3 PUSH1 0x20 DUP2 SWAP1 SHR DUP4 AND SWAP3 PUSH1 0x30 DUP3 SWAP1 SHR PUSH1 0xFF AND SWAP3 PUSH1 0x40 SWAP3 SWAP1 SWAP3 SHR AND SWAP1 JUMP JUMPDEST MLOAD PUSH8 0x100000000000000 DUP2 AND ISZERO ISZERO SWAP2 PUSH8 0x200000000000000 DUP3 AND ISZERO ISZERO SWAP2 PUSH8 0x400000000000000 DUP2 AND ISZERO ISZERO SWAP2 PUSH8 0x800000000000000 SWAP1 SWAP2 AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7B832F58 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12C2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12E6 SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x65614F81 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x131F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1333 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1357 SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xBDF953F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13C8 SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xCCAB01A3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1415 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1439 SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1490 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1487 SWAP2 SWAP1 PUSH2 0x1F77 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP DUP2 MLOAD PUSH1 0x1 PUSH1 0x2 DUP4 MUL DUP2 ADD SWAP2 SWAP1 SWAP2 SHR AND ISZERO ISZERO JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x14E9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1487 SWAP2 SWAP1 PUSH2 0x1F77 JUMP JUMPDEST POP POP SWAP1 MLOAD PUSH1 0x1 PUSH1 0x2 SWAP1 SWAP3 MUL SHR AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x540 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH5 0xFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x140 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x171E PUSH2 0x14FB JUMP JUMPDEST DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x100 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x140 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x160 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x14A4 DUP2 PUSH2 0x1FEA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1791 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x179B PUSH1 0x20 PUSH2 0x1F8A JUMP JUMPDEST SWAP2 MLOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x14A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x14A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x14A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17F3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x17FE DUP2 PUSH2 0x1FEA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1817 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x182E JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1841 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x184F JUMPI DUP5 DUP6 REVERT JUMPDEST DUP4 DUP2 MUL SWAP2 POP PUSH2 0x185F DUP5 DUP4 ADD PUSH2 0x1F8A JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 DUP2 ADD SWAP1 DUP5 DUP7 ADD DUP5 DUP7 ADD DUP8 ADD DUP11 LT ISZERO PUSH2 0x1879 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP6 POP JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0x18A3 JUMPI PUSH2 0x188F DUP11 DUP3 PUSH2 0x1775 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP2 DUP7 ADD SWAP2 DUP7 ADD PUSH2 0x187D JUMP JUMPDEST POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x18C2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x18CD DUP2 PUSH2 0x1FEA JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x18DD DUP2 PUSH2 0x1FEA JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18F9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1910 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1923 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x1931 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1944 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x1F8A JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP6 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x195A JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x196B DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1FBA JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1987 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1990 DUP2 PUSH2 0x1F8A JUMP JUMPDEST SWAP1 POP PUSH2 0x199C DUP5 DUP5 PUSH2 0x1780 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x19AB DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x17A5 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x19BD DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x17A5 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x19CF DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x17A5 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x19E1 DUP5 PUSH1 0x80 DUP6 ADD PUSH2 0x17A5 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x19F3 DUP5 PUSH1 0xA0 DUP6 ADD PUSH2 0x17A5 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x1A05 DUP5 PUSH1 0xC0 DUP6 ADD PUSH2 0x17BC JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x1A17 DUP5 PUSH1 0xE0 DUP6 ADD PUSH2 0x1775 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 PUSH2 0x1A2B DUP6 DUP3 DUP7 ADD PUSH2 0x1775 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x120 PUSH2 0x1A3E DUP6 DUP6 DUP4 ADD PUSH2 0x1775 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x140 PUSH2 0x1A51 DUP6 DUP6 DUP4 ADD PUSH2 0x1775 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x160 PUSH2 0x1A64 DUP6 DUP6 DUP4 ADD PUSH2 0x17D1 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A80 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x17FE DUP4 DUP4 PUSH2 0x1780 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1A9E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x1AA9 DUP2 PUSH2 0x2002 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH2 0x1ABA DUP2 PUSH2 0x2002 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1ADD JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1AF9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP5 MLOAD SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH2 0x1B19 DUP2 PUSH2 0x2017 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1B35 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x17FE DUP2 PUSH2 0x2017 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x540 PUSH2 0x1B50 DUP5 DUP5 MLOAD PUSH2 0x1E44 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD DUP2 PUSH1 0x20 DUP7 ADD MSTORE PUSH2 0x1B67 DUP3 DUP7 ADD DUP3 PUSH2 0x1E57 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x40 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x1B81 DUP3 DUP3 PUSH2 0x1E57 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0xC0 DUP4 ADD MLOAD PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0xE0 DUP4 ADD MLOAD PUSH1 0xE0 DUP6 ADD MSTORE PUSH2 0x100 DUP1 DUP5 ADD MLOAD PUSH2 0x1BC9 DUP3 DUP8 ADD DUP3 PUSH2 0x1E51 JUMP JUMPDEST POP POP PUSH2 0x120 DUP1 DUP5 ADD MLOAD PUSH2 0x1BDE DUP3 DUP8 ADD DUP3 PUSH2 0x1E51 JUMP JUMPDEST POP POP PUSH2 0x140 DUP1 DUP5 ADD MLOAD PUSH2 0x1BF3 DUP3 DUP8 ADD DUP3 PUSH2 0x1E51 JUMP JUMPDEST POP POP PUSH2 0x160 DUP1 DUP5 ADD MLOAD PUSH2 0x1C08 DUP3 DUP8 ADD DUP3 PUSH2 0x1E51 JUMP JUMPDEST POP POP PUSH2 0x180 DUP1 DUP5 ADD MLOAD PUSH2 0x1C1D DUP3 DUP8 ADD DUP3 PUSH2 0x1E51 JUMP JUMPDEST POP POP PUSH2 0x1A0 DUP1 DUP5 ADD MLOAD PUSH2 0x1C32 DUP3 DUP8 ADD DUP3 PUSH2 0x1E83 JUMP JUMPDEST POP POP PUSH2 0x1C0 DUP1 DUP5 ADD MLOAD PUSH2 0x1C47 DUP3 DUP8 ADD DUP3 PUSH2 0x1E83 JUMP JUMPDEST POP POP PUSH2 0x1E0 DUP1 DUP5 ADD MLOAD PUSH2 0x1C5C DUP3 DUP8 ADD DUP3 PUSH2 0x1E83 JUMP JUMPDEST POP POP PUSH2 0x200 DUP1 DUP5 ADD MLOAD PUSH2 0x1C71 DUP3 DUP8 ADD DUP3 PUSH2 0x1E83 JUMP JUMPDEST POP POP PUSH2 0x220 DUP1 DUP5 ADD MLOAD PUSH2 0x1C86 DUP3 DUP8 ADD DUP3 PUSH2 0x1E83 JUMP JUMPDEST POP POP PUSH2 0x240 DUP1 DUP5 ADD MLOAD PUSH2 0x1C9B DUP3 DUP8 ADD DUP3 PUSH2 0x1E90 JUMP JUMPDEST POP POP PUSH2 0x260 DUP1 DUP5 ADD MLOAD PUSH2 0x1CB0 DUP3 DUP8 ADD DUP3 PUSH2 0x1E44 JUMP JUMPDEST POP POP PUSH2 0x280 DUP1 DUP5 ADD MLOAD PUSH2 0x1CC5 DUP3 DUP8 ADD DUP3 PUSH2 0x1E44 JUMP JUMPDEST POP POP PUSH2 0x2A0 DUP1 DUP5 ADD MLOAD PUSH2 0x1CDA DUP3 DUP8 ADD DUP3 PUSH2 0x1E44 JUMP JUMPDEST POP POP PUSH2 0x2C0 DUP1 DUP5 ADD MLOAD PUSH2 0x1CEF DUP3 DUP8 ADD DUP3 PUSH2 0x1E44 JUMP JUMPDEST POP POP PUSH2 0x2E0 DUP4 DUP2 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x300 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x320 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x340 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x360 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x380 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x3A0 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x3C0 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x3E0 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x400 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x420 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x440 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x460 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x480 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x4A0 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x4C0 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x4E0 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x500 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x520 SWAP3 DUP4 ADD MLOAD SWAP3 SWAP1 SWAP4 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DD7 DUP4 DUP4 MLOAD PUSH2 0x1E44 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x1DF3 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x1E51 JUMP JUMPDEST POP POP PUSH1 0x60 DUP2 DUP2 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH1 0x80 DUP1 DUP3 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH1 0xA0 DUP1 DUP3 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH1 0xC0 DUP1 DUP3 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH1 0xE0 DUP1 DUP3 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH2 0x100 DUP1 DUP3 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH2 0x120 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x140 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1E6F DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1FBA JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD PUSH1 0x80 DUP4 MSTORE DUP1 DUP8 MLOAD PUSH2 0x1EE0 DUP2 DUP5 PUSH2 0x1FB1 JUMP JUMPDEST SWAP2 POP DUP2 SWAP3 POP PUSH1 0x20 DUP1 DUP3 MUL DUP4 ADD DUP2 DUP12 ADD DUP7 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1F1B JUMPI DUP7 DUP4 SUB DUP7 MSTORE PUSH2 0x1F09 DUP4 DUP4 MLOAD PUSH2 0x1B40 JUMP JUMPDEST SWAP6 DUP5 ADD SWAP6 SWAP3 POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1EF1 JUMP JUMPDEST POP POP DUP7 DUP2 SUB DUP3 DUP9 ADD MSTORE DUP1 SWAP5 POP DUP10 MLOAD SWAP4 POP PUSH2 0x1F35 DUP5 DUP3 PUSH2 0x1FB1 JUMP JUMPDEST SWAP5 POP POP DUP1 DUP10 ADD SWAP2 POP DUP5 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F60 JUMPI PUSH2 0x1F52 DUP6 DUP5 MLOAD PUSH2 0x1DCA JUMP JUMPDEST SWAP5 POP SWAP2 DUP2 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1F3F JUMP JUMPDEST POP POP POP POP PUSH1 0x40 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE POP PUSH1 0x60 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x17FE PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1E57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1FA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1FD5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1FBD JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1FE4 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1FFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1FFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1FFF JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 0x24 0xB0 EXTCODEHASH 0xD ISZERO DUP8 PUSH11 0x50BA0854D713D950BC4C89 0xE6 0xC 0xEA 0xE0 PUSH1 0x4D LOG1 LOG4 SELFDESTRUCT 0x29 SUB 0xD0 0xAB PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "1220:7215:51:-:0;;;1641:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1743:44:51;;;;;;;;1793:16;;;;;1220:7215;;409:521:-1;;;602:2;590:9;581:7;577:23;573:32;570:2;;;-1:-1;;608:12;570:2;123:6;117:13;135:67;196:5;135:67;:::i;:::-;805:2;882:22;;319:13;660:108;;-1:-1;337:60;319:13;337:60;:::i;:::-;813:101;;;;564:366;;;;;:::o;1420:185::-;-1:-1;;;;;1354:54;;1513:69;;1503:2;;1596:1;;1586:12;1503:2;1497:108;:::o;:::-;1220:7215:51;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "8410": [
                  {
                    "length": 32,
                    "start": 2009
                  },
                  {
                    "length": 32,
                    "start": 2075
                  },
                  {
                    "length": 32,
                    "start": 2266
                  },
                  {
                    "length": 32,
                    "start": 2457
                  },
                  {
                    "length": 32,
                    "start": 2645
                  },
                  {
                    "length": 32,
                    "start": 2684
                  },
                  {
                    "length": 32,
                    "start": 2875
                  },
                  {
                    "length": 32,
                    "start": 3067
                  },
                  {
                    "length": 32,
                    "start": 4381
                  },
                  {
                    "length": 32,
                    "start": 4558
                  }
                ],
                "8412": [
                  {
                    "length": 32,
                    "start": 164
                  },
                  {
                    "length": 32,
                    "start": 1159
                  },
                  {
                    "length": 32,
                    "start": 4205
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c80637dc0d1d01461005157806387e40db71461006f578063af1df25514610092578063b8c0a5b11461009a575b600080fd5b6100596100a2565b6040516100669190611e9b565b60405180910390f35b61008261007d3660046118b0565b6100c6565b6040516100669493929190611ec9565b6100596111cc565b6100596111f0565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060806000806000866001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561010757600080fd5b505afa15801561011b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061013f91906117e2565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561017c57600080fd5b505afa158015610190573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101b89190810190611805565b90506101c26114fb565b604051634417a58360e01b81526001600160a01b03841690634417a583906101ee908b90600401611e9b565b60206040518083038186803b15801561020657600080fd5b505afa15801561021a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023e9190611a6f565b90506060825167ffffffffffffffff8111801561025a57600080fd5b5060405190808252806020026020018201604052801561029457816020015b61028161150e565b8152602001906001900390816102795790505b50905060606001600160a01b038a166102ae5760006102b1565b83515b67ffffffffffffffff811180156102c757600080fd5b5060405190808252806020026020018201604052801561030157816020015b6102ee6116ac565b8152602001906001900390816102e65790505b50905060005b84518110156110685761031861150e565b83828151811061032457fe5b6020026020010151905085828151811061033a57fe5b60209081029190910101516001600160a01b0316815261035861170a565b81516040516335ea6a7560e01b81526001600160a01b038a16916335ea6a75916103859190600401611e9b565b6101806040518083038186803b15801561039e57600080fd5b505afa1580156103b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d69190611974565b60208101516001600160801b039081166101a085015260408083015182166101c0860152606083015182166101e08601526080830151821661020086015260a083015190911661022085015260c082015164ffffffffff1661024085015260e08201516001600160a01b03908116610260860152610100830151811661028086015261012083015181166102a086015261014083015181166102c08601528451915163b3596f0760e01b81529293507f0000000000000000000000000000000000000000000000000000000000000000169163b3596f07916104ba91600401611e9b565b60206040518083038186803b1580156104d257600080fd5b505afa1580156104e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050a9190611acc565b61038083015281516102608301516040516370a0823160e01b81526001600160a01b03909216916370a082319161054391600401611e9b565b60206040518083038186803b15801561055b57600080fd5b505afa15801561056f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105939190611acc565b826102e00181815250508161028001516001600160a01b031663797743386040518163ffffffff1660e01b815260040160806040518083038186803b1580156105db57600080fd5b505afa1580156105ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106139190611ae4565b64ffffffffff16610340860152610320850152506103008301526102a08201516040805163b1bf962d60e01b815290516001600160a01b039092169163b1bf962d91600480820192602092909190829003018186803b15801561067557600080fd5b505afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad9190611acc565b826103600181815250508161026001516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156106f557600080fd5b505afa158015610709573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261073191908101906118e8565b604080840191909152805160208082019092526000815290830152805161075790611208565b60e0870152606086015260c085015260a08401526080830152805161077b90611233565b1515610140860152151561012085015215156101808401521515610160830152608082015115156101008301526102c08201516107b79061126f565b6104008601526103e08501526103c08401526103a08301526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001615610a3c57610260820151604051631652e7b760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691631652e7b79161084f9190600401611e9b565b60606040518083038186803b15801561086757600080fd5b505afa15801561087b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089f9190611a8a565b6104e08501526001600160801b0390811661048085015216610420830152610280820151604051631652e7b760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691631652e7b79161090e9190600401611e9b565b60606040518083038186803b15801561092657600080fd5b505afa15801561093a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095e9190611a8a565b6105208501526001600160801b039081166104c0850152166104608301526102a0820151604051631652e7b760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691631652e7b7916109cd9190600401611e9b565b60606040518083038186803b1580156109e557600080fd5b505afa1580156109f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1d9190611a8a565b6105008501526001600160801b039081166104a0850152166104408301525b6001600160a01b038d161561105e576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001615610cba577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633373ee4c8e8461026001516040518363ffffffff1660e01b8152600401610acd929190611eaf565b60206040518083038186803b158015610ae557600080fd5b505afa158015610af9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1d9190611acc565b848481518110610b2957fe5b602002602001015160e00181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633373ee4c8e846102a001516040518363ffffffff1660e01b8152600401610b8c929190611eaf565b60206040518083038186803b158015610ba457600080fd5b505afa158015610bb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdc9190611acc565b848481518110610be857fe5b60200260200101516101000181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633373ee4c8e8461028001516040518363ffffffff1660e01b8152600401610c4c929190611eaf565b60206040518083038186803b158015610c6457600080fd5b505afa158015610c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9c9190611acc565b848481518110610ca857fe5b60200260200101516101200181815250505b8160000151848481518110610ccb57fe5b6020026020010151600001906001600160a01b031690816001600160a01b0316815250508161026001516001600160a01b0316631da24f3e8e6040518263ffffffff1660e01b8152600401610d209190611e9b565b60206040518083038186803b158015610d3857600080fd5b505afa158015610d4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d709190611acc565b848481518110610d7c57fe5b6020908102919091018101510152610d948684611448565b848481518110610da057fe5b6020908102919091010151901515604090910152610dbe86846114aa565b1561105e57816102a001516001600160a01b0316631da24f3e8e6040518263ffffffff1660e01b8152600401610df49190611e9b565b60206040518083038186803b158015610e0c57600080fd5b505afa158015610e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e449190611acc565b848481518110610e5057fe5b602002602001015160800181815250508161028001516001600160a01b031663c634dfaa8e6040518263ffffffff1660e01b8152600401610e919190611e9b565b60206040518083038186803b158015610ea957600080fd5b505afa158015610ebd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee19190611acc565b848481518110610eed57fe5b602002602001015160a0018181525050838381518110610f0957fe5b602002602001015160a0015160001461105e578161028001516001600160a01b031663e78c9b3b8e6040518263ffffffff1660e01b8152600401610f4d9190611e9b565b60206040518083038186803b158015610f6557600080fd5b505afa158015610f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9d9190611acc565b848481518110610fa957fe5b602002602001015160600181815250508161028001516001600160a01b03166379ce6b8c8e6040518263ffffffff1660e01b8152600401610fea9190611e9b565b60206040518083038186803b15801561100257600080fd5b505afa158015611016573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103a9190611b24565b64ffffffffff1684848151811061104d57fe5b602002602001015160c00181815250505b5050600101610307565b5081817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b3596f077310f7fc1f91ba351f9c629c5947ad69bd03c05b966040518263ffffffff1660e01b81526004016110cb9190611e9b565b60206040518083038186803b1580156110e357600080fd5b505afa1580156110f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111b9190611acc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663198fa81e8e6040518263ffffffff1660e01b81526004016111679190611e9b565b60206040518083038186803b15801561117f57600080fd5b505afa158015611193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b79190611acc565b929e919d509b50909950975050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7310f7fc1f91ba351f9c629c5947ad69bd03c05b9681565b5161ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b51670100000000000000811615159167020000000000000082161515916704000000000000008116151591670800000000000000909116151590565b600080600080846001600160a01b0316637b832f586040518163ffffffff1660e01b815260040160206040518083038186803b1580156112ae57600080fd5b505afa1580156112c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e69190611acc565b856001600160a01b03166365614f816040518163ffffffff1660e01b815260040160206040518083038186803b15801561131f57600080fd5b505afa158015611333573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113579190611acc565b866001600160a01b0316630bdf953f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561139057600080fd5b505afa1580156113a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c89190611acc565b876001600160a01b031663ccab01a36040518163ffffffff1660e01b815260040160206040518083038186803b15801561140157600080fd5b505afa158015611415573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114399190611acc565b93509350935093509193509193565b60006080821060405180604001604052806002815260200161373760f01b815250906114905760405162461bcd60e51b81526004016114879190611f77565b60405180910390fd5b5050815160016002830281019190911c1615155b92915050565b60006080821060405180604001604052806002815260200161373760f01b815250906114e95760405162461bcd60e51b81526004016114879190611f77565b50509051600160029092021c16151590565b6040518060200160405280600081525090565b60405180610540016040528060006001600160a01b031681526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160001515815260200160001515815260200160001515815260200160001515815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b03168152602001600064ffffffffff16815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180610140016040528060006001600160a01b0316815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180610180016040528061171e6114fb565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b80516114a481611fea565b600060208284031215611791578081fd5b61179b6020611f8a565b9151825250919050565b80516001600160801b03811681146114a457600080fd5b805164ffffffffff811681146114a457600080fd5b805160ff811681146114a457600080fd5b6000602082840312156117f3578081fd5b81516117fe81611fea565b9392505050565b60006020808385031215611817578182fd5b825167ffffffffffffffff8082111561182e578384fd5b818501915085601f830112611841578384fd5b81518181111561184f578485fd5b838102915061185f848301611f8a565b8181528481019084860184860187018a1015611879578788fd5b8795505b838610156118a35761188f8a82611775565b83526001959095019491860191860161187d565b5098975050505050505050565b600080604083850312156118c2578081fd5b82356118cd81611fea565b915060208301356118dd81611fea565b809150509250929050565b6000602082840312156118f9578081fd5b815167ffffffffffffffff80821115611910578283fd5b818401915084601f830112611923578283fd5b815181811115611931578384fd5b611944601f8201601f1916602001611f8a565b915080825285602082850101111561195a578384fd5b61196b816020840160208601611fba565b50949350505050565b6000610180808385031215611987578182fd5b61199081611f8a565b905061199c8484611780565b81526119ab84602085016117a5565b60208201526119bd84604085016117a5565b60408201526119cf84606085016117a5565b60608201526119e184608085016117a5565b60808201526119f38460a085016117a5565b60a0820152611a058460c085016117bc565b60c0820152611a178460e08501611775565b60e0820152610100611a2b85828601611775565b90820152610120611a3e85858301611775565b90820152610140611a5185858301611775565b90820152610160611a64858583016117d1565b908201529392505050565b600060208284031215611a80578081fd5b6117fe8383611780565b600080600060608486031215611a9e578081fd5b8351611aa981612002565b6020850151909350611aba81612002565b80925050604084015190509250925092565b600060208284031215611add578081fd5b5051919050565b60008060008060808587031215611af9578081fd5b8451935060208501519250604085015191506060850151611b1981612017565b939692955090935050565b600060208284031215611b35578081fd5b81516117fe81612017565b6000610540611b50848451611e44565b6020830151816020860152611b6782860182611e57565b91505060408301518482036040860152611b818282611e57565b915050606083015160608501526080830151608085015260a083015160a085015260c083015160c085015260e083015160e085015261010080840151611bc982870182611e51565b505061012080840151611bde82870182611e51565b505061014080840151611bf382870182611e51565b505061016080840151611c0882870182611e51565b505061018080840151611c1d82870182611e51565b50506101a080840151611c3282870182611e83565b50506101c080840151611c4782870182611e83565b50506101e080840151611c5c82870182611e83565b505061020080840151611c7182870182611e83565b505061022080840151611c8682870182611e83565b505061024080840151611c9b82870182611e90565b505061026080840151611cb082870182611e44565b505061028080840151611cc582870182611e44565b50506102a080840151611cda82870182611e44565b50506102c080840151611cef82870182611e44565b50506102e08381015190850152610300808401519085015261032080840151908501526103408084015190850152610360808401519085015261038080840151908501526103a080840151908501526103c080840151908501526103e08084015190850152610400808401519085015261042080840151908501526104408084015190850152610460808401519085015261048080840151908501526104a080840151908501526104c080840151908501526104e0808401519085015261050080840151908501526105209283015192909301919091525090565b6000611dd7838351611e44565b602082015160208401526040820151611df36040850182611e51565b5050606081810151908301526080808201519083015260a0808201519083015260c0808201519083015260e08082015190830152610100808201519083015261012090810151908201526101400190565b6001600160a01b03169052565b15159052565b60008151808452611e6f816020860160208601611fba565b601f01601f19169290920160200192915050565b6001600160801b03169052565b64ffffffffff169052565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b60006080820160808352808751611ee08184611fb1565b915081925060208082028301818b01865b84811015611f1b578683038652611f09838351611b40565b95840195925090830190600101611ef1565b50508681038288015280945089519350611f358482611fb1565b9450508089019150845b83811015611f6057611f52858451611dca565b945091810191600101611f3f565b505050506040830194909452506060015292915050565b6000602082526117fe6020830184611e57565b60405181810167ffffffffffffffff81118282101715611fa957600080fd5b604052919050565b90815260200190565b60005b83811015611fd5578181015183820152602001611fbd565b83811115611fe4576000848401525b50505050565b6001600160a01b0381168114611fff57600080fd5b50565b6001600160801b0381168114611fff57600080fd5b64ffffffffff81168114611fff57600080fdfea2646970667358221220e724b03f0d15876a50ba0854d713d950bc4c89e60ceae0604da1a4ff2903d0ab64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7DC0D1D0 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x87E40DB7 EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0xAF1DF255 EQ PUSH2 0x92 JUMPI DUP1 PUSH4 0xB8C0A5B1 EQ PUSH2 0x9A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0xA2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x82 PUSH2 0x7D CALLDATASIZE PUSH1 0x4 PUSH2 0x18B0 JUMP JUMPDEST PUSH2 0xC6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1EC9 JUMP JUMPDEST PUSH2 0x59 PUSH2 0x11CC JUMP JUMPDEST PUSH2 0x59 PUSH2 0x11F0 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x261BF8B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13F SWAP2 SWAP1 PUSH2 0x17E2 JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD1946DBC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x190 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1B8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1805 JUMP JUMPDEST SWAP1 POP PUSH2 0x1C2 PUSH2 0x14FB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x4417A583 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x4417A583 SWAP1 PUSH2 0x1EE SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x206 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x21A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x23E SWAP2 SWAP1 PUSH2 0x1A6F JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x25A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x294 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x281 PUSH2 0x150E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x279 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH2 0x2AE JUMPI PUSH1 0x0 PUSH2 0x2B1 JUMP JUMPDEST DUP4 MLOAD JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x301 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x2EE PUSH2 0x16AC JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x2E6 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1068 JUMPI PUSH2 0x318 PUSH2 0x150E JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x324 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x33A JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH2 0x358 PUSH2 0x170A JUMP JUMPDEST DUP2 MLOAD PUSH1 0x40 MLOAD PUSH4 0x35EA6A75 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP2 PUSH4 0x35EA6A75 SWAP2 PUSH2 0x385 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x1E9B JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3D6 SWAP2 SWAP1 PUSH2 0x1974 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND PUSH2 0x1A0 DUP6 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD DUP3 AND PUSH2 0x1C0 DUP7 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD DUP3 AND PUSH2 0x1E0 DUP7 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD DUP3 AND PUSH2 0x200 DUP7 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD SWAP1 SWAP2 AND PUSH2 0x220 DUP6 ADD MSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH5 0xFFFFFFFFFF AND PUSH2 0x240 DUP6 ADD MSTORE PUSH1 0xE0 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x260 DUP7 ADD MSTORE PUSH2 0x100 DUP4 ADD MLOAD DUP2 AND PUSH2 0x280 DUP7 ADD MSTORE PUSH2 0x120 DUP4 ADD MLOAD DUP2 AND PUSH2 0x2A0 DUP7 ADD MSTORE PUSH2 0x140 DUP4 ADD MLOAD DUP2 AND PUSH2 0x2C0 DUP7 ADD MSTORE DUP5 MLOAD SWAP2 MLOAD PUSH4 0xB3596F07 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 SWAP4 POP PUSH32 0x0 AND SWAP2 PUSH4 0xB3596F07 SWAP2 PUSH2 0x4BA SWAP2 PUSH1 0x4 ADD PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x50A SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST PUSH2 0x380 DUP4 ADD MSTORE DUP2 MLOAD PUSH2 0x260 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH2 0x543 SWAP2 PUSH1 0x4 ADD PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x56F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x593 SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST DUP3 PUSH2 0x2E0 ADD DUP2 DUP2 MSTORE POP POP DUP2 PUSH2 0x280 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x79774338 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5EF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x613 SWAP2 SWAP1 PUSH2 0x1AE4 JUMP JUMPDEST PUSH5 0xFFFFFFFFFF AND PUSH2 0x340 DUP7 ADD MSTORE PUSH2 0x320 DUP6 ADD MSTORE POP PUSH2 0x300 DUP4 ADD MSTORE PUSH2 0x2A0 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xB1BF962D PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB1BF962D SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x675 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x689 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6AD SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST DUP3 PUSH2 0x360 ADD DUP2 DUP2 MSTORE POP POP DUP2 PUSH2 0x260 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95D89B41 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x709 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x731 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x18E8 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 DUP4 ADD MSTORE DUP1 MLOAD PUSH2 0x757 SWAP1 PUSH2 0x1208 JUMP JUMPDEST PUSH1 0xE0 DUP8 ADD MSTORE PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE DUP1 MLOAD PUSH2 0x77B SWAP1 PUSH2 0x1233 JUMP JUMPDEST ISZERO ISZERO PUSH2 0x140 DUP7 ADD MSTORE ISZERO ISZERO PUSH2 0x120 DUP6 ADD MSTORE ISZERO ISZERO PUSH2 0x180 DUP5 ADD MSTORE ISZERO ISZERO PUSH2 0x160 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MLOAD ISZERO ISZERO PUSH2 0x100 DUP4 ADD MSTORE PUSH2 0x2C0 DUP3 ADD MLOAD PUSH2 0x7B7 SWAP1 PUSH2 0x126F JUMP JUMPDEST PUSH2 0x400 DUP7 ADD MSTORE PUSH2 0x3E0 DUP6 ADD MSTORE PUSH2 0x3C0 DUP5 ADD MSTORE PUSH2 0x3A0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ISZERO PUSH2 0xA3C JUMPI PUSH2 0x260 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x1652E7B7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH4 0x1652E7B7 SWAP2 PUSH2 0x84F SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x867 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x87B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x89F SWAP2 SWAP1 PUSH2 0x1A8A JUMP JUMPDEST PUSH2 0x4E0 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND PUSH2 0x480 DUP6 ADD MSTORE AND PUSH2 0x420 DUP4 ADD MSTORE PUSH2 0x280 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x1652E7B7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH4 0x1652E7B7 SWAP2 PUSH2 0x90E SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x926 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x93A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x95E SWAP2 SWAP1 PUSH2 0x1A8A JUMP JUMPDEST PUSH2 0x520 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND PUSH2 0x4C0 DUP6 ADD MSTORE AND PUSH2 0x460 DUP4 ADD MSTORE PUSH2 0x2A0 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x1652E7B7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH4 0x1652E7B7 SWAP2 PUSH2 0x9CD SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA1D SWAP2 SWAP1 PUSH2 0x1A8A JUMP JUMPDEST PUSH2 0x500 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND PUSH2 0x4A0 DUP6 ADD MSTORE AND PUSH2 0x440 DUP4 ADD MSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND ISZERO PUSH2 0x105E JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ISZERO PUSH2 0xCBA JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3373EE4C DUP15 DUP5 PUSH2 0x260 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xACD SWAP3 SWAP2 SWAP1 PUSH2 0x1EAF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAF9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB1D SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xB29 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xE0 ADD DUP2 DUP2 MSTORE POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3373EE4C DUP15 DUP5 PUSH2 0x2A0 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB8C SWAP3 SWAP2 SWAP1 PUSH2 0x1EAF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBB8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBDC SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xBE8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x100 ADD DUP2 DUP2 MSTORE POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3373EE4C DUP15 DUP5 PUSH2 0x280 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC4C SWAP3 SWAP2 SWAP1 PUSH2 0x1EAF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC78 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC9C SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xCA8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x120 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST DUP2 PUSH1 0x0 ADD MLOAD DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xCCB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP2 PUSH2 0x260 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x1DA24F3E DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD20 SWAP2 SWAP1 PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD4C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD70 SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xD7C JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD ADD MSTORE PUSH2 0xD94 DUP7 DUP5 PUSH2 0x1448 JUMP JUMPDEST DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xDA0 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD SWAP1 ISZERO ISZERO PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE PUSH2 0xDBE DUP7 DUP5 PUSH2 0x14AA JUMP JUMPDEST ISZERO PUSH2 0x105E JUMPI DUP2 PUSH2 0x2A0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x1DA24F3E DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDF4 SWAP2 SWAP1 PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE20 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE44 SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xE50 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x80 ADD DUP2 DUP2 MSTORE POP POP DUP2 PUSH2 0x280 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC634DFAA DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE91 SWAP2 SWAP1 PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEBD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xEE1 SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xEED JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xA0 ADD DUP2 DUP2 MSTORE POP POP DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xF09 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xA0 ADD MLOAD PUSH1 0x0 EQ PUSH2 0x105E JUMPI DUP2 PUSH2 0x280 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE78C9B3B DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF4D SWAP2 SWAP1 PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF79 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF9D SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xFA9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP DUP2 PUSH2 0x280 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x79CE6B8C DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFEA SWAP2 SWAP1 PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1002 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1016 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x103A SWAP2 SWAP1 PUSH2 0x1B24 JUMP JUMPDEST PUSH5 0xFFFFFFFFFF AND DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x104D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xC0 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x307 JUMP JUMPDEST POP DUP2 DUP2 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB3596F07 PUSH20 0x10F7FC1F91BA351F9C629C5947AD69BD03C05B96 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10CB SWAP2 SWAP1 PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x111B SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x198FA81E DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1167 SWAP2 SWAP1 PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x117F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1193 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11B7 SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST SWAP3 SWAP15 SWAP2 SWAP14 POP SWAP12 POP SWAP1 SWAP10 POP SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH20 0x10F7FC1F91BA351F9C629C5947AD69BD03C05B96 DUP2 JUMP JUMPDEST MLOAD PUSH2 0xFFFF DUP1 DUP3 AND SWAP3 PUSH1 0x10 DUP4 SWAP1 SHR DUP3 AND SWAP3 PUSH1 0x20 DUP2 SWAP1 SHR DUP4 AND SWAP3 PUSH1 0x30 DUP3 SWAP1 SHR PUSH1 0xFF AND SWAP3 PUSH1 0x40 SWAP3 SWAP1 SWAP3 SHR AND SWAP1 JUMP JUMPDEST MLOAD PUSH8 0x100000000000000 DUP2 AND ISZERO ISZERO SWAP2 PUSH8 0x200000000000000 DUP3 AND ISZERO ISZERO SWAP2 PUSH8 0x400000000000000 DUP2 AND ISZERO ISZERO SWAP2 PUSH8 0x800000000000000 SWAP1 SWAP2 AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7B832F58 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12C2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12E6 SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x65614F81 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x131F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1333 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1357 SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xBDF953F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13C8 SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xCCAB01A3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1415 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1439 SWAP2 SWAP1 PUSH2 0x1ACC JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1490 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1487 SWAP2 SWAP1 PUSH2 0x1F77 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP DUP2 MLOAD PUSH1 0x1 PUSH1 0x2 DUP4 MUL DUP2 ADD SWAP2 SWAP1 SWAP2 SHR AND ISZERO ISZERO JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x14E9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1487 SWAP2 SWAP1 PUSH2 0x1F77 JUMP JUMPDEST POP POP SWAP1 MLOAD PUSH1 0x1 PUSH1 0x2 SWAP1 SWAP3 MUL SHR AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x540 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH5 0xFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x140 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x171E PUSH2 0x14FB JUMP JUMPDEST DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x100 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x140 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x160 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x14A4 DUP2 PUSH2 0x1FEA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1791 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x179B PUSH1 0x20 PUSH2 0x1F8A JUMP JUMPDEST SWAP2 MLOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x14A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x14A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x14A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17F3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x17FE DUP2 PUSH2 0x1FEA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1817 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x182E JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1841 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x184F JUMPI DUP5 DUP6 REVERT JUMPDEST DUP4 DUP2 MUL SWAP2 POP PUSH2 0x185F DUP5 DUP4 ADD PUSH2 0x1F8A JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 DUP2 ADD SWAP1 DUP5 DUP7 ADD DUP5 DUP7 ADD DUP8 ADD DUP11 LT ISZERO PUSH2 0x1879 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP6 POP JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0x18A3 JUMPI PUSH2 0x188F DUP11 DUP3 PUSH2 0x1775 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP2 DUP7 ADD SWAP2 DUP7 ADD PUSH2 0x187D JUMP JUMPDEST POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x18C2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x18CD DUP2 PUSH2 0x1FEA JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x18DD DUP2 PUSH2 0x1FEA JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18F9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1910 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1923 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x1931 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1944 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x1F8A JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP6 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x195A JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x196B DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1FBA JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1987 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1990 DUP2 PUSH2 0x1F8A JUMP JUMPDEST SWAP1 POP PUSH2 0x199C DUP5 DUP5 PUSH2 0x1780 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x19AB DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x17A5 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x19BD DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x17A5 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x19CF DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x17A5 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x19E1 DUP5 PUSH1 0x80 DUP6 ADD PUSH2 0x17A5 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x19F3 DUP5 PUSH1 0xA0 DUP6 ADD PUSH2 0x17A5 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x1A05 DUP5 PUSH1 0xC0 DUP6 ADD PUSH2 0x17BC JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x1A17 DUP5 PUSH1 0xE0 DUP6 ADD PUSH2 0x1775 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 PUSH2 0x1A2B DUP6 DUP3 DUP7 ADD PUSH2 0x1775 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x120 PUSH2 0x1A3E DUP6 DUP6 DUP4 ADD PUSH2 0x1775 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x140 PUSH2 0x1A51 DUP6 DUP6 DUP4 ADD PUSH2 0x1775 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x160 PUSH2 0x1A64 DUP6 DUP6 DUP4 ADD PUSH2 0x17D1 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A80 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x17FE DUP4 DUP4 PUSH2 0x1780 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1A9E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x1AA9 DUP2 PUSH2 0x2002 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH2 0x1ABA DUP2 PUSH2 0x2002 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1ADD JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1AF9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP5 MLOAD SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH2 0x1B19 DUP2 PUSH2 0x2017 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1B35 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x17FE DUP2 PUSH2 0x2017 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x540 PUSH2 0x1B50 DUP5 DUP5 MLOAD PUSH2 0x1E44 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD DUP2 PUSH1 0x20 DUP7 ADD MSTORE PUSH2 0x1B67 DUP3 DUP7 ADD DUP3 PUSH2 0x1E57 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x40 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x1B81 DUP3 DUP3 PUSH2 0x1E57 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0xC0 DUP4 ADD MLOAD PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0xE0 DUP4 ADD MLOAD PUSH1 0xE0 DUP6 ADD MSTORE PUSH2 0x100 DUP1 DUP5 ADD MLOAD PUSH2 0x1BC9 DUP3 DUP8 ADD DUP3 PUSH2 0x1E51 JUMP JUMPDEST POP POP PUSH2 0x120 DUP1 DUP5 ADD MLOAD PUSH2 0x1BDE DUP3 DUP8 ADD DUP3 PUSH2 0x1E51 JUMP JUMPDEST POP POP PUSH2 0x140 DUP1 DUP5 ADD MLOAD PUSH2 0x1BF3 DUP3 DUP8 ADD DUP3 PUSH2 0x1E51 JUMP JUMPDEST POP POP PUSH2 0x160 DUP1 DUP5 ADD MLOAD PUSH2 0x1C08 DUP3 DUP8 ADD DUP3 PUSH2 0x1E51 JUMP JUMPDEST POP POP PUSH2 0x180 DUP1 DUP5 ADD MLOAD PUSH2 0x1C1D DUP3 DUP8 ADD DUP3 PUSH2 0x1E51 JUMP JUMPDEST POP POP PUSH2 0x1A0 DUP1 DUP5 ADD MLOAD PUSH2 0x1C32 DUP3 DUP8 ADD DUP3 PUSH2 0x1E83 JUMP JUMPDEST POP POP PUSH2 0x1C0 DUP1 DUP5 ADD MLOAD PUSH2 0x1C47 DUP3 DUP8 ADD DUP3 PUSH2 0x1E83 JUMP JUMPDEST POP POP PUSH2 0x1E0 DUP1 DUP5 ADD MLOAD PUSH2 0x1C5C DUP3 DUP8 ADD DUP3 PUSH2 0x1E83 JUMP JUMPDEST POP POP PUSH2 0x200 DUP1 DUP5 ADD MLOAD PUSH2 0x1C71 DUP3 DUP8 ADD DUP3 PUSH2 0x1E83 JUMP JUMPDEST POP POP PUSH2 0x220 DUP1 DUP5 ADD MLOAD PUSH2 0x1C86 DUP3 DUP8 ADD DUP3 PUSH2 0x1E83 JUMP JUMPDEST POP POP PUSH2 0x240 DUP1 DUP5 ADD MLOAD PUSH2 0x1C9B DUP3 DUP8 ADD DUP3 PUSH2 0x1E90 JUMP JUMPDEST POP POP PUSH2 0x260 DUP1 DUP5 ADD MLOAD PUSH2 0x1CB0 DUP3 DUP8 ADD DUP3 PUSH2 0x1E44 JUMP JUMPDEST POP POP PUSH2 0x280 DUP1 DUP5 ADD MLOAD PUSH2 0x1CC5 DUP3 DUP8 ADD DUP3 PUSH2 0x1E44 JUMP JUMPDEST POP POP PUSH2 0x2A0 DUP1 DUP5 ADD MLOAD PUSH2 0x1CDA DUP3 DUP8 ADD DUP3 PUSH2 0x1E44 JUMP JUMPDEST POP POP PUSH2 0x2C0 DUP1 DUP5 ADD MLOAD PUSH2 0x1CEF DUP3 DUP8 ADD DUP3 PUSH2 0x1E44 JUMP JUMPDEST POP POP PUSH2 0x2E0 DUP4 DUP2 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x300 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x320 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x340 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x360 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x380 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x3A0 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x3C0 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x3E0 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x400 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x420 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x440 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x460 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x480 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x4A0 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x4C0 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x4E0 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x500 DUP1 DUP5 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH2 0x520 SWAP3 DUP4 ADD MLOAD SWAP3 SWAP1 SWAP4 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DD7 DUP4 DUP4 MLOAD PUSH2 0x1E44 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x1DF3 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x1E51 JUMP JUMPDEST POP POP PUSH1 0x60 DUP2 DUP2 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH1 0x80 DUP1 DUP3 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH1 0xA0 DUP1 DUP3 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH1 0xC0 DUP1 DUP3 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH1 0xE0 DUP1 DUP3 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH2 0x100 DUP1 DUP3 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH2 0x120 SWAP1 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH2 0x140 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1E6F DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1FBA JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD PUSH1 0x80 DUP4 MSTORE DUP1 DUP8 MLOAD PUSH2 0x1EE0 DUP2 DUP5 PUSH2 0x1FB1 JUMP JUMPDEST SWAP2 POP DUP2 SWAP3 POP PUSH1 0x20 DUP1 DUP3 MUL DUP4 ADD DUP2 DUP12 ADD DUP7 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1F1B JUMPI DUP7 DUP4 SUB DUP7 MSTORE PUSH2 0x1F09 DUP4 DUP4 MLOAD PUSH2 0x1B40 JUMP JUMPDEST SWAP6 DUP5 ADD SWAP6 SWAP3 POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1EF1 JUMP JUMPDEST POP POP DUP7 DUP2 SUB DUP3 DUP9 ADD MSTORE DUP1 SWAP5 POP DUP10 MLOAD SWAP4 POP PUSH2 0x1F35 DUP5 DUP3 PUSH2 0x1FB1 JUMP JUMPDEST SWAP5 POP POP DUP1 DUP10 ADD SWAP2 POP DUP5 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F60 JUMPI PUSH2 0x1F52 DUP6 DUP5 MLOAD PUSH2 0x1DCA JUMP JUMPDEST SWAP5 POP SWAP2 DUP2 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1F3F JUMP JUMPDEST POP POP POP POP PUSH1 0x40 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE POP PUSH1 0x60 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x17FE PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1E57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1FA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1FD5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1FBD JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1FE4 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1FFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1FFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1FFF JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 0x24 0xB0 EXTCODEHASH 0xD ISZERO DUP8 PUSH11 0x50BA0854D713D950BC4C89 0xE6 0xC 0xEA 0xE0 PUSH1 0x4D LOG1 LOG4 SELFDESTRUCT 0x29 SUB 0xD0 0xAB PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "1220:7215:51:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1594:42;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2237:6196;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;1527:63::-;;;:::i;1438:85::-;;;:::i;1594:42::-;;;:::o;2237:6196::-;2371:30;2409:24;2441:7;2456;2478:24;2518:8;-1:-1:-1;;;;;2518:23:51;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2478:66;;2550:25;2578:11;-1:-1:-1;;;;;2578:27:51;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2578:29:51;;;;;;;;;;;;:::i;:::-;2550:57;;2613:48;;:::i;:::-;2664:38;;-1:-1:-1;;;2664:38:51;;-1:-1:-1;;;;;2664:32:51;;;;;:38;;2697:4;;2664:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2613:89;;2709:43;2783:8;:15;2755:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;2709:90:51;-1:-1:-1;2805:41:51;-1:-1:-1;;;;;2877:18:51;;:40;;2916:1;2877:40;;;2898:8;:15;2877:40;2855:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2805:113;;2930:9;2925:5336;2949:8;:15;2945:1;:19;2925:5336;;;2979:40;;:::i;:::-;3022:12;3035:1;3022:15;;;;;;;;;;;;;;2979:58;;3075:8;3084:1;3075:11;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3045:41:51;;;3126:37;;:::i;:::-;3201:27;;3174:55;;-1:-1:-1;;;3174:55:51;;-1:-1:-1;;;;;3174:26:51;;;;;:55;;3201:27;3174:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3266:23;;;;-1:-1:-1;;;;;3237:52:51;;;:26;;;:52;3331:28;;;;;3297:62;;:31;;;:62;3395:29;;;;3367:57;;:25;;;:57;3465:34;;;;3432:67;;:30;;;:67;3538:32;;;;3507:63;;;:28;;;:63;3612:28;;;;3578:62;;:31;;;:62;3676:22;;;;-1:-1:-1;;;;;3648:50:51;;;:25;;;:50;3743:31;;;;3706:68;;:34;;;:68;3821:33;;;;3782:72;;:36;;;:72;3904:36;;;;3862:78;;:39;;;:78;3994:27;;3973:49;;-1:-1:-1;;;3973:49:51;;3126:103;;-1:-1:-1;3973:6:51;:20;;;;:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3948:22;;;:74;4079:27;;4127:25;;;;4064:96;;-1:-1:-1;;;4064:96:51;;-1:-1:-1;;;;;4064:53:51;;;;;;:96;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4031:11;:30;;:129;;;;;4342:11;:34;;;-1:-1:-1;;;;;4325:66:51;;:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4168:225;;4273:41;;;4168:225;4234:29;;;4168:225;-1:-1:-1;4178:36:51;;;4168:225;4458:36;;;;-1:-1:-1;4439:85:51;;-1:-1:-1;;;4439:85:51;;;;-1:-1:-1;;;;;4439:83:51;;;;;;:85;;;;;-1:-1:-1;;4439:85:51;;;;;;;;:83;:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4401:11;:35;;:123;;;;;4714:11;:25;;;-1:-1:-1;;;;;4699:48:51;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4699:50:51;;;;;;;;;;;;:::i;:::-;4678:18;;;;:71;;;;4757:21;;;;;;;;;-1:-1:-1;4757:21:51;;:16;;;:21;4998:22;;:40;;:38;:40::i;:::-;4962:25;;;4787:251;4932:20;;;4787:251;4887:35;;;4787:251;4838:39;;;4787:251;4797:31;;;4787:251;5200:22;;:39;;:37;:39::i;:::-;5046:193;;5154:35;;;5046:193;;;5116:28;;;5046:193;;;5086:20;;;5046:193;;;5056:20;;;5046:193;5286:31;;;;:36;;5247;;;:75;5571:39;;;;5497:122;;:29;:122::i;:::-;5458:28;;;5330:289;5420:28;;;5330:289;5380:30;;;5330:289;5340:30;;;5330:289;-1:-1:-1;;;;;5674:20:51;5652:43;;5648:752;;5895:25;;;;5861:60;;-1:-1:-1;;;5861:60:51;;-1:-1:-1;;;;;5861:20:51;:33;;;;:60;;5895:25;5861:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5815:33;;;5707:214;-1:-1:-1;;;;;5707:214:51;;;5761:42;;;5707:214;;5719:30;;;5707:214;6120:34;;;;6086:69;;-1:-1:-1;;;6086:69:51;;-1:-1:-1;;;;;6086:20:51;:33;;;;:69;;6120:34;6086:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6040:33;;;5932:223;-1:-1:-1;;;;;5932:223:51;;;5986:42;;;5932:223;;5944:30;;;5932:223;6354:36;;;;6320:71;;-1:-1:-1;;;6320:71:51;;-1:-1:-1;;;;;6320:20:51;:33;;;;:71;;6354:36;6320:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6274:33;;;6166:225;-1:-1:-1;;;;;6166:225:51;;;6220:42;;;6166:225;;6178:30;;;6166:225;5648:752;-1:-1:-1;;;;;6412:18:51;;;6408:1847;;-1:-1:-1;;;;;6490:20:51;6468:43;;6464:578;;6573:20;-1:-1:-1;;;;;6573:37:51;;6624:4;6642:11;:25;;;6573:106;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6525:16;6542:1;6525:19;;;;;;;;;;;;;;:45;;:154;;;;;6739:20;-1:-1:-1;;;;;6739:37:51;;6790:4;6808:11;:36;;;6739:117;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6691:16;6708:1;6691:19;;;;;;;;;;;;;;:45;;:165;;;;;6916:20;-1:-1:-1;;;;;6916:37:51;;6967:4;6985:11;:34;;;6916:115;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6868:16;6885:1;6868:19;;;;;;;;;;;;;;:45;;:163;;;;;6464:578;7118:11;:27;;;7080:16;7097:1;7080:19;;;;;;;;;;;;;;:35;;:65;-1:-1:-1;;;;;7080:65:51;;;-1:-1:-1;;;;;7080:65:51;;;;;7205:11;:25;;;-1:-1:-1;;;;;7197:61:51;;7259:4;7197:67;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7155:16;7172:1;7155:19;;;;;;;;;;;;;;;;;;;:39;:109;7327:33;:10;7358:1;7327:30;:33::i;:::-;7274:16;7291:1;7274:19;;;;;;;;;;;;;;;;;;:86;;;:50;;;;:86;7375:25;:10;7398:1;7375:22;:25::i;:::-;7371:876;;;7487:11;:51;;;-1:-1:-1;;;;;7455:124:51;;7580:4;7455:130;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7414:16;7431:1;7414:19;;;;;;;;;;;;;;:38;;:171;;;;;7669:11;:49;;;-1:-1:-1;;;;;7639:123:51;;7763:4;7639:129;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7597:16;7614:1;7597:19;;;;;;;;;;;;;;:39;;:171;;;;;7784:16;7801:1;7784:19;;;;;;;;;;;;;;:39;;;7827:1;7784:44;7780:457;;7915:11;:51;;;-1:-1:-1;;;;;7883:130:51;;8014:4;7883:136;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7844:16;7861:1;7844:19;;;;;;;;;;;;;;:36;;:175;;;;;8119:11;:51;;;-1:-1:-1;;;;;8087:131:51;;8219:4;8087:137;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8033:191;;:16;8050:1;8033:19;;;;;;;;;;;;;;:51;;:191;;;;;7780:457;-1:-1:-1;;2966:3:51;;2925:5336;;;;8282:12;8302:16;8326:6;-1:-1:-1;;;;;8326:20:51;;1481:42;8326:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8372:20;-1:-1:-1;;;;;8372:44:51;;8417:4;8372:50;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8267:161;;;;-1:-1:-1;8267:161:51;-1:-1:-1;8267:161:51;;-1:-1:-1;2237:6196:51;-1:-1:-1;;;;;;;;2237:6196:51:o;1527:63::-;;;:::o;1438:85::-;1481:42;1438:85;:::o;10941:575:75:-;11152:9;11164;11152:21;;;;1692:2;11181:85;;;;;;1754:2;11274:77;;;;;;1815:2;11359:67;;;;;;2113:2;11434:71;;;;;;10941:575::o;11756:355::-;11940:9;11952:12;11940:24;;11939:31;;;11991:12;11979:24;;11978:31;;;12030:15;12018:27;;12017:34;;;12072:22;12060:34;;;12059:41;;;11756:355::o;1818:415:51:-;1956:7;1971;1986;2001;2038:20;-1:-1:-1;;;;;2038:39:51;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2087:20;-1:-1:-1;;;;;2087:39:51;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2136:20;-1:-1:-1;;;;;2136:37:51;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2183:20;-1:-1:-1;;;;;2183:37:51;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2023:205;;;;;;;;1818:415;;;;;:::o;3100:260:76:-;3230:4;3267:3;3252:12;:18;3272:23;;;;;;;;;;;;;-1:-1:-1;;;3272:23:76;;;3244:52;;;;;-1:-1:-1;;;3244:52:76;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;3310:9:76;;3343:1;3339;3324:16;;:20;;3310:35;;;;3309:41;:46;;3100:260;;;;;:::o;2565:248::-;2687:4;2724:3;2709:12;:18;2729:23;;;;;;;;;;;;;-1:-1:-1;;;2729:23:76;;;2701:52;;;;;-1:-1:-1;;;2701:52:76;;;;;;;;:::i;:::-;-1:-1:-1;;2767:9:76;;2802:1;2796;2781:16;;;2767:31;2766:37;:42;;;2565:248::o;-1:-1:-1:-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;142:134::-;220:13;;238:33;220:13;238:33;:::i;1744:362::-;;1886:4;1874:9;1869:3;1865:19;1861:30;1858:2;;;-1:-1;;1894:12;1858:2;1922:20;1886:4;1922:20;:::i;:::-;5071:13;;1999:86;;-1:-1;1913:29;1852:254;-1:-1;1852:254::o;4852:134::-;4930:13;;-1:-1;;;;;29683:46;;31567:35;;31557:2;;31616:1;;31606:12;5134:132;5211:13;;30020:12;30009:24;;31814:34;;31804:2;;31862:1;;31852:12;5273:130;5349:13;;30116:4;30105:16;;31935:33;;31925:2;;31982:1;;31972:12;5410:263;;5525:2;5513:9;5504:7;5500:23;5496:32;5493:2;;;-1:-1;;5531:12;5493:2;226:6;220:13;238:33;265:5;238:33;:::i;:::-;5583:74;5487:186;-1:-1;;;5487:186::o;5680:392::-;;5820:2;;5808:9;5799:7;5795:23;5791:32;5788:2;;;-1:-1;;5826:12;5788:2;5877:17;5871:24;5915:18;;5907:6;5904:30;5901:2;;;-1:-1;;5937:12;5901:2;6039:6;6028:9;6024:22;;;429:3;422:4;414:6;410:17;406:27;396:2;;-1:-1;;437:12;396:2;477:6;471:13;5915:18;26847:6;26844:30;26841:2;;;-1:-1;;26877:12;26841:2;5820;26914:6;26910:17;;;499:80;5820:2;26910:17;26975:15;499:80;:::i;:::-;607:21;;;664:14;;;;639:17;;;744:27;;;;;741:36;-1:-1;738:2;;;-1:-1;;780:12;738:2;-1:-1;806:10;;800:217;825:6;822:1;819:13;800:217;;;905:48;949:3;937:10;905:48;:::i;:::-;893:61;;847:1;840:9;;;;;968:14;;;;996;;800:217;;;-1:-1;5957:99;5782:290;-1:-1;;;;;;;;5782:290::o;6079:442::-;;;6238:2;6226:9;6217:7;6213:23;6209:32;6206:2;;;-1:-1;;6244:12;6206:2;1149:6;1136:20;1161:71;1226:5;1161:71;:::i;:::-;6296:101;-1:-1;6434:2;6473:22;;72:20;97:33;72:20;97:33;:::i;:::-;6442:63;;;;6200:321;;;;;:::o;6528:362::-;;6653:2;6641:9;6632:7;6628:23;6624:32;6621:2;;;-1:-1;;6659:12;6621:2;6710:17;6704:24;6748:18;;6740:6;6737:30;6734:2;;;-1:-1;;6770:12;6734:2;6857:6;6846:9;6842:22;;;1358:3;1351:4;1343:6;1339:17;1335:27;1325:2;;-1:-1;;1366:12;1325:2;1406:6;1400:13;6748:18;27143:6;27140:30;27137:2;;;-1:-1;;27173:12;27137:2;1428:65;27246:9;27227:17;;-1:-1;;27223:33;6653:2;27304:15;1428:65;:::i;:::-;1419:74;;1513:6;1506:5;1499:21;1617:3;6653:2;1608:6;1541;1599:16;;1596:25;1593:2;;;-1:-1;;1624:12;1593:2;1644:39;1676:6;6653:2;1575:5;1571:16;6653:2;1541:6;1537:17;1644:39;:::i;:::-;-1:-1;6790:84;6615:275;-1:-1;;;;6615:275::o;6897:324::-;;7042:3;;7030:9;7021:7;7017:23;7013:33;7010:2;;;-1:-1;;7049:12;7010:2;2316:22;7042:3;2316:22;:::i;:::-;2307:31;;2429:102;2527:3;2503:22;2429:102;:::i;:::-;2411:16;2404:128;2636:60;2692:3;2603:2;2672:9;2668:22;2636:60;:::i;:::-;2603:2;2622:5;2618:16;2611:86;2806:60;2862:3;2773:2;2842:9;2838:22;2806:60;:::i;:::-;2773:2;2792:5;2788:16;2781:86;2977:60;3033:3;2944:2;3013:9;3009:22;2977:60;:::i;:::-;2944:2;2963:5;2959:16;2952:86;3154:60;3210:3;3120;3190:9;3186:22;3154:60;:::i;:::-;3120:3;3140:5;3136:16;3129:86;3329:60;3385:3;3295;3365:9;3361:22;3329:60;:::i;:::-;3295:3;3315:5;3311:16;3304:86;3500:59;3555:3;3466;3535:9;3531:22;3500:59;:::i;:::-;3466:3;3486:5;3482:16;3475:85;3664:60;3720:3;3630;3700:9;3696:22;3664:60;:::i;:::-;3630:3;3650:5;3646:16;3639:86;3804:3;3840:60;3896:3;3804;3876:9;3872:22;3840:60;:::i;:::-;3820:18;;;3813:88;3982:3;4018:60;4074:3;4050:22;;;4018:60;:::i;:::-;3998:18;;;3991:88;4163:3;4199:60;4255:3;4231:22;;;4199:60;:::i;:::-;4179:18;;;4172:88;4319:3;4355:58;4409:3;4385:22;;;4355:58;:::i;:::-;4335:18;;;4328:86;4339:5;7004:217;-1:-1;;;7004:217::o;7228:341::-;;7382:2;7370:9;7361:7;7357:23;7353:32;7350:2;;;-1:-1;;7388:12;7350:2;7450:103;7545:7;7521:22;7450:103;:::i;7576:535::-;;;;7725:2;7713:9;7704:7;7700:23;7696:32;7693:2;;;-1:-1;;7731:12;7693:2;4936:6;4930:13;4948:33;4975:5;4948:33;:::i;:::-;7894:2;7944:22;;4930:13;7783:74;;-1:-1;4948:33;4930:13;4948:33;:::i;:::-;7902:74;;;;8013:2;8067:9;8063:22;5071:13;8021:74;;7687:424;;;;;:::o;8118:263::-;;8233:2;8221:9;8212:7;8208:23;8204:32;8201:2;;;-1:-1;;8239:12;8201:2;-1:-1;5071:13;;8195:186;-1:-1;8195:186::o;8388:670::-;;;;;8553:3;8541:9;8532:7;8528:23;8524:33;8521:2;;;-1:-1;;8560:12;8521:2;8654:22;5071:13;8612:74;;8723:2;8777:9;8773:22;5071:13;8731:74;;8842:2;8896:9;8892:22;5071:13;8850:74;;8961:2;9014:9;9010:22;5211:13;5229:32;5255:5;5229:32;:::i;:::-;8515:543;;;;-1:-1;8515:543;;-1:-1;;8515:543::o;9065:261::-;;9179:2;9167:9;9158:7;9154:23;9150:32;9147:2;;;-1:-1;;9185:12;9147:2;5217:6;5211:13;5229:32;5255:5;5229:32;:::i;9334:309::-;;13994:6;14102:63;14150:14;14079:16;14073:23;14102:63;:::i;:::-;14244:4;14237:5;14233:16;14227:23;13994:6;14244:4;14274:3;14270:14;14263:38;14316:73;13994:6;13989:3;13985:16;14370:12;14316:73;:::i;:::-;14308:81;;;14476:4;14469:5;14465:16;14459:23;14528:3;14522:4;14518:14;14476:4;14506:3;14502:14;14495:38;14548:73;14616:4;14602:12;14548:73;:::i;:::-;14540:81;;;14710:4;14703:5;14699:16;14693:23;14710:4;14774:3;14770:14;23544:37;14879:4;14872:5;14868:16;14862:23;14879:4;14943:3;14939:14;23544:37;15056:4;15049:5;15045:16;15039:23;15056:4;15120:3;15116:14;23544:37;15229:4;15222:5;15218:16;15212:23;15229:4;15293:3;15289:14;23544:37;15392:4;15385:5;15381:16;15375:23;15392:4;15456:3;15452:14;23544:37;15566:6;;15559:5;15555:18;15549:25;15580:59;15566:6;15626:3;15622:16;15608:12;15580:59;:::i;:::-;;;15730:6;;15723:5;15719:18;15713:25;15744:59;15730:6;15790:3;15786:16;15772:12;15744:59;:::i;:::-;;;15901:6;;15894:5;15890:18;15884:25;15915:59;15901:6;15961:3;15957:16;15943:12;15915:59;:::i;:::-;;;16057:6;;16050:5;16046:18;16040:25;16071:59;16057:6;16117:3;16113:16;16099:12;16071:59;:::i;:::-;;;16213:6;;16206:5;16202:18;16196:25;16227:59;16213:6;16273:3;16269:16;16255:12;16227:59;:::i;:::-;;;16375:6;;16368:5;16364:18;16358:25;16389:65;16375:6;16441:3;16437:16;16423:12;16389:65;:::i;:::-;;;16548:6;;16541:5;16537:18;16531:25;16562:65;16548:6;16614:3;16610:16;16596:12;16562:65;:::i;:::-;;;16715:6;;16708:5;16704:18;16698:25;16729:65;16715:6;16781:3;16777:16;16763:12;16729:65;:::i;:::-;;;16887:6;;16880:5;16876:18;16870:25;16901:65;16887:6;16953:3;16949:16;16935:12;16901:65;:::i;:::-;;;17057:6;;17050:5;17046:18;17040:25;17071:65;17057:6;17123:3;17119:16;17105:12;17071:65;:::i;:::-;;;17230:6;;17223:5;17219:18;17213:25;17244:63;17230:6;17294:3;17290:16;17276:12;17244:63;:::i;:::-;;;17395:6;;17388:5;17384:18;17378:25;17409:65;17395:6;17461:3;17457:16;17443:12;17409:65;:::i;:::-;;;17571:6;;17564:5;17560:18;17554:25;17585:65;17571:6;17637:3;17633:16;17619:12;17585:65;:::i;:::-;;;17749:6;;17742:5;17738:18;17732:25;17763:65;17749:6;17815:3;17811:16;17797:12;17763:65;:::i;:::-;;;17930:6;;17923:5;17919:18;17913:25;17944:65;17930:6;17996:3;17992:16;17978:12;17944:65;:::i;:::-;-1:-1;;18102:6;18091:18;;;18085:25;18164:16;;;23544:37;18280:6;18269:18;;;18263:25;18342:16;;;23544:37;18451:6;18440:18;;;18434:25;18513:16;;;23544:37;18634:6;18623:18;;;18617:25;18696:16;;;23544:37;18811:6;18800:18;;;18794:25;18873:16;;;23544:37;18975:6;18964:18;;;18958:25;19037:16;;;23544:37;19147:6;19136:18;;;19130:25;19209:16;;;23544:37;19319:6;19308:18;;;19302:25;19381:16;;;23544:37;19489:6;19478:18;;;19472:25;19551:16;;;23544:37;19659:6;19648:18;;;19642:25;19721:16;;;23544:37;19831:6;19820:18;;;19814:25;19893:16;;;23544:37;20003:6;19992:18;;;19986:25;20065:16;;;23544:37;20175:6;20164:18;;;20158:25;20237:16;;;23544:37;20359:6;20348:18;;;20342:25;20421:16;;;23544:37;20543:6;20532:18;;;20526:25;20605:16;;;23544:37;20727:6;20716:18;;;20710:25;20789:16;;;23544:37;20902:6;20891:18;;;20885:25;20964:16;;;23544:37;21077:6;21066:18;;;21060:25;21139:16;;;23544:37;21252:6;21241:18;;;21235:25;21314:16;;;;23544:37;;;;-1:-1;9499:138;9492:151::o;9652:307::-;;21722:63;21770:14;21699:16;21693:23;21722:63;:::i;:::-;21879:4;21872:5;21868:16;21862:23;21879:4;21943:3;21939:14;23544:37;22059:4;22052:5;22048:16;22042:23;22071:57;22059:4;22117:3;22113:14;22099:12;22071:57;:::i;:::-;-1:-1;;22219:4;22208:16;;;22202:23;22279:14;;;23544:37;22387:4;22376:16;;;22370:23;22447:14;;;23544:37;22556:4;22545:16;;;22539:23;22616:14;;;23544:37;22737:4;22726:16;;;22720:23;22797:14;;;23544:37;22912:4;22901:16;;;22895:23;22972:14;;;23544:37;23087:6;23076:18;;;23070:25;23149:16;;;23544:37;23266:6;23255:18;;;23249:25;23328:16;;;23544:37;9946:6;9937:16;;9798:161::o;9967:103::-;-1:-1;;;;;29803:54;10028:37;;10022:48::o;12541:94::-;29459:13;29452:21;12596:34;;12590:45::o;13030:327::-;;13165:5;27866:12;28685:6;28680:3;28673:19;13249:52;13294:6;28722:4;28717:3;28713:14;28722:4;13275:5;13271:16;13249:52;:::i;:::-;27246:9;31147:14;-1:-1;;31143:28;13313:39;;;;28722:4;13313:39;;13112:245;-1:-1;;13112:245::o;23373:103::-;-1:-1;;;;;29683:46;23434:37;;23428:48::o;23713:100::-;30020:12;30009:24;23772:36;;23766:47::o;23820:222::-;-1:-1;;;;;29803:54;;;;10028:37;;23947:2;23932:18;;23918:124::o;24049:333::-;-1:-1;;;;;29803:54;;;10028:37;;29803:54;;24368:2;24353:18;;10028:37;24204:2;24189:18;;24175:207::o;24389:1140::-;;24844:3;24833:9;24829:19;24844:3;24866:17;24859:47;24920:186;10620:5;27866:12;10639:125;10757:6;10752:3;10639:125;:::i;:::-;10632:132;;;;;10829:4;;10821:6;10817:17;10812:3;10808:27;10829:4;10945:5;27490:14;-1:-1;10984:447;11009:6;11006:1;11003:13;10984:447;;;11071:9;11065:4;11061:20;11056:3;11049:33;11138:142;11275:4;11116:6;11110:13;11138:142;:::i;:::-;11410:14;;;;11130:150;-1:-1;28341:14;;;;11031:1;11024:9;10984:447;;;10988:14;;25154:9;25148:4;25144:20;10829:4;25128:9;25124:18;25117:48;25179:174;;;11871:5;27866:12;11776:101;;11890:119;12002:6;11997:3;11890:119;:::i;:::-;11883:126;;;10829:4;12113:5;27490:14;12125:21;;-1:-1;12152:359;12177:6;12174:1;12171:13;12152:359;;;12265:129;12390:3;12244:6;12238:13;12265:129;:::i;:::-;12258:136;-1:-1;28341:14;;;;11031:1;12192:9;12152:359;;;-1:-1;;;;25432:2;25417:18;;23544:37;;;;-1:-1;25515:2;25500:18;23544:37;25171:182;24815:714;-1:-1;;24815:714::o;26116:310::-;;26263:2;26284:17;26277:47;26338:78;26263:2;26252:9;26248:18;26402:6;26338:78;:::i;26433:256::-;26495:2;26489:9;26521:17;;;26596:18;26581:34;;26617:22;;;26578:62;26575:2;;;26653:1;;26643:12;26575:2;26495;26662:22;26473:216;;-1:-1;26473:216::o;28516:217::-;28673:19;;;28722:4;28713:14;;28666:67::o;30803:268::-;30868:1;30875:101;30889:6;30886:1;30883:13;30875:101;;;30956:11;;;30950:18;30937:11;;;30930:39;30911:2;30904:10;30875:101;;;30991:6;30988:1;30985:13;30982:2;;;30868:1;31047:6;31042:3;31038:16;31031:27;30982:2;;30852:219;;;:::o;31184:117::-;-1:-1;;;;;29803:54;;31243:35;;31233:2;;31292:1;;31282:12;31233:2;31227:74;:::o;31508:117::-;-1:-1;;;;;31595:5;29683:46;31570:5;31567:35;31557:2;;31616:1;;31606:12;31756:115;30020:12;31841:5;30009:24;31817:5;31814:34;31804:2;;31862:1;;31852:12"
            },
            "methodIdentifiers": {
              "MOCK_USD_ADDRESS()": "b8c0a5b1",
              "getReservesData(address,address)": "87e40db7",
              "incentivesController()": "af1df255",
              "oracle()": "7dc0d1d0"
            }
          }
        }
      },
      "contracts/misc/WETHGateway.sol": {
        "WETHGateway": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "weth",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "lendingPool",
                  "type": "address"
                }
              ],
              "name": "authorizeLendingPool",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "lendingPool",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interesRateMode",
                  "type": "uint256"
                },
                {
                  "internalType": "uint16",
                  "name": "referralCode",
                  "type": "uint16"
                }
              ],
              "name": "borrowETH",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "lendingPool",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                },
                {
                  "internalType": "uint16",
                  "name": "referralCode",
                  "type": "uint16"
                }
              ],
              "name": "depositETH",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "emergencyEtherTransfer",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "emergencyTokenTransfer",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getWETHAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "lendingPool",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "rateMode",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                }
              ],
              "name": "repayETH",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "lendingPool",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "withdrawETH",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "stateMutability": "payable",
              "type": "receive"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60a060405234801561001057600080fd5b506040516115c63803806115c683398101604081905261002f9161009c565b6000610039610098565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060601b6001600160601b0319166080526100ca565b3390565b6000602082840312156100ad578081fd5b81516001600160a01b03811681146100c3578182fd5b9392505050565b60805160601c6114a46101226000398060b05280610263528061035052806103e65280610486528061051c528061059c5280610613528061073252806108e6528061097c5280610abb5280610c2252506114a46000f3fe6080604052600436106100a05760003560e01c80638da5cb5b116100645780638da5cb5b1461018b578063a3d5b255146101b6578063affa8817146101d6578063eed88b8d146101eb578063f2fde38b1461020b578063fd1495291461022b576100f8565b806302c5fcf814610110578063474cf53d1461012357806366514c9714610136578063715018a61461015657806380500d201461016b576100f8565b366100f857336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146100f65760405162461bcd60e51b81526004016100ed90611350565b60405180910390fd5b005b60405162461bcd60e51b81526004016100ed906112dc565b6100f661011e366004610fe3565b61024b565b6100f6610131366004610ef2565b610484565b34801561014257600080fd5b506100f661015136600461102c565b610578565b34801561016257600080fd5b506100f661068c565b34801561017757600080fd5b506100f6610186366004610fad565b61070b565b34801561019757600080fd5b506101a06109f5565b6040516101ad91906111dc565b60405180910390f35b3480156101c257600080fd5b506100f66101d1366004610f42565b610a04565b3480156101e257600080fd5b506101a0610ab9565b3480156101f757600080fd5b506100f6610206366004610f82565b610add565b34801561021757600080fd5b506100f6610226366004610ecf565b610b20565b34801561023757600080fd5b506100f6610246366004610ecf565b610bd6565b6000806102f483876001600160a01b03166335ea6a757f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161029e91906111dc565b6101806040518083038186803b1580156102b757600080fd5b505afa1580156102cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ef9190611090565b610cad565b90925090506000600185600281111561030957fe5b600281111561031457fe5b1461031f5781610321565b825b90508086101561032e5750845b8034101561034e5760405162461bcd60e51b81526004016100ed906113df565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156103a957600080fd5b505af11580156103bd573d6000803e3d6000fd5b505060405163573ade8160e01b81526001600160a01b038b16935063573ade81925061041491507f00000000000000000000000000000000000000000000000000000000000000009034908a908a9060040161127d565b602060405180830381600087803b15801561042e57600080fd5b505af1158015610442573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610466919061118b565b508034111561047b5761047b33823403610dbd565b50505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156104df57600080fd5b505af11580156104f3573d6000803e3d6000fd5b505060405163e8eda9df60e01b81526001600160a01b038716935063e8eda9df925061054a91507f000000000000000000000000000000000000000000000000000000000000000090349087908790600401611250565b600060405180830381600087803b15801561056457600080fd5b505af115801561047b573d6000803e3d6000fd5b60405163a415bcad60e01b81526001600160a01b0385169063a415bcad906105cc907f00000000000000000000000000000000000000000000000000000000000000009087908790879033906004016112a8565b600060405180830381600087803b1580156105e657600080fd5b505af11580156105fa573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250632e1a7d4d915061064a908690600401611426565b600060405180830381600087803b15801561066457600080fd5b505af1158015610678573d6000803e3d6000fd5b505050506106863384610dbd565b50505050565b610694610e4f565b6000546001600160a01b039081169116146106c15760405162461bcd60e51b81526004016100ed9061137d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6040516335ea6a7560e01b81526000906001600160a01b038516906335ea6a759061075a907f0000000000000000000000000000000000000000000000000000000000000000906004016111dc565b6101806040518083038186803b15801561077357600080fd5b505afa158015610787573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ab9190611090565b60e0015190506000816001600160a01b03166370a08231336040518263ffffffff1660e01b81526004016107df91906111dc565b60206040518083038186803b1580156107f757600080fd5b505afa15801561080b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082f919061118b565b90508360001981141561083f5750805b6040516323b872dd60e01b81526001600160a01b038416906323b872dd9061086f903390309086906004016111f0565b602060405180830381600087803b15801561088957600080fd5b505af115801561089d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c19190611070565b50604051631a4ca37b60e21b81526001600160a01b038716906369328dec90610912907f0000000000000000000000000000000000000000000000000000000000000000908590309060040161122d565b602060405180830381600087803b15801561092c57600080fd5b505af1158015610940573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610964919061118b565b50604051632e1a7d4d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d906109b1908490600401611426565b600060405180830381600087803b1580156109cb57600080fd5b505af11580156109df573d6000803e3d6000fd5b505050506109ed8482610dbd565b505050505050565b6000546001600160a01b031690565b610a0c610e4f565b6000546001600160a01b03908116911614610a395760405162461bcd60e51b81526004016100ed9061137d565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb90610a679085908590600401611214565b602060405180830381600087803b158015610a8157600080fd5b505af1158015610a95573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106869190611070565b7f000000000000000000000000000000000000000000000000000000000000000090565b610ae5610e4f565b6000546001600160a01b03908116911614610b125760405162461bcd60e51b81526004016100ed9061137d565b610b1c8282610dbd565b5050565b610b28610e4f565b6000546001600160a01b03908116911614610b555760405162461bcd60e51b81526004016100ed9061137d565b6001600160a01b038116610b7b5760405162461bcd60e51b81526004016100ed9061130a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610bde610e4f565b6000546001600160a01b03908116911614610c0b5760405162461bcd60e51b81526004016100ed9061137d565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b390610c5b90849060001990600401611214565b602060405180830381600087803b158015610c7557600080fd5b505af1158015610c89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1c9190611070565b6000808261010001516001600160a01b03166370a08231856040518263ffffffff1660e01b8152600401610ce191906111dc565b60206040518083038186803b158015610cf957600080fd5b505afa158015610d0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d31919061118b565b8361012001516001600160a01b03166370a08231866040518263ffffffff1660e01b8152600401610d6291906111dc565b60206040518083038186803b158015610d7a57600080fd5b505afa158015610d8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db2919061118b565b915091509250929050565b604080516000808252602082019092526001600160a01b038416908390604051610de791906111a3565b60006040518083038185875af1925050503d8060008114610e24576040519150601f19603f3d011682016040523d82523d6000602084013e610e29565b606091505b5050905080610e4a5760405162461bcd60e51b81526004016100ed906113b2565b505050565b3390565b8051610e5e81611456565b92915050565b600060208284031215610e75578081fd5b610e7f602061142f565b9151825250919050565b80516fffffffffffffffffffffffffffffffff81168114610e5e57600080fd5b805164ffffffffff81168114610e5e57600080fd5b805160ff81168114610e5e57600080fd5b600060208284031215610ee0578081fd5b8135610eeb81611456565b9392505050565b600080600060608486031215610f06578182fd5b8335610f1181611456565b92506020840135610f2181611456565b9150604084013561ffff81168114610f37578182fd5b809150509250925092565b600080600060608486031215610f56578283fd5b8335610f6181611456565b92506020840135610f7181611456565b929592945050506040919091013590565b60008060408385031215610f94578182fd5b8235610f9f81611456565b946020939093013593505050565b600080600060608486031215610fc1578283fd5b8335610fcc81611456565b9250602084013591506040840135610f3781611456565b60008060008060808587031215610ff8578081fd5b843561100381611456565b93506020850135925060408501359150606085013561102181611456565b939692955090935050565b60008060008060808587031215611041578384fd5b843561104c81611456565b93506020850135925060408501359150606085013561ffff81168114611021578182fd5b600060208284031215611081578081fd5b81518015158114610eeb578182fd5b60006101808083850312156110a3578182fd5b6110ac8161142f565b90506110b88484610e64565b81526110c78460208501610e89565b60208201526110d98460408501610e89565b60408201526110eb8460608501610e89565b60608201526110fd8460808501610e89565b608082015261110f8460a08501610e89565b60a08201526111218460c08501610ea9565b60c08201526111338460e08501610e53565b60e082015261010061114785828601610e53565b9082015261012061115a85858301610e53565b9082015261014061116d85858301610e53565b9082015261016061118085858301610ebe565b908201529392505050565b60006020828403121561119c578081fd5b5051919050565b60008251815b818110156111c357602081860181015185830152016111a9565b818111156111d15782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6001600160a01b03948516815260208101939093529216604082015261ffff909116606082015260800190565b6001600160a01b03948516815260208101939093526040830191909152909116606082015260800190565b6001600160a01b0395861681526020810194909452604084019290925261ffff166060830152909116608082015260a00190565b60208082526014908201527311985b1b189858dac81b9bdd08185b1b1bddd95960621b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b602080825260139082015272149958d95a5d99481b9bdd08185b1b1bddd959606a1b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526013908201527211551217d514905394d1915497d19052531151606a1b604082015260600190565b60208082526027908201527f6d73672e76616c7565206973206c657373207468616e2072657061796d656e7460408201526608185b5bdd5b9d60ca1b606082015260800190565b90815260200190565b60405181810167ffffffffffffffff8111828210171561144e57600080fd5b604052919050565b6001600160a01b038116811461146b57600080fd5b5056fea2646970667358221220249bd798fbf0398bf64ee9c19eaaa4e8663f8c3407e1660ae3754f4670f90d5164736f6c634300060c0033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x15C6 CODESIZE SUB DUP1 PUSH2 0x15C6 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x9C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39 PUSH2 0x98 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE PUSH2 0xCA JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAD JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xC3 JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH2 0x14A4 PUSH2 0x122 PUSH1 0x0 CODECOPY DUP1 PUSH1 0xB0 MSTORE DUP1 PUSH2 0x263 MSTORE DUP1 PUSH2 0x350 MSTORE DUP1 PUSH2 0x3E6 MSTORE DUP1 PUSH2 0x486 MSTORE DUP1 PUSH2 0x51C MSTORE DUP1 PUSH2 0x59C MSTORE DUP1 PUSH2 0x613 MSTORE DUP1 PUSH2 0x732 MSTORE DUP1 PUSH2 0x8E6 MSTORE DUP1 PUSH2 0x97C MSTORE DUP1 PUSH2 0xABB MSTORE DUP1 PUSH2 0xC22 MSTORE POP PUSH2 0x14A4 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA0 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x64 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0xA3D5B255 EQ PUSH2 0x1B6 JUMPI DUP1 PUSH4 0xAFFA8817 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0xEED88B8D EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0xFD149529 EQ PUSH2 0x22B JUMPI PUSH2 0xF8 JUMP JUMPDEST DUP1 PUSH4 0x2C5FCF8 EQ PUSH2 0x110 JUMPI DUP1 PUSH4 0x474CF53D EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0x66514C97 EQ PUSH2 0x136 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x80500D20 EQ PUSH2 0x16B JUMPI PUSH2 0xF8 JUMP JUMPDEST CALLDATASIZE PUSH2 0xF8 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0xF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED SWAP1 PUSH2 0x1350 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED SWAP1 PUSH2 0x12DC JUMP JUMPDEST PUSH2 0xF6 PUSH2 0x11E CALLDATASIZE PUSH1 0x4 PUSH2 0xFE3 JUMP JUMPDEST PUSH2 0x24B JUMP JUMPDEST PUSH2 0xF6 PUSH2 0x131 CALLDATASIZE PUSH1 0x4 PUSH2 0xEF2 JUMP JUMPDEST PUSH2 0x484 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF6 PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x102C JUMP JUMPDEST PUSH2 0x578 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF6 PUSH2 0x68C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF6 PUSH2 0x186 CALLDATASIZE PUSH1 0x4 PUSH2 0xFAD JUMP JUMPDEST PUSH2 0x70B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x197 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A0 PUSH2 0x9F5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AD SWAP2 SWAP1 PUSH2 0x11DC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF6 PUSH2 0x1D1 CALLDATASIZE PUSH1 0x4 PUSH2 0xF42 JUMP JUMPDEST PUSH2 0xA04 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A0 PUSH2 0xAB9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF6 PUSH2 0x206 CALLDATASIZE PUSH1 0x4 PUSH2 0xF82 JUMP JUMPDEST PUSH2 0xADD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF6 PUSH2 0x226 CALLDATASIZE PUSH1 0x4 PUSH2 0xECF JUMP JUMPDEST PUSH2 0xB20 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF6 PUSH2 0x246 CALLDATASIZE PUSH1 0x4 PUSH2 0xECF JUMP JUMPDEST PUSH2 0xBD6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2F4 DUP4 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x35EA6A75 PUSH32 0x0 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x29E SWAP2 SWAP1 PUSH2 0x11DC JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2CB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2EF SWAP2 SWAP1 PUSH2 0x1090 JUMP JUMPDEST PUSH2 0xCAD JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP6 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x309 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x314 JUMPI INVALID JUMPDEST EQ PUSH2 0x31F JUMPI DUP2 PUSH2 0x321 JUMP JUMPDEST DUP3 JUMPDEST SWAP1 POP DUP1 DUP7 LT ISZERO PUSH2 0x32E JUMPI POP DUP5 JUMPDEST DUP1 CALLVALUE LT ISZERO PUSH2 0x34E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED SWAP1 PUSH2 0x13DF JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3BD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH4 0x573ADE81 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP4 POP PUSH4 0x573ADE81 SWAP3 POP PUSH2 0x414 SWAP2 POP PUSH32 0x0 SWAP1 CALLVALUE SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x127D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x42E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x442 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x466 SWAP2 SWAP1 PUSH2 0x118B JUMP JUMPDEST POP DUP1 CALLVALUE GT ISZERO PUSH2 0x47B JUMPI PUSH2 0x47B CALLER DUP3 CALLVALUE SUB PUSH2 0xDBD JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 CALLVALUE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4F3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH4 0xE8EDA9DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP4 POP PUSH4 0xE8EDA9DF SWAP3 POP PUSH2 0x54A SWAP2 POP PUSH32 0x0 SWAP1 CALLVALUE SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1250 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x564 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x47B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA415BCAD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xA415BCAD SWAP1 PUSH2 0x5CC SWAP1 PUSH32 0x0 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x12A8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP3 POP PUSH4 0x2E1A7D4D SWAP2 POP PUSH2 0x64A SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1426 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x664 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x678 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x686 CALLER DUP5 PUSH2 0xDBD JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x694 PUSH2 0xE4F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x6C1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED SWAP1 PUSH2 0x137D JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x35EA6A75 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x35EA6A75 SWAP1 PUSH2 0x75A SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x11DC JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x773 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x787 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7AB SWAP2 SWAP1 PUSH2 0x1090 JUMP JUMPDEST PUSH1 0xE0 ADD MLOAD SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7DF SWAP2 SWAP1 PUSH2 0x11DC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x80B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x82F SWAP2 SWAP1 PUSH2 0x118B JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x0 NOT DUP2 EQ ISZERO PUSH2 0x83F JUMPI POP DUP1 JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x86F SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x11F0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x889 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x89D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8C1 SWAP2 SWAP1 PUSH2 0x1070 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH2 0x912 SWAP1 PUSH32 0x0 SWAP1 DUP6 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x122D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x92C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x940 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x964 SWAP2 SWAP1 PUSH2 0x118B JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x9B1 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1426 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x9ED DUP5 DUP3 PUSH2 0xDBD JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0xA0C PUSH2 0xE4F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xA39 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED SWAP1 PUSH2 0x137D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0xA67 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x1214 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA95 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x686 SWAP2 SWAP1 PUSH2 0x1070 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xAE5 PUSH2 0xE4F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xB12 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED SWAP1 PUSH2 0x137D JUMP JUMPDEST PUSH2 0xB1C DUP3 DUP3 PUSH2 0xDBD JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xB28 PUSH2 0xE4F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xB55 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED SWAP1 PUSH2 0x137D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xB7B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED SWAP1 PUSH2 0x130A JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xBDE PUSH2 0xE4F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xC0B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED SWAP1 PUSH2 0x137D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0xC5B SWAP1 DUP5 SWAP1 PUSH1 0x0 NOT SWAP1 PUSH1 0x4 ADD PUSH2 0x1214 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC89 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x1070 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x100 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCE1 SWAP2 SWAP1 PUSH2 0x11DC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD0D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD31 SWAP2 SWAP1 PUSH2 0x118B JUMP JUMPDEST DUP4 PUSH2 0x120 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD62 SWAP2 SWAP1 PUSH2 0x11DC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD8E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDB2 SWAP2 SWAP1 PUSH2 0x118B JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD PUSH2 0xDE7 SWAP2 SWAP1 PUSH2 0x11A3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xE24 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE29 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0xE4A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED SWAP1 PUSH2 0x13B2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xE5E DUP2 PUSH2 0x1456 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE75 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xE7F PUSH1 0x20 PUSH2 0x142F JUMP JUMPDEST SWAP2 MLOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xE5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xE5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xE5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEE0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEEB DUP2 PUSH2 0x1456 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xF06 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xF11 DUP2 PUSH2 0x1456 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xF21 DUP2 PUSH2 0x1456 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xF37 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xF56 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xF61 DUP2 PUSH2 0x1456 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xF71 DUP2 PUSH2 0x1456 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF94 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xF9F DUP2 PUSH2 0x1456 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xFC1 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xFCC DUP2 PUSH2 0x1456 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0xF37 DUP2 PUSH2 0x1456 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xFF8 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x1003 DUP2 PUSH2 0x1456 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x1021 DUP2 PUSH2 0x1456 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1041 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x104C DUP2 PUSH2 0x1456 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x1021 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1081 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xEEB JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10A3 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x10AC DUP2 PUSH2 0x142F JUMP JUMPDEST SWAP1 POP PUSH2 0x10B8 DUP5 DUP5 PUSH2 0xE64 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x10C7 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0xE89 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x10D9 DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0xE89 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x10EB DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0xE89 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x10FD DUP5 PUSH1 0x80 DUP6 ADD PUSH2 0xE89 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x110F DUP5 PUSH1 0xA0 DUP6 ADD PUSH2 0xE89 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x1121 DUP5 PUSH1 0xC0 DUP6 ADD PUSH2 0xEA9 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x1133 DUP5 PUSH1 0xE0 DUP6 ADD PUSH2 0xE53 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 PUSH2 0x1147 DUP6 DUP3 DUP7 ADD PUSH2 0xE53 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x120 PUSH2 0x115A DUP6 DUP6 DUP4 ADD PUSH2 0xE53 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x140 PUSH2 0x116D DUP6 DUP6 DUP4 ADD PUSH2 0xE53 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x160 PUSH2 0x1180 DUP6 DUP6 DUP4 ADD PUSH2 0xEBE JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x119C JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x11C3 JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x11A9 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x11D1 JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP3 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0xFFFF SWAP1 SWAP2 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP2 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x40 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0xFFFF AND PUSH1 0x60 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH20 0x11985B1B189858DAC81B9BDD08185B1B1BDDD959 PUSH1 0x62 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x40 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x149958D95A5D99481B9BDD08185B1B1BDDD959 PUSH1 0x6A SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x11551217D514905394D1915497D19052531151 PUSH1 0x6A SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x27 SWAP1 DUP3 ADD MSTORE PUSH32 0x6D73672E76616C7565206973206C657373207468616E2072657061796D656E74 PUSH1 0x40 DUP3 ADD MSTORE PUSH7 0x8185B5BDD5B9D PUSH1 0xCA SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x144E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x146B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x24 SWAP12 0xD7 SWAP9 0xFB CREATE CODECOPY DUP12 0xF6 0x4E 0xE9 0xC1 SWAP15 0xAA LOG4 0xE8 PUSH7 0x3F8C3407E1660A 0xE3 PUSH22 0x4F4670F90D5164736F6C634300060C00330000000000 ",
              "sourceMap": "793:6010:52:-:0;;;1186:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;844:17:11;864:12;:10;:12::i;:::-;882:6;:18;;-1:-1:-1;;;;;;882:18:11;-1:-1:-1;;;;;882:18:11;;;;;;;911:43;;882:18;;-1:-1:-1;882:18:11;911:43;;882:6;;911:43;-1:-1:-1;1225:18:52;;-1:-1:-1;;;;;;1225:18:52;;;793:6010;;587:98:7;670:10;587:98;:::o;146:263:-1:-;;261:2;249:9;240:7;236:23;232:32;229:2;;;-1:-1;;267:12;229:2;83:13;;-1:-1;;;;;576:54;;701:35;;691:2;;-1:-1;;740:12;691:2;319:74;223:186;-1:-1;;;223:186::o;:::-;793:6010:52;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "9022": [
                  {
                    "length": 32,
                    "start": 176
                  },
                  {
                    "length": 32,
                    "start": 611
                  },
                  {
                    "length": 32,
                    "start": 848
                  },
                  {
                    "length": 32,
                    "start": 998
                  },
                  {
                    "length": 32,
                    "start": 1158
                  },
                  {
                    "length": 32,
                    "start": 1308
                  },
                  {
                    "length": 32,
                    "start": 1436
                  },
                  {
                    "length": 32,
                    "start": 1555
                  },
                  {
                    "length": 32,
                    "start": 1842
                  },
                  {
                    "length": 32,
                    "start": 2278
                  },
                  {
                    "length": 32,
                    "start": 2428
                  },
                  {
                    "length": 32,
                    "start": 2747
                  },
                  {
                    "length": 32,
                    "start": 3106
                  }
                ]
              },
              "linkReferences": {},
              "object": "6080604052600436106100a05760003560e01c80638da5cb5b116100645780638da5cb5b1461018b578063a3d5b255146101b6578063affa8817146101d6578063eed88b8d146101eb578063f2fde38b1461020b578063fd1495291461022b576100f8565b806302c5fcf814610110578063474cf53d1461012357806366514c9714610136578063715018a61461015657806380500d201461016b576100f8565b366100f857336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146100f65760405162461bcd60e51b81526004016100ed90611350565b60405180910390fd5b005b60405162461bcd60e51b81526004016100ed906112dc565b6100f661011e366004610fe3565b61024b565b6100f6610131366004610ef2565b610484565b34801561014257600080fd5b506100f661015136600461102c565b610578565b34801561016257600080fd5b506100f661068c565b34801561017757600080fd5b506100f6610186366004610fad565b61070b565b34801561019757600080fd5b506101a06109f5565b6040516101ad91906111dc565b60405180910390f35b3480156101c257600080fd5b506100f66101d1366004610f42565b610a04565b3480156101e257600080fd5b506101a0610ab9565b3480156101f757600080fd5b506100f6610206366004610f82565b610add565b34801561021757600080fd5b506100f6610226366004610ecf565b610b20565b34801561023757600080fd5b506100f6610246366004610ecf565b610bd6565b6000806102f483876001600160a01b03166335ea6a757f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161029e91906111dc565b6101806040518083038186803b1580156102b757600080fd5b505afa1580156102cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ef9190611090565b610cad565b90925090506000600185600281111561030957fe5b600281111561031457fe5b1461031f5781610321565b825b90508086101561032e5750845b8034101561034e5760405162461bcd60e51b81526004016100ed906113df565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156103a957600080fd5b505af11580156103bd573d6000803e3d6000fd5b505060405163573ade8160e01b81526001600160a01b038b16935063573ade81925061041491507f00000000000000000000000000000000000000000000000000000000000000009034908a908a9060040161127d565b602060405180830381600087803b15801561042e57600080fd5b505af1158015610442573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610466919061118b565b508034111561047b5761047b33823403610dbd565b50505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156104df57600080fd5b505af11580156104f3573d6000803e3d6000fd5b505060405163e8eda9df60e01b81526001600160a01b038716935063e8eda9df925061054a91507f000000000000000000000000000000000000000000000000000000000000000090349087908790600401611250565b600060405180830381600087803b15801561056457600080fd5b505af115801561047b573d6000803e3d6000fd5b60405163a415bcad60e01b81526001600160a01b0385169063a415bcad906105cc907f00000000000000000000000000000000000000000000000000000000000000009087908790879033906004016112a8565b600060405180830381600087803b1580156105e657600080fd5b505af11580156105fa573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250632e1a7d4d915061064a908690600401611426565b600060405180830381600087803b15801561066457600080fd5b505af1158015610678573d6000803e3d6000fd5b505050506106863384610dbd565b50505050565b610694610e4f565b6000546001600160a01b039081169116146106c15760405162461bcd60e51b81526004016100ed9061137d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6040516335ea6a7560e01b81526000906001600160a01b038516906335ea6a759061075a907f0000000000000000000000000000000000000000000000000000000000000000906004016111dc565b6101806040518083038186803b15801561077357600080fd5b505afa158015610787573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ab9190611090565b60e0015190506000816001600160a01b03166370a08231336040518263ffffffff1660e01b81526004016107df91906111dc565b60206040518083038186803b1580156107f757600080fd5b505afa15801561080b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082f919061118b565b90508360001981141561083f5750805b6040516323b872dd60e01b81526001600160a01b038416906323b872dd9061086f903390309086906004016111f0565b602060405180830381600087803b15801561088957600080fd5b505af115801561089d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c19190611070565b50604051631a4ca37b60e21b81526001600160a01b038716906369328dec90610912907f0000000000000000000000000000000000000000000000000000000000000000908590309060040161122d565b602060405180830381600087803b15801561092c57600080fd5b505af1158015610940573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610964919061118b565b50604051632e1a7d4d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d906109b1908490600401611426565b600060405180830381600087803b1580156109cb57600080fd5b505af11580156109df573d6000803e3d6000fd5b505050506109ed8482610dbd565b505050505050565b6000546001600160a01b031690565b610a0c610e4f565b6000546001600160a01b03908116911614610a395760405162461bcd60e51b81526004016100ed9061137d565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb90610a679085908590600401611214565b602060405180830381600087803b158015610a8157600080fd5b505af1158015610a95573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106869190611070565b7f000000000000000000000000000000000000000000000000000000000000000090565b610ae5610e4f565b6000546001600160a01b03908116911614610b125760405162461bcd60e51b81526004016100ed9061137d565b610b1c8282610dbd565b5050565b610b28610e4f565b6000546001600160a01b03908116911614610b555760405162461bcd60e51b81526004016100ed9061137d565b6001600160a01b038116610b7b5760405162461bcd60e51b81526004016100ed9061130a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610bde610e4f565b6000546001600160a01b03908116911614610c0b5760405162461bcd60e51b81526004016100ed9061137d565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b390610c5b90849060001990600401611214565b602060405180830381600087803b158015610c7557600080fd5b505af1158015610c89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1c9190611070565b6000808261010001516001600160a01b03166370a08231856040518263ffffffff1660e01b8152600401610ce191906111dc565b60206040518083038186803b158015610cf957600080fd5b505afa158015610d0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d31919061118b565b8361012001516001600160a01b03166370a08231866040518263ffffffff1660e01b8152600401610d6291906111dc565b60206040518083038186803b158015610d7a57600080fd5b505afa158015610d8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db2919061118b565b915091509250929050565b604080516000808252602082019092526001600160a01b038416908390604051610de791906111a3565b60006040518083038185875af1925050503d8060008114610e24576040519150601f19603f3d011682016040523d82523d6000602084013e610e29565b606091505b5050905080610e4a5760405162461bcd60e51b81526004016100ed906113b2565b505050565b3390565b8051610e5e81611456565b92915050565b600060208284031215610e75578081fd5b610e7f602061142f565b9151825250919050565b80516fffffffffffffffffffffffffffffffff81168114610e5e57600080fd5b805164ffffffffff81168114610e5e57600080fd5b805160ff81168114610e5e57600080fd5b600060208284031215610ee0578081fd5b8135610eeb81611456565b9392505050565b600080600060608486031215610f06578182fd5b8335610f1181611456565b92506020840135610f2181611456565b9150604084013561ffff81168114610f37578182fd5b809150509250925092565b600080600060608486031215610f56578283fd5b8335610f6181611456565b92506020840135610f7181611456565b929592945050506040919091013590565b60008060408385031215610f94578182fd5b8235610f9f81611456565b946020939093013593505050565b600080600060608486031215610fc1578283fd5b8335610fcc81611456565b9250602084013591506040840135610f3781611456565b60008060008060808587031215610ff8578081fd5b843561100381611456565b93506020850135925060408501359150606085013561102181611456565b939692955090935050565b60008060008060808587031215611041578384fd5b843561104c81611456565b93506020850135925060408501359150606085013561ffff81168114611021578182fd5b600060208284031215611081578081fd5b81518015158114610eeb578182fd5b60006101808083850312156110a3578182fd5b6110ac8161142f565b90506110b88484610e64565b81526110c78460208501610e89565b60208201526110d98460408501610e89565b60408201526110eb8460608501610e89565b60608201526110fd8460808501610e89565b608082015261110f8460a08501610e89565b60a08201526111218460c08501610ea9565b60c08201526111338460e08501610e53565b60e082015261010061114785828601610e53565b9082015261012061115a85858301610e53565b9082015261014061116d85858301610e53565b9082015261016061118085858301610ebe565b908201529392505050565b60006020828403121561119c578081fd5b5051919050565b60008251815b818110156111c357602081860181015185830152016111a9565b818111156111d15782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6001600160a01b03948516815260208101939093529216604082015261ffff909116606082015260800190565b6001600160a01b03948516815260208101939093526040830191909152909116606082015260800190565b6001600160a01b0395861681526020810194909452604084019290925261ffff166060830152909116608082015260a00190565b60208082526014908201527311985b1b189858dac81b9bdd08185b1b1bddd95960621b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b602080825260139082015272149958d95a5d99481b9bdd08185b1b1bddd959606a1b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526013908201527211551217d514905394d1915497d19052531151606a1b604082015260600190565b60208082526027908201527f6d73672e76616c7565206973206c657373207468616e2072657061796d656e7460408201526608185b5bdd5b9d60ca1b606082015260800190565b90815260200190565b60405181810167ffffffffffffffff8111828210171561144e57600080fd5b604052919050565b6001600160a01b038116811461146b57600080fd5b5056fea2646970667358221220249bd798fbf0398bf64ee9c19eaaa4e8663f8c3407e1660ae3754f4670f90d5164736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA0 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x64 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0xA3D5B255 EQ PUSH2 0x1B6 JUMPI DUP1 PUSH4 0xAFFA8817 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0xEED88B8D EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0xFD149529 EQ PUSH2 0x22B JUMPI PUSH2 0xF8 JUMP JUMPDEST DUP1 PUSH4 0x2C5FCF8 EQ PUSH2 0x110 JUMPI DUP1 PUSH4 0x474CF53D EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0x66514C97 EQ PUSH2 0x136 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x80500D20 EQ PUSH2 0x16B JUMPI PUSH2 0xF8 JUMP JUMPDEST CALLDATASIZE PUSH2 0xF8 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0xF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED SWAP1 PUSH2 0x1350 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED SWAP1 PUSH2 0x12DC JUMP JUMPDEST PUSH2 0xF6 PUSH2 0x11E CALLDATASIZE PUSH1 0x4 PUSH2 0xFE3 JUMP JUMPDEST PUSH2 0x24B JUMP JUMPDEST PUSH2 0xF6 PUSH2 0x131 CALLDATASIZE PUSH1 0x4 PUSH2 0xEF2 JUMP JUMPDEST PUSH2 0x484 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF6 PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x102C JUMP JUMPDEST PUSH2 0x578 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF6 PUSH2 0x68C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF6 PUSH2 0x186 CALLDATASIZE PUSH1 0x4 PUSH2 0xFAD JUMP JUMPDEST PUSH2 0x70B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x197 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A0 PUSH2 0x9F5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AD SWAP2 SWAP1 PUSH2 0x11DC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF6 PUSH2 0x1D1 CALLDATASIZE PUSH1 0x4 PUSH2 0xF42 JUMP JUMPDEST PUSH2 0xA04 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A0 PUSH2 0xAB9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF6 PUSH2 0x206 CALLDATASIZE PUSH1 0x4 PUSH2 0xF82 JUMP JUMPDEST PUSH2 0xADD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF6 PUSH2 0x226 CALLDATASIZE PUSH1 0x4 PUSH2 0xECF JUMP JUMPDEST PUSH2 0xB20 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF6 PUSH2 0x246 CALLDATASIZE PUSH1 0x4 PUSH2 0xECF JUMP JUMPDEST PUSH2 0xBD6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2F4 DUP4 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x35EA6A75 PUSH32 0x0 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x29E SWAP2 SWAP1 PUSH2 0x11DC JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2CB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2EF SWAP2 SWAP1 PUSH2 0x1090 JUMP JUMPDEST PUSH2 0xCAD JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP6 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x309 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x314 JUMPI INVALID JUMPDEST EQ PUSH2 0x31F JUMPI DUP2 PUSH2 0x321 JUMP JUMPDEST DUP3 JUMPDEST SWAP1 POP DUP1 DUP7 LT ISZERO PUSH2 0x32E JUMPI POP DUP5 JUMPDEST DUP1 CALLVALUE LT ISZERO PUSH2 0x34E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED SWAP1 PUSH2 0x13DF JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3BD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH4 0x573ADE81 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP4 POP PUSH4 0x573ADE81 SWAP3 POP PUSH2 0x414 SWAP2 POP PUSH32 0x0 SWAP1 CALLVALUE SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x127D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x42E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x442 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x466 SWAP2 SWAP1 PUSH2 0x118B JUMP JUMPDEST POP DUP1 CALLVALUE GT ISZERO PUSH2 0x47B JUMPI PUSH2 0x47B CALLER DUP3 CALLVALUE SUB PUSH2 0xDBD JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 CALLVALUE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4F3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH4 0xE8EDA9DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP4 POP PUSH4 0xE8EDA9DF SWAP3 POP PUSH2 0x54A SWAP2 POP PUSH32 0x0 SWAP1 CALLVALUE SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1250 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x564 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x47B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA415BCAD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xA415BCAD SWAP1 PUSH2 0x5CC SWAP1 PUSH32 0x0 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x12A8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP3 POP PUSH4 0x2E1A7D4D SWAP2 POP PUSH2 0x64A SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1426 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x664 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x678 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x686 CALLER DUP5 PUSH2 0xDBD JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x694 PUSH2 0xE4F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x6C1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED SWAP1 PUSH2 0x137D JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x35EA6A75 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x35EA6A75 SWAP1 PUSH2 0x75A SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x11DC JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x773 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x787 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7AB SWAP2 SWAP1 PUSH2 0x1090 JUMP JUMPDEST PUSH1 0xE0 ADD MLOAD SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7DF SWAP2 SWAP1 PUSH2 0x11DC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x80B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x82F SWAP2 SWAP1 PUSH2 0x118B JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x0 NOT DUP2 EQ ISZERO PUSH2 0x83F JUMPI POP DUP1 JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x86F SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x11F0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x889 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x89D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8C1 SWAP2 SWAP1 PUSH2 0x1070 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH2 0x912 SWAP1 PUSH32 0x0 SWAP1 DUP6 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x122D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x92C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x940 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x964 SWAP2 SWAP1 PUSH2 0x118B JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x9B1 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1426 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x9ED DUP5 DUP3 PUSH2 0xDBD JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0xA0C PUSH2 0xE4F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xA39 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED SWAP1 PUSH2 0x137D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0xA67 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x1214 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA95 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x686 SWAP2 SWAP1 PUSH2 0x1070 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xAE5 PUSH2 0xE4F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xB12 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED SWAP1 PUSH2 0x137D JUMP JUMPDEST PUSH2 0xB1C DUP3 DUP3 PUSH2 0xDBD JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xB28 PUSH2 0xE4F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xB55 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED SWAP1 PUSH2 0x137D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xB7B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED SWAP1 PUSH2 0x130A JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xBDE PUSH2 0xE4F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xC0B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED SWAP1 PUSH2 0x137D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0xC5B SWAP1 DUP5 SWAP1 PUSH1 0x0 NOT SWAP1 PUSH1 0x4 ADD PUSH2 0x1214 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC89 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x1070 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x100 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCE1 SWAP2 SWAP1 PUSH2 0x11DC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD0D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD31 SWAP2 SWAP1 PUSH2 0x118B JUMP JUMPDEST DUP4 PUSH2 0x120 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD62 SWAP2 SWAP1 PUSH2 0x11DC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD8E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDB2 SWAP2 SWAP1 PUSH2 0x118B JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD PUSH2 0xDE7 SWAP2 SWAP1 PUSH2 0x11A3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xE24 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE29 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0xE4A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xED SWAP1 PUSH2 0x13B2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xE5E DUP2 PUSH2 0x1456 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE75 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xE7F PUSH1 0x20 PUSH2 0x142F JUMP JUMPDEST SWAP2 MLOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xE5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xE5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xE5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEE0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEEB DUP2 PUSH2 0x1456 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xF06 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xF11 DUP2 PUSH2 0x1456 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xF21 DUP2 PUSH2 0x1456 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xF37 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xF56 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xF61 DUP2 PUSH2 0x1456 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xF71 DUP2 PUSH2 0x1456 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF94 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xF9F DUP2 PUSH2 0x1456 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xFC1 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xFCC DUP2 PUSH2 0x1456 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0xF37 DUP2 PUSH2 0x1456 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xFF8 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x1003 DUP2 PUSH2 0x1456 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x1021 DUP2 PUSH2 0x1456 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1041 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x104C DUP2 PUSH2 0x1456 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x1021 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1081 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xEEB JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10A3 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x10AC DUP2 PUSH2 0x142F JUMP JUMPDEST SWAP1 POP PUSH2 0x10B8 DUP5 DUP5 PUSH2 0xE64 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x10C7 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0xE89 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x10D9 DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0xE89 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x10EB DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0xE89 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x10FD DUP5 PUSH1 0x80 DUP6 ADD PUSH2 0xE89 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x110F DUP5 PUSH1 0xA0 DUP6 ADD PUSH2 0xE89 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x1121 DUP5 PUSH1 0xC0 DUP6 ADD PUSH2 0xEA9 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x1133 DUP5 PUSH1 0xE0 DUP6 ADD PUSH2 0xE53 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 PUSH2 0x1147 DUP6 DUP3 DUP7 ADD PUSH2 0xE53 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x120 PUSH2 0x115A DUP6 DUP6 DUP4 ADD PUSH2 0xE53 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x140 PUSH2 0x116D DUP6 DUP6 DUP4 ADD PUSH2 0xE53 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x160 PUSH2 0x1180 DUP6 DUP6 DUP4 ADD PUSH2 0xEBE JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x119C JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x11C3 JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x11A9 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x11D1 JUMPI DUP3 DUP3 DUP6 ADD MSTORE JUMPDEST POP SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP3 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0xFFFF SWAP1 SWAP2 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP2 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x40 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0xFFFF AND PUSH1 0x60 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH20 0x11985B1B189858DAC81B9BDD08185B1B1BDDD959 PUSH1 0x62 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x40 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x149958D95A5D99481B9BDD08185B1B1BDDD959 PUSH1 0x6A SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH19 0x11551217D514905394D1915497D19052531151 PUSH1 0x6A SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x27 SWAP1 DUP3 ADD MSTORE PUSH32 0x6D73672E76616C7565206973206C657373207468616E2072657061796D656E74 PUSH1 0x40 DUP3 ADD MSTORE PUSH7 0x8185B5BDD5B9D PUSH1 0xCA SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x144E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x146B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x24 SWAP12 0xD7 SWAP9 0xFB CREATE CODECOPY DUP12 0xF6 0x4E 0xE9 0xC1 SWAP15 0xAA LOG4 0xE8 PUSH7 0x3F8C3407E1660A 0xE3 PUSH22 0x4F4670F90D5164736F6C634300060C00330000000000 ",
              "sourceMap": "793:6010:52:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6628:10;-1:-1:-1;;;;;6650:4:52;6628:27;;6620:59;;;;-1:-1:-1;;;6620:59:52;;;;;;;:::i;:::-;;;;;;;;;793:6010;;6766:30;;-1:-1:-1;;;6766:30:52;;;;;;;:::i;3446:888::-;;;;;;:::i;:::-;;:::i;1792:258::-;;;;;;:::i;:::-;;:::i;4783:354::-;;;;;;;;;;-1:-1:-1;4783:354:52;;;;;:::i;:::-;;:::i;1610:135:11:-;;;;;;;;;;;;;:::i;2325:700:52:-;;;;;;;;;;-1:-1:-1;2325:700:52;;;;;:::i;:::-;;:::i;1027:71:11:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5734:155:52;;;;;;;;;;-1:-1:-1;5734:155:52;;;;;:::i;:::-;;:::i;6364:89::-;;;;;;;;;;;;;:::i;6183:118::-;;;;;;;;;;-1:-1:-1;6183:118:52;;;;;:::i;:::-;;:::i;1884:226:11:-;;;;;;;;;;-1:-1:-1;1884:226:11;;;;;:::i;:::-;;:::i;1252:119:52:-;;;;;;;;;;-1:-1:-1;1252:119:52;;;;;:::i;:::-;;:::i;3446:888::-;3592:18;3612:20;3642:125;3684:10;3717:11;-1:-1:-1;;;;;3704:40:52;;3753:4;3704:55;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3642:32;:125::i;:::-;3591:176;;-1:-1:-1;3591:176:52;-1:-1:-1;3774:21:52;3844:33;3831:8;3804:36;;;;;;;;:73;;;;;;;;;:117;;3909:12;3804:117;;;3888:10;3804:117;3774:147;;3941:13;3932:6;:22;3928:65;;;-1:-1:-1;3980:6:52;3928:65;4019:13;4006:9;:26;;3998:78;;;;-1:-1:-1;;;3998:78:52;;;;;;;:::i;:::-;4082:4;-1:-1:-1;;;;;4082:12:52;;4102:13;4082:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4124:79:52;;-1:-1:-1;;;4124:79:52;;-1:-1:-1;;;;;4124:31:52;;;-1:-1:-1;4124:31:52;;-1:-1:-1;4124:79:52;;-1:-1:-1;4164:4:52;;4171:9;;4182:8;;4192:10;;4124:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4259:13;4247:9;:25;4243:86;;;4274:55;4291:10;4315:13;4303:9;:25;4274:16;:55::i;:::-;3446:888;;;;;;;:::o;1792:258::-;1922:4;-1:-1:-1;;;;;1922:12:52;;1942:9;1922:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1960:85:52;;-1:-1:-1;;;1960:85:52;;-1:-1:-1;;;;;1960:33:52;;;-1:-1:-1;1960:33:52;;-1:-1:-1;1960:85:52;;-1:-1:-1;2002:4:52;;2009:9;;2020:10;;2032:12;;1960:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4783:354;4929:134;;-1:-1:-1;;;4929:134:52;;-1:-1:-1;;;;;4929:32:52;;;;;:134;;4977:4;;4990:6;;5004:15;;5027:12;;5047:10;;4929:134;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5069:21:52;;-1:-1:-1;;;5069:21:52;;-1:-1:-1;;;;;5069:4:52;:13;;-1:-1:-1;5069:13:52;;-1:-1:-1;5069:21:52;;5083:6;;5069:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5096:36;5113:10;5125:6;5096:16;:36::i;:::-;4783:354;;;;:::o;1610:135:11:-;1223:12;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;-1:-1:-1;;;1205:67:11;;;;;;;:::i;:::-;1712:1:::1;1696:6:::0;;1675:40:::1;::::0;-1:-1:-1;;;;;1696:6:11;;::::1;::::0;1675:40:::1;::::0;1712:1;;1675:40:::1;1738:1;1721:19:::0;;-1:-1:-1;;;;;;1721:19:11::1;::::0;;1610:135::o;2325:700:52:-;2459:55;;-1:-1:-1;;;2459:55:52;;2435:13;;-1:-1:-1;;;;;2459:40:52;;;;;:55;;2508:4;;2459:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:69;;;2435:94;;2535:19;2557:5;-1:-1:-1;;;;;2557:15:52;;2573:10;2557:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2535:49;-1:-1:-1;2617:6:52;-1:-1:-1;;2709:27:52;;2705:78;;;-1:-1:-1;2765:11:52;2705:78;2788:63;;-1:-1:-1;;;2788:63:52;;-1:-1:-1;;;;;2788:18:52;;;;;:63;;2807:10;;2827:4;;2834:16;;2788:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2857:82:52;;-1:-1:-1;;;2857:82:52;;-1:-1:-1;;;;;2857:34:52;;;;;:82;;2900:4;;2907:16;;2933:4;;2857:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2945:31:52;;-1:-1:-1;;;2945:31:52;;-1:-1:-1;;;;;2945:4:52;:13;;;;:31;;2959:16;;2945:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2982:38;2999:2;3003:16;2982;:38::i;:::-;2325:700;;;;;;:::o;1027:71:11:-;1065:7;1087:6;-1:-1:-1;;;;;1087:6:11;1027:71;:::o;5734:155:52:-;1223:12:11;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;-1:-1:-1;;;1205:67:11;;;;;;;:::i;:::-;5850:34:52::1;::::0;-1:-1:-1;;;5850:34:52;;-1:-1:-1;;;;;5850:22:52;::::1;::::0;::::1;::::0;:34:::1;::::0;5873:2;;5877:6;;5850:34:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6364:89::-:0;6443:4;6364:89;:::o;6183:118::-;1223:12:11;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;-1:-1:-1;;;1205:67:11;;;;;;;:::i;:::-;6268:28:52::1;6285:2;6289:6;6268:16;:28::i;:::-;6183:118:::0;;:::o;1884:226:11:-;1223:12;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;-1:-1:-1;;;1205:67:11;;;;;;;:::i;:::-;-1:-1:-1;;;;;1968:22:11;::::1;1960:73;;;;-1:-1:-1::0;;;1960:73:11::1;;;;;;;:::i;:::-;2065:6;::::0;;2044:38:::1;::::0;-1:-1:-1;;;;;2044:38:11;;::::1;::::0;2065:6;::::1;::::0;2044:38:::1;::::0;::::1;2088:6;:17:::0;;-1:-1:-1;;;;;;2088:17:11::1;-1:-1:-1::0;;;;;2088:17:11;;;::::1;::::0;;;::::1;::::0;;1884:226::o;1252:119:52:-;1223:12:11;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;-1:-1:-1;;;1205:67:11;;;;;;;:::i;:::-;1328:38:52::1;::::0;-1:-1:-1;;;1328:38:52;;-1:-1:-1;;;;;1328:4:52::1;:12;::::0;::::1;::::0;:38:::1;::::0;1341:11;;-1:-1:-1;;1362:2:52;1328:38:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;763:291:78:-:0;884:7;893;932;:30;;;-1:-1:-1;;;;;925:48:78;;974:4;925:54;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;994:7;:32;;;-1:-1:-1;;;;;987:50:78;;1038:4;987:56;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;910:139;;;;763:291;;;;;:::o;5289:172:52:-;5398:12;;;5358;5398;;;;;;;;;-1:-1:-1;;;;;5376:7:52;;;5391:5;;5376:35;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5357:54;;;5425:7;5417:39;;;;-1:-1:-1;;;5417:39:52;;;;;;;:::i;:::-;5289:172;;;:::o;587:98:7:-;670:10;587:98;:::o;142:134:-1:-;220:13;;238:33;220:13;238:33;:::i;:::-;205:71;;;;:::o;465:362::-;;607:4;595:9;590:3;586:19;582:30;579:2;;;-1:-1;;615:12;579:2;643:20;607:4;643:20;:::i;:::-;3654:13;;720:86;;-1:-1;634:29;573:254;-1:-1;573:254::o;3163:134::-;3241:13;;18778:34;18767:46;;20265:35;;20255:2;;20314:1;;20304:12;3717:132;3794:13;;19195:12;19184:24;;20634:34;;20624:2;;20682:1;;20672:12;3856:130;3932:13;;19291:4;19280:16;;20755:33;;20745:2;;20802:1;;20792:12;3993:241;;4097:2;4085:9;4076:7;4072:23;4068:32;4065:2;;;-1:-1;;4103:12;4065:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;4155:63;4059:175;-1:-1;;;4059:175::o;4241:489::-;;;;4378:2;4366:9;4357:7;4353:23;4349:32;4346:2;;;-1:-1;;4384:12;4346:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;4436:63;-1:-1;4536:2;4575:22;;72:20;97:33;72:20;97:33;:::i;:::-;4544:63;-1:-1;4644:2;4682:22;;3370:20;18897:6;18886:18;;20388:34;;20378:2;;-1:-1;;20426:12;20378:2;4652:62;;;;4340:390;;;;;:::o;4737:491::-;;;;4875:2;4863:9;4854:7;4850:23;4846:32;4843:2;;;-1:-1;;4881:12;4843:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;4933:63;-1:-1;5033:2;5072:22;;72:20;97:33;72:20;97:33;:::i;:::-;4837:391;;5041:63;;-1:-1;;;5141:2;5180:22;;;;3506:20;;4837:391::o;5235:366::-;;;5356:2;5344:9;5335:7;5331:23;5327:32;5324:2;;;-1:-1;;5362:12;5324:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;5414:63;5514:2;5553:22;;;;3506:20;;-1:-1;;;5318:283::o;5608:491::-;;;;5746:2;5734:9;5725:7;5721:23;5717:32;5714:2;;;-1:-1;;5752:12;5714:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;5804:63;-1:-1;5904:2;5943:22;;3506:20;;-1:-1;6012:2;6051:22;;72:20;97:33;72:20;97:33;:::i;6106:617::-;;;;;6261:3;6249:9;6240:7;6236:23;6232:33;6229:2;;;-1:-1;;6268:12;6229:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;6320:63;-1:-1;6420:2;6459:22;;3506:20;;-1:-1;6528:2;6567:22;;3506:20;;-1:-1;6636:2;6675:22;;72:20;97:33;72:20;97:33;:::i;:::-;6223:500;;;;-1:-1;6223:500;;-1:-1;;6223:500::o;6730:615::-;;;;;6884:3;6872:9;6863:7;6859:23;6855:33;6852:2;;;-1:-1;;6891:12;6852:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;6943:63;-1:-1;7043:2;7082:22;;3506:20;;-1:-1;7151:2;7190:22;;3506:20;;-1:-1;7259:2;7297:22;;3370:20;18897:6;18886:18;;20388:34;;20378:2;;-1:-1;;20426:12;7352:257;;7464:2;7452:9;7443:7;7439:23;7435:32;7432:2;;;-1:-1;;7470:12;7432:2;364:6;358:13;20169:5;18679:13;18672:21;20147:5;20144:32;20134:2;;-1:-1;;20180:12;7616:324;;7761:3;;7749:9;7740:7;7736:23;7732:33;7729:2;;;-1:-1;;7768:12;7729:2;1037:22;7761:3;1037:22;:::i;:::-;1028:31;;1150:102;1248:3;1224:22;1150:102;:::i;:::-;1132:16;1125:128;1357:60;1413:3;1324:2;1393:9;1389:22;1357:60;:::i;:::-;1324:2;1343:5;1339:16;1332:86;1527:60;1583:3;1494:2;1563:9;1559:22;1527:60;:::i;:::-;1494:2;1513:5;1509:16;1502:86;1698:60;1754:3;1665:2;1734:9;1730:22;1698:60;:::i;:::-;1665:2;1684:5;1680:16;1673:86;1875:60;1931:3;1841;1911:9;1907:22;1875:60;:::i;:::-;1841:3;1861:5;1857:16;1850:86;2050:60;2106:3;2016;2086:9;2082:22;2050:60;:::i;:::-;2016:3;2036:5;2032:16;2025:86;2221:59;2276:3;2187;2256:9;2252:22;2221:59;:::i;:::-;2187:3;2207:5;2203:16;2196:85;2385:60;2441:3;2351;2421:9;2417:22;2385:60;:::i;:::-;2351:3;2371:5;2367:16;2360:86;2525:3;2561:60;2617:3;2525;2597:9;2593:22;2561:60;:::i;:::-;2541:18;;;2534:88;2703:3;2739:60;2795:3;2771:22;;;2739:60;:::i;:::-;2719:18;;;2712:88;2884:3;2920:60;2976:3;2952:22;;;2920:60;:::i;:::-;2900:18;;;2893:88;3040:3;3076:58;3130:3;3106:22;;;3076:58;:::i;:::-;3056:18;;;3049:86;3060:5;7723:217;-1:-1;;;7723:217::o;7947:263::-;;8062:2;8050:9;8041:7;8037:23;8033:32;8030:2;;;-1:-1;;8068:12;8030:2;-1:-1;3654:13;;8024:186;-1:-1;8024:186::o;11181:271::-;;8646:5;18149:12;-1:-1;19760:101;19774:6;19771:1;19768:13;19760:101;;;8790:4;19841:11;;;;;19835:18;19822:11;;;19815:39;19789:10;19760:101;;;19876:6;19873:1;19870:13;19867:2;;;-1:-1;19932:6;19927:3;19923:16;19916:27;19867:2;-1:-1;8821:16;;;;;11315:137;-1:-1;;11315:137::o;11459:222::-;-1:-1;;;;;18978:54;;;;8437:37;;11586:2;11571:18;;11557:124::o;11933:476::-;-1:-1;;;;;18978:54;;;8296:58;;18978:54;;;;12312:2;12297:18;;8296:58;12395:2;12380:18;;11132:37;;;;12132:2;12117:18;;12103:306::o;12416:333::-;-1:-1;;;;;18978:54;;;;8437:37;;12735:2;12720:18;;11132:37;12571:2;12556:18;;12542:207::o;12756:460::-;-1:-1;;;;;18978:54;;;8437:37;;13111:2;13096:18;;11132:37;;;;18978:54;;;13202:2;13187:18;;8296:58;12947:2;12932:18;;12918:298::o;13223:552::-;-1:-1;;;;;18978:54;;;8437:37;;13597:2;13582:18;;11132:37;;;;18978:54;;13680:2;13665:18;;8437:37;18897:6;18886:18;;;13761:2;13746:18;;11013:36;13432:3;13417:19;;13403:372::o;13782:556::-;-1:-1;;;;;18978:54;;;8437:37;;14158:2;14143:18;;11132:37;;;;14241:2;14226:18;;11132:37;;;;18978:54;;;14324:2;14309:18;;8437:37;13993:3;13978:19;;13964:374::o;14345:680::-;-1:-1;;;;;18978:54;;;8437:37;;14755:2;14740:18;;11132:37;;;;14838:2;14823:18;;11132:37;;;;18897:6;18886:18;14919:2;14904:18;;11013:36;18978:54;;;15010:3;14995:19;;8296:58;14590:3;14575:19;;14561:464::o;15032:416::-;15232:2;15246:47;;;9074:2;15217:18;;;18447:19;-1:-1;;;18487:14;;;9090:43;9152:12;;;15203:245::o;15455:416::-;15655:2;15669:47;;;9403:2;15640:18;;;18447:19;9439:34;18487:14;;;9419:55;-1:-1;;;9494:12;;;9487:30;9536:12;;;15626:245::o;15878:416::-;16078:2;16092:47;;;9787:2;16063:18;;;18447:19;-1:-1;;;18487:14;;;9803:42;9864:12;;;16049:245::o;16301:416::-;16501:2;16515:47;;;16486:18;;;18447:19;10151:34;18487:14;;;10131:55;10205:12;;;16472:245::o;16724:416::-;16924:2;16938:47;;;10456:2;16909:18;;;18447:19;-1:-1;;;18487:14;;;10472:42;10533:12;;;16895:245::o;17147:416::-;17347:2;17361:47;;;10784:2;17332:18;;;18447:19;10820:34;18487:14;;;10800:55;-1:-1;;;10875:12;;;10868:31;10918:12;;;17318:245::o;17570:222::-;11132:37;;;17697:2;17682:18;;17668:124::o;17799:256::-;17861:2;17855:9;17887:17;;;17962:18;17947:34;;17983:22;;;17944:62;17941:2;;;18019:1;;18009:12;17941:2;17861;18028:22;17839:216;;-1:-1;17839:216::o;19964:117::-;-1:-1;;;;;18978:54;;20023:35;;20013:2;;20072:1;;20062:12;20013:2;20007:74;:::o"
            },
            "methodIdentifiers": {
              "authorizeLendingPool(address)": "fd149529",
              "borrowETH(address,uint256,uint256,uint16)": "66514c97",
              "depositETH(address,address,uint16)": "474cf53d",
              "emergencyEtherTransfer(address,uint256)": "eed88b8d",
              "emergencyTokenTransfer(address,address,uint256)": "a3d5b255",
              "getWETHAddress()": "affa8817",
              "owner()": "8da5cb5b",
              "renounceOwnership()": "715018a6",
              "repayETH(address,uint256,uint256,address)": "02c5fcf8",
              "transferOwnership(address)": "f2fde38b",
              "withdrawETH(address,uint256,address)": "80500d20"
            }
          }
        }
      },
      "contracts/misc/WalletBalanceProvider.sol": {
        "WalletBalanceProvider": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "users",
                  "type": "address[]"
                },
                {
                  "internalType": "address[]",
                  "name": "tokens",
                  "type": "address[]"
                }
              ],
              "name": "batchBalanceOf",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "provider",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getUserWalletBalances",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "stateMutability": "payable",
              "type": "receive"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50610a63806100206000396000f3fe6080604052600436106100385760003560e01c80630240534314610072578063b59b28ef146100a9578063f7888aec146100d65761006d565b3661006d5761004633610103565b61006b5760405162461bcd60e51b8152600401610062906109c9565b60405180910390fd5b005b600080fd5b34801561007e57600080fd5b5061009261008d366004610758565b61013f565b6040516100a092919061092f565b60405180910390f35b3480156100b557600080fd5b506100c96100c4366004610790565b6104b1565b6040516100a0919061098f565b3480156100e257600080fd5b506100f66100f1366004610758565b61058d565b6040516100a091906109e5565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061013757508115155b949350505050565b6060806000846001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561017d57600080fd5b505afa158015610191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101b5919061073c565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b1580156101f257600080fd5b505afa158015610206573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261022e91908101906107f9565b90506060815160010167ffffffffffffffff8111801561024d57600080fd5b50604051908082528060200260200182016040528015610277578160200160208202803683370190505b50905060005b82518110156102c65782818151811061029257fe5b60200260200101518282815181106102a657fe5b6001600160a01b039092166020928302919091019091015260010161027d565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee818351815181106102e957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506060815167ffffffffffffffff8111801561032357600080fd5b5060405190808252806020026020018201604052801561034d578160200160208202803683370190505b50905060005b835181101561046b576103646106b9565b856001600160a01b031663c44b11f785848151811061037f57fe5b60200260200101516040518263ffffffff1660e01b81526004016103a3919061091b565b60206040518083038186803b1580156103bb57600080fd5b505afa1580156103cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f391906108a4565b905060006104008261067d565b50505090508061042b57600084848151811061041857fe5b6020026020010181815250505050610463565b6104488a86858151811061043b57fe5b602002602001015161058d565b84848151811061045457fe5b60200260200101818152505050505b600101610353565b5061048a8773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61058d565b8184518151811061049757fe5b6020908102919091010152909450925050505b9250929050565b60608084830267ffffffffffffffff811180156104cd57600080fd5b506040519080825280602002602001820160405280156104f7578160200160208202803683370190505b50905060005b858110156105835760005b8481101561057a5761055588888481811061051f57fe5b90506020020160208101906105349190610719565b87878481811061054057fe5b90506020020160208101906100f19190610719565b83518490848802840190811061056757fe5b6020908102919091010152600101610508565b506001016104fd565b5095945050505050565b60006001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156105c557506001600160a01b03821631610677565b6105d7826001600160a01b0316610103565b1561065f576040516370a0823160e01b81526001600160a01b038316906370a082319061060890869060040161091b565b60206040518083038186803b15801561062057600080fd5b505afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065891906108c9565b9050610677565b60405162461bcd60e51b8152600401610062906109a2565b92915050565b51670100000000000000811615159167020000000000000082161515916704000000000000008116151591670800000000000000909116151590565b6040518060200160405280600081525090565b805161067781610a15565b60008083601f8401126106e8578182fd5b50813567ffffffffffffffff8111156106ff578182fd5b60208301915083602080830285010111156104aa57600080fd5b60006020828403121561072a578081fd5b813561073581610a15565b9392505050565b60006020828403121561074d578081fd5b815161073581610a15565b6000806040838503121561076a578081fd5b823561077581610a15565b9150602083013561078581610a15565b809150509250929050565b600080600080604085870312156107a5578182fd5b843567ffffffffffffffff808211156107bc578384fd5b6107c8888389016106d7565b909650945060208701359150808211156107e0578384fd5b506107ed878288016106d7565b95989497509550505050565b6000602080838503121561080b578182fd5b825167ffffffffffffffff80821115610822578384fd5b818501915085601f830112610835578384fd5b815181811115610843578485fd5b83810291506108538483016109ee565b8181528481019084860184860187018a101561086d578788fd5b8795505b83861015610897576108838a826106cc565b835260019590950194918601918601610871565b5098975050505050505050565b6000602082840312156108b5578081fd5b6108bf60206109ee565b9151825250919050565b6000602082840312156108da578081fd5b5051919050565b6000815180845260208085019450808401835b83811015610910578151875295820195908201906001016108f4565b509495945050505050565b6001600160a01b0391909116815260200190565b604080825283519082018190526000906020906060840190828701845b828110156109715781516001600160a01b03168452928401929084019060010161094c565b5050508381038285015261098581866108e1565b9695505050505050565b60006020825261073560208301846108e1565b6020808252600d908201526c24a72b20a624a22faa27a5a2a760991b604082015260600190565b602080825260029082015261191960f11b604082015260600190565b90815260200190565b60405181810167ffffffffffffffff81118282101715610a0d57600080fd5b604052919050565b6001600160a01b0381168114610a2a57600080fd5b5056fea26469706673582212207ae67703d49267c117fb5657d5acf71315b42fa382a2989a68cd98ccc5351bc964736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA63 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x38 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2405343 EQ PUSH2 0x72 JUMPI DUP1 PUSH4 0xB59B28EF EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0xF7888AEC EQ PUSH2 0xD6 JUMPI PUSH2 0x6D JUMP JUMPDEST CALLDATASIZE PUSH2 0x6D JUMPI PUSH2 0x46 CALLER PUSH2 0x103 JUMP JUMPDEST PUSH2 0x6B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x62 SWAP1 PUSH2 0x9C9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x92 PUSH2 0x8D CALLDATASIZE PUSH1 0x4 PUSH2 0x758 JUMP JUMPDEST PUSH2 0x13F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA0 SWAP3 SWAP2 SWAP1 PUSH2 0x92F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC9 PUSH2 0xC4 CALLDATASIZE PUSH1 0x4 PUSH2 0x790 JUMP JUMPDEST PUSH2 0x4B1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA0 SWAP2 SWAP1 PUSH2 0x98F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF6 PUSH2 0xF1 CALLDATASIZE PUSH1 0x4 PUSH2 0x758 JUMP JUMPDEST PUSH2 0x58D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA0 SWAP2 SWAP1 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x137 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x261BF8B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x191 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B5 SWAP2 SWAP1 PUSH2 0x73C JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD1946DBC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x206 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x22E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x7F9 JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP2 MLOAD PUSH1 0x1 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x24D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x277 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x2C6 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x292 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2A6 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x27D JUMP JUMPDEST POP PUSH20 0xEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE DUP2 DUP4 MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x2E9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH1 0x60 DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x34D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x46B JUMPI PUSH2 0x364 PUSH2 0x6B9 JUMP JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC44B11F7 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x37F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A3 SWAP2 SWAP1 PUSH2 0x91B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3CF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3F3 SWAP2 SWAP1 PUSH2 0x8A4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x400 DUP3 PUSH2 0x67D JUMP JUMPDEST POP POP POP SWAP1 POP DUP1 PUSH2 0x42B JUMPI PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x418 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP POP POP PUSH2 0x463 JUMP JUMPDEST PUSH2 0x448 DUP11 DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x43B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x58D JUMP JUMPDEST DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x454 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x353 JUMP JUMPDEST POP PUSH2 0x48A DUP8 PUSH20 0xEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE PUSH2 0x58D JUMP JUMPDEST DUP2 DUP5 MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x497 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP1 SWAP5 POP SWAP3 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP5 DUP4 MUL PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x4CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4F7 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x583 JUMPI PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x57A JUMPI PUSH2 0x555 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x51F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x534 SWAP2 SWAP1 PUSH2 0x719 JUMP JUMPDEST DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x540 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xF1 SWAP2 SWAP1 PUSH2 0x719 JUMP JUMPDEST DUP4 MLOAD DUP5 SWAP1 DUP5 DUP9 MUL DUP5 ADD SWAP1 DUP2 LT PUSH2 0x567 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x508 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x4FD JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH20 0xEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EQ ISZERO PUSH2 0x5C5 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND BALANCE PUSH2 0x677 JUMP JUMPDEST PUSH2 0x5D7 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x103 JUMP JUMPDEST ISZERO PUSH2 0x65F JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x608 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x91B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x620 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x634 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x658 SWAP2 SWAP1 PUSH2 0x8C9 JUMP JUMPDEST SWAP1 POP PUSH2 0x677 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x62 SWAP1 PUSH2 0x9A2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST MLOAD PUSH8 0x100000000000000 DUP2 AND ISZERO ISZERO SWAP2 PUSH8 0x200000000000000 DUP3 AND ISZERO ISZERO SWAP2 PUSH8 0x400000000000000 DUP2 AND ISZERO ISZERO SWAP2 PUSH8 0x800000000000000 SWAP1 SWAP2 AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x677 DUP2 PUSH2 0xA15 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x6E8 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6FF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x4AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x72A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x735 DUP2 PUSH2 0xA15 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x74D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x735 DUP2 PUSH2 0xA15 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x76A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x775 DUP2 PUSH2 0xA15 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x785 DUP2 PUSH2 0xA15 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x7A5 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x7BC JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x7C8 DUP9 DUP4 DUP10 ADD PUSH2 0x6D7 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x7E0 JUMPI DUP4 DUP5 REVERT JUMPDEST POP PUSH2 0x7ED DUP8 DUP3 DUP9 ADD PUSH2 0x6D7 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x80B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x822 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x835 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x843 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP4 DUP2 MUL SWAP2 POP PUSH2 0x853 DUP5 DUP4 ADD PUSH2 0x9EE JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 DUP2 ADD SWAP1 DUP5 DUP7 ADD DUP5 DUP7 ADD DUP8 ADD DUP11 LT ISZERO PUSH2 0x86D JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP6 POP JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0x897 JUMPI PUSH2 0x883 DUP11 DUP3 PUSH2 0x6CC JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP2 DUP7 ADD SWAP2 DUP7 ADD PUSH2 0x871 JUMP JUMPDEST POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8B5 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x8BF PUSH1 0x20 PUSH2 0x9EE JUMP JUMPDEST SWAP2 MLOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8DA JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x910 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x8F4 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x971 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x94C JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE PUSH2 0x985 DUP2 DUP7 PUSH2 0x8E1 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x735 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x8E1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xD SWAP1 DUP3 ADD MSTORE PUSH13 0x24A72B20A624A22FAA27A5A2A7 PUSH1 0x99 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2 SWAP1 DUP3 ADD MSTORE PUSH2 0x1919 PUSH1 0xF1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xA0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xA2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH27 0xE67703D49267C117FB5657D5ACF71315B42FA382A2989A68CD98CC 0xC5 CALLDATALOAD SHL 0xC9 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "1087:2862:53:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600436106100385760003560e01c80630240534314610072578063b59b28ef146100a9578063f7888aec146100d65761006d565b3661006d5761004633610103565b61006b5760405162461bcd60e51b8152600401610062906109c9565b60405180910390fd5b005b600080fd5b34801561007e57600080fd5b5061009261008d366004610758565b61013f565b6040516100a092919061092f565b60405180910390f35b3480156100b557600080fd5b506100c96100c4366004610790565b6104b1565b6040516100a0919061098f565b3480156100e257600080fd5b506100f66100f1366004610758565b61058d565b6040516100a091906109e5565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061013757508115155b949350505050565b6060806000846001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561017d57600080fd5b505afa158015610191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101b5919061073c565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b1580156101f257600080fd5b505afa158015610206573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261022e91908101906107f9565b90506060815160010167ffffffffffffffff8111801561024d57600080fd5b50604051908082528060200260200182016040528015610277578160200160208202803683370190505b50905060005b82518110156102c65782818151811061029257fe5b60200260200101518282815181106102a657fe5b6001600160a01b039092166020928302919091019091015260010161027d565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee818351815181106102e957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506060815167ffffffffffffffff8111801561032357600080fd5b5060405190808252806020026020018201604052801561034d578160200160208202803683370190505b50905060005b835181101561046b576103646106b9565b856001600160a01b031663c44b11f785848151811061037f57fe5b60200260200101516040518263ffffffff1660e01b81526004016103a3919061091b565b60206040518083038186803b1580156103bb57600080fd5b505afa1580156103cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f391906108a4565b905060006104008261067d565b50505090508061042b57600084848151811061041857fe5b6020026020010181815250505050610463565b6104488a86858151811061043b57fe5b602002602001015161058d565b84848151811061045457fe5b60200260200101818152505050505b600101610353565b5061048a8773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61058d565b8184518151811061049757fe5b6020908102919091010152909450925050505b9250929050565b60608084830267ffffffffffffffff811180156104cd57600080fd5b506040519080825280602002602001820160405280156104f7578160200160208202803683370190505b50905060005b858110156105835760005b8481101561057a5761055588888481811061051f57fe5b90506020020160208101906105349190610719565b87878481811061054057fe5b90506020020160208101906100f19190610719565b83518490848802840190811061056757fe5b6020908102919091010152600101610508565b506001016104fd565b5095945050505050565b60006001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156105c557506001600160a01b03821631610677565b6105d7826001600160a01b0316610103565b1561065f576040516370a0823160e01b81526001600160a01b038316906370a082319061060890869060040161091b565b60206040518083038186803b15801561062057600080fd5b505afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065891906108c9565b9050610677565b60405162461bcd60e51b8152600401610062906109a2565b92915050565b51670100000000000000811615159167020000000000000082161515916704000000000000008116151591670800000000000000909116151590565b6040518060200160405280600081525090565b805161067781610a15565b60008083601f8401126106e8578182fd5b50813567ffffffffffffffff8111156106ff578182fd5b60208301915083602080830285010111156104aa57600080fd5b60006020828403121561072a578081fd5b813561073581610a15565b9392505050565b60006020828403121561074d578081fd5b815161073581610a15565b6000806040838503121561076a578081fd5b823561077581610a15565b9150602083013561078581610a15565b809150509250929050565b600080600080604085870312156107a5578182fd5b843567ffffffffffffffff808211156107bc578384fd5b6107c8888389016106d7565b909650945060208701359150808211156107e0578384fd5b506107ed878288016106d7565b95989497509550505050565b6000602080838503121561080b578182fd5b825167ffffffffffffffff80821115610822578384fd5b818501915085601f830112610835578384fd5b815181811115610843578485fd5b83810291506108538483016109ee565b8181528481019084860184860187018a101561086d578788fd5b8795505b83861015610897576108838a826106cc565b835260019590950194918601918601610871565b5098975050505050505050565b6000602082840312156108b5578081fd5b6108bf60206109ee565b9151825250919050565b6000602082840312156108da578081fd5b5051919050565b6000815180845260208085019450808401835b83811015610910578151875295820195908201906001016108f4565b509495945050505050565b6001600160a01b0391909116815260200190565b604080825283519082018190526000906020906060840190828701845b828110156109715781516001600160a01b03168452928401929084019060010161094c565b5050508381038285015261098581866108e1565b9695505050505050565b60006020825261073560208301846108e1565b6020808252600d908201526c24a72b20a624a22faa27a5a2a760991b604082015260600190565b602080825260029082015261191960f11b604082015260600190565b90815260200190565b60405181810167ffffffffffffffff81118282101715610a0d57600080fd5b604052919050565b6001600160a01b0381168114610a2a57600080fd5b5056fea26469706673582212207ae67703d49267c117fb5657d5acf71315b42fa382a2989a68cd98ccc5351bc964736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x38 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2405343 EQ PUSH2 0x72 JUMPI DUP1 PUSH4 0xB59B28EF EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0xF7888AEC EQ PUSH2 0xD6 JUMPI PUSH2 0x6D JUMP JUMPDEST CALLDATASIZE PUSH2 0x6D JUMPI PUSH2 0x46 CALLER PUSH2 0x103 JUMP JUMPDEST PUSH2 0x6B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x62 SWAP1 PUSH2 0x9C9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x92 PUSH2 0x8D CALLDATASIZE PUSH1 0x4 PUSH2 0x758 JUMP JUMPDEST PUSH2 0x13F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA0 SWAP3 SWAP2 SWAP1 PUSH2 0x92F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC9 PUSH2 0xC4 CALLDATASIZE PUSH1 0x4 PUSH2 0x790 JUMP JUMPDEST PUSH2 0x4B1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA0 SWAP2 SWAP1 PUSH2 0x98F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF6 PUSH2 0xF1 CALLDATASIZE PUSH1 0x4 PUSH2 0x758 JUMP JUMPDEST PUSH2 0x58D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA0 SWAP2 SWAP1 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x137 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x261BF8B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x191 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B5 SWAP2 SWAP1 PUSH2 0x73C JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD1946DBC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x206 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x22E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x7F9 JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP2 MLOAD PUSH1 0x1 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x24D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x277 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x2C6 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x292 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2A6 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x27D JUMP JUMPDEST POP PUSH20 0xEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE DUP2 DUP4 MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x2E9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH1 0x60 DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x34D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x46B JUMPI PUSH2 0x364 PUSH2 0x6B9 JUMP JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC44B11F7 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x37F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A3 SWAP2 SWAP1 PUSH2 0x91B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3CF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3F3 SWAP2 SWAP1 PUSH2 0x8A4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x400 DUP3 PUSH2 0x67D JUMP JUMPDEST POP POP POP SWAP1 POP DUP1 PUSH2 0x42B JUMPI PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x418 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP POP POP PUSH2 0x463 JUMP JUMPDEST PUSH2 0x448 DUP11 DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x43B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x58D JUMP JUMPDEST DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x454 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x353 JUMP JUMPDEST POP PUSH2 0x48A DUP8 PUSH20 0xEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE PUSH2 0x58D JUMP JUMPDEST DUP2 DUP5 MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x497 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP1 SWAP5 POP SWAP3 POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP5 DUP4 MUL PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x4CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4F7 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x583 JUMPI PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x57A JUMPI PUSH2 0x555 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x51F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x534 SWAP2 SWAP1 PUSH2 0x719 JUMP JUMPDEST DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x540 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xF1 SWAP2 SWAP1 PUSH2 0x719 JUMP JUMPDEST DUP4 MLOAD DUP5 SWAP1 DUP5 DUP9 MUL DUP5 ADD SWAP1 DUP2 LT PUSH2 0x567 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x508 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x4FD JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH20 0xEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EQ ISZERO PUSH2 0x5C5 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND BALANCE PUSH2 0x677 JUMP JUMPDEST PUSH2 0x5D7 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x103 JUMP JUMPDEST ISZERO PUSH2 0x65F JUMPI PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x608 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x91B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x620 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x634 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x658 SWAP2 SWAP1 PUSH2 0x8C9 JUMP JUMPDEST SWAP1 POP PUSH2 0x677 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x62 SWAP1 PUSH2 0x9A2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST MLOAD PUSH8 0x100000000000000 DUP2 AND ISZERO ISZERO SWAP2 PUSH8 0x200000000000000 DUP3 AND ISZERO ISZERO SWAP2 PUSH8 0x400000000000000 DUP2 AND ISZERO ISZERO SWAP2 PUSH8 0x800000000000000 SWAP1 SWAP2 AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x677 DUP2 PUSH2 0xA15 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x6E8 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6FF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x4AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x72A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x735 DUP2 PUSH2 0xA15 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x74D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x735 DUP2 PUSH2 0xA15 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x76A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x775 DUP2 PUSH2 0xA15 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x785 DUP2 PUSH2 0xA15 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x7A5 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x7BC JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x7C8 DUP9 DUP4 DUP10 ADD PUSH2 0x6D7 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x7E0 JUMPI DUP4 DUP5 REVERT JUMPDEST POP PUSH2 0x7ED DUP8 DUP3 DUP9 ADD PUSH2 0x6D7 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x80B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x822 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x835 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x843 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP4 DUP2 MUL SWAP2 POP PUSH2 0x853 DUP5 DUP4 ADD PUSH2 0x9EE JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 DUP2 ADD SWAP1 DUP5 DUP7 ADD DUP5 DUP7 ADD DUP8 ADD DUP11 LT ISZERO PUSH2 0x86D JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP6 POP JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0x897 JUMPI PUSH2 0x883 DUP11 DUP3 PUSH2 0x6CC JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP2 DUP7 ADD SWAP2 DUP7 ADD PUSH2 0x871 JUMP JUMPDEST POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8B5 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x8BF PUSH1 0x20 PUSH2 0x9EE JUMP JUMPDEST SWAP2 MLOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8DA JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x910 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x8F4 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x971 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x94C JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE PUSH2 0x985 DUP2 DUP7 PUSH2 0x8E1 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x735 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x8E1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xD SWAP1 DUP3 ADD MSTORE PUSH13 0x24A72B20A624A22FAA27A5A2A7 PUSH1 0x99 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2 SWAP1 DUP3 ADD MSTORE PUSH2 0x1919 PUSH1 0xF1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xA0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xA2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH27 0xE67703D49267C117FB5657D5ACF71315B42FA382A2989A68CD98CC 0xC5 CALLDATALOAD SHL 0xC9 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "1087:2862:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1520:23;:10;:21;:23::i;:::-;1512:38;;;;-1:-1:-1;;;1512:38:53;;;;;;;:::i;:::-;;;;;;;;;1087:2862;;;;;2875:1072;;;;;;;;;;-1:-1:-1;2875:1072:53;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;2351:426;;;;;;;;;;-1:-1:-1;2351:426:53;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1751:325::-;;;;;;;;;;-1:-1:-1;1751:325:53;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;686:586:6:-;746:4;1185:20;;1032:66;1224:23;;;;;;:42;;-1:-1:-1;1251:15:6;;;1224:42;1216:51;686:586;-1:-1:-1;;;;686:586:6:o;2875:1072:53:-;2973:16;2991;3017:17;3080:8;-1:-1:-1;;;;;3050:54:53;;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3017:90;;3114:25;3142:4;-1:-1:-1;;;;;3142:20:53;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3142:22:53;;;;;;;;;;;;:::i;:::-;3114:50;;3170:32;3219:8;:15;3237:1;3219:19;3205:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3205:34:53;;3170:69;;3250:9;3245:93;3269:8;:15;3265:1;:19;3245:93;;;3320:8;3329:1;3320:11;;;;;;;;;;;;;;3299:15;3315:1;3299:18;;;;;;;;-1:-1:-1;;;;;3299:32:53;;;:18;;;;;;;;;;;:32;3286:3;;3245:93;;;;1323:42;3343:15;3359:8;:15;3343:32;;;;;;;;;;;;;:51;-1:-1:-1;;;;;3343:51:53;;;-1:-1:-1;;;;;3343:51:53;;;;;3401:25;3443:15;:22;3429:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3429:37:53;;3401:65;;3478:9;3473:362;3497:8;:15;3493:1;:19;3473:362;;;3527:54;;:::i;:::-;3592:4;-1:-1:-1;;;;;3592:21:53;;3614:15;3630:1;3614:18;;;;;;;;;;;;;;3592:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3527:106;;3643:13;3666:30;:13;:28;:30::i;:::-;3642:54;;;;;3710:8;3705:67;;3744:1;3730:8;3739:1;3730:11;;;;;;;;;;;;;:15;;;;;3755:8;;;;3705:67;3793:35;3803:4;3809:15;3825:1;3809:18;;;;;;;;;;;;;;3793:9;:35::i;:::-;3779:8;3788:1;3779:11;;;;;;;;;;;;;:49;;;;;3473:362;;;3514:3;;3473:362;;;;3868:33;3878:4;1323:42;3868:9;:33::i;:::-;3840:8;3849;:15;3840:25;;;;;;;;;;;;;;;;;:61;3916:15;;-1:-1:-1;3933:8:53;-1:-1:-1;;;2875:1072:53;;;;;;:::o;2351:426::-;2463:16;;2531:28;;;2517:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2517:43:53;;2489:71;;2572:9;2567:184;2587:16;;;2567:184;;;2623:9;2618:127;2638:17;;;2618:127;;;2706:30;2716:5;;2722:1;2716:8;;;;;;;;;;;;;;;;;;;;:::i;:::-;2726:6;;2733:1;2726:9;;;;;;;;;;;;;;;;;;;;:::i;2706:30::-;2672:31;;:8;;2681:17;;;:21;;;2672:31;;;;;;;;;;;;;;;:64;2657:3;;2618:127;;;-1:-1:-1;2605:3:53;;2567:184;;;-1:-1:-1;2764:8:53;2351:426;-1:-1:-1;;;;;2351:426:53:o;1751:325::-;1820:7;-1:-1:-1;;;;;1839:25:53;;1323:42;1839:25;1835:208;;;-1:-1:-1;;;;;;1881:12:53;;;1874:19;;1835:208;1972:18;:5;-1:-1:-1;;;;;1972:16:53;;:18::i;:::-;1968:75;;;2007:29;;-1:-1:-1;;;2007:29:53;;-1:-1:-1;;;;;2007:23:53;;;;;:29;;2031:4;;2007:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2000:36;;;;1968:75;2048:23;;-1:-1:-1;;;2048:23:53;;;;;;;:::i;1751:325::-;;;;;:::o;11756:355:75:-;11940:9;11952:12;11940:24;;11939:31;;;11991:12;11979:24;;11978:31;;;12030:15;12018:27;;12017:34;;;12072:22;12060:34;;;12059:41;;;11756:355::o;-1:-1:-1:-;;;;;;;;;;;;;;:::o;142:134::-;220:13;;238:33;220:13;238:33;:::i;301:352::-;;;431:3;424:4;416:6;412:17;408:27;398:2;;-1:-1;;439:12;398:2;-1:-1;469:20;;509:18;498:30;;495:2;;;-1:-1;;531:12;495:2;575:4;567:6;563:17;551:29;;626:3;575:4;;610:6;606:17;567:6;592:32;;589:41;586:2;;;643:1;;633:12;1966:241;;2070:2;2058:9;2049:7;2045:23;2041:32;2038:2;;;-1:-1;;2076:12;2038:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;2128:63;2032:175;-1:-1;;;2032:175::o;2214:263::-;;2329:2;2317:9;2308:7;2304:23;2300:32;2297:2;;;-1:-1;;2335:12;2297:2;226:6;220:13;238:33;265:5;238:33;:::i;2484:366::-;;;2605:2;2593:9;2584:7;2580:23;2576:32;2573:2;;;-1:-1;;2611:12;2573:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;2663:63;-1:-1;2763:2;2802:22;;72:20;97:33;72:20;97:33;:::i;:::-;2771:63;;;;2567:283;;;;;:::o;2857:678::-;;;;;3048:2;3036:9;3027:7;3023:23;3019:32;3016:2;;;-1:-1;;3054:12;3016:2;3112:17;3099:31;3150:18;;3142:6;3139:30;3136:2;;;-1:-1;;3172:12;3136:2;3210:80;3282:7;3273:6;3262:9;3258:22;3210:80;:::i;:::-;3192:98;;-1:-1;3192:98;-1:-1;3355:2;3340:18;;3327:32;;-1:-1;3368:30;;;3365:2;;;-1:-1;;3401:12;3365:2;;3439:80;3511:7;3502:6;3491:9;3487:22;3439:80;:::i;:::-;3010:525;;;;-1:-1;3421:98;-1:-1;;;;3010:525::o;3542:392::-;;3682:2;;3670:9;3661:7;3657:23;3653:32;3650:2;;;-1:-1;;3688:12;3650:2;3739:17;3733:24;3777:18;;3769:6;3766:30;3763:2;;;-1:-1;;3799:12;3763:2;3901:6;3890:9;3886:22;;;807:3;800:4;792:6;788:17;784:27;774:2;;-1:-1;;815:12;774:2;855:6;849:13;3777:18;10210:6;10207:30;10204:2;;;-1:-1;;10240:12;10204:2;3682;10277:6;10273:17;;;877:80;3682:2;10273:17;10338:15;877:80;:::i;:::-;985:21;;;1042:14;;;;1017:17;;;1122:27;;;;;1119:36;-1:-1;1116:2;;;-1:-1;;1158:12;1116:2;-1:-1;1184:10;;1178:217;1203:6;1200:1;1197:13;1178:217;;;1283:48;1327:3;1315:10;1283:48;:::i;:::-;1271:61;;1225:1;1218:9;;;;;1346:14;;;;1374;;1178:217;;;-1:-1;3819:99;3644:290;-1:-1;;;;;;;;3644:290::o;3941:347::-;;4098:2;4086:9;4077:7;4073:23;4069:32;4066:2;;;-1:-1;;4104:12;4066:2;1634:20;4098:2;1634:20;:::i;:::-;1903:13;;1711:86;;-1:-1;1718:16;4060:228;-1:-1;4060:228::o;4295:263::-;;4410:2;4398:9;4389:7;4385:23;4381:32;4378:2;;;-1:-1;;4416:12;4378:2;-1:-1;1903:13;;4372:186;-1:-1;4372:186::o;5919:690::-;;6112:5;10789:12;11335:6;11330:3;11323:19;11372:4;;11367:3;11363:14;6124:93;;11372:4;6288:5;10485:14;-1:-1;6327:260;6352:6;6349:1;6346:13;6327:260;;;6413:13;;7310:37;;4901:14;;;;11063;;;;6374:1;6367:9;6327:260;;;-1:-1;6593:10;;6043:566;-1:-1;;;;;6043:566::o;7479:222::-;-1:-1;;;;;11910:54;;;;4990:37;;7606:2;7591:18;;7577:124::o;7708:629::-;7963:2;7977:47;;;10789:12;;7948:18;;;11323:19;;;7708:629;;11372:4;;11363:14;;;;10485;;;7708:629;5598:260;5623:6;5620:1;5617:13;5598:260;;;5684:13;;-1:-1;;;;;11910:54;4990:37;;4719:14;;;;11063;;;;509:18;5638:9;5598:260;;;5602:14;;;8194:9;8188:4;8184:20;11372:4;8168:9;8164:18;8157:48;8219:108;8322:4;8313:6;8219:108;:::i;:::-;8211:116;7934:403;-1:-1;;;;;;7934:403::o;8344:370::-;;8521:2;8542:17;8535:47;8596:108;8521:2;8510:9;8506:18;8690:6;8596:108;:::i;8721:416::-;8921:2;8935:47;;;6842:2;8906:18;;;11323:19;-1:-1;;;11363:14;;;6858:36;6913:12;;;8892:245::o;9144:416::-;9344:2;9358:47;;;7164:1;9329:18;;;11323:19;-1:-1;;;11363:14;;;7179:25;7223:12;;;9315:245::o;9567:222::-;7310:37;;;9694:2;9679:18;;9665:124::o;9796:256::-;9858:2;9852:9;9884:17;;;9959:18;9944:34;;9980:22;;;9941:62;9938:2;;;10016:1;;10006:12;9938:2;9858;10025:22;9836:216;;-1:-1;9836:216::o;12055:117::-;-1:-1;;;;;11910:54;;12114:35;;12104:2;;12163:1;;12153:12;12104:2;12098:74;:::o"
            },
            "methodIdentifiers": {
              "balanceOf(address,address)": "f7888aec",
              "batchBalanceOf(address[],address[])": "b59b28ef",
              "getUserWalletBalances(address,address)": "02405343"
            }
          }
        }
      },
      "contracts/misc/interfaces/IUiPoolDataProvider.sol": {
        "IUiPoolDataProvider": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPoolAddressesProvider",
                  "name": "provider",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getReservesData",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "underlyingAsset",
                      "type": "address"
                    },
                    {
                      "internalType": "string",
                      "name": "name",
                      "type": "string"
                    },
                    {
                      "internalType": "string",
                      "name": "symbol",
                      "type": "string"
                    },
                    {
                      "internalType": "uint256",
                      "name": "decimals",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "baseLTVasCollateral",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "reserveLiquidationThreshold",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "reserveLiquidationBonus",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "reserveFactor",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bool",
                      "name": "usageAsCollateralEnabled",
                      "type": "bool"
                    },
                    {
                      "internalType": "bool",
                      "name": "borrowingEnabled",
                      "type": "bool"
                    },
                    {
                      "internalType": "bool",
                      "name": "stableBorrowRateEnabled",
                      "type": "bool"
                    },
                    {
                      "internalType": "bool",
                      "name": "isActive",
                      "type": "bool"
                    },
                    {
                      "internalType": "bool",
                      "name": "isFrozen",
                      "type": "bool"
                    },
                    {
                      "internalType": "uint128",
                      "name": "liquidityIndex",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint128",
                      "name": "variableBorrowIndex",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint128",
                      "name": "liquidityRate",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint128",
                      "name": "variableBorrowRate",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint128",
                      "name": "stableBorrowRate",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint40",
                      "name": "lastUpdateTimestamp",
                      "type": "uint40"
                    },
                    {
                      "internalType": "address",
                      "name": "aTokenAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "stableDebtTokenAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "variableDebtTokenAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "interestRateStrategyAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "availableLiquidity",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "totalPrincipalStableDebt",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "averageStableRate",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "stableDebtLastUpdateTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "totalScaledVariableDebt",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "priceInEth",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "variableRateSlope1",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "variableRateSlope2",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "stableRateSlope1",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "stableRateSlope2",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "aEmissionPerSecond",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "vEmissionPerSecond",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "sEmissionPerSecond",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "aIncentivesLastUpdateTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "vIncentivesLastUpdateTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "sIncentivesLastUpdateTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "aTokenIncentivesIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "vTokenIncentivesIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "sTokenIncentivesIndex",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IUiPoolDataProvider.AggregatedReserveData[]",
                  "name": "",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "underlyingAsset",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "scaledATokenBalance",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bool",
                      "name": "usageAsCollateralEnabledOnUser",
                      "type": "bool"
                    },
                    {
                      "internalType": "uint256",
                      "name": "stableBorrowRate",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "scaledVariableDebt",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "principalStableDebt",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "stableBorrowLastUpdateTimestamp",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "aTokenincentivesUserIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "vTokenincentivesUserIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "sTokenincentivesUserIndex",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IUiPoolDataProvider.UserReserveData[]",
                  "name": "",
                  "type": "tuple[]"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "getReservesData(address,address)": "87e40db7"
            }
          }
        }
      },
      "contracts/misc/interfaces/IWETH.sol": {
        "IWETH": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "guy",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "wad",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "deposit",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "src",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "dst",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "wad",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "approve(address,uint256)": "095ea7b3",
              "deposit()": "d0e30db0",
              "transferFrom(address,address,uint256)": "23b872dd",
              "withdraw(uint256)": "2e1a7d4d"
            }
          }
        }
      },
      "contracts/misc/interfaces/IWETHGateway.sol": {
        "IWETHGateway": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "lendingPool",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interesRateMode",
                  "type": "uint256"
                },
                {
                  "internalType": "uint16",
                  "name": "referralCode",
                  "type": "uint16"
                }
              ],
              "name": "borrowETH",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "lendingPool",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                },
                {
                  "internalType": "uint16",
                  "name": "referralCode",
                  "type": "uint16"
                }
              ],
              "name": "depositETH",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "lendingPool",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "rateMode",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                }
              ],
              "name": "repayETH",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "lendingPool",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                }
              ],
              "name": "withdrawETH",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "borrowETH(address,uint256,uint256,uint16)": "66514c97",
              "depositETH(address,address,uint16)": "474cf53d",
              "repayETH(address,uint256,uint256,address)": "02c5fcf8",
              "withdrawETH(address,uint256,address)": "80500d20"
            }
          }
        }
      },
      "contracts/mocks/flashloan/MockFlashLoanReceiver.sol": {
        "MockFlashLoanReceiver": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPoolAddressesProvider",
                  "name": "provider",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address[]",
                  "name": "_assets",
                  "type": "address[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_premiums",
                  "type": "uint256[]"
                }
              ],
              "name": "ExecutedWithFail",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address[]",
                  "name": "_assets",
                  "type": "address[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_premiums",
                  "type": "uint256[]"
                }
              ],
              "name": "ExecutedWithSuccess",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "ADDRESSES_PROVIDER",
              "outputs": [
                {
                  "internalType": "contract ILendingPoolAddressesProvider",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LENDING_POOL",
              "outputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "amountToApprove",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "assets",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "premiums",
                  "type": "uint256[]"
                },
                {
                  "internalType": "address",
                  "name": "initiator",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "executeOperation",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountToApprove",
                  "type": "uint256"
                }
              ],
              "name": "setAmountToApprove",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "fail",
                  "type": "bool"
                }
              ],
              "name": "setFailExecutionTransfer",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "flag",
                  "type": "bool"
                }
              ],
              "name": "setSimulateEOA",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "simulateEOA",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60c060405234801561001057600080fd5b50604051610a8c380380610a8c8339818101604052602081101561003357600080fd5b50516001600160601b0319606082901b1660805260408051630261bf8b60e01b8152905182916001600160a01b03831691630261bf8b91600480820192602092909190829003018186803b15801561008a57600080fd5b505afa15801561009e573d6000803e3d6000fd5b505050506040513d60208110156100b457600080fd5b5051606081811b6001600160601b03191660a052608051901c92506001600160a01b031690506109906100fc6000398061070852806108b952508061038952506109906000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4dcfc771161005b578063b4dcfc7714610329578063bb271c4d14610331578063bf443f851461034b578063e9a6a25b1461036857610088565b80630542975c1461008d578063388f70f1146100b15780634444f331146100d2578063920f5c84146100ee575b600080fd5b610095610387565b604080516001600160a01b039092168252519081900360200190f35b6100d0600480360360208110156100c757600080fd5b503515156103ab565b005b6100da6103c9565b604080519115158252519081900360200190f35b6100da600480360360a081101561010457600080fd5b810190602081018135600160201b81111561011e57600080fd5b82018360208201111561013057600080fd5b803590602001918460208302840111600160201b8311171561015157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156101a057600080fd5b8201836020820111156101b257600080fd5b803590602001918460208302840111600160201b831117156101d357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561022257600080fd5b82018360208201111561023457600080fd5b803590602001918460208302840111600160201b8311171561025557600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092956001600160a01b03853516959094909350604081019250602001359050600160201b8111156102b557600080fd5b8201836020820111156102c757600080fd5b803590602001918460018302840111600160201b831117156102e857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506103d2945050505050565b6100956108b7565b6103396108db565b60408051918252519081900360200190f35b6100d06004803603602081101561036157600080fd5b50356108e1565b6100d06004803603602081101561037e57600080fd5b503515156108e6565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008054911515600160a01b0260ff60a01b19909216919091179055565b60025460ff1690565b60008054600160a01b900460ff16156104f3577f9972b212e52913783072b960dd41527ae8b6e609d017b64039758dda0ce4127886868660405180806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015610451578181015183820152602001610439565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015610490578181015183820152602001610478565b50505050905001848103825285818151815260200191508051906020019060200280838360005b838110156104cf5781810151838201526020016104b7565b50505050905001965050505050505060405180910390a15060025460ff16156108ae565b60005b86518110156107a857600087828151811061050d57fe5b6020026020010151905087828151811061052357fe5b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561057757600080fd5b505afa15801561058b573d6000803e3d6000fd5b505050506040513d60208110156105a157600080fd5b505187518890849081106105b157fe5b6020026020010151111561060c576040805162461bcd60e51b815260206004820181905260248201527f496e76616c69642062616c616e636520666f722074686520636f6e7472616374604482015290519081900360640190fd5b6000600154600014156106575761065287848151811061062857fe5b602002602001015189858151811061063c57fe5b60200260200101516108f990919063ffffffff16565b61065b565b6001545b9050816001600160a01b031663a0712d6888858151811061067857fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156106b657600080fd5b505af11580156106ca573d6000803e3d6000fd5b505050506040513d60208110156106e057600080fd5b505088518990849081106106f057fe5b60200260200101516001600160a01b031663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561076e57600080fd5b505af1158015610782573d6000803e3d6000fd5b505050506040513d602081101561079857600080fd5b5050600190920191506104f69050565b507fbd6b6bfac59612765a81cc4fdee74ab4859671fa14a562056f9eea438735a78a86868660405180806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156108155781810151838201526020016107fd565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561085457818101518382015260200161083c565b50505050905001848103825285818151815260200191508051906020019060200280838360005b8381101561089357818101518382015260200161087b565b50505050905001965050505050505060405180910390a15060015b95945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015490565b600155565b6002805460ff1916911515919091179055565b600082820183811015610953576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fea26469706673582212204cfe04ab5e4d5ebeb26e9bff30fd6537e48a8a8891dd5fc6b45e872b74844f0764736f6c634300060c0033",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xA8C CODESIZE SUB DUP1 PUSH2 0xA8C DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP3 SWAP1 SHL AND PUSH1 0x80 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x261BF8B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0x261BF8B SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 DUP2 DUP2 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE PUSH1 0x80 MLOAD SWAP1 SHR SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH2 0x990 PUSH2 0xFC PUSH1 0x0 CODECOPY DUP1 PUSH2 0x708 MSTORE DUP1 PUSH2 0x8B9 MSTORE POP DUP1 PUSH2 0x389 MSTORE POP PUSH2 0x990 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB4DCFC77 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xB4DCFC77 EQ PUSH2 0x329 JUMPI DUP1 PUSH4 0xBB271C4D EQ PUSH2 0x331 JUMPI DUP1 PUSH4 0xBF443F85 EQ PUSH2 0x34B JUMPI DUP1 PUSH4 0xE9A6A25B EQ PUSH2 0x368 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x542975C EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x388F70F1 EQ PUSH2 0xB1 JUMPI DUP1 PUSH4 0x4444F331 EQ PUSH2 0xD2 JUMPI DUP1 PUSH4 0x920F5C84 EQ PUSH2 0xEE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x387 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xD0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x3AB JUMP JUMPDEST STOP JUMPDEST PUSH2 0xDA PUSH2 0x3C9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xDA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x11E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x130 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x1A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x234 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 CALLDATALOAD AND SWAP6 SWAP1 SWAP5 SWAP1 SWAP4 POP PUSH1 0x40 DUP2 ADD SWAP3 POP PUSH1 0x20 ADD CALLDATALOAD SWAP1 POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x2E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x3D2 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x95 PUSH2 0x8B7 JUMP JUMPDEST PUSH2 0x339 PUSH2 0x8DB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xD0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x8E1 JUMP JUMPDEST PUSH2 0xD0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x37E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x8E6 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP2 ISZERO ISZERO PUSH1 0x1 PUSH1 0xA0 SHL MUL PUSH1 0xFF PUSH1 0xA0 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x4F3 JUMPI PUSH32 0x9972B212E52913783072B960DD41527AE8B6E609D017B64039758DDA0CE41278 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x451 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x439 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x490 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x478 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4CF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4B7 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH1 0x2 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x8AE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x7A8 JUMPI PUSH1 0x0 DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x50D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x523 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x577 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x58B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP8 MLOAD DUP9 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0x5B1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x60C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C69642062616C616E636520666F722074686520636F6E7472616374 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 SLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x657 JUMPI PUSH2 0x652 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x628 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x63C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x8F9 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x65B JUMP JUMPDEST PUSH1 0x1 SLOAD JUMPDEST SWAP1 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA0712D68 DUP9 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x678 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP9 MLOAD DUP10 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0x6F0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95EA7B3 PUSH32 0x0 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x76E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x782 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x798 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0x4F6 SWAP1 POP JUMP JUMPDEST POP PUSH32 0xBD6B6BFAC59612765A81CC4FDEE74AB4859671FA14A562056F9EEA438735A78A DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x815 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7FD JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x854 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x83C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x893 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x87B JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH1 0x1 JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x953 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4C INVALID DIV 0xAB 0x5E 0x4D 0x5E 0xBE 0xB2 PUSH15 0x9BFF30FD6537E48A8A8891DD5FC6B4 0x5E DUP8 0x2B PUSH21 0x844F0764736F6C634300060C003300000000000000 ",
              "sourceMap": "548:2017:57:-:0;;;941:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;941:93:57;-1:-1:-1;;;;;;865:29:24;;;;;;;928:25;;;-1:-1:-1;;;928:25:24;;;;941:93:57;;-1:-1:-1;;;;;865:29:24;;;928:23;;:25;;;;;941:93:57;;928:25:24;;;;;;;;865:29;928:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;928:25:24;900:54;;;;-1:-1:-1;;;;;;900:54:24;;;548:2017:57;;;;;-1:-1:-1;;;;;;548:2017:57;;-1:-1:-1;548:2017:57;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "5489": [
                  {
                    "length": 32,
                    "start": 905
                  }
                ],
                "5492": [
                  {
                    "length": 32,
                    "start": 1800
                  },
                  {
                    "length": 32,
                    "start": 2233
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4dcfc771161005b578063b4dcfc7714610329578063bb271c4d14610331578063bf443f851461034b578063e9a6a25b1461036857610088565b80630542975c1461008d578063388f70f1146100b15780634444f331146100d2578063920f5c84146100ee575b600080fd5b610095610387565b604080516001600160a01b039092168252519081900360200190f35b6100d0600480360360208110156100c757600080fd5b503515156103ab565b005b6100da6103c9565b604080519115158252519081900360200190f35b6100da600480360360a081101561010457600080fd5b810190602081018135600160201b81111561011e57600080fd5b82018360208201111561013057600080fd5b803590602001918460208302840111600160201b8311171561015157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156101a057600080fd5b8201836020820111156101b257600080fd5b803590602001918460208302840111600160201b831117156101d357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561022257600080fd5b82018360208201111561023457600080fd5b803590602001918460208302840111600160201b8311171561025557600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092956001600160a01b03853516959094909350604081019250602001359050600160201b8111156102b557600080fd5b8201836020820111156102c757600080fd5b803590602001918460018302840111600160201b831117156102e857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506103d2945050505050565b6100956108b7565b6103396108db565b60408051918252519081900360200190f35b6100d06004803603602081101561036157600080fd5b50356108e1565b6100d06004803603602081101561037e57600080fd5b503515156108e6565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008054911515600160a01b0260ff60a01b19909216919091179055565b60025460ff1690565b60008054600160a01b900460ff16156104f3577f9972b212e52913783072b960dd41527ae8b6e609d017b64039758dda0ce4127886868660405180806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015610451578181015183820152602001610439565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015610490578181015183820152602001610478565b50505050905001848103825285818151815260200191508051906020019060200280838360005b838110156104cf5781810151838201526020016104b7565b50505050905001965050505050505060405180910390a15060025460ff16156108ae565b60005b86518110156107a857600087828151811061050d57fe5b6020026020010151905087828151811061052357fe5b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561057757600080fd5b505afa15801561058b573d6000803e3d6000fd5b505050506040513d60208110156105a157600080fd5b505187518890849081106105b157fe5b6020026020010151111561060c576040805162461bcd60e51b815260206004820181905260248201527f496e76616c69642062616c616e636520666f722074686520636f6e7472616374604482015290519081900360640190fd5b6000600154600014156106575761065287848151811061062857fe5b602002602001015189858151811061063c57fe5b60200260200101516108f990919063ffffffff16565b61065b565b6001545b9050816001600160a01b031663a0712d6888858151811061067857fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156106b657600080fd5b505af11580156106ca573d6000803e3d6000fd5b505050506040513d60208110156106e057600080fd5b505088518990849081106106f057fe5b60200260200101516001600160a01b031663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561076e57600080fd5b505af1158015610782573d6000803e3d6000fd5b505050506040513d602081101561079857600080fd5b5050600190920191506104f69050565b507fbd6b6bfac59612765a81cc4fdee74ab4859671fa14a562056f9eea438735a78a86868660405180806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156108155781810151838201526020016107fd565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561085457818101518382015260200161083c565b50505050905001848103825285818151815260200191508051906020019060200280838360005b8381101561089357818101518382015260200161087b565b50505050905001965050505050505060405180910390a15060015b95945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015490565b600155565b6002805460ff1916911515919091179055565b600082820183811015610953576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fea26469706673582212204cfe04ab5e4d5ebeb26e9bff30fd6537e48a8a8891dd5fc6b45e872b74844f0764736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB4DCFC77 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xB4DCFC77 EQ PUSH2 0x329 JUMPI DUP1 PUSH4 0xBB271C4D EQ PUSH2 0x331 JUMPI DUP1 PUSH4 0xBF443F85 EQ PUSH2 0x34B JUMPI DUP1 PUSH4 0xE9A6A25B EQ PUSH2 0x368 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x542975C EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x388F70F1 EQ PUSH2 0xB1 JUMPI DUP1 PUSH4 0x4444F331 EQ PUSH2 0xD2 JUMPI DUP1 PUSH4 0x920F5C84 EQ PUSH2 0xEE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x387 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xD0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x3AB JUMP JUMPDEST STOP JUMPDEST PUSH2 0xDA PUSH2 0x3C9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xDA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x11E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x130 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x1A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x234 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 CALLDATALOAD AND SWAP6 SWAP1 SWAP5 SWAP1 SWAP4 POP PUSH1 0x40 DUP2 ADD SWAP3 POP PUSH1 0x20 ADD CALLDATALOAD SWAP1 POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x2E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x3D2 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x95 PUSH2 0x8B7 JUMP JUMPDEST PUSH2 0x339 PUSH2 0x8DB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xD0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x8E1 JUMP JUMPDEST PUSH2 0xD0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x37E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0x8E6 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP2 ISZERO ISZERO PUSH1 0x1 PUSH1 0xA0 SHL MUL PUSH1 0xFF PUSH1 0xA0 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x4F3 JUMPI PUSH32 0x9972B212E52913783072B960DD41527AE8B6E609D017B64039758DDA0CE41278 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x451 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x439 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x490 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x478 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4CF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4B7 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH1 0x2 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x8AE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x7A8 JUMPI PUSH1 0x0 DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x50D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x523 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x577 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x58B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP8 MLOAD DUP9 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0x5B1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x60C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C69642062616C616E636520666F722074686520636F6E7472616374 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 SLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x657 JUMPI PUSH2 0x652 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x628 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x63C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x8F9 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x65B JUMP JUMPDEST PUSH1 0x1 SLOAD JUMPDEST SWAP1 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA0712D68 DUP9 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x678 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP9 MLOAD DUP10 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0x6F0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95EA7B3 PUSH32 0x0 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x76E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x782 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x798 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0x4F6 SWAP1 POP JUMP JUMPDEST POP PUSH32 0xBD6B6BFAC59612765A81CC4FDEE74AB4859671FA14A562056F9EEA438735A78A DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x815 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7FD JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x854 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x83C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x893 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x87B JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH1 0x1 JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x953 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4C INVALID DIV 0xAB 0x5E 0x4D 0x5E 0xBE 0xB2 PUSH15 0x9BFF30FD6537E48A8A8891DD5FC6B4 0x5E DUP8 0x2B PUSH21 0x844F0764736F6C634300060C003300000000000000 ",
              "sourceMap": "548:2017:57:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;666:74:24;;;:::i;:::-;;;;-1:-1:-1;;;;;666:74:24;;;;;;;;;;;;;;1038:84:57;;;;;;;;;;;;;;;;-1:-1:-1;1038:84:57;;;;:::i;:::-;;1406:80;;;:::i;:::-;;;;;;;;;;;;;;;;;;1490:1073;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1490:1073:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1490:1073:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1490:1073:57;;;;;;;;-1:-1:-1;1490:1073:57;;-1:-1:-1;;;;;1490:1073:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1490:1073:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1490:1073:57;;;;;;;;-1:-1:-1;1490:1073:57;;-1:-1:-1;;;;;1490:1073:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1490:1073:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1490:1073:57;;-1:-1:-1;;;;;1490:1073:57;;;;;;;;-1:-1:-1;1490:1073:57;;;;-1:-1:-1;1490:1073:57;;;;-1:-1:-1;;;;1490:1073:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1490:1073:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1490:1073:57;;-1:-1:-1;1490:1073:57;;-1:-1:-1;;;;;1490:1073:57:i;744:51:24:-;;;:::i;1311:91:57:-;;;:::i;:::-;;;;;;;;;;;;;;;;1126:105;;;;;;;;;;;;;;;;-1:-1:-1;1126:105:57;;:::i;1235:72::-;;;;;;;;;;;;;;;;-1:-1:-1;1235:72:57;;;;:::i;666:74:24:-;;;:::o;1038:84:57:-;1096:14;:21;;;;;-1:-1:-1;;;1096:21:57;-1:-1:-1;;;;1096:21:57;;;;;;;;;1038:84::o;1406:80::-;1469:12;;;;1406:80;:::o;1490:1073::-;1683:4;1727:14;;-1:-1:-1;;;1727:14:57;;;;1723:111;;;1756:43;1773:6;1781:7;1790:8;1756:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1815:12:57;;;;1814:13;1807:20;;1723:111;1845:9;1840:643;1864:6;:13;1860:1;:17;1840:643;;;1942:19;1978:6;1985:1;1978:9;;;;;;;;;;;;;;1942:46;;2088:6;2095:1;2088:9;;;;;;;;;;;;;;-1:-1:-1;;;;;2081:27:57;;2117:4;2081:42;;;;;;;;;;;;;-1:-1:-1;;;;;2081:42:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2081:42:57;2067:10;;:7;;2075:1;;2067:10;;;;;;;;;;;;:56;;2050:125;;;;;-1:-1:-1;;;2050:125:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2184:22;2218:16;;2238:1;2218:21;;2217:72;;2262:27;2277:8;2286:1;2277:11;;;;;;;;;;;;;;2262:7;2270:1;2262:10;;;;;;;;;;;;;;:14;;:27;;;;:::i;:::-;2217:72;;;2243:16;;2217:72;2184:105;;2380:5;-1:-1:-1;;;;;2380:10:57;;2391:8;2400:1;2391:11;;;;;;;;;;;;;;2380:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2419:9:57;;:6;;2426:1;;2419:9;;;;;;;;;;;;-1:-1:-1;;;;;2412:25:57;;2446:12;2461:14;2412:64;;;;;;;;;;;;;-1:-1:-1;;;;;2412:64:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1879:3:57;;;;;-1:-1:-1;1840:643:57;;-1:-1:-1;1840:643:57;;;2494:46;2514:6;2522:7;2531:8;2494:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2554:4:57;1490:1073;;;;;;;;:::o;744:51:24:-;;;:::o;1311:91:57:-;1381:16;;1311:91;:::o;1126:105::-;1192:16;:34;1126:105::o;1235:72::-;1283:12;:19;;-1:-1:-1;;1283:19:57;;;;;;;;;;1235:72::o;851:162:13:-;909:7;936:5;;;955:6;;;;947:46;;;;;-1:-1:-1;;;947:46:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;1007:1;851:162;-1:-1:-1;;;851:162:13:o"
            },
            "methodIdentifiers": {
              "ADDRESSES_PROVIDER()": "0542975c",
              "LENDING_POOL()": "b4dcfc77",
              "amountToApprove()": "bb271c4d",
              "executeOperation(address[],uint256[],uint256[],address,bytes)": "920f5c84",
              "setAmountToApprove(uint256)": "bf443f85",
              "setFailExecutionTransfer(bool)": "388f70f1",
              "setSimulateEOA(bool)": "e9a6a25b",
              "simulateEOA()": "4444f331"
            }
          }
        }
      },
      "contracts/mocks/oracle/LendingRateOracle.sol": {
        "LendingRateOracle": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_asset",
                  "type": "address"
                }
              ],
              "name": "getMarketBorrowRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_asset",
                  "type": "address"
                }
              ],
              "name": "getMarketLiquidityRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_asset",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_rate",
                  "type": "uint256"
                }
              ],
              "name": "setMarketBorrowRate",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_asset",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_rate",
                  "type": "uint256"
                }
              ],
              "name": "setMarketLiquidityRate",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600061001b61006a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b6104d38061007d6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80639f86a0ee1161005b5780639f86a0ee146100dc578063bb85c0bb14610108578063f2fde38b14610140578063fbe5ba1e146101665761007d565b8063715018a61461008257806372eb293d1461008c5780638da5cb5b146100b8575b600080fd5b61008a61018c565b005b61008a600480360360408110156100a257600080fd5b506001600160a01b03813516906020013561022e565b6100c06102a2565b604080516001600160a01b039092168252519081900360200190f35b61008a600480360360408110156100f257600080fd5b506001600160a01b0381351690602001356102b1565b61012e6004803603602081101561011e57600080fd5b50356001600160a01b0316610325565b60408051918252519081900360200190f35b61008a6004803603602081101561015657600080fd5b50356001600160a01b0316610340565b61012e6004803603602081101561017c57600080fd5b50356001600160a01b0316610438565b610194610453565b6000546001600160a01b039081169116146101e4576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610236610453565b6000546001600160a01b03908116911614610286576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b6001600160a01b03909116600090815260016020526040902055565b6000546001600160a01b031690565b6102b9610453565b6000546001600160a01b03908116911614610309576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b6001600160a01b03909116600090815260026020526040902055565b6001600160a01b031660009081526001602052604090205490565b610348610453565b6000546001600160a01b03908116911614610398576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b6001600160a01b0381166103dd5760405162461bcd60e51b81526004018080602001828103825260268152602001806104586026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526002602052604090205490565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a26469706673582212201d7f473788a285376533f5b96c895378fdff2a709aa8154545daaf976c8f1f9f64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0x1B PUSH2 0x6A JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x6E JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x4D3 DUP1 PUSH2 0x7D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F86A0EE GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x9F86A0EE EQ PUSH2 0xDC JUMPI DUP1 PUSH4 0xBB85C0BB EQ PUSH2 0x108 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x140 JUMPI DUP1 PUSH4 0xFBE5BA1E EQ PUSH2 0x166 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x72EB293D EQ PUSH2 0x8C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xB8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x18C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x8A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x22E JUMP JUMPDEST PUSH2 0xC0 PUSH2 0x2A2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2B1 JUMP JUMPDEST PUSH2 0x12E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x325 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x340 JUMP JUMPDEST PUSH2 0x12E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x438 JUMP JUMPDEST PUSH2 0x194 PUSH2 0x453 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1E4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x47E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x236 PUSH2 0x453 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x286 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x47E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x2B9 PUSH2 0x453 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x309 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x47E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x348 PUSH2 0x453 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x398 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x47E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3DD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x458 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F20616464726573734F776E61626C653A2063616C6C657220 PUSH10 0x73206E6F742074686520 PUSH16 0x776E6572A26469706673582212201D7F SELFBALANCE CALLDATACOPY DUP9 LOG2 DUP6 CALLDATACOPY PUSH6 0x33F5B96C8953 PUSH25 0xFDFF2A709AA8154545DAAF976C8F1F9F64736F6C634300060C STOP CALLER ",
              "sourceMap": "218:658:58:-:0;;;;;;;;;;;;-1:-1:-1;844:17:11;864:12;:10;:12::i;:::-;882:6;:18;;-1:-1:-1;;;;;;882:18:11;-1:-1:-1;;;;;882:18:11;;;;;;;911:43;;882:18;;-1:-1:-1;882:18:11;911:43;;882:6;;911:43;815:144;218:658:58;;587:98:7;670:10;587:98;:::o;218:658:58:-;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061007d5760003560e01c80639f86a0ee1161005b5780639f86a0ee146100dc578063bb85c0bb14610108578063f2fde38b14610140578063fbe5ba1e146101665761007d565b8063715018a61461008257806372eb293d1461008c5780638da5cb5b146100b8575b600080fd5b61008a61018c565b005b61008a600480360360408110156100a257600080fd5b506001600160a01b03813516906020013561022e565b6100c06102a2565b604080516001600160a01b039092168252519081900360200190f35b61008a600480360360408110156100f257600080fd5b506001600160a01b0381351690602001356102b1565b61012e6004803603602081101561011e57600080fd5b50356001600160a01b0316610325565b60408051918252519081900360200190f35b61008a6004803603602081101561015657600080fd5b50356001600160a01b0316610340565b61012e6004803603602081101561017c57600080fd5b50356001600160a01b0316610438565b610194610453565b6000546001600160a01b039081169116146101e4576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610236610453565b6000546001600160a01b03908116911614610286576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b6001600160a01b03909116600090815260016020526040902055565b6000546001600160a01b031690565b6102b9610453565b6000546001600160a01b03908116911614610309576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b6001600160a01b03909116600090815260026020526040902055565b6001600160a01b031660009081526001602052604090205490565b610348610453565b6000546001600160a01b03908116911614610398576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b6001600160a01b0381166103dd5760405162461bcd60e51b81526004018080602001828103825260268152602001806104586026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526002602052604090205490565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a26469706673582212201d7f473788a285376533f5b96c895378fdff2a709aa8154545daaf976c8f1f9f64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F86A0EE GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x9F86A0EE EQ PUSH2 0xDC JUMPI DUP1 PUSH4 0xBB85C0BB EQ PUSH2 0x108 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x140 JUMPI DUP1 PUSH4 0xFBE5BA1E EQ PUSH2 0x166 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x72EB293D EQ PUSH2 0x8C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xB8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x18C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x8A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x22E JUMP JUMPDEST PUSH2 0xC0 PUSH2 0x2A2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2B1 JUMP JUMPDEST PUSH2 0x12E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x325 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x8A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x340 JUMP JUMPDEST PUSH2 0x12E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x438 JUMP JUMPDEST PUSH2 0x194 PUSH2 0x453 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x1E4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x47E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x236 PUSH2 0x453 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x286 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x47E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x2B9 PUSH2 0x453 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x309 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x47E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x348 PUSH2 0x453 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x398 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x47E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3DD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x458 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F20616464726573734F776E61626C653A2063616C6C657220 PUSH10 0x73206E6F742074686520 PUSH16 0x776E6572A26469706673582212201D7F SELFBALANCE CALLDATACOPY DUP9 LOG2 DUP6 CALLDATACOPY PUSH6 0x33F5B96C8953 PUSH25 0xFDFF2A709AA8154545DAAF976C8F1F9F64736F6C634300060C STOP CALLER ",
              "sourceMap": "218:658:58:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1610:135:11;;;:::i;:::-;;497:126:58;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;497:126:58;;;;;;;;:::i;1027:71:11:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1027:71:11;;;;;;;;;;;;;;751:123:58;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;751:123:58;;;;;;;;:::i;370:::-;;;;;;;;;;;;;;;;-1:-1:-1;370:123:58;-1:-1:-1;;;;;370:123:58;;:::i;:::-;;;;;;;;;;;;;;;;1884:226:11;;;;;;;;;;;;;;;;-1:-1:-1;1884:226:11;-1:-1:-1;;;;;1884:226:11;;:::i;627:120:58:-;;;;;;;;;;;;;;;;-1:-1:-1;627:120:58;-1:-1:-1;;;;;627:120:58;;:::i;1610:135:11:-;1223:12;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;;-1:-1:-1;;;1205:67:11;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1205:67:11;;;;;;;;;;;;;;;1712:1:::1;1696:6:::0;;1675:40:::1;::::0;-1:-1:-1;;;;;1696:6:11;;::::1;::::0;1675:40:::1;::::0;1712:1;;1675:40:::1;1738:1;1721:19:::0;;-1:-1:-1;;;;;;1721:19:11::1;::::0;;1610:135::o;497:126:58:-;1223:12:11;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;;-1:-1:-1;;;1205:67:11;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1205:67:11;;;;;;;;;;;;;;;-1:-1:-1;;;;;591:19:58;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:27;497:126::o;1027:71:11:-;1065:7;1087:6;-1:-1:-1;;;;;1087:6:11;1027:71;:::o;751:123:58:-;1223:12:11;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;;-1:-1:-1;;;1205:67:11;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1205:67:11;;;;;;;;;;;;;;;-1:-1:-1;;;;;839:22:58;;::::1;;::::0;;;:14:::1;:22;::::0;;;;:30;751:123::o;370:::-;-1:-1:-1;;;;;469:19:58;447:7;469:19;;;:11;:19;;;;;;;370:123::o;1884:226:11:-;1223:12;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;;-1:-1:-1;;;1205:67:11;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1205:67:11;;;;;;;;;;;;;;;-1:-1:-1;;;;;1968:22:11;::::1;1960:73;;;;-1:-1:-1::0;;;1960:73:11::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2065:6;::::0;;2044:38:::1;::::0;-1:-1:-1;;;;;2044:38:11;;::::1;::::0;2065:6;::::1;::::0;2044:38:::1;::::0;::::1;2088:6;:17:::0;;-1:-1:-1;;;;;;2088:17:11::1;-1:-1:-1::0;;;;;2088:17:11;;;::::1;::::0;;;::::1;::::0;;1884:226::o;627:120:58:-;-1:-1:-1;;;;;720:22:58;698:7;720:22;;;:14;:22;;;;;;;627:120::o;587:98:7:-;670:10;587:98;:::o"
            },
            "methodIdentifiers": {
              "getMarketBorrowRate(address)": "bb85c0bb",
              "getMarketLiquidityRate(address)": "fbe5ba1e",
              "owner()": "8da5cb5b",
              "renounceOwnership()": "715018a6",
              "setMarketBorrowRate(address,uint256)": "72eb293d",
              "setMarketLiquidityRate(address,uint256)": "9f86a0ee",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        }
      },
      "contracts/mocks/swap/MockUniswapV2Router02.sol": {
        "MockUniswapV2Router02": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                }
              ],
              "name": "getAmountsIn",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                }
              ],
              "name": "getAmountsOut",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "reserveIn",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "reserveOut",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                }
              ],
              "name": "setAmountIn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "reserveIn",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "reserveOut",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "name": "setAmountOut",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "setAmountToReturn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "setAmountToSwap",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "setDefaultMockValue",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "swapExactTokensForTokens",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "swapTokensForExactTokens",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50610ddd806100206000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638803dbee116100665780638803dbee146102505780639da23949146102d9578063d06ca61f14610315578063ee92b8591461038a578063fcaf206c146103a757610093565b80631f00ca741461009857806338ed17391461015d5780635186725f146101e65780635fdcafc814610214575b600080fd5b61010d600480360360408110156100ae57600080fd5b81359190810190604081016020820135600160201b8111156100cf57600080fd5b8201836020820111156100e157600080fd5b803590602001918460208302840111600160201b8311171561010257600080fd5b5090925090506103d3565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610149578181015183820152602001610131565b505050509050019250505060405180910390f35b61010d600480360360a081101561017357600080fd5b813591602081013591810190606081016040820135600160201b81111561019957600080fd5b8201836020820111156101ab57600080fd5b803590602001918460208302840111600160201b831117156101cc57600080fd5b91935091506001600160a01b038135169060200135610588565b610212600480360360408110156101fc57600080fd5b506001600160a01b038135169060200135610890565b005b6102126004803603608081101561022a57600080fd5b508035906001600160a01b036020820135811691604081013590911690606001356108ac565b61010d600480360360a081101561026657600080fd5b813591602081013591810190606081016040820135600160201b81111561028c57600080fd5b82018360208201111561029e57600080fd5b803590602001918460208302840111600160201b831117156102bf57600080fd5b91935091506001600160a01b0381351690602001356108e0565b610212600480360360808110156102ef57600080fd5b508035906001600160a01b03602082013581169160408101359091169060600135610bb0565b61010d6004803603604081101561032b57600080fd5b81359190810190604081016020820135600160201b81111561034c57600080fd5b82018360208201111561035e57600080fd5b803590602001918460208302840111600160201b8311171561037f57600080fd5b509092509050610be4565b610212600480360360208110156103a057600080fd5b5035610d86565b610212600480360360408110156103bd57600080fd5b506001600160a01b038135169060200135610d8b565b6060808267ffffffffffffffff811180156103ed57600080fd5b50604051908082528060200260200182016040528015610417578160200160208202803683370190505b5090506000600260008686600081811061042d57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060008686600181811061046c57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020600087815260200190815260200160002054116104bb5760045461054e565b60026000858560008181106104cc57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060008585600181811061050b57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000868152602001908152602001600020545b8160008151811061055b57fe5b602002602001018181525050848160018151811061057557fe5b6020908102919091010152949350505050565b60608484600081811061059757fe5b604080516323b872dd60e01b8152336004820152306024820152604481018c90529051602092830294909401356001600160a01b0316936323b872dd9350606480830193928290030181600087803b1580156105f257600080fd5b505af1158015610606573d6000803e3d6000fd5b505050506040513d602081101561061c57600080fd5b5085905084600181811061062c57fe5b905060200201356001600160a01b03166001600160a01b031663a0712d686000808888600081811061065a57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156106c157600080fd5b505af11580156106d5573d6000803e3d6000fd5b505050506040513d60208110156106eb57600080fd5b508590508460018181106106fb57fe5b905060200201356001600160a01b03166001600160a01b031663a9059cbb846000808989600081811061072a57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156107a157600080fd5b505af11580156107b5573d6000803e3d6000fd5b505050506040513d60208110156107cb57600080fd5b5084905067ffffffffffffffff811180156107e557600080fd5b5060405190808252806020026020018201604052801561080f578160200160208202803683370190505b509050868160008151811061082057fe5b6020026020010181815250506000808686600081811061083c57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020548160018151811061087a57fe5b6020026020010181815250509695505050505050565b6001600160a01b03909116600090815260208190526040902055565b6001600160a01b03928316600090815260036020908152604080832094909516825292835283812094815293909152912055565b6060848460008181106108ef57fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd3330600160008a8a600081811061092057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050602060405180830381600087803b1580156109a757600080fd5b505af11580156109bb573d6000803e3d6000fd5b505050506040513d60208110156109d157600080fd5b508590508460018181106109e157fe5b905060200201356001600160a01b03166001600160a01b031663a0712d68886040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610a3657600080fd5b505af1158015610a4a573d6000803e3d6000fd5b505050506040513d6020811015610a6057600080fd5b50859050846001818110610a7057fe5b905060200201356001600160a01b03166001600160a01b031663a9059cbb84896040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b505050506040513d6020811015610b0057600080fd5b5084905067ffffffffffffffff81118015610b1a57600080fd5b50604051908082528060200260200182016040528015610b44578160200160208202803683370190505b5090506001600086866000818110610b5857fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000205481600081518110610b9657fe5b602002602001018181525050868160018151811061087a57fe5b6001600160a01b03928316600090815260026020908152604080832094909516825292835283812094815293909152912055565b6060808267ffffffffffffffff81118015610bfe57600080fd5b50604051908082528060200260200182016040528015610c28578160200160208202803683370190505b5090508481600081518110610c3957fe5b60200260200101818152505060006003600086866000818110610c5857fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020600086866001818110610c9757fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060008781526020019081526020016000205411610ce657600454610d79565b6003600085856000818110610cf757fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020600085856001818110610d3657fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000868152602001908152602001600020545b8160018151811061057557fe5b600455565b6001600160a01b0390911660009081526001602052604090205556fea2646970667358221220c5861fce4fbae8cbc2670b6c66a26766f3174c68958eae99f3c5c3d974d980ba64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xDDD DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8803DBEE GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x8803DBEE EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0x9DA23949 EQ PUSH2 0x2D9 JUMPI DUP1 PUSH4 0xD06CA61F EQ PUSH2 0x315 JUMPI DUP1 PUSH4 0xEE92B859 EQ PUSH2 0x38A JUMPI DUP1 PUSH4 0xFCAF206C EQ PUSH2 0x3A7 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x1F00CA74 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x38ED1739 EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0x5186725F EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0x5FDCAFC8 EQ PUSH2 0x214 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3D3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x149 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x131 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x199 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x588 JUMP JUMPDEST PUSH2 0x212 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x890 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x212 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x8AC JUMP JUMPDEST PUSH2 0x10D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x266 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x28C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x29E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x2BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8E0 JUMP JUMPDEST PUSH2 0x212 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x2EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0xBB0 JUMP JUMPDEST PUSH2 0x10D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x35E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x37F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xBE4 JUMP JUMPDEST PUSH2 0x212 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xD86 JUMP JUMPDEST PUSH2 0x212 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xD8B JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x417 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x42D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP7 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x46C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH2 0x4BB JUMPI PUSH1 0x4 SLOAD PUSH2 0x54E JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x4CC JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP6 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x50B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x55B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP5 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x575 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP5 DUP5 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x597 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP13 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x20 SWAP3 DUP4 MUL SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 PUSH4 0x23B872DD SWAP4 POP PUSH1 0x64 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x606 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP6 SWAP1 POP DUP5 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x62C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA0712D68 PUSH1 0x0 DUP1 DUP9 DUP9 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x65A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP6 SWAP1 POP DUP5 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x6FB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP5 PUSH1 0x0 DUP1 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x72A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP5 SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x7E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x80F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP7 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x820 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP1 DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x83C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x87A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP6 AND DUP3 MSTORE SWAP3 DUP4 MSTORE DUP4 DUP2 KECCAK256 SWAP5 DUP2 MSTORE SWAP4 SWAP1 SWAP2 MSTORE SWAP2 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x60 DUP5 DUP5 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x8EF JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD CALLER ADDRESS PUSH1 0x1 PUSH1 0x0 DUP11 DUP11 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x920 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP6 SWAP1 POP DUP5 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x9E1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA0712D68 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA4A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP6 SWAP1 POP DUP5 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0xA70 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP5 DUP10 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAEA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP5 SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xB1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xB44 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x1 PUSH1 0x0 DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xB58 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xB96 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP7 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x87A JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP6 AND DUP3 MSTORE SWAP3 DUP4 MSTORE DUP4 DUP2 KECCAK256 SWAP5 DUP2 MSTORE SWAP4 SWAP1 SWAP2 MSTORE SWAP2 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xBFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xC28 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP5 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xC39 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xC58 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP7 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0xC97 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH2 0xCE6 JUMPI PUSH1 0x4 SLOAD PUSH2 0xD79 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xCF7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP6 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0xD36 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD JUMPDEST DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x575 JUMPI INVALID JUMPDEST PUSH1 0x4 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC5 DUP7 0x1F 0xCE 0x4F 0xBA 0xE8 0xCB 0xC2 PUSH8 0xB6C66A26766F317 0x4C PUSH9 0x958EAE99F3C5C3D974 0xD9 DUP1 0xBA PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "269:2906:59:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100935760003560e01c80638803dbee116100665780638803dbee146102505780639da23949146102d9578063d06ca61f14610315578063ee92b8591461038a578063fcaf206c146103a757610093565b80631f00ca741461009857806338ed17391461015d5780635186725f146101e65780635fdcafc814610214575b600080fd5b61010d600480360360408110156100ae57600080fd5b81359190810190604081016020820135600160201b8111156100cf57600080fd5b8201836020820111156100e157600080fd5b803590602001918460208302840111600160201b8311171561010257600080fd5b5090925090506103d3565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610149578181015183820152602001610131565b505050509050019250505060405180910390f35b61010d600480360360a081101561017357600080fd5b813591602081013591810190606081016040820135600160201b81111561019957600080fd5b8201836020820111156101ab57600080fd5b803590602001918460208302840111600160201b831117156101cc57600080fd5b91935091506001600160a01b038135169060200135610588565b610212600480360360408110156101fc57600080fd5b506001600160a01b038135169060200135610890565b005b6102126004803603608081101561022a57600080fd5b508035906001600160a01b036020820135811691604081013590911690606001356108ac565b61010d600480360360a081101561026657600080fd5b813591602081013591810190606081016040820135600160201b81111561028c57600080fd5b82018360208201111561029e57600080fd5b803590602001918460208302840111600160201b831117156102bf57600080fd5b91935091506001600160a01b0381351690602001356108e0565b610212600480360360808110156102ef57600080fd5b508035906001600160a01b03602082013581169160408101359091169060600135610bb0565b61010d6004803603604081101561032b57600080fd5b81359190810190604081016020820135600160201b81111561034c57600080fd5b82018360208201111561035e57600080fd5b803590602001918460208302840111600160201b8311171561037f57600080fd5b509092509050610be4565b610212600480360360208110156103a057600080fd5b5035610d86565b610212600480360360408110156103bd57600080fd5b506001600160a01b038135169060200135610d8b565b6060808267ffffffffffffffff811180156103ed57600080fd5b50604051908082528060200260200182016040528015610417578160200160208202803683370190505b5090506000600260008686600081811061042d57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060008686600181811061046c57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020600087815260200190815260200160002054116104bb5760045461054e565b60026000858560008181106104cc57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060008585600181811061050b57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000868152602001908152602001600020545b8160008151811061055b57fe5b602002602001018181525050848160018151811061057557fe5b6020908102919091010152949350505050565b60608484600081811061059757fe5b604080516323b872dd60e01b8152336004820152306024820152604481018c90529051602092830294909401356001600160a01b0316936323b872dd9350606480830193928290030181600087803b1580156105f257600080fd5b505af1158015610606573d6000803e3d6000fd5b505050506040513d602081101561061c57600080fd5b5085905084600181811061062c57fe5b905060200201356001600160a01b03166001600160a01b031663a0712d686000808888600081811061065a57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156106c157600080fd5b505af11580156106d5573d6000803e3d6000fd5b505050506040513d60208110156106eb57600080fd5b508590508460018181106106fb57fe5b905060200201356001600160a01b03166001600160a01b031663a9059cbb846000808989600081811061072a57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156107a157600080fd5b505af11580156107b5573d6000803e3d6000fd5b505050506040513d60208110156107cb57600080fd5b5084905067ffffffffffffffff811180156107e557600080fd5b5060405190808252806020026020018201604052801561080f578160200160208202803683370190505b509050868160008151811061082057fe5b6020026020010181815250506000808686600081811061083c57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020548160018151811061087a57fe5b6020026020010181815250509695505050505050565b6001600160a01b03909116600090815260208190526040902055565b6001600160a01b03928316600090815260036020908152604080832094909516825292835283812094815293909152912055565b6060848460008181106108ef57fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd3330600160008a8a600081811061092057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050602060405180830381600087803b1580156109a757600080fd5b505af11580156109bb573d6000803e3d6000fd5b505050506040513d60208110156109d157600080fd5b508590508460018181106109e157fe5b905060200201356001600160a01b03166001600160a01b031663a0712d68886040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610a3657600080fd5b505af1158015610a4a573d6000803e3d6000fd5b505050506040513d6020811015610a6057600080fd5b50859050846001818110610a7057fe5b905060200201356001600160a01b03166001600160a01b031663a9059cbb84896040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b505050506040513d6020811015610b0057600080fd5b5084905067ffffffffffffffff81118015610b1a57600080fd5b50604051908082528060200260200182016040528015610b44578160200160208202803683370190505b5090506001600086866000818110610b5857fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000205481600081518110610b9657fe5b602002602001018181525050868160018151811061087a57fe5b6001600160a01b03928316600090815260026020908152604080832094909516825292835283812094815293909152912055565b6060808267ffffffffffffffff81118015610bfe57600080fd5b50604051908082528060200260200182016040528015610c28578160200160208202803683370190505b5090508481600081518110610c3957fe5b60200260200101818152505060006003600086866000818110610c5857fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020600086866001818110610c9757fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060008781526020019081526020016000205411610ce657600454610d79565b6003600085856000818110610cf757fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020600085856001818110610d3657fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000868152602001908152602001600020545b8160018151811061057557fe5b600455565b6001600160a01b0390911660009081526001602052604090205556fea2646970667358221220c5861fce4fbae8cbc2670b6c66a26766f3174c68958eae99f3c5c3d974d980ba64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8803DBEE GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x8803DBEE EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0x9DA23949 EQ PUSH2 0x2D9 JUMPI DUP1 PUSH4 0xD06CA61F EQ PUSH2 0x315 JUMPI DUP1 PUSH4 0xEE92B859 EQ PUSH2 0x38A JUMPI DUP1 PUSH4 0xFCAF206C EQ PUSH2 0x3A7 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x1F00CA74 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x38ED1739 EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0x5186725F EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0x5FDCAFC8 EQ PUSH2 0x214 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3D3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x149 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x131 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x199 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x588 JUMP JUMPDEST PUSH2 0x212 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x890 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x212 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x8AC JUMP JUMPDEST PUSH2 0x10D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x266 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x28C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x29E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x2BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8E0 JUMP JUMPDEST PUSH2 0x212 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x2EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0xBB0 JUMP JUMPDEST PUSH2 0x10D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x35E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x37F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xBE4 JUMP JUMPDEST PUSH2 0x212 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xD86 JUMP JUMPDEST PUSH2 0x212 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xD8B JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x417 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x42D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP7 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x46C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH2 0x4BB JUMPI PUSH1 0x4 SLOAD PUSH2 0x54E JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x4CC JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP6 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x50B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x55B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP5 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x575 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP5 DUP5 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x597 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP13 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x20 SWAP3 DUP4 MUL SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 PUSH4 0x23B872DD SWAP4 POP PUSH1 0x64 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x606 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP6 SWAP1 POP DUP5 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x62C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA0712D68 PUSH1 0x0 DUP1 DUP9 DUP9 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x65A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP6 SWAP1 POP DUP5 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x6FB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP5 PUSH1 0x0 DUP1 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x72A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP5 SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x7E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x80F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP7 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x820 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP1 DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x83C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x87A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP6 AND DUP3 MSTORE SWAP3 DUP4 MSTORE DUP4 DUP2 KECCAK256 SWAP5 DUP2 MSTORE SWAP4 SWAP1 SWAP2 MSTORE SWAP2 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x60 DUP5 DUP5 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x8EF JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD CALLER ADDRESS PUSH1 0x1 PUSH1 0x0 DUP11 DUP11 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x920 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP6 SWAP1 POP DUP5 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x9E1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA0712D68 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA4A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP6 SWAP1 POP DUP5 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0xA70 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP5 DUP10 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAEA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP5 SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xB1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xB44 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x1 PUSH1 0x0 DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xB58 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xB96 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP7 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x87A JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP6 AND DUP3 MSTORE SWAP3 DUP4 MSTORE DUP4 DUP2 KECCAK256 SWAP5 DUP2 MSTORE SWAP4 SWAP1 SWAP2 MSTORE SWAP2 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xBFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xC28 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP5 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xC39 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xC58 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP7 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0xC97 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH2 0xCE6 JUMPI PUSH1 0x4 SLOAD PUSH2 0xD79 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xCF7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP6 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0xD36 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD JUMPDEST DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x575 JUMPI INVALID JUMPDEST PUSH1 0x4 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC5 DUP7 0x1F 0xCE 0x4F 0xBA 0xE8 0xCB 0xC2 PUSH8 0xB6C66A26766F317 0x4C PUSH9 0x958EAE99F3C5C3D974 0xD9 DUP1 0xBA PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "269:2906:59:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2792:381;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2792:381:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2792:381:59;;;;;;;;;;-1:-1:-1;2792:381:59;;-1:-1:-1;2792:381:59;-1:-1:-1;2792:381:59;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;883:527;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;883:527:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;883:527:59;;;;;;;;;;;;-1:-1:-1;883:527:59;-1:-1:-1;;;;;;883:527:59;;;;;;;;:::i;657:111::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;657:111:59;;;;;;;;:::i;:::-;;1928:192;;;;;;;;;;;;;;;;-1:-1:-1;1928:192:59;;;-1:-1:-1;;;;;1928:192:59;;;;;;;;;;;;;;;;;;;:::i;1414:510::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1414:510:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1414:510:59;;;;;;;;;;;;-1:-1:-1;1414:510:59;-1:-1:-1;;;;;;1414:510:59;;;;;;;;:::i;2124:190::-;;;;;;;;;;;;;;;;-1:-1:-1;2124:190:59;;;-1:-1:-1;;;;;2124:190:59;;;;;;;;;;;;;;;;;;;:::i;2408:380::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2408:380:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2408:380:59;;;;;;;;;;-1:-1:-1;2408:380:59;;-1:-1:-1;2408:380:59;-1:-1:-1;2408:380:59;:::i;2318:86::-;;;;;;;;;;;;;;;;-1:-1:-1;2318:86:59;;:::i;772:107::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;772:107:59;;;;;;;;:::i;2792:381::-;2906:16;;2973:4;2959:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2959:26:59;;2932:53;;3046:1;3004:10;:19;3015:4;;3020:1;3015:7;;;;;;;;;;;;;-1:-1:-1;;;;;3015:7:59;-1:-1:-1;;;;;3004:19:59;-1:-1:-1;;;;;3004:19:59;;;;;;;;;;;;:28;3024:4;;3029:1;3024:7;;;;;;;;;;;;;-1:-1:-1;;;;;3024:7:59;-1:-1:-1;;;;;3004:28:59;-1:-1:-1;;;;;3004:28:59;;;;;;;;;;;;:39;3033:9;3004:39;;;;;;;;;;;;:43;:116;;3104:16;;3004:116;;;3056:10;:19;3067:4;;3072:1;3067:7;;;;;;;;;;;;;-1:-1:-1;;;;;3067:7:59;-1:-1:-1;;;;;3056:19:59;-1:-1:-1;;;;;3056:19:59;;;;;;;;;;;;:28;3076:4;;3081:1;3076:7;;;;;;;;;;;;;-1:-1:-1;;;;;3076:7:59;-1:-1:-1;;;;;3056:28:59;-1:-1:-1;;;;;3056:28:59;;;;;;;;;;;;:39;3085:9;3056:39;;;;;;;;;;;;3004:116;2991:7;2999:1;2991:10;;;;;;;;;;;;;:129;;;;;3139:9;3126:7;3134:1;3126:10;;;;;;;;;;;;;;;;;:22;3161:7;2792:381;-1:-1:-1;;;;2792:381:59:o;883:527::-;1075:24;1114:4;;1119:1;1114:7;;;;;;;1107:65;;;-1:-1:-1;;;1107:65:59;;1136:10;1107:65;;;;1156:4;1107:65;;;;;;;;;;;;1114:7;;;;;;;;;-1:-1:-1;;;;;1114:7:59;;1107:28;;-1:-1:-1;1107:65:59;;;;;1114:7;1107:65;;;;;-1:-1:-1;1114:7:59;1107:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1193:4:59;;-1:-1:-1;1193:4:59;1198:1;1193:7;;;;;;;;;;;;;-1:-1:-1;;;;;1193:7:59;-1:-1:-1;;;;;1179:27:59;;1207:15;:24;1223:4;;1228:1;1223:7;;;;;;;;;;;;;-1:-1:-1;;;;;1223:7:59;-1:-1:-1;;;;;1207:24:59;-1:-1:-1;;;;;1207:24:59;;;;;;;;;;;;;1179:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1245:4:59;;-1:-1:-1;1245:4:59;1250:1;1245:7;;;;;;;;;;;;;-1:-1:-1;;;;;1245:7:59;-1:-1:-1;;;;;1238:24:59;;1263:2;1267:15;:24;1283:4;;1288:1;1283:7;;;;;;;;;;;;;-1:-1:-1;;;;;1283:7:59;-1:-1:-1;;;;;1267:24:59;-1:-1:-1;;;;;1267:24:59;;;;;;;;;;;;;1238:54;;;;;;;;;;;;;-1:-1:-1;;;;;1238:54:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1323:4:59;;-1:-1:-1;1309:26:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1309:26:59;;1299:36;;1354:8;1341:7;1349:1;1341:10;;;;;;;;;;;;;:21;;;;;1381:15;:24;1397:4;;1402:1;1397:7;;;;;;;;;;;;;-1:-1:-1;;;;;1397:7:59;-1:-1:-1;;;;;1381:24:59;-1:-1:-1;;;;;1381:24:59;;;;;;;;;;;;;1368:7;1376:1;1368:10;;;;;;;;;;;;;:37;;;;;883:527;;;;;;;;:::o;657:111::-;-1:-1:-1;;;;;730:24:59;;;:15;:24;;;;;;;;;;:33;657:111::o;1928:192::-;-1:-1:-1;;;;;2059:22:59;;;;;;;:11;:22;;;;;;;;:34;;;;;;;;;;;;:44;;;;;;;;;:56;1928:192::o;1414:510::-;1606:24;1645:4;;1650:1;1645:7;;;;;;;;;;;;;-1:-1:-1;;;;;1645:7:59;-1:-1:-1;;;;;1638:28:59;;1667:10;1687:4;1694:13;:22;1708:4;;1713:1;1708:7;;;;;;;;;;;;;-1:-1:-1;;;;;1708:7:59;-1:-1:-1;;;;;1694:22:59;-1:-1:-1;;;;;1694:22:59;;;;;;;;;;;;;1638:79;;;;;;;;;;;;;-1:-1:-1;;;;;1638:79:59;;;;;;-1:-1:-1;;;;;1638:79:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1738:4:59;;-1:-1:-1;1738:4:59;1743:1;1738:7;;;;;;;;;;;;;-1:-1:-1;;;;;1738:7:59;-1:-1:-1;;;;;1724:27:59;;1752:9;1724:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1775:4:59;;-1:-1:-1;1775:4:59;1780:1;1775:7;;;;;;;;;;;;;-1:-1:-1;;;;;1775:7:59;-1:-1:-1;;;;;1768:24:59;;1793:2;1797:9;1768:39;;;;;;;;;;;;;-1:-1:-1;;;;;1768:39:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1838:4:59;;-1:-1:-1;1824:26:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1824:26:59;;1814:36;;1869:13;:22;1883:4;;1888:1;1883:7;;;;;;;;;;;;;-1:-1:-1;;;;;1883:7:59;-1:-1:-1;;;;;1869:22:59;-1:-1:-1;;;;;1869:22:59;;;;;;;;;;;;;1856:7;1864:1;1856:10;;;;;;;;;;;;;:35;;;;;1910:9;1897:7;1905:1;1897:10;;;;;;;2124:190;-1:-1:-1;;;;;2254:21:59;;;;;;;:10;:21;;;;;;;;:33;;;;;;;;;;;;:44;;;;;;;;;:55;2124:190::o;2408:380::-;2522:16;;2589:4;2575:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2575:26:59;;2548:53;;2620:8;2607:7;2615:1;2607:10;;;;;;;;;;;;;:21;;;;;2689:1;2647:11;:20;2659:4;;2664:1;2659:7;;;;;;;;;;;;;-1:-1:-1;;;;;2659:7:59;-1:-1:-1;;;;;2647:20:59;-1:-1:-1;;;;;2647:20:59;;;;;;;;;;;;:29;2668:4;;2673:1;2668:7;;;;;;;;;;;;;-1:-1:-1;;;;;2668:7:59;-1:-1:-1;;;;;2647:29:59;-1:-1:-1;;;;;2647:29:59;;;;;;;;;;;;:39;2677:8;2647:39;;;;;;;;;;;;:43;:116;;2747:16;;2647:116;;;2699:11;:20;2711:4;;2716:1;2711:7;;;;;;;;;;;;;-1:-1:-1;;;;;2711:7:59;-1:-1:-1;;;;;2699:20:59;-1:-1:-1;;;;;2699:20:59;;;;;;;;;;;;:29;2720:4;;2725:1;2720:7;;;;;;;;;;;;;-1:-1:-1;;;;;2720:7:59;-1:-1:-1;;;;;2699:29:59;-1:-1:-1;;;;;2699:29:59;;;;;;;;;;;;:39;2729:8;2699:39;;;;;;;;;;;;2647:116;2634:7;2642:1;2634:10;;;;;;;2318:86;2375:16;:24;2318:86::o;772:107::-;-1:-1:-1;;;;;843:22:59;;;;;;;:13;:22;;;;;:31;772:107::o"
            },
            "methodIdentifiers": {
              "getAmountsIn(uint256,address[])": "1f00ca74",
              "getAmountsOut(uint256,address[])": "d06ca61f",
              "setAmountIn(uint256,address,address,uint256)": "9da23949",
              "setAmountOut(uint256,address,address,uint256)": "5fdcafc8",
              "setAmountToReturn(address,uint256)": "5186725f",
              "setAmountToSwap(address,uint256)": "fcaf206c",
              "setDefaultMockValue(uint256)": "ee92b859",
              "swapExactTokensForTokens(uint256,uint256,address[],address,uint256)": "38ed1739",
              "swapTokensForExactTokens(uint256,uint256,address[],address,uint256)": "8803dbee"
            }
          }
        }
      },
      "contracts/mocks/tokens/MintableDelegationERC20.sol": {
        "MintableDelegationERC20": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "symbol",
                  "type": "string"
                },
                {
                  "internalType": "uint8",
                  "name": "decimals",
                  "type": "uint8"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "subtractedValue",
                  "type": "uint256"
                }
              ],
              "name": "decreaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "delegateeAddress",
                  "type": "address"
                }
              ],
              "name": "delegate",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "delegatee",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "addedValue",
                  "type": "uint256"
                }
              ],
              "name": "increaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b5060405162000e9538038062000e95833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405260209081015185519093508592508491620001bd916003918501906200020d565b508051620001d39060049060208401906200020d565b50506005805460ff1916601217905550620001ee81620001f7565b505050620002a9565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200025057805160ff191683800117855562000280565b8280016001018555821562000280579182015b828111156200028057825182559160200191906001019062000263565b506200028e92915062000292565b5090565b5b808211156200028e576000815560010162000293565b610bdc80620002b96000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80635c19a95c1161008c578063a0712d6811610066578063a0712d68146102c0578063a457c2d7146102dd578063a9059cbb14610309578063dd62ed3e14610335576100ea565b80635c19a95c1461026a57806370a082311461029257806395d89b41146102b8576100ea565b80631e31d053116100c85780631e31d053146101c657806323b872dd146101ea578063313ce56714610220578063395093511461023e576100ea565b806306fdde03146100ef578063095ea7b31461016c57806318160ddd146101ac575b600080fd5b6100f7610363565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610131578181015183820152602001610119565b50505050905090810190601f16801561015e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101986004803603604081101561018257600080fd5b506001600160a01b0381351690602001356103f9565b604080519115158252519081900360200190f35b6101b4610416565b60408051918252519081900360200190f35b6101ce61041c565b604080516001600160a01b039092168252519081900360200190f35b6101986004803603606081101561020057600080fd5b506001600160a01b03813581169160208101359091169060400135610430565b6102286104b7565b6040805160ff9092168252519081900360200190f35b6101986004803603604081101561025457600080fd5b506001600160a01b0381351690602001356104c0565b6102906004803603602081101561028057600080fd5b50356001600160a01b031661050e565b005b6101b4600480360360208110156102a857600080fd5b50356001600160a01b0316610536565b6100f7610551565b610198600480360360208110156102d657600080fd5b50356105b2565b610198600480360360408110156102f357600080fd5b506001600160a01b0381351690602001356105c6565b6101986004803603604081101561031f57600080fd5b506001600160a01b03813516906020013561062e565b6101b46004803603604081101561034b57600080fd5b506001600160a01b0381358116916020013516610642565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103ef5780601f106103c4576101008083540402835291602001916103ef565b820191906000526020600020905b8154815290600101906020018083116103d257829003601f168201915b5050505050905090565b600061040d61040661066d565b8484610671565b50600192915050565b60025490565b60055461010090046001600160a01b031681565b600061043d84848461075d565b6104ad8461044961066d565b6104a885604051806060016040528060288152602001610b11602891396001600160a01b038a1660009081526001602052604081209061048761066d565b6001600160a01b0316815260208101919091526040016000205491906108b8565b610671565b5060019392505050565b60055460ff1690565b600061040d6104cd61066d565b846104a885600160006104de61066d565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549061094f565b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103ef5780601f106103c4576101008083540402835291602001916103ef565b60006105be33836109b0565b506001919050565b600061040d6105d361066d565b846104a885604051806060016040528060258152602001610b8260259139600160006105fd61066d565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906108b8565b600061040d61063b61066d565b848461075d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166106b65760405162461bcd60e51b8152600401808060200182810382526024815260200180610b5e6024913960400191505060405180910390fd5b6001600160a01b0382166106fb5760405162461bcd60e51b8152600401808060200182810382526022815260200180610ac96022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166107a25760405162461bcd60e51b8152600401808060200182810382526025815260200180610b396025913960400191505060405180910390fd5b6001600160a01b0382166107e75760405162461bcd60e51b8152600401808060200182810382526023815260200180610aa66023913960400191505060405180910390fd5b6107f2838383610aa0565b61082f81604051806060016040528060268152602001610aeb602691396001600160a01b03861660009081526020819052604090205491906108b8565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461085e908261094f565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156109475760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561090c5781810151838201526020016108f4565b50505050905090810190601f1680156109395780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156109a9576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610a0b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610a1760008383610aa0565b600254610a24908261094f565b6002556001600160a01b038216600090815260208190526040902054610a4a908261094f565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203c762ec02be9d14f96b04e99b7464ddb92bb511ee2e09e11606fb9026557c50164736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xE95 CODESIZE SUB DUP1 PUSH3 0xE95 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x150 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x198 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 SWAP1 DUP2 ADD MLOAD DUP6 MLOAD SWAP1 SWAP4 POP DUP6 SWAP3 POP DUP5 SWAP2 PUSH3 0x1BD SWAP2 PUSH1 0x3 SWAP2 DUP6 ADD SWAP1 PUSH3 0x20D JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x1D3 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x20D JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP PUSH3 0x1EE DUP2 PUSH3 0x1F7 JUMP JUMPDEST POP POP POP PUSH3 0x2A9 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x250 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x280 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x280 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x280 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x263 JUMP JUMPDEST POP PUSH3 0x28E SWAP3 SWAP2 POP PUSH3 0x292 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x28E JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x293 JUMP JUMPDEST PUSH2 0xBDC DUP1 PUSH3 0x2B9 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5C19A95C GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA0712D68 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA0712D68 EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x2DD JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x309 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x335 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x5C19A95C EQ PUSH2 0x26A JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x292 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2B8 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x1E31D053 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x1E31D053 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x23E JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1AC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x363 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x131 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x15E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x198 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3F9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B4 PUSH2 0x416 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1CE PUSH2 0x41C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x198 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x430 JUMP JUMPDEST PUSH2 0x228 PUSH2 0x4B7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x198 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4C0 JUMP JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x50E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x536 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x551 JUMP JUMPDEST PUSH2 0x198 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x5B2 JUMP JUMPDEST PUSH2 0x198 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5C6 JUMP JUMPDEST PUSH2 0x198 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x62E JUMP JUMPDEST PUSH2 0x1B4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x642 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3EF JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3C4 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3EF JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3D2 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x40D PUSH2 0x406 PUSH2 0x66D JUMP JUMPDEST DUP5 DUP5 PUSH2 0x671 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43D DUP5 DUP5 DUP5 PUSH2 0x75D JUMP JUMPDEST PUSH2 0x4AD DUP5 PUSH2 0x449 PUSH2 0x66D JUMP JUMPDEST PUSH2 0x4A8 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB11 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x487 PUSH2 0x66D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST PUSH2 0x671 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x40D PUSH2 0x4CD PUSH2 0x66D JUMP JUMPDEST DUP5 PUSH2 0x4A8 DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x4DE PUSH2 0x66D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x94F JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3EF JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3C4 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3EF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5BE CALLER DUP4 PUSH2 0x9B0 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x40D PUSH2 0x5D3 PUSH2 0x66D JUMP JUMPDEST DUP5 PUSH2 0x4A8 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB82 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x5FD PUSH2 0x66D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x40D PUSH2 0x63B PUSH2 0x66D JUMP JUMPDEST DUP5 DUP5 PUSH2 0x75D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x6B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB5E PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x6FB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAC9 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x7A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB39 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x7E7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAA6 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7F2 DUP4 DUP4 DUP4 PUSH2 0xAA0 JUMP JUMPDEST PUSH2 0x82F DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAEB PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x85E SWAP1 DUP3 PUSH2 0x94F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x947 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x90C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8F4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x939 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x9A9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xA0B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xA17 PUSH1 0x0 DUP4 DUP4 PUSH2 0xAA0 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0xA24 SWAP1 DUP3 PUSH2 0x94F JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xA4A SWAP1 DUP3 PUSH2 0x94F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x73582212203C76 0x2E 0xC0 0x2B 0xE9 0xD1 0x4F SWAP7 0xB0 0x4E SWAP10 0xB7 CHAINID 0x4D 0xDB SWAP3 0xBB MLOAD 0x1E 0xE2 0xE0 SWAP15 GT PUSH1 0x6F 0xB9 MUL PUSH6 0x57C50164736F PUSH13 0x634300060C0033000000000000 ",
              "sourceMap": "198:594:60:-:0;;;273:148;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;273:148:60;;;;;;;;;;-1:-1:-1;273:148:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;273:148:60;;;;;;;;;;-1:-1:-1;273:148:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;273:148:60;;;;;;;2016:12:8;;273:148:60;;-1:-1:-1;372:4:60;;-1:-1:-1;378:6:60;;2016:12:8;;:5;;:12;;;;:::i;:::-;-1:-1:-1;2034:16:8;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;;2056:9:8;:14;;-1:-1:-1;;2056:14:8;2068:2;2056:14;;;-1:-1:-1;392:24:60::1;407:8:::0;392:14:::1;:24::i;:::-;273:148:::0;;;198:594;;9617:82:8;9673:9;:21;;-1:-1:-1;;9673:21:8;;;;;;;;;;;;9617:82::o;198:594:60:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;198:594:60;;;-1:-1:-1;198:594:60;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100ea5760003560e01c80635c19a95c1161008c578063a0712d6811610066578063a0712d68146102c0578063a457c2d7146102dd578063a9059cbb14610309578063dd62ed3e14610335576100ea565b80635c19a95c1461026a57806370a082311461029257806395d89b41146102b8576100ea565b80631e31d053116100c85780631e31d053146101c657806323b872dd146101ea578063313ce56714610220578063395093511461023e576100ea565b806306fdde03146100ef578063095ea7b31461016c57806318160ddd146101ac575b600080fd5b6100f7610363565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610131578181015183820152602001610119565b50505050905090810190601f16801561015e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101986004803603604081101561018257600080fd5b506001600160a01b0381351690602001356103f9565b604080519115158252519081900360200190f35b6101b4610416565b60408051918252519081900360200190f35b6101ce61041c565b604080516001600160a01b039092168252519081900360200190f35b6101986004803603606081101561020057600080fd5b506001600160a01b03813581169160208101359091169060400135610430565b6102286104b7565b6040805160ff9092168252519081900360200190f35b6101986004803603604081101561025457600080fd5b506001600160a01b0381351690602001356104c0565b6102906004803603602081101561028057600080fd5b50356001600160a01b031661050e565b005b6101b4600480360360208110156102a857600080fd5b50356001600160a01b0316610536565b6100f7610551565b610198600480360360208110156102d657600080fd5b50356105b2565b610198600480360360408110156102f357600080fd5b506001600160a01b0381351690602001356105c6565b6101986004803603604081101561031f57600080fd5b506001600160a01b03813516906020013561062e565b6101b46004803603604081101561034b57600080fd5b506001600160a01b0381358116916020013516610642565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103ef5780601f106103c4576101008083540402835291602001916103ef565b820191906000526020600020905b8154815290600101906020018083116103d257829003601f168201915b5050505050905090565b600061040d61040661066d565b8484610671565b50600192915050565b60025490565b60055461010090046001600160a01b031681565b600061043d84848461075d565b6104ad8461044961066d565b6104a885604051806060016040528060288152602001610b11602891396001600160a01b038a1660009081526001602052604081209061048761066d565b6001600160a01b0316815260208101919091526040016000205491906108b8565b610671565b5060019392505050565b60055460ff1690565b600061040d6104cd61066d565b846104a885600160006104de61066d565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549061094f565b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103ef5780601f106103c4576101008083540402835291602001916103ef565b60006105be33836109b0565b506001919050565b600061040d6105d361066d565b846104a885604051806060016040528060258152602001610b8260259139600160006105fd61066d565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906108b8565b600061040d61063b61066d565b848461075d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166106b65760405162461bcd60e51b8152600401808060200182810382526024815260200180610b5e6024913960400191505060405180910390fd5b6001600160a01b0382166106fb5760405162461bcd60e51b8152600401808060200182810382526022815260200180610ac96022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166107a25760405162461bcd60e51b8152600401808060200182810382526025815260200180610b396025913960400191505060405180910390fd5b6001600160a01b0382166107e75760405162461bcd60e51b8152600401808060200182810382526023815260200180610aa66023913960400191505060405180910390fd5b6107f2838383610aa0565b61082f81604051806060016040528060268152602001610aeb602691396001600160a01b03861660009081526020819052604090205491906108b8565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461085e908261094f565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156109475760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561090c5781810151838201526020016108f4565b50505050905090810190601f1680156109395780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156109a9576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610a0b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610a1760008383610aa0565b600254610a24908261094f565b6002556001600160a01b038216600090815260208190526040902054610a4a908261094f565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203c762ec02be9d14f96b04e99b7464ddb92bb511ee2e09e11606fb9026557c50164736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5C19A95C GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA0712D68 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA0712D68 EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x2DD JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x309 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x335 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x5C19A95C EQ PUSH2 0x26A JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x292 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2B8 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x1E31D053 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x1E31D053 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x23E JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1AC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x363 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x131 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x15E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x198 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3F9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B4 PUSH2 0x416 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1CE PUSH2 0x41C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x198 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x430 JUMP JUMPDEST PUSH2 0x228 PUSH2 0x4B7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x198 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4C0 JUMP JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x50E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x536 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x551 JUMP JUMPDEST PUSH2 0x198 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x5B2 JUMP JUMPDEST PUSH2 0x198 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5C6 JUMP JUMPDEST PUSH2 0x198 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x62E JUMP JUMPDEST PUSH2 0x1B4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x642 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3EF JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3C4 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3EF JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3D2 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x40D PUSH2 0x406 PUSH2 0x66D JUMP JUMPDEST DUP5 DUP5 PUSH2 0x671 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43D DUP5 DUP5 DUP5 PUSH2 0x75D JUMP JUMPDEST PUSH2 0x4AD DUP5 PUSH2 0x449 PUSH2 0x66D JUMP JUMPDEST PUSH2 0x4A8 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB11 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x487 PUSH2 0x66D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST PUSH2 0x671 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x40D PUSH2 0x4CD PUSH2 0x66D JUMP JUMPDEST DUP5 PUSH2 0x4A8 DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x4DE PUSH2 0x66D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x94F JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3EF JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3C4 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3EF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5BE CALLER DUP4 PUSH2 0x9B0 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x40D PUSH2 0x5D3 PUSH2 0x66D JUMP JUMPDEST DUP5 PUSH2 0x4A8 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xB82 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x5FD PUSH2 0x66D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x40D PUSH2 0x63B PUSH2 0x66D JUMP JUMPDEST DUP5 DUP5 PUSH2 0x75D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x6B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB5E PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x6FB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAC9 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x7A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB39 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x7E7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAA6 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7F2 DUP4 DUP4 DUP4 PUSH2 0xAA0 JUMP JUMPDEST PUSH2 0x82F DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAEB PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x8B8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x85E SWAP1 DUP3 PUSH2 0x94F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x947 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x90C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8F4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x939 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x9A9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xA0B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xA17 PUSH1 0x0 DUP4 DUP4 PUSH2 0xAA0 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0xA24 SWAP1 DUP3 PUSH2 0x94F JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xA4A SWAP1 DUP3 PUSH2 0x94F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x73582212203C76 0x2E 0xC0 0x2B 0xE9 0xD1 0x4F SWAP7 0xB0 0x4E SWAP10 0xB7 CHAINID 0x4D 0xDB SWAP3 0xBB MLOAD 0x1E 0xE2 0xE0 SWAP15 GT PUSH1 0x6F 0xB9 MUL PUSH6 0x57C50164736F PUSH13 0x634300060C0033000000000000 ",
              "sourceMap": "198:594:60:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2132:75:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4048:156;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4048:156:8;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3111:92;;;:::i;:::-;;;;;;;;;;;;;;;;244:24:60;;;:::i;:::-;;;;-1:-1:-1;;;;;244:24:60;;;;;;;;;;;;;;4638:343:8;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4638:343:8;;;;;;;;;;;;;;;;;:::i;2984:75::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5350:205;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5350:205:8;;;;;;;;:::i;698:92:60:-;;;;;;;;;;;;;;;;-1:-1:-1;698:92:60;-1:-1:-1;;;;;698:92:60;;:::i;:::-;;3253:111:8;;;;;;;;;;;;;;;;-1:-1:-1;3253:111:8;-1:-1:-1;;;;;3253:111:8;;:::i;2310:79::-;;;:::i;591:103:60:-;;;;;;;;;;;;;;;;-1:-1:-1;591:103:60;;:::i;6012:318:8:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6012:318:8;;;;;;;;:::i;3549:162::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3549:162:8;;;;;;;;:::i;3761:165::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3761:165:8;;;;;;;;;;:::i;2132:75::-;2197:5;2190:12;;;;;;;;-1:-1:-1;;2190:12:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2169:13;;2190:12;;2197:5;;2190:12;;2197:5;2190:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2132:75;:::o;4048:156::-;4131:4;4143:39;4152:12;:10;:12::i;:::-;4166:7;4175:6;4143:8;:39::i;:::-;-1:-1:-1;4195:4:8;4048:156;;;;:::o;3111:92::-;3186:12;;3111:92;:::o;244:24:60:-;;;;;;-1:-1:-1;;;;;244:24:60;;:::o;4638:343:8:-;4760:4;4772:36;4782:6;4790:9;4801:6;4772:9;:36::i;:::-;4814:145;4830:6;4844:12;:10;:12::i;:::-;4864:89;4902:6;4864:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4864:19:8;;;;;;:11;:19;;;;;;4884:12;:10;:12::i;:::-;-1:-1:-1;;;;;4864:33:8;;;;;;;;;;;;-1:-1:-1;4864:33:8;;;:89;:37;:89::i;:::-;4814:8;:145::i;:::-;-1:-1:-1;4972:4:8;4638:343;;;;;:::o;2984:75::-;3045:9;;;;2984:75;:::o;5350:205::-;5438:4;5450:83;5459:12;:10;:12::i;:::-;5473:7;5482:50;5521:10;5482:11;:25;5494:12;:10;:12::i;:::-;-1:-1:-1;;;;;5482:25:8;;;;;;;;;;;;;;;;;-1:-1:-1;5482:25:8;;;:34;;;;;;;;;;;:38;:50::i;698:92:60:-;757:9;:28;;-1:-1:-1;;;;;757:28:60;;;;;-1:-1:-1;;;;;;757:28:60;;;;;;;;;698:92::o;3253:111:8:-;-1:-1:-1;;;;;3341:18:8;3319:7;3341:18;;;;;;;;;;;;3253:111::o;2310:79::-;2377:7;2370:14;;;;;;;;-1:-1:-1;;2370:14:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2349:13;;2370:14;;2377:7;;2370:14;;2377:7;2370:14;;;;;;;;;;;;;;;;;;;;;;;;591:103:60;636:4;648:24;654:10;666:5;648;:24::i;:::-;-1:-1:-1;685:4:60;591:103;;;:::o;6012:318:8:-;6117:4;6131:177;6147:12;:10;:12::i;:::-;6167:7;6182:120;6230:15;6182:120;;;;;;;;;;;;;;;;;:11;:25;6194:12;:10;:12::i;:::-;-1:-1:-1;;;;;6182:25:8;;;;;;;;;;;;;;;;;-1:-1:-1;6182:25:8;;;:34;;;;;;;;;;;:120;:38;:120::i;3549:162::-;3635:4;3647:42;3657:12;:10;:12::i;:::-;3671:9;3682:6;3647:9;:42::i;3761:165::-;-1:-1:-1;;;;;3894:18:8;;;3870:7;3894:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3761:165::o;587:98:7:-;670:10;587:98;:::o;8972:338:8:-;-1:-1:-1;;;;;9085:19:8;;9077:68;;;;-1:-1:-1;;;9077:68:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9159:21:8;;9151:68;;;;-1:-1:-1;;;9151:68:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9226:18:8;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9273:32;;;;;;;;;;;;;;;;;8972:338;;;:::o;6774:520::-;-1:-1:-1;;;;;6891:20:8;;6883:70;;;;-1:-1:-1;;;6883:70:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6967:23:8;;6959:71;;;;-1:-1:-1;;;6959:71:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7037:47;7058:6;7066:9;7077:6;7037:20;:47::i;:::-;7111:71;7133:6;7111:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7111:17:8;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;7091:17:8;;;:9;:17;;;;;;;;;;;:91;;;;7211:20;;;;;;;:32;;7236:6;7211:24;:32::i;:::-;-1:-1:-1;;;;;7188:20:8;;;:9;:20;;;;;;;;;;;;:55;;;;7254:35;;;;;;;7188:20;;7254:35;;;;;;;;;;;;;6774:520;;;:::o;1649:189:13:-;1751:7;1782:12;1774:6;;;;1766:29;;;;-1:-1:-1;;;1766:29:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1813:5:13;;;1649:189::o;851:162::-;909:7;936:5;;;955:6;;;;947:46;;;;;-1:-1:-1;;;947:46:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;1007:1;851:162;-1:-1:-1;;;851:162:13:o;7544:348:8:-;-1:-1:-1;;;;;7623:21:8;;7615:65;;;;;-1:-1:-1;;;7615:65:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;7687:49;7716:1;7720:7;7729:6;7687:20;:49::i;:::-;7758:12;;:24;;7775:6;7758:16;:24::i;:::-;7743:12;:39;-1:-1:-1;;;;;7809:18:8;;:9;:18;;;;;;;;;;;:30;;7832:6;7809:22;:30::i;:::-;-1:-1:-1;;;;;7788:18:8;;:9;:18;;;;;;;;;;;:51;;;;7850:37;;;;;;;7788:18;;:9;;7850:37;;;;;;;;;;7544:348;;:::o;10256:107::-;;;;:::o"
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "delegate(address)": "5c19a95c",
              "delegatee()": "1e31d053",
              "increaseAllowance(address,uint256)": "39509351",
              "mint(uint256)": "a0712d68",
              "name()": "06fdde03",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "contracts/mocks/tokens/MintableERC20.sol": {
        "MintableERC20": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "symbol",
                  "type": "string"
                },
                {
                  "internalType": "uint8",
                  "name": "decimals",
                  "type": "uint8"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "subtractedValue",
                  "type": "uint256"
                }
              ],
              "name": "decreaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "addedValue",
                  "type": "uint256"
                }
              ],
              "name": "increaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b5060405162000dde38038062000dde833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405260209081015185519093508592508491620001bd916003918501906200020d565b508051620001d39060049060208401906200020d565b50506005805460ff1916601217905550620001ee81620001f7565b505050620002a9565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200025057805160ff191683800117855562000280565b8280016001018555821562000280579182015b828111156200028057825182559160200191906001019062000263565b506200028e92915062000292565b5090565b5b808211156200028e576000815560010162000293565b610b2580620002b96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610421565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b03813516906020013561042a565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610478565b6100c1610493565b6101626004803603602081101561025457600080fd5b50356104f4565b6101626004803603604081101561027157600080fd5b506001600160a01b03813516906020013561050f565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610577565b61017e600480360360408110156102c957600080fd5b506001600160a01b038135811691602001351661058b565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105b6565b84846105ba565b50600192915050565b60025490565b60006103a78484846106a6565b610417846103b36105b6565b61041285604051806060016040528060288152602001610a5a602891396001600160a01b038a166000908152600160205260408120906103f16105b6565b6001600160a01b031681526020810191909152604001600020549190610801565b6105ba565b5060019392505050565b60055460ff1690565b600061038b6104376105b6565b8461041285600160006104486105b6565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610898565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b60006105076105016105b6565b836108f9565b506001919050565b600061038b61051c6105b6565b8461041285604051806060016040528060258152602001610acb60259139600160006105466105b6565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610801565b600061038b6105846105b6565b84846106a6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166105ff5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aa76024913960400191505060405180910390fd5b6001600160a01b0382166106445760405162461bcd60e51b8152600401808060200182810382526022815260200180610a126022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106eb5760405162461bcd60e51b8152600401808060200182810382526025815260200180610a826025913960400191505060405180910390fd5b6001600160a01b0382166107305760405162461bcd60e51b81526004018080602001828103825260238152602001806109ef6023913960400191505060405180910390fd5b61073b8383836109e9565b61077881604051806060016040528060268152602001610a34602691396001600160a01b0386166000908152602081905260409020549190610801565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107a79082610898565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108905760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561085557818101518382015260200161083d565b50505050905090810190601f1680156108825780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156108f2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610954576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610960600083836109e9565b60025461096d9082610898565b6002556001600160a01b0382166000908152602081905260409020546109939082610898565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205a9204f19fed3674aa09894ad58117c23f404abd4f5fd6c4fb5f28fef50e7bc464736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xDDE CODESIZE SUB DUP1 PUSH3 0xDDE DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x150 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x198 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 SWAP1 DUP2 ADD MLOAD DUP6 MLOAD SWAP1 SWAP4 POP DUP6 SWAP3 POP DUP5 SWAP2 PUSH3 0x1BD SWAP2 PUSH1 0x3 SWAP2 DUP6 ADD SWAP1 PUSH3 0x20D JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x1D3 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x20D JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP PUSH3 0x1EE DUP2 PUSH3 0x1F7 JUMP JUMPDEST POP POP POP PUSH3 0x2A9 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x250 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x280 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x280 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x280 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x263 JUMP JUMPDEST POP PUSH3 0x28E SWAP3 SWAP2 POP PUSH3 0x292 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x28E JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x293 JUMP JUMPDEST PUSH2 0xB25 DUP1 PUSH3 0x2B9 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x210 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x236 JUMPI DUP1 PUSH4 0xA0712D68 EQ PUSH2 0x23E JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2B3 JUMPI PUSH2 0xB4 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x136 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x176 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x1E4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC1 PUSH2 0x2E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x128 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x162 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x14C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x377 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x17E PUSH2 0x394 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x162 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x39A JUMP JUMPDEST PUSH2 0x1CE PUSH2 0x421 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x162 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x42A JUMP JUMPDEST PUSH2 0x17E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x478 JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x493 JUMP JUMPDEST PUSH2 0x162 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x4F4 JUMP JUMPDEST PUSH2 0x162 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x50F JUMP JUMPDEST PUSH2 0x162 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x577 JUMP JUMPDEST PUSH2 0x17E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x58B JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x36D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x342 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x36D JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x350 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38B PUSH2 0x384 PUSH2 0x5B6 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x5BA JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A7 DUP5 DUP5 DUP5 PUSH2 0x6A6 JUMP JUMPDEST PUSH2 0x417 DUP5 PUSH2 0x3B3 PUSH2 0x5B6 JUMP JUMPDEST PUSH2 0x412 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA5A PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x3F1 PUSH2 0x5B6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x801 JUMP JUMPDEST PUSH2 0x5BA JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38B PUSH2 0x437 PUSH2 0x5B6 JUMP JUMPDEST DUP5 PUSH2 0x412 DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x448 PUSH2 0x5B6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x898 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x36D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x342 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x36D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x507 PUSH2 0x501 PUSH2 0x5B6 JUMP JUMPDEST DUP4 PUSH2 0x8F9 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38B PUSH2 0x51C PUSH2 0x5B6 JUMP JUMPDEST DUP5 PUSH2 0x412 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xACB PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x546 PUSH2 0x5B6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x801 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38B PUSH2 0x584 PUSH2 0x5B6 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x6A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x5FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAA7 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x644 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xA12 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x6EB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xA82 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x730 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x9EF PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x73B DUP4 DUP4 DUP4 PUSH2 0x9E9 JUMP JUMPDEST PUSH2 0x778 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA34 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x801 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x7A7 SWAP1 DUP3 PUSH2 0x898 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x890 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x855 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x83D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x882 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x8F2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x954 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x960 PUSH1 0x0 DUP4 DUP4 PUSH2 0x9E9 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x96D SWAP1 DUP3 PUSH2 0x898 JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x993 SWAP1 DUP3 PUSH2 0x898 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x73582212205A92 DIV CALL SWAP16 0xED CALLDATASIZE PUSH21 0xAA09894AD58117C23F404ABD4F5FD6C4FB5F28FEF5 0xE PUSH28 0xC464736F6C634300060C003300000000000000000000000000000000 ",
              "sourceMap": "198:460:61:-:0;;;234:148;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;234:148:61;;;;;;;;;;-1:-1:-1;234:148:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;234:148:61;;;;;;;;;;-1:-1:-1;234:148:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;234:148:61;;;;;;;2016:12:8;;234:148:61;;-1:-1:-1;333:4:61;;-1:-1:-1;339:6:61;;2016:12:8;;:5;;:12;;;;:::i;:::-;-1:-1:-1;2034:16:8;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;;2056:9:8;:14;;-1:-1:-1;;2056:14:8;2068:2;2056:14;;;-1:-1:-1;353:24:61::1;368:8:::0;353:14:::1;:24::i;:::-;234:148:::0;;;198:460;;9617:82:8;9673:9;:21;;-1:-1:-1;;9673:21:8;;;;;;;;;;;;9617:82::o;198:460:61:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;198:460:61;;;-1:-1:-1;198:460:61;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610421565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b03813516906020013561042a565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610478565b6100c1610493565b6101626004803603602081101561025457600080fd5b50356104f4565b6101626004803603604081101561027157600080fd5b506001600160a01b03813516906020013561050f565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610577565b61017e600480360360408110156102c957600080fd5b506001600160a01b038135811691602001351661058b565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105b6565b84846105ba565b50600192915050565b60025490565b60006103a78484846106a6565b610417846103b36105b6565b61041285604051806060016040528060288152602001610a5a602891396001600160a01b038a166000908152600160205260408120906103f16105b6565b6001600160a01b031681526020810191909152604001600020549190610801565b6105ba565b5060019392505050565b60055460ff1690565b600061038b6104376105b6565b8461041285600160006104486105b6565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610898565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b60006105076105016105b6565b836108f9565b506001919050565b600061038b61051c6105b6565b8461041285604051806060016040528060258152602001610acb60259139600160006105466105b6565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610801565b600061038b6105846105b6565b84846106a6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166105ff5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aa76024913960400191505060405180910390fd5b6001600160a01b0382166106445760405162461bcd60e51b8152600401808060200182810382526022815260200180610a126022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106eb5760405162461bcd60e51b8152600401808060200182810382526025815260200180610a826025913960400191505060405180910390fd5b6001600160a01b0382166107305760405162461bcd60e51b81526004018080602001828103825260238152602001806109ef6023913960400191505060405180910390fd5b61073b8383836109e9565b61077881604051806060016040528060268152602001610a34602691396001600160a01b0386166000908152602081905260409020549190610801565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107a79082610898565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108905760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561085557818101518382015260200161083d565b50505050905090810190601f1680156108825780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156108f2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610954576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610960600083836109e9565b60025461096d9082610898565b6002556001600160a01b0382166000908152602081905260409020546109939082610898565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205a9204f19fed3674aa09894ad58117c23f404abd4f5fd6c4fb5f28fef50e7bc464736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x210 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x236 JUMPI DUP1 PUSH4 0xA0712D68 EQ PUSH2 0x23E JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2B3 JUMPI PUSH2 0xB4 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x136 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x176 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x1E4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC1 PUSH2 0x2E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x128 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x162 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x14C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x377 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x17E PUSH2 0x394 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x162 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x39A JUMP JUMPDEST PUSH2 0x1CE PUSH2 0x421 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x162 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x42A JUMP JUMPDEST PUSH2 0x17E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x478 JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x493 JUMP JUMPDEST PUSH2 0x162 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x4F4 JUMP JUMPDEST PUSH2 0x162 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x50F JUMP JUMPDEST PUSH2 0x162 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x577 JUMP JUMPDEST PUSH2 0x17E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x58B JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x36D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x342 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x36D JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x350 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38B PUSH2 0x384 PUSH2 0x5B6 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x5BA JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A7 DUP5 DUP5 DUP5 PUSH2 0x6A6 JUMP JUMPDEST PUSH2 0x417 DUP5 PUSH2 0x3B3 PUSH2 0x5B6 JUMP JUMPDEST PUSH2 0x412 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA5A PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x3F1 PUSH2 0x5B6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x801 JUMP JUMPDEST PUSH2 0x5BA JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38B PUSH2 0x437 PUSH2 0x5B6 JUMP JUMPDEST DUP5 PUSH2 0x412 DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x448 PUSH2 0x5B6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x898 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x36D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x342 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x36D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x507 PUSH2 0x501 PUSH2 0x5B6 JUMP JUMPDEST DUP4 PUSH2 0x8F9 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38B PUSH2 0x51C PUSH2 0x5B6 JUMP JUMPDEST DUP5 PUSH2 0x412 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xACB PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x546 PUSH2 0x5B6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x801 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38B PUSH2 0x584 PUSH2 0x5B6 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x6A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x5FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAA7 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x644 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xA12 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x6EB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xA82 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x730 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x9EF PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x73B DUP4 DUP4 DUP4 PUSH2 0x9E9 JUMP JUMPDEST PUSH2 0x778 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA34 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x801 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x7A7 SWAP1 DUP3 PUSH2 0x898 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x890 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x855 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x83D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x882 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x8F2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x954 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x960 PUSH1 0x0 DUP4 DUP4 PUSH2 0x9E9 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x96D SWAP1 DUP3 PUSH2 0x898 JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x993 SWAP1 DUP3 PUSH2 0x898 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x73582212205A92 DIV CALL SWAP16 0xED CALLDATASIZE PUSH21 0xAA09894AD58117C23F404ABD4F5FD6C4FB5F28FEF5 0xE PUSH28 0xC464736F6C634300060C003300000000000000000000000000000000 ",
              "sourceMap": "198:460:61:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2132:75:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4048:156;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4048:156:8;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3111:92;;;:::i;:::-;;;;;;;;;;;;;;;;4638:343;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4638:343:8;;;;;;;;;;;;;;;;;:::i;2984:75::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5350:205;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5350:205:8;;;;;;;;:::i;3253:111::-;;;;;;;;;;;;;;;;-1:-1:-1;3253:111:8;-1:-1:-1;;;;;3253:111:8;;:::i;2310:79::-;;;:::i;551:105:61:-;;;;;;;;;;;;;;;;-1:-1:-1;551:105:61;;:::i;6012:318:8:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6012:318:8;;;;;;;;:::i;3549:162::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3549:162:8;;;;;;;;:::i;3761:165::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3761:165:8;;;;;;;;;;:::i;2132:75::-;2197:5;2190:12;;;;;;;;-1:-1:-1;;2190:12:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2169:13;;2190:12;;2197:5;;2190:12;;2197:5;2190:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2132:75;:::o;4048:156::-;4131:4;4143:39;4152:12;:10;:12::i;:::-;4166:7;4175:6;4143:8;:39::i;:::-;-1:-1:-1;4195:4:8;4048:156;;;;:::o;3111:92::-;3186:12;;3111:92;:::o;4638:343::-;4760:4;4772:36;4782:6;4790:9;4801:6;4772:9;:36::i;:::-;4814:145;4830:6;4844:12;:10;:12::i;:::-;4864:89;4902:6;4864:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4864:19:8;;;;;;:11;:19;;;;;;4884:12;:10;:12::i;:::-;-1:-1:-1;;;;;4864:33:8;;;;;;;;;;;;-1:-1:-1;4864:33:8;;;:89;:37;:89::i;:::-;4814:8;:145::i;:::-;-1:-1:-1;4972:4:8;4638:343;;;;;:::o;2984:75::-;3045:9;;;;2984:75;:::o;5350:205::-;5438:4;5450:83;5459:12;:10;:12::i;:::-;5473:7;5482:50;5521:10;5482:11;:25;5494:12;:10;:12::i;:::-;-1:-1:-1;;;;;5482:25:8;;;;;;;;;;;;;;;;;-1:-1:-1;5482:25:8;;;:34;;;;;;;;;;;:38;:50::i;3253:111::-;-1:-1:-1;;;;;3341:18:8;3319:7;3341:18;;;;;;;;;;;;3253:111::o;2310:79::-;2377:7;2370:14;;;;;;;;-1:-1:-1;;2370:14:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2349:13;;2370:14;;2377:7;;2370:14;;2377:7;2370:14;;;;;;;;;;;;;;;;;;;;;;;;551:105:61;596:4;608:26;614:12;:10;:12::i;:::-;628:5;608;:26::i;:::-;-1:-1:-1;647:4:61;551:105;;;:::o;6012:318:8:-;6117:4;6131:177;6147:12;:10;:12::i;:::-;6167:7;6182:120;6230:15;6182:120;;;;;;;;;;;;;;;;;:11;:25;6194:12;:10;:12::i;:::-;-1:-1:-1;;;;;6182:25:8;;;;;;;;;;;;;;;;;-1:-1:-1;6182:25:8;;;:34;;;;;;;;;;;:120;:38;:120::i;3549:162::-;3635:4;3647:42;3657:12;:10;:12::i;:::-;3671:9;3682:6;3647:9;:42::i;3761:165::-;-1:-1:-1;;;;;3894:18:8;;;3870:7;3894:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3761:165::o;587:98:7:-;670:10;587:98;:::o;8972:338:8:-;-1:-1:-1;;;;;9085:19:8;;9077:68;;;;-1:-1:-1;;;9077:68:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9159:21:8;;9151:68;;;;-1:-1:-1;;;9151:68:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9226:18:8;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9273:32;;;;;;;;;;;;;;;;;8972:338;;;:::o;6774:520::-;-1:-1:-1;;;;;6891:20:8;;6883:70;;;;-1:-1:-1;;;6883:70:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6967:23:8;;6959:71;;;;-1:-1:-1;;;6959:71:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7037:47;7058:6;7066:9;7077:6;7037:20;:47::i;:::-;7111:71;7133:6;7111:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7111:17:8;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;7091:17:8;;;:9;:17;;;;;;;;;;;:91;;;;7211:20;;;;;;;:32;;7236:6;7211:24;:32::i;:::-;-1:-1:-1;;;;;7188:20:8;;;:9;:20;;;;;;;;;;;;:55;;;;7254:35;;;;;;;7188:20;;7254:35;;;;;;;;;;;;;6774:520;;;:::o;1649:189:13:-;1751:7;1782:12;1774:6;;;;1766:29;;;;-1:-1:-1;;;1766:29:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1813:5:13;;;1649:189::o;851:162::-;909:7;936:5;;;955:6;;;;947:46;;;;;-1:-1:-1;;;947:46:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;1007:1;851:162;-1:-1:-1;;;851:162:13:o;7544:348:8:-;-1:-1:-1;;;;;7623:21:8;;7615:65;;;;;-1:-1:-1;;;7615:65:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;7687:49;7716:1;7720:7;7729:6;7687:20;:49::i;:::-;7758:12;;:24;;7775:6;7758:16;:24::i;:::-;7743:12;:39;-1:-1:-1;;;;;7809:18:8;;:9;:18;;;;;;;;;;;:30;;7832:6;7809:22;:30::i;:::-;-1:-1:-1;;;;;7788:18:8;;:9;:18;;;;;;;;;;;:51;;;;7850:37;;;;;;;7788:18;;:9;;7850:37;;;;;;;;;;7544:348;;:::o;10256:107::-;;;;:::o"
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "increaseAllowance(address,uint256)": "39509351",
              "mint(uint256)": "a0712d68",
              "name()": "06fdde03",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "contracts/mocks/upgradeability/MockAToken.sol": {
        "MockAToken": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "BalanceTransfer",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "underlyingAsset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "treasury",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "incentivesController",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "aTokenDecimals",
                  "type": "uint8"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "aTokenName",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "aTokenSymbol",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "Mint",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "ATOKEN_REVISION",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "EIP712_REVISION",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PERMIT_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "POOL",
              "outputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "RESERVE_TREASURY_ADDRESS",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "UNDERLYING_ASSET_ADDRESS",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "_nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiverOfUnderlying",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "burn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "subtractedValue",
                  "type": "uint256"
                }
              ],
              "name": "decreaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getIncentivesController",
              "outputs": [
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getScaledUserBalanceAndSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "handleRepayment",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "addedValue",
                  "type": "uint256"
                }
              ],
              "name": "increaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "treasury",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "underlyingAsset",
                  "type": "address"
                },
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "incentivesController",
                  "type": "address"
                },
                {
                  "internalType": "uint8",
                  "name": "aTokenDecimals",
                  "type": "uint8"
                },
                {
                  "internalType": "string",
                  "name": "aTokenName",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "aTokenSymbol",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "mintToTreasury",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "scaledBalanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "scaledTotalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferOnLiquidation",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferUnderlyingTo",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052600080553480156200001557600080fd5b50604080518082018252600b8082526a105513d2d15397d253541360aa1b60208084018281528551808701909652928552840152815191929160009162000060916037919062000094565b5081516200007690603890602085019062000094565b506039805460ff191660ff9290921691909117905550620001309050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000d757805160ff191683800117855562000107565b8280016001018555821562000107579182015b8281111562000107578251825591602001919060010190620000ea565b506200011592915062000119565b5090565b5b808211156200011557600081556001016200011a565b61282280620001406000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80637535d2461161010f578063ae167335116100a2578063d505accf11610071578063d505accf146106aa578063d7020d0a146106fb578063dd62ed3e14610737578063f866c31914610765576101e5565b8063ae1673351461066c578063b16a19de14610674578063b1bf962d1461067c578063b9844d8d14610684576101e5565b806388dd91a1116100de57806388dd91a1146105e057806395d89b411461060c578063a457c2d714610614578063a9059cbb14610640576101e5565b80637535d2461461058957806375d26413146105ad57806378160376146105b55780637df5bd3b146105bd576101e5565b80631da24f3e116101875780633644e515116101565780633644e51514610503578063395093511461050b5780634efecaa51461053757806370a0823114610563576101e5565b80631da24f3e1461048157806323b872dd146104a757806330adf81f146104dd578063313ce567146104e5576101e5565b80630bd7ad3b116101c35780630bd7ad3b146102e6578063156e29f61461030057806318160ddd14610332578063183fb4131461033a576101e5565b806306fdde03146101ea578063095ea7b3146102675780630afbcdc9146102a7575b600080fd5b6101f261079b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102936004803603604081101561027d57600080fd5b506001600160a01b038135169060200135610832565b604080519115158252519081900360200190f35b6102cd600480360360208110156102bd57600080fd5b50356001600160a01b0316610850565b6040805192835260208301919091528051918290030190f35b6102ee61086d565b60408051918252519081900360200190f35b6102936004803603606081101561031657600080fd5b506001600160a01b038135169060208101359060400135610872565b6102ee610a40565b61047f600480360361010081101561035157600080fd5b6001600160a01b038235811692602081013582169260408201358316926060830135169160ff6080820135169181019060c0810160a082013564010000000081111561039c57600080fd5b8201836020820111156103ae57600080fd5b803590602001918460018302840111640100000000831117156103d057600080fd5b9193909290916020810190356401000000008111156103ee57600080fd5b82018360208201111561040057600080fd5b8035906020019184600183028401116401000000008311171561042257600080fd5b91939092909160208101903564010000000081111561044057600080fd5b82018360208201111561045257600080fd5b8035906020019184600183028401116401000000008311171561047457600080fd5b509092509050610aea565b005b6102ee6004803603602081101561049757600080fd5b50356001600160a01b0316610e67565b610293600480360360608110156104bd57600080fd5b506001600160a01b03813581169160208101359091169060400135610e72565b6102ee610f32565b6104ed610f56565b6040805160ff9092168252519081900360200190f35b6102ee610f5f565b6102936004803603604081101561052157600080fd5b506001600160a01b038135169060200135610f65565b6102ee6004803603604081101561054d57600080fd5b506001600160a01b038135169060200135610fb3565b6102ee6004803603602081101561057957600080fd5b50356001600160a01b0316611059565b6105916110e8565b604080516001600160a01b039092168252519081900360200190f35b6105916110f7565b6101f2611106565b61047f600480360360408110156105d357600080fd5b5080359060200135611123565b61047f600480360360408110156105f657600080fd5b506001600160a01b03813516906020013561124a565b6101f26112d4565b6102936004803603604081101561062a57600080fd5b506001600160a01b038135169060200135611335565b6102936004803603604081101561065657600080fd5b506001600160a01b03813516906020013561139d565b6105916113fa565b610591611409565b6102ee611418565b6102ee6004803603602081101561069a57600080fd5b50356001600160a01b0316611422565b61047f600480360360e08110156106c057600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611434565b61047f6004803603608081101561071157600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561167b565b6102ee6004803603604081101561074d57600080fd5b506001600160a01b0381358116916020013516611820565b61047f6004803603606081101561077b57600080fd5b506001600160a01b0381358116916020810135909116906040013561184b565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108275780601f106107fc57610100808354040283529160200191610827565b820191906000526020600020905b81548152906001019060200180831161080a57829003601f168201915b505050505090505b90565b600061084661083f61191c565b8484611920565b5060015b92915050565b60008061085c83611a0c565b610864611a27565b91509150915091565b600181565b603c546000906001600160a01b031661088961191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906109375760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108fc5781810151838201526020016108e4565b50505050905090810190601f1680156109295780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600061094385611a0c565b905060006109518585611a2d565b6040805180820190915260028152611a9b60f11b6020820152909150816109b95760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506109c48682611b34565b6040805186815290516001600160a01b038816916000916000805160206127148339815191529181900360200190a3604080518681526020810186905281516001600160a01b038916927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25015949350505050565b600080610a4b611a27565b905080610a5c57600091505061082f565b603c54603e546040805163d15e005360e01b81526001600160a01b0392831660048201529051610ae493929092169163d15e005391602480820192602092909190829003018186803b158015610ab157600080fd5b505afa158015610ac5573d6000803e3d6000fd5b505050506040513d6020811015610adb57600080fd5b50518290611c85565b91505090565b6000610af4611d43565b60015490915060ff1680610b0b5750610b0b611d48565b80610b17575060005481115b610b525760405162461bcd60e51b815260040180806020018281038252602e8152602001806126e6602e913960400191505060405180910390fd5b60015460ff16158015610b71576001805460ff19168117905560008290555b60004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f89896040518083838082843780830192505050925050506040518091039020604051806040016040528060018152602001603160f81b81525080519060200120833060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120603b81905550610c6989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d4e92505050565b610ca887878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d6192505050565b610cb18a611d74565b8d603c60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c603d60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b603e60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a603f60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508d6001600160a01b03168c6001600160a01b03167fb19e051f8af41150ccccb3fc2c2d8d15f4a4cf434f32a559ba75fe73d6eea20b8f8e8e8e8e8e8e8e8e604051808a6001600160a01b03168152602001896001600160a01b031681526020018860ff16815260200180602001806020018060200184810384528a8a82818152602001925080828437600083820152601f01601f191690910185810384528881526020019050888880828437600083820152601f01601f191690910185810383528681526020019050868680828437600083820152604051601f909101601f19169092018290039e50909c50505050505050505050505050a3508015610e58576001805460ff191690555b50505050505050505050505050565b600061084a82611a0c565b6000610e7f848484611d8a565b610eef84610e8b61191c565b610eea856040518060600160405280602881526020016126be602891396001600160a01b038a16600090815260356020526040812090610ec961191c565b6001600160a01b031681526020810191909152604001600020549190611d97565b611920565b826001600160a01b0316846001600160a01b0316600080516020612714833981519152846040518082815260200191505060405180910390a35060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60395460ff1690565b603b5481565b6000610846610f7261191c565b84610eea8560356000610f8361191c565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611df1565b603c546000906001600160a01b0316610fca61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b8152509061103b5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50603e54611053906001600160a01b03168484611e52565b50919050565b603c54603e546040805163d15e005360e01b81526001600160a01b039283166004820152905160009361084a93169163d15e0053916024808301926020929190829003018186803b1580156110ad57600080fd5b505afa1580156110c1573d6000803e3d6000fd5b505050506040513d60208110156110d757600080fd5b50516110e284611a0c565b90611c85565b603c546001600160a01b031690565b6000611101611ea4565b905090565b604051806040016040528060018152602001603160f81b81525081565b603c546001600160a01b031661113761191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906111a85760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50816111b357611246565b603d546001600160a01b03166111d2816111cd8585611a2d565b611b34565b6040805184815290516001600160a01b038316916000916000805160206127148339815191529181900360200190a3604080518481526020810184905281516001600160a01b038416927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a2505b5050565b603c546001600160a01b031661125e61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906112cf5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b505050565b60388054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108275780601f106107fc57610100808354040283529160200191610827565b600061084661134261191c565b84610eea856040518060600160405280602581526020016127c8602591396035600061136c61191c565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611d97565b60006113b16113aa61191c565b8484611d8a565b826001600160a01b03166113c361191c565b6001600160a01b0316600080516020612714833981519152846040518082815260200191505060405180910390a350600192915050565b603d546001600160a01b031690565b603e546001600160a01b031690565b6000611101611a27565b603a6020526000908152604090205481565b6001600160a01b03871661147f576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa7aba722a960991b604482015290519081900360640190fd5b834211156114c9576040805162461bcd60e51b815260206004820152601260248201527124a72b20a624a22fa2ac2824a920aa24a7a760711b604482015290519081900360640190fd5b6001600160a01b038088166000818152603a6020908152604080832054603b5482517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a0850181905260c08086018b90528251808703909101815260e08601835280519084012061190160f01b6101008701526101028601969096526101228086019690965281518086039096018652610142850180835286519684019690962093909552610162840180825283905260ff88166101828501526101a284018790526101c284018690525191926001926101e28083019392601f198301929081900390910190855afa1580156115de573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614611641576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b61164c826001611df1565b6001600160a01b038a166000908152603a6020526040902055611670898989611920565b505050505050505050565b603c546001600160a01b031661168f61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906117005760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50600061170d8383611a2d565b60408051808201909152600281526106a760f31b6020820152909150816117755760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506117808582611eb3565b603e54611797906001600160a01b03168585611e52565b6040805184815290516000916001600160a01b038816916000805160206127148339815191529181900360200190a3836001600160a01b0316856001600160a01b03167f5d624aa9c148153ab3446c1b154f660ee7701e549fe9b62dab7171b1c80e6fa28585604051808381526020018281526020019250505060405180910390a35050505050565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b603c546001600160a01b031661185f61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906118d05760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506118de8383836000611f57565b816001600160a01b0316836001600160a01b0316600080516020612714833981519152836040518082815260200191505060405180910390a3505050565b3390565b6001600160a01b0383166119655760405162461bcd60e51b815260040180806020018281038252602481526020018061277a6024913960400191505060405180910390fd5b6001600160a01b0382166119aa5760405162461bcd60e51b81526004018080602001828103825260228152602001806126766022913960400191505060405180910390fd5b6001600160a01b03808416600081815260356020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b031660009081526034602052604090205490565b60365490565b604080518082019091526002815261035360f41b602082015260009082611a955760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce8000000821904851115611b115760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b5082816b033b2e3c9fd0803ce800000086020181611b2b57fe5b04949350505050565b6001600160a01b038216611b8f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611b9b600083836112cf565b603654611ba88183611df1565b6036556001600160a01b038316600090815260346020526040902054611bce8184611df1565b6001600160a01b038516600090815260346020526040812091909155611bf2611ea4565b6001600160a01b031614611c7f57611c08611ea4565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015611c6657600080fd5b505af1158015611c7a573d6000803e3d6000fd5b505050505b50505050565b6000821580611c92575081155b15611c9f5750600061084a565b816b019d971e4fe8401e740000001981611cb557fe5b0483111560405180604001604052806002815260200161068760f31b81525090611d205760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b600290565b303b1590565b805161124690603790602084019061259d565b805161124690603890602084019061259d565b6039805460ff191660ff92909216919091179055565b6112cf8383836001611f57565b60008184841115611de95760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b505050900390565b600082820183811015611e4b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112cf908490612100565b603f546001600160a01b031690565b6001600160a01b038216611ef85760405162461bcd60e51b81526004018080602001828103825260218152602001806127346021913960400191505060405180910390fd5b611f04826000836112cf565b603654611f1181836122b8565b6036556001600160a01b0383166000908152603460209081526040918290205482516060810190935260228084529092611bce9286929061265490830139839190611d97565b603e54603c546040805163d15e005360e01b81526001600160a01b03938416600482018190529151919390921691600091839163d15e0053916024808301926020929190829003018186803b158015611faf57600080fd5b505afa158015611fc3573d6000803e3d6000fd5b505050506040513d6020811015611fd957600080fd5b505190506000611fec826110e28a611a0c565b90506000611ffd836110e28a611a0c565b9050612013898961200e8a87611a2d565b6122fa565b85156120a2576040805163d5ed393360e01b81526001600160a01b0387811660048301528b811660248301528a81166044830152606482018a90526084820185905260a4820184905291519186169163d5ed39339160c48082019260009290919082900301818387803b15801561208957600080fd5b505af115801561209d573d6000803e3d6000fd5b505050505b876001600160a01b0316896001600160a01b03167f4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda86668986604051808381526020018281526020019250505060405180910390a3505050505050505050565b612112826001600160a01b0316612561565b612163576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106121a15780518252601f199092019160209182019101612182565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612203576040519150601f19603f3d011682016040523d82523d6000602084013e612208565b606091505b50915091508161225f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611c7f5780806020019051602081101561227b57600080fd5b5051611c7f5760405162461bcd60e51b815260040180806020018281038252602a81526020018061279e602a913960400191505060405180910390fd5b6000611e4b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d97565b6001600160a01b03831661233f5760405162461bcd60e51b81526004018080602001828103825260258152602001806127556025913960400191505060405180910390fd5b6001600160a01b0382166123845760405162461bcd60e51b81526004018080602001828103825260238152602001806126316023913960400191505060405180910390fd5b61238f8383836112cf565b600060346000856001600160a01b03166001600160a01b031681526020019081526020016000205490506123de8260405180606001604052806026815260200161269860269139839190611d97565b6001600160a01b03808616600090815260346020526040808220939093559085168152205461240d8184611df1565b6001600160a01b038516600090815260346020526040812091909155612431611ea4565b6001600160a01b03161461255a5760365461244a611ea4565b6001600160a01b03166331873e2e8783866040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b1580156124a857600080fd5b505af11580156124bc573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b031614612558576124e1611ea4565b6001600160a01b03166331873e2e8683856040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561253f57600080fd5b505af1158015612553573d6000803e3d6000fd5b505050505b505b5050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061259557508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106125de57805160ff191683800117855561260b565b8280016001018555821561260b579182015b8281111561260b5782518255916020019190600101906125f0565b5061261792915061261b565b5090565b5b80821115612617576000815560010161261c56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122094d2d032e16cdcec8b56fc2b2dc90dddc719cb2792936945a3c590a0d62eb91b64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xB DUP1 DUP3 MSTORE PUSH11 0x105513D2D15397D2535413 PUSH1 0xAA SHL PUSH1 0x20 DUP1 DUP5 ADD DUP3 DUP2 MSTORE DUP6 MLOAD DUP1 DUP8 ADD SWAP1 SWAP7 MSTORE SWAP3 DUP6 MSTORE DUP5 ADD MSTORE DUP2 MLOAD SWAP2 SWAP3 SWAP2 PUSH1 0x0 SWAP2 PUSH3 0x60 SWAP2 PUSH1 0x37 SWAP2 SWAP1 PUSH3 0x94 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0x76 SWAP1 PUSH1 0x38 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x94 JUMP JUMPDEST POP PUSH1 0x39 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0x130 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0xD7 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x107 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x107 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x107 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xEA JUMP JUMPDEST POP PUSH3 0x115 SWAP3 SWAP2 POP PUSH3 0x119 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x115 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x11A JUMP JUMPDEST PUSH2 0x2822 DUP1 PUSH3 0x140 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7535D246 GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xAE167335 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x6AA JUMPI DUP1 PUSH4 0xD7020D0A EQ PUSH2 0x6FB JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x737 JUMPI DUP1 PUSH4 0xF866C319 EQ PUSH2 0x765 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0xAE167335 EQ PUSH2 0x66C JUMPI DUP1 PUSH4 0xB16A19DE EQ PUSH2 0x674 JUMPI DUP1 PUSH4 0xB1BF962D EQ PUSH2 0x67C JUMPI DUP1 PUSH4 0xB9844D8D EQ PUSH2 0x684 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x88DD91A1 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x88DD91A1 EQ PUSH2 0x5E0 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x60C JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x614 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x640 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x7535D246 EQ PUSH2 0x589 JUMPI DUP1 PUSH4 0x75D26413 EQ PUSH2 0x5AD JUMPI DUP1 PUSH4 0x78160376 EQ PUSH2 0x5B5 JUMPI DUP1 PUSH4 0x7DF5BD3B EQ PUSH2 0x5BD JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x1DA24F3E GT PUSH2 0x187 JUMPI DUP1 PUSH4 0x3644E515 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x503 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x50B JUMPI DUP1 PUSH4 0x4EFECAA5 EQ PUSH2 0x537 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x563 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x1DA24F3E EQ PUSH2 0x481 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x4A7 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x4DD JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x4E5 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0xBD7AD3B GT PUSH2 0x1C3 JUMPI DUP1 PUSH4 0xBD7AD3B EQ PUSH2 0x2E6 JUMPI DUP1 PUSH4 0x156E29F6 EQ PUSH2 0x300 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x332 JUMPI DUP1 PUSH4 0x183FB413 EQ PUSH2 0x33A JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x267 JUMPI DUP1 PUSH4 0xAFBCDC9 EQ PUSH2 0x2A7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F2 PUSH2 0x79B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x22C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x214 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x259 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x27D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x832 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x850 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x2EE PUSH2 0x86D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x316 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x872 JUMP JUMPDEST PUSH2 0x2EE PUSH2 0xA40 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x351 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP4 AND SWAP3 PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP2 DUP2 ADD SWAP1 PUSH1 0xC0 DUP2 ADD PUSH1 0xA0 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x39C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x400 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x452 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x474 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xAEA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x497 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE67 JUMP JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xE72 JUMP JUMPDEST PUSH2 0x2EE PUSH2 0xF32 JUMP JUMPDEST PUSH2 0x4ED PUSH2 0xF56 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2EE PUSH2 0xF5F JUMP JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF65 JUMP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x54D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xFB3 JUMP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1059 JUMP JUMPDEST PUSH2 0x591 PUSH2 0x10E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x591 PUSH2 0x10F7 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x1106 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1123 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x12D4 JUMP JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x62A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1335 JUMP JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x139D JUMP JUMPDEST PUSH2 0x591 PUSH2 0x13FA JUMP JUMPDEST PUSH2 0x591 PUSH2 0x1409 JUMP JUMPDEST PUSH2 0x2EE PUSH2 0x1418 JUMP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x69A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1422 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x6C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1434 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x711 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x167B JUMP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x74D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1820 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x77B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x184B JUMP JUMPDEST PUSH1 0x37 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x827 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7FC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x827 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x80A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x846 PUSH2 0x83F PUSH2 0x191C JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1920 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x85C DUP4 PUSH2 0x1A0C JUMP JUMPDEST PUSH2 0x864 PUSH2 0x1A27 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x889 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x937 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x929 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0x943 DUP6 PUSH2 0x1A0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x951 DUP6 DUP6 PUSH2 0x1A2D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1A9B PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0x9B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH2 0x9C4 DUP7 DUP3 PUSH2 0x1B34 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP ISZERO SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA4B PUSH2 0x1A27 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xA5C JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x82F JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x3E SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0xAE4 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xD15E0053 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAC5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xADB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 SWAP1 PUSH2 0x1C85 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAF4 PUSH2 0x1D43 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 PUSH2 0xB0B JUMPI POP PUSH2 0xB0B PUSH2 0x1D48 JUMP JUMPDEST DUP1 PUSH2 0xB17 JUMPI POP PUSH1 0x0 SLOAD DUP2 GT JUMPDEST PUSH2 0xB52 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x26E6 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0xB71 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 OR SWAP1 SSTORE PUSH1 0x0 DUP3 SWAP1 SSTORE JUMPDEST PUSH1 0x0 CHAINID SWAP1 POP PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP10 DUP10 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP4 ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x3B DUP2 SWAP1 SSTORE POP PUSH2 0xC69 DUP10 DUP10 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1D4E SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xCA8 DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1D61 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xCB1 DUP11 PUSH2 0x1D74 JUMP JUMPDEST DUP14 PUSH1 0x3C PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP13 PUSH1 0x3D PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP12 PUSH1 0x3E PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP11 PUSH1 0x3F PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xB19E051F8AF41150CCCCB3FC2C2D8D15F4A4CF434F32A559BA75FE73D6EEA20B DUP16 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP1 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP11 DUP11 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD DUP6 DUP2 SUB DUP5 MSTORE DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 POP DUP9 DUP9 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD DUP6 DUP2 SUB DUP4 MSTORE DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 POP DUP7 DUP7 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP15 POP SWAP1 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP LOG3 POP DUP1 ISZERO PUSH2 0xE58 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x84A DUP3 PUSH2 0x1A0C JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE7F DUP5 DUP5 DUP5 PUSH2 0x1D8A JUMP JUMPDEST PUSH2 0xEEF DUP5 PUSH2 0xE8B PUSH2 0x191C JUMP JUMPDEST PUSH2 0xEEA DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x26BE PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0xEC9 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH2 0x1920 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x39 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x3B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x846 PUSH2 0xF72 PUSH2 0x191C JUMP JUMPDEST DUP5 PUSH2 0xEEA DUP6 PUSH1 0x35 PUSH1 0x0 PUSH2 0xF83 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFCA PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x103B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH1 0x3E SLOAD PUSH2 0x1053 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH2 0x1E52 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x3E SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 PUSH2 0x84A SWAP4 AND SWAP2 PUSH4 0xD15E0053 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10C1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x10E2 DUP5 PUSH2 0x1A0C JUMP JUMPDEST SWAP1 PUSH2 0x1C85 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1101 PUSH2 0x1EA4 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1137 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x11A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP DUP2 PUSH2 0x11B3 JUMPI PUSH2 0x1246 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11D2 DUP2 PUSH2 0x11CD DUP6 DUP6 PUSH2 0x1A2D JUMP JUMPDEST PUSH2 0x1B34 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH1 0x0 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x125E PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x12CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x38 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x827 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7FC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x827 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x846 PUSH2 0x1342 PUSH2 0x191C JUMP JUMPDEST DUP5 PUSH2 0xEEA DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x27C8 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x35 PUSH1 0x0 PUSH2 0x136C PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13B1 PUSH2 0x13AA PUSH2 0x191C JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1D8A JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13C3 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1101 PUSH2 0x1A27 JUMP JUMPDEST PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x147F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x24A72B20A624A22FA7ABA722A9 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x14C9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x24A72B20A624A22FA2AC2824A920AA24A7A7 PUSH1 0x71 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x3B SLOAD DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP13 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP12 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP1 DUP7 ADD DUP12 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP8 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP7 ADD DUP4 MSTORE DUP1 MLOAD SWAP1 DUP5 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH2 0x100 DUP8 ADD MSTORE PUSH2 0x102 DUP7 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP7 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP6 ADD DUP1 DUP4 MSTORE DUP7 MLOAD SWAP7 DUP5 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP4 SWAP1 SWAP6 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP4 SWAP1 MSTORE PUSH1 0xFF DUP9 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP8 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP7 SWAP1 MSTORE MLOAD SWAP2 SWAP3 PUSH1 0x1 SWAP3 PUSH2 0x1E2 DUP1 DUP4 ADD SWAP4 SWAP3 PUSH1 0x1F NOT DUP4 ADD SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15DE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1641 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x494E56414C49445F5349474E4154555245 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x164C DUP3 PUSH1 0x1 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x1670 DUP10 DUP10 DUP10 PUSH2 0x1920 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x168F PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1700 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x170D DUP4 DUP4 PUSH2 0x1A2D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x6A7 PUSH1 0xF3 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0x1775 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH2 0x1780 DUP6 DUP3 PUSH2 0x1EB3 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH2 0x1797 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 PUSH2 0x1E52 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x5D624AA9C148153AB3446C1B154F660EE7701E549FE9B62DAB7171B1C80E6FA2 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x185F PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x18D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH2 0x18DE DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x1F57 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1965 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x277A PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x19AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2676 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x36 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x1A95 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x1B11 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x1B2B JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1B8F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1B9B PUSH1 0x0 DUP4 DUP4 PUSH2 0x12CF JUMP JUMPDEST PUSH1 0x36 SLOAD PUSH2 0x1BA8 DUP2 DUP4 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x36 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1BCE DUP2 DUP5 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1BF2 PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1C7F JUMPI PUSH2 0x1C08 PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP6 DUP5 DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C7A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x1C92 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x1C9F JUMPI POP PUSH1 0x0 PUSH2 0x84A JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x1CB5 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1D20 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP POP PUSH12 0x33B2E3C9FD0803CE8000000 SWAP2 MUL PUSH12 0x19D971E4FE8401E74000000 ADD DIV SWAP1 JUMP JUMPDEST PUSH1 0x2 SWAP1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1246 SWAP1 PUSH1 0x37 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x259D JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1246 SWAP1 PUSH1 0x38 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x259D JUMP JUMPDEST PUSH1 0x39 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x12CF DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1F57 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1DE9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1E4B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x12CF SWAP1 DUP5 SWAP1 PUSH2 0x2100 JUMP JUMPDEST PUSH1 0x3F SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1EF8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2734 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1F04 DUP3 PUSH1 0x0 DUP4 PUSH2 0x12CF JUMP JUMPDEST PUSH1 0x36 SLOAD PUSH2 0x1F11 DUP2 DUP4 PUSH2 0x22B8 JUMP JUMPDEST PUSH1 0x36 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x22 DUP1 DUP5 MSTORE SWAP1 SWAP3 PUSH2 0x1BCE SWAP3 DUP7 SWAP3 SWAP1 PUSH2 0x2654 SWAP1 DUP4 ADD CODECOPY DUP4 SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP4 SWAP1 SWAP3 AND SWAP2 PUSH1 0x0 SWAP2 DUP4 SWAP2 PUSH4 0xD15E0053 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FC3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1FD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x1FEC DUP3 PUSH2 0x10E2 DUP11 PUSH2 0x1A0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1FFD DUP4 PUSH2 0x10E2 DUP11 PUSH2 0x1A0C JUMP JUMPDEST SWAP1 POP PUSH2 0x2013 DUP10 DUP10 PUSH2 0x200E DUP11 DUP8 PUSH2 0x1A2D JUMP JUMPDEST PUSH2 0x22FA JUMP JUMPDEST DUP6 ISZERO PUSH2 0x20A2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH4 0xD5ED3933 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP11 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP11 SWAP1 MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0xA4 DUP3 ADD DUP5 SWAP1 MSTORE SWAP2 MLOAD SWAP2 DUP7 AND SWAP2 PUSH4 0xD5ED3933 SWAP2 PUSH1 0xC4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2089 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x209D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4BECCB90F994C31ACED7A23B5611020728A23D8EC5CDDD1A3E9D97B96FDA8666 DUP10 DUP7 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2112 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2561 JUMP JUMPDEST PUSH2 0x2163 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x21A1 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2182 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2203 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2208 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x225F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1C7F JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x227B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1C7F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x279E PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1E4B DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x233F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2755 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2384 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2631 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x238F DUP4 DUP4 DUP4 PUSH2 0x12CF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x34 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH2 0x23DE DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2698 PUSH1 0x26 SWAP2 CODECOPY DUP4 SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP6 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x240D DUP2 DUP5 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x2431 PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x255A JUMPI PUSH1 0x36 SLOAD PUSH2 0x244A PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP8 DUP4 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2558 JUMPI PUSH2 0x24E1 PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP7 DUP4 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x253F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2553 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2595 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x25DE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x260B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x260B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x260B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x25F0 JUMP JUMPDEST POP PUSH2 0x2617 SWAP3 SWAP2 POP PUSH2 0x261B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2617 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x261C JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E6365436F6E74726163742069 PUSH15 0x7374616E63652068617320616C7265 PUSH2 0x6479 KECCAK256 PUSH3 0x65656E KECCAK256 PUSH10 0x6E697469616C697A6564 0xDD CALLCODE MSTORE 0xAD SHL 0xE2 0xC8 SWAP12 PUSH10 0xC2B068FC378DAA952BA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A207472616E7366657220 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 MSTORE8 PUSH2 0x6665 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x75636365656445524332303A2064656372656173 PUSH6 0x6420616C6C6F PUSH24 0x616E63652062656C6F77207A65726FA26469706673582212 KECCAK256 SWAP5 0xD2 0xD0 ORIGIN 0xE1 PUSH13 0xDCEC8B56FC2B2DC90DDDC719CB 0x27 SWAP3 SWAP4 PUSH10 0x45A3C590A0D62EB91B64 PUSH20 0x6F6C634300060C00330000000000000000000000 ",
              "sourceMap": "280:121:62:-:0;;;926:1:74;884:43;;280:121:62;;;;;;;;;-1:-1:-1;952:164:90;;;;;;;;;;;;-1:-1:-1;;;952:164:90;;;;;;;;;;;;;;;;;;;;;1051:12;;952:164;;;-1:-1:-1;;1051:12:90;;:5;;952:164;1051:12;:::i;:::-;-1:-1:-1;1069:16:90;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;1091:9:90;:20;;-1:-1:-1;;1091:20:90;;;;;;;;;;;;-1:-1:-1;280:121:62;;-1:-1:-1;280:121:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;280:121:62;;;-1:-1:-1;280:121:62;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101e55760003560e01c80637535d2461161010f578063ae167335116100a2578063d505accf11610071578063d505accf146106aa578063d7020d0a146106fb578063dd62ed3e14610737578063f866c31914610765576101e5565b8063ae1673351461066c578063b16a19de14610674578063b1bf962d1461067c578063b9844d8d14610684576101e5565b806388dd91a1116100de57806388dd91a1146105e057806395d89b411461060c578063a457c2d714610614578063a9059cbb14610640576101e5565b80637535d2461461058957806375d26413146105ad57806378160376146105b55780637df5bd3b146105bd576101e5565b80631da24f3e116101875780633644e515116101565780633644e51514610503578063395093511461050b5780634efecaa51461053757806370a0823114610563576101e5565b80631da24f3e1461048157806323b872dd146104a757806330adf81f146104dd578063313ce567146104e5576101e5565b80630bd7ad3b116101c35780630bd7ad3b146102e6578063156e29f61461030057806318160ddd14610332578063183fb4131461033a576101e5565b806306fdde03146101ea578063095ea7b3146102675780630afbcdc9146102a7575b600080fd5b6101f261079b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102936004803603604081101561027d57600080fd5b506001600160a01b038135169060200135610832565b604080519115158252519081900360200190f35b6102cd600480360360208110156102bd57600080fd5b50356001600160a01b0316610850565b6040805192835260208301919091528051918290030190f35b6102ee61086d565b60408051918252519081900360200190f35b6102936004803603606081101561031657600080fd5b506001600160a01b038135169060208101359060400135610872565b6102ee610a40565b61047f600480360361010081101561035157600080fd5b6001600160a01b038235811692602081013582169260408201358316926060830135169160ff6080820135169181019060c0810160a082013564010000000081111561039c57600080fd5b8201836020820111156103ae57600080fd5b803590602001918460018302840111640100000000831117156103d057600080fd5b9193909290916020810190356401000000008111156103ee57600080fd5b82018360208201111561040057600080fd5b8035906020019184600183028401116401000000008311171561042257600080fd5b91939092909160208101903564010000000081111561044057600080fd5b82018360208201111561045257600080fd5b8035906020019184600183028401116401000000008311171561047457600080fd5b509092509050610aea565b005b6102ee6004803603602081101561049757600080fd5b50356001600160a01b0316610e67565b610293600480360360608110156104bd57600080fd5b506001600160a01b03813581169160208101359091169060400135610e72565b6102ee610f32565b6104ed610f56565b6040805160ff9092168252519081900360200190f35b6102ee610f5f565b6102936004803603604081101561052157600080fd5b506001600160a01b038135169060200135610f65565b6102ee6004803603604081101561054d57600080fd5b506001600160a01b038135169060200135610fb3565b6102ee6004803603602081101561057957600080fd5b50356001600160a01b0316611059565b6105916110e8565b604080516001600160a01b039092168252519081900360200190f35b6105916110f7565b6101f2611106565b61047f600480360360408110156105d357600080fd5b5080359060200135611123565b61047f600480360360408110156105f657600080fd5b506001600160a01b03813516906020013561124a565b6101f26112d4565b6102936004803603604081101561062a57600080fd5b506001600160a01b038135169060200135611335565b6102936004803603604081101561065657600080fd5b506001600160a01b03813516906020013561139d565b6105916113fa565b610591611409565b6102ee611418565b6102ee6004803603602081101561069a57600080fd5b50356001600160a01b0316611422565b61047f600480360360e08110156106c057600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611434565b61047f6004803603608081101561071157600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561167b565b6102ee6004803603604081101561074d57600080fd5b506001600160a01b0381358116916020013516611820565b61047f6004803603606081101561077b57600080fd5b506001600160a01b0381358116916020810135909116906040013561184b565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108275780601f106107fc57610100808354040283529160200191610827565b820191906000526020600020905b81548152906001019060200180831161080a57829003601f168201915b505050505090505b90565b600061084661083f61191c565b8484611920565b5060015b92915050565b60008061085c83611a0c565b610864611a27565b91509150915091565b600181565b603c546000906001600160a01b031661088961191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906109375760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108fc5781810151838201526020016108e4565b50505050905090810190601f1680156109295780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600061094385611a0c565b905060006109518585611a2d565b6040805180820190915260028152611a9b60f11b6020820152909150816109b95760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506109c48682611b34565b6040805186815290516001600160a01b038816916000916000805160206127148339815191529181900360200190a3604080518681526020810186905281516001600160a01b038916927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25015949350505050565b600080610a4b611a27565b905080610a5c57600091505061082f565b603c54603e546040805163d15e005360e01b81526001600160a01b0392831660048201529051610ae493929092169163d15e005391602480820192602092909190829003018186803b158015610ab157600080fd5b505afa158015610ac5573d6000803e3d6000fd5b505050506040513d6020811015610adb57600080fd5b50518290611c85565b91505090565b6000610af4611d43565b60015490915060ff1680610b0b5750610b0b611d48565b80610b17575060005481115b610b525760405162461bcd60e51b815260040180806020018281038252602e8152602001806126e6602e913960400191505060405180910390fd5b60015460ff16158015610b71576001805460ff19168117905560008290555b60004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f89896040518083838082843780830192505050925050506040518091039020604051806040016040528060018152602001603160f81b81525080519060200120833060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120603b81905550610c6989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d4e92505050565b610ca887878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d6192505050565b610cb18a611d74565b8d603c60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c603d60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b603e60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a603f60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508d6001600160a01b03168c6001600160a01b03167fb19e051f8af41150ccccb3fc2c2d8d15f4a4cf434f32a559ba75fe73d6eea20b8f8e8e8e8e8e8e8e8e604051808a6001600160a01b03168152602001896001600160a01b031681526020018860ff16815260200180602001806020018060200184810384528a8a82818152602001925080828437600083820152601f01601f191690910185810384528881526020019050888880828437600083820152601f01601f191690910185810383528681526020019050868680828437600083820152604051601f909101601f19169092018290039e50909c50505050505050505050505050a3508015610e58576001805460ff191690555b50505050505050505050505050565b600061084a82611a0c565b6000610e7f848484611d8a565b610eef84610e8b61191c565b610eea856040518060600160405280602881526020016126be602891396001600160a01b038a16600090815260356020526040812090610ec961191c565b6001600160a01b031681526020810191909152604001600020549190611d97565b611920565b826001600160a01b0316846001600160a01b0316600080516020612714833981519152846040518082815260200191505060405180910390a35060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60395460ff1690565b603b5481565b6000610846610f7261191c565b84610eea8560356000610f8361191c565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611df1565b603c546000906001600160a01b0316610fca61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b8152509061103b5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50603e54611053906001600160a01b03168484611e52565b50919050565b603c54603e546040805163d15e005360e01b81526001600160a01b039283166004820152905160009361084a93169163d15e0053916024808301926020929190829003018186803b1580156110ad57600080fd5b505afa1580156110c1573d6000803e3d6000fd5b505050506040513d60208110156110d757600080fd5b50516110e284611a0c565b90611c85565b603c546001600160a01b031690565b6000611101611ea4565b905090565b604051806040016040528060018152602001603160f81b81525081565b603c546001600160a01b031661113761191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906111a85760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50816111b357611246565b603d546001600160a01b03166111d2816111cd8585611a2d565b611b34565b6040805184815290516001600160a01b038316916000916000805160206127148339815191529181900360200190a3604080518481526020810184905281516001600160a01b038416927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a2505b5050565b603c546001600160a01b031661125e61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906112cf5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b505050565b60388054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108275780601f106107fc57610100808354040283529160200191610827565b600061084661134261191c565b84610eea856040518060600160405280602581526020016127c8602591396035600061136c61191c565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611d97565b60006113b16113aa61191c565b8484611d8a565b826001600160a01b03166113c361191c565b6001600160a01b0316600080516020612714833981519152846040518082815260200191505060405180910390a350600192915050565b603d546001600160a01b031690565b603e546001600160a01b031690565b6000611101611a27565b603a6020526000908152604090205481565b6001600160a01b03871661147f576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa7aba722a960991b604482015290519081900360640190fd5b834211156114c9576040805162461bcd60e51b815260206004820152601260248201527124a72b20a624a22fa2ac2824a920aa24a7a760711b604482015290519081900360640190fd5b6001600160a01b038088166000818152603a6020908152604080832054603b5482517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a0850181905260c08086018b90528251808703909101815260e08601835280519084012061190160f01b6101008701526101028601969096526101228086019690965281518086039096018652610142850180835286519684019690962093909552610162840180825283905260ff88166101828501526101a284018790526101c284018690525191926001926101e28083019392601f198301929081900390910190855afa1580156115de573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614611641576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b61164c826001611df1565b6001600160a01b038a166000908152603a6020526040902055611670898989611920565b505050505050505050565b603c546001600160a01b031661168f61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906117005760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50600061170d8383611a2d565b60408051808201909152600281526106a760f31b6020820152909150816117755760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506117808582611eb3565b603e54611797906001600160a01b03168585611e52565b6040805184815290516000916001600160a01b038816916000805160206127148339815191529181900360200190a3836001600160a01b0316856001600160a01b03167f5d624aa9c148153ab3446c1b154f660ee7701e549fe9b62dab7171b1c80e6fa28585604051808381526020018281526020019250505060405180910390a35050505050565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b603c546001600160a01b031661185f61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906118d05760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506118de8383836000611f57565b816001600160a01b0316836001600160a01b0316600080516020612714833981519152836040518082815260200191505060405180910390a3505050565b3390565b6001600160a01b0383166119655760405162461bcd60e51b815260040180806020018281038252602481526020018061277a6024913960400191505060405180910390fd5b6001600160a01b0382166119aa5760405162461bcd60e51b81526004018080602001828103825260228152602001806126766022913960400191505060405180910390fd5b6001600160a01b03808416600081815260356020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b031660009081526034602052604090205490565b60365490565b604080518082019091526002815261035360f41b602082015260009082611a955760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce8000000821904851115611b115760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b5082816b033b2e3c9fd0803ce800000086020181611b2b57fe5b04949350505050565b6001600160a01b038216611b8f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611b9b600083836112cf565b603654611ba88183611df1565b6036556001600160a01b038316600090815260346020526040902054611bce8184611df1565b6001600160a01b038516600090815260346020526040812091909155611bf2611ea4565b6001600160a01b031614611c7f57611c08611ea4565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015611c6657600080fd5b505af1158015611c7a573d6000803e3d6000fd5b505050505b50505050565b6000821580611c92575081155b15611c9f5750600061084a565b816b019d971e4fe8401e740000001981611cb557fe5b0483111560405180604001604052806002815260200161068760f31b81525090611d205760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b600290565b303b1590565b805161124690603790602084019061259d565b805161124690603890602084019061259d565b6039805460ff191660ff92909216919091179055565b6112cf8383836001611f57565b60008184841115611de95760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b505050900390565b600082820183811015611e4b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112cf908490612100565b603f546001600160a01b031690565b6001600160a01b038216611ef85760405162461bcd60e51b81526004018080602001828103825260218152602001806127346021913960400191505060405180910390fd5b611f04826000836112cf565b603654611f1181836122b8565b6036556001600160a01b0383166000908152603460209081526040918290205482516060810190935260228084529092611bce9286929061265490830139839190611d97565b603e54603c546040805163d15e005360e01b81526001600160a01b03938416600482018190529151919390921691600091839163d15e0053916024808301926020929190829003018186803b158015611faf57600080fd5b505afa158015611fc3573d6000803e3d6000fd5b505050506040513d6020811015611fd957600080fd5b505190506000611fec826110e28a611a0c565b90506000611ffd836110e28a611a0c565b9050612013898961200e8a87611a2d565b6122fa565b85156120a2576040805163d5ed393360e01b81526001600160a01b0387811660048301528b811660248301528a81166044830152606482018a90526084820185905260a4820184905291519186169163d5ed39339160c48082019260009290919082900301818387803b15801561208957600080fd5b505af115801561209d573d6000803e3d6000fd5b505050505b876001600160a01b0316896001600160a01b03167f4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda86668986604051808381526020018281526020019250505060405180910390a3505050505050505050565b612112826001600160a01b0316612561565b612163576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106121a15780518252601f199092019160209182019101612182565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612203576040519150601f19603f3d011682016040523d82523d6000602084013e612208565b606091505b50915091508161225f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611c7f5780806020019051602081101561227b57600080fd5b5051611c7f5760405162461bcd60e51b815260040180806020018281038252602a81526020018061279e602a913960400191505060405180910390fd5b6000611e4b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d97565b6001600160a01b03831661233f5760405162461bcd60e51b81526004018080602001828103825260258152602001806127556025913960400191505060405180910390fd5b6001600160a01b0382166123845760405162461bcd60e51b81526004018080602001828103825260238152602001806126316023913960400191505060405180910390fd5b61238f8383836112cf565b600060346000856001600160a01b03166001600160a01b031681526020019081526020016000205490506123de8260405180606001604052806026815260200161269860269139839190611d97565b6001600160a01b03808616600090815260346020526040808220939093559085168152205461240d8184611df1565b6001600160a01b038516600090815260346020526040812091909155612431611ea4565b6001600160a01b03161461255a5760365461244a611ea4565b6001600160a01b03166331873e2e8783866040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b1580156124a857600080fd5b505af11580156124bc573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b031614612558576124e1611ea4565b6001600160a01b03166331873e2e8683856040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561253f57600080fd5b505af1158015612553573d6000803e3d6000fd5b505050505b505b5050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061259557508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106125de57805160ff191683800117855561260b565b8280016001018555821561260b579182015b8281111561260b5782518255916020019190600101906125f0565b5061261792915061261b565b5090565b5b80821115612617576000815560010161261c56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122094d2d032e16cdcec8b56fc2b2dc90dddc719cb2792936945a3c590a0d62eb91b64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7535D246 GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xAE167335 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x6AA JUMPI DUP1 PUSH4 0xD7020D0A EQ PUSH2 0x6FB JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x737 JUMPI DUP1 PUSH4 0xF866C319 EQ PUSH2 0x765 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0xAE167335 EQ PUSH2 0x66C JUMPI DUP1 PUSH4 0xB16A19DE EQ PUSH2 0x674 JUMPI DUP1 PUSH4 0xB1BF962D EQ PUSH2 0x67C JUMPI DUP1 PUSH4 0xB9844D8D EQ PUSH2 0x684 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x88DD91A1 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x88DD91A1 EQ PUSH2 0x5E0 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x60C JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x614 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x640 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x7535D246 EQ PUSH2 0x589 JUMPI DUP1 PUSH4 0x75D26413 EQ PUSH2 0x5AD JUMPI DUP1 PUSH4 0x78160376 EQ PUSH2 0x5B5 JUMPI DUP1 PUSH4 0x7DF5BD3B EQ PUSH2 0x5BD JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x1DA24F3E GT PUSH2 0x187 JUMPI DUP1 PUSH4 0x3644E515 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x503 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x50B JUMPI DUP1 PUSH4 0x4EFECAA5 EQ PUSH2 0x537 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x563 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x1DA24F3E EQ PUSH2 0x481 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x4A7 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x4DD JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x4E5 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0xBD7AD3B GT PUSH2 0x1C3 JUMPI DUP1 PUSH4 0xBD7AD3B EQ PUSH2 0x2E6 JUMPI DUP1 PUSH4 0x156E29F6 EQ PUSH2 0x300 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x332 JUMPI DUP1 PUSH4 0x183FB413 EQ PUSH2 0x33A JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x267 JUMPI DUP1 PUSH4 0xAFBCDC9 EQ PUSH2 0x2A7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F2 PUSH2 0x79B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x22C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x214 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x259 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x27D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x832 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x850 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x2EE PUSH2 0x86D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x316 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x872 JUMP JUMPDEST PUSH2 0x2EE PUSH2 0xA40 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x351 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP4 AND SWAP3 PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP2 DUP2 ADD SWAP1 PUSH1 0xC0 DUP2 ADD PUSH1 0xA0 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x39C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x400 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x452 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x474 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xAEA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x497 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE67 JUMP JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xE72 JUMP JUMPDEST PUSH2 0x2EE PUSH2 0xF32 JUMP JUMPDEST PUSH2 0x4ED PUSH2 0xF56 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2EE PUSH2 0xF5F JUMP JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF65 JUMP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x54D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xFB3 JUMP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1059 JUMP JUMPDEST PUSH2 0x591 PUSH2 0x10E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x591 PUSH2 0x10F7 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x1106 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1123 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x12D4 JUMP JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x62A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1335 JUMP JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x139D JUMP JUMPDEST PUSH2 0x591 PUSH2 0x13FA JUMP JUMPDEST PUSH2 0x591 PUSH2 0x1409 JUMP JUMPDEST PUSH2 0x2EE PUSH2 0x1418 JUMP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x69A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1422 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x6C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1434 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x711 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x167B JUMP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x74D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1820 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x77B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x184B JUMP JUMPDEST PUSH1 0x37 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x827 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7FC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x827 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x80A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x846 PUSH2 0x83F PUSH2 0x191C JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1920 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x85C DUP4 PUSH2 0x1A0C JUMP JUMPDEST PUSH2 0x864 PUSH2 0x1A27 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x889 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x937 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x929 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0x943 DUP6 PUSH2 0x1A0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x951 DUP6 DUP6 PUSH2 0x1A2D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1A9B PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0x9B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH2 0x9C4 DUP7 DUP3 PUSH2 0x1B34 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP ISZERO SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA4B PUSH2 0x1A27 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xA5C JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x82F JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x3E SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0xAE4 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xD15E0053 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAC5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xADB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 SWAP1 PUSH2 0x1C85 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAF4 PUSH2 0x1D43 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 PUSH2 0xB0B JUMPI POP PUSH2 0xB0B PUSH2 0x1D48 JUMP JUMPDEST DUP1 PUSH2 0xB17 JUMPI POP PUSH1 0x0 SLOAD DUP2 GT JUMPDEST PUSH2 0xB52 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x26E6 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0xB71 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 OR SWAP1 SSTORE PUSH1 0x0 DUP3 SWAP1 SSTORE JUMPDEST PUSH1 0x0 CHAINID SWAP1 POP PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP10 DUP10 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP4 ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x3B DUP2 SWAP1 SSTORE POP PUSH2 0xC69 DUP10 DUP10 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1D4E SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xCA8 DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1D61 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xCB1 DUP11 PUSH2 0x1D74 JUMP JUMPDEST DUP14 PUSH1 0x3C PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP13 PUSH1 0x3D PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP12 PUSH1 0x3E PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP11 PUSH1 0x3F PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xB19E051F8AF41150CCCCB3FC2C2D8D15F4A4CF434F32A559BA75FE73D6EEA20B DUP16 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP1 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP11 DUP11 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD DUP6 DUP2 SUB DUP5 MSTORE DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 POP DUP9 DUP9 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD DUP6 DUP2 SUB DUP4 MSTORE DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 POP DUP7 DUP7 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP15 POP SWAP1 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP LOG3 POP DUP1 ISZERO PUSH2 0xE58 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x84A DUP3 PUSH2 0x1A0C JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE7F DUP5 DUP5 DUP5 PUSH2 0x1D8A JUMP JUMPDEST PUSH2 0xEEF DUP5 PUSH2 0xE8B PUSH2 0x191C JUMP JUMPDEST PUSH2 0xEEA DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x26BE PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0xEC9 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH2 0x1920 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x39 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x3B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x846 PUSH2 0xF72 PUSH2 0x191C JUMP JUMPDEST DUP5 PUSH2 0xEEA DUP6 PUSH1 0x35 PUSH1 0x0 PUSH2 0xF83 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFCA PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x103B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH1 0x3E SLOAD PUSH2 0x1053 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH2 0x1E52 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x3E SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 PUSH2 0x84A SWAP4 AND SWAP2 PUSH4 0xD15E0053 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10C1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x10E2 DUP5 PUSH2 0x1A0C JUMP JUMPDEST SWAP1 PUSH2 0x1C85 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1101 PUSH2 0x1EA4 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1137 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x11A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP DUP2 PUSH2 0x11B3 JUMPI PUSH2 0x1246 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11D2 DUP2 PUSH2 0x11CD DUP6 DUP6 PUSH2 0x1A2D JUMP JUMPDEST PUSH2 0x1B34 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH1 0x0 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x125E PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x12CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x38 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x827 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7FC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x827 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x846 PUSH2 0x1342 PUSH2 0x191C JUMP JUMPDEST DUP5 PUSH2 0xEEA DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x27C8 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x35 PUSH1 0x0 PUSH2 0x136C PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13B1 PUSH2 0x13AA PUSH2 0x191C JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1D8A JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13C3 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1101 PUSH2 0x1A27 JUMP JUMPDEST PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x147F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x24A72B20A624A22FA7ABA722A9 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x14C9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x24A72B20A624A22FA2AC2824A920AA24A7A7 PUSH1 0x71 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x3B SLOAD DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP13 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP12 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP1 DUP7 ADD DUP12 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP8 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP7 ADD DUP4 MSTORE DUP1 MLOAD SWAP1 DUP5 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH2 0x100 DUP8 ADD MSTORE PUSH2 0x102 DUP7 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP7 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP6 ADD DUP1 DUP4 MSTORE DUP7 MLOAD SWAP7 DUP5 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP4 SWAP1 SWAP6 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP4 SWAP1 MSTORE PUSH1 0xFF DUP9 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP8 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP7 SWAP1 MSTORE MLOAD SWAP2 SWAP3 PUSH1 0x1 SWAP3 PUSH2 0x1E2 DUP1 DUP4 ADD SWAP4 SWAP3 PUSH1 0x1F NOT DUP4 ADD SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15DE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1641 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x494E56414C49445F5349474E4154555245 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x164C DUP3 PUSH1 0x1 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x1670 DUP10 DUP10 DUP10 PUSH2 0x1920 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x168F PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1700 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x170D DUP4 DUP4 PUSH2 0x1A2D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x6A7 PUSH1 0xF3 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0x1775 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH2 0x1780 DUP6 DUP3 PUSH2 0x1EB3 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH2 0x1797 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 PUSH2 0x1E52 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x5D624AA9C148153AB3446C1B154F660EE7701E549FE9B62DAB7171B1C80E6FA2 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x185F PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x18D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH2 0x18DE DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x1F57 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1965 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x277A PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x19AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2676 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x36 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x1A95 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x1B11 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x1B2B JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1B8F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1B9B PUSH1 0x0 DUP4 DUP4 PUSH2 0x12CF JUMP JUMPDEST PUSH1 0x36 SLOAD PUSH2 0x1BA8 DUP2 DUP4 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x36 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1BCE DUP2 DUP5 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1BF2 PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1C7F JUMPI PUSH2 0x1C08 PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP6 DUP5 DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C7A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x1C92 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x1C9F JUMPI POP PUSH1 0x0 PUSH2 0x84A JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x1CB5 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1D20 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP POP PUSH12 0x33B2E3C9FD0803CE8000000 SWAP2 MUL PUSH12 0x19D971E4FE8401E74000000 ADD DIV SWAP1 JUMP JUMPDEST PUSH1 0x2 SWAP1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1246 SWAP1 PUSH1 0x37 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x259D JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1246 SWAP1 PUSH1 0x38 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x259D JUMP JUMPDEST PUSH1 0x39 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x12CF DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1F57 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1DE9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1E4B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x12CF SWAP1 DUP5 SWAP1 PUSH2 0x2100 JUMP JUMPDEST PUSH1 0x3F SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1EF8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2734 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1F04 DUP3 PUSH1 0x0 DUP4 PUSH2 0x12CF JUMP JUMPDEST PUSH1 0x36 SLOAD PUSH2 0x1F11 DUP2 DUP4 PUSH2 0x22B8 JUMP JUMPDEST PUSH1 0x36 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x22 DUP1 DUP5 MSTORE SWAP1 SWAP3 PUSH2 0x1BCE SWAP3 DUP7 SWAP3 SWAP1 PUSH2 0x2654 SWAP1 DUP4 ADD CODECOPY DUP4 SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP4 SWAP1 SWAP3 AND SWAP2 PUSH1 0x0 SWAP2 DUP4 SWAP2 PUSH4 0xD15E0053 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FC3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1FD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x1FEC DUP3 PUSH2 0x10E2 DUP11 PUSH2 0x1A0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1FFD DUP4 PUSH2 0x10E2 DUP11 PUSH2 0x1A0C JUMP JUMPDEST SWAP1 POP PUSH2 0x2013 DUP10 DUP10 PUSH2 0x200E DUP11 DUP8 PUSH2 0x1A2D JUMP JUMPDEST PUSH2 0x22FA JUMP JUMPDEST DUP6 ISZERO PUSH2 0x20A2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH4 0xD5ED3933 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP11 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP11 SWAP1 MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0xA4 DUP3 ADD DUP5 SWAP1 MSTORE SWAP2 MLOAD SWAP2 DUP7 AND SWAP2 PUSH4 0xD5ED3933 SWAP2 PUSH1 0xC4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2089 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x209D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4BECCB90F994C31ACED7A23B5611020728A23D8EC5CDDD1A3E9D97B96FDA8666 DUP10 DUP7 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2112 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2561 JUMP JUMPDEST PUSH2 0x2163 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x21A1 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2182 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2203 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2208 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x225F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1C7F JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x227B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1C7F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x279E PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1E4B DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x233F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2755 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2384 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2631 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x238F DUP4 DUP4 DUP4 PUSH2 0x12CF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x34 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH2 0x23DE DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2698 PUSH1 0x26 SWAP2 CODECOPY DUP4 SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP6 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x240D DUP2 DUP5 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x2431 PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x255A JUMPI PUSH1 0x36 SLOAD PUSH2 0x244A PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP8 DUP4 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2558 JUMPI PUSH2 0x24E1 PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP7 DUP4 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x253F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2553 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2595 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x25DE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x260B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x260B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x260B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x25F0 JUMP JUMPDEST POP PUSH2 0x2617 SWAP3 SWAP2 POP PUSH2 0x261B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2617 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x261C JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E6365436F6E74726163742069 PUSH15 0x7374616E63652068617320616C7265 PUSH2 0x6479 KECCAK256 PUSH3 0x65656E KECCAK256 PUSH10 0x6E697469616C697A6564 0xDD CALLCODE MSTORE 0xAD SHL 0xE2 0xC8 SWAP12 PUSH10 0xC2B068FC378DAA952BA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A207472616E7366657220 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 MSTORE8 PUSH2 0x6665 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x75636365656445524332303A2064656372656173 PUSH6 0x6420616C6C6F PUSH24 0x616E63652062656C6F77207A65726FA26469706673582212 KECCAK256 SWAP5 0xD2 0xD0 ORIGIN 0xE1 PUSH13 0xDCEC8B56FC2B2DC90DDDC719CB 0x27 SWAP3 SWAP4 PUSH10 0x45A3C590A0D62EB91B64 PUSH20 0x6F6C634300060C00330000000000000000000000 ",
              "sourceMap": "280:121:62:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1168:84:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3230:156;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3230:156:90;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;7903:183:88;;;;;;;;;;;;;;;;-1:-1:-1;7903:183:88;-1:-1:-1;;;;;7903:183:88;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1355:45;;;:::i;:::-;;;;;;;;;;;;;;;;4876:442;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4876:442:88;;;;;;;;;;;;;:::i;8304:300::-;;;:::i;2534:1035::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2534:1035:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2534:1035:88;;-1:-1:-1;2534:1035:88;-1:-1:-1;2534:1035:88;:::i;:::-;;7544:119;;;;;;;;;;;;;;;;-1:-1:-1;7544:119:88;-1:-1:-1;;;;;7544:119:88;;:::i;3719:389:90:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3719:389:90;;;;;;;;;;;;;;;;;:::i;1209:141:88:-;;;:::i;1450:84:90:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1513:31:88;;;:::i;4354:205:90:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4354:205:90;;;;;;;;:::i;10198:215:88:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10198:215:88;;;;;;;;:::i;7026:::-;;;;;;;;;;;;;;;;-1:-1:-1;7026:215:88;-1:-1:-1;;;;;7026:215:88;;:::i;9374:74::-;;;:::i;:::-;;;;-1:-1:-1;;;;;9374:74:88;;;;;;;;;;;;;;9767:138;;;:::i;1010:50::-;;;:::i;5534:612::-;;;;;;;;;;;;;;;;-1:-1:-1;5534:612:88;;;;;;;:::i;10600:91::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10600:91:88;;;;;;;;:::i;1306:88:90:-;;;:::i;4815:318::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4815:318:90;;;;;;;;:::i;2413:214::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2413:214:90;;;;;;;;:::i;8971:93:88:-;;;:::i;9172:109::-;;;:::i;8755:113::-;;;:::i;1466:42::-;;;;;;;;;;;;;;;;-1:-1:-1;1466:42:88;-1:-1:-1;;;;;1466:42:88;;:::i;11128:741::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11128:741:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4024:469::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4024:469:88;;;;;;;;;;;;;;;;;;;;;;:::i;2893:165:90:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2893:165:90;;;;;;;;;;:::i;6484:332:88:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6484:332:88;;;;;;;;;;;;;;;;;:::i;1168:84:90:-;1242:5;1235:12;;;;;;;;-1:-1:-1;;1235:12:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1214:13;;1235:12;;1242:5;;1235:12;;1242:5;1235:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1168:84;;:::o;3230:156::-;3313:4;3325:39;3334:12;:10;:12::i;:::-;3348:7;3357:6;3325:8;:39::i;:::-;-1:-1:-1;3377:4:90;3230:156;;;;;:::o;7903:183:88:-;8004:7;8013;8038:21;8054:4;8038:15;:21::i;:::-;8061:19;:17;:19::i;:::-;8030:51;;;;7903:183;;;:::o;1355:45::-;1397:3;1355:45;:::o;4876:442::-;1771:5;;4994:4;;-1:-1:-1;;;;;1771:5:88;1747:12;:10;:12::i;:::-;-1:-1:-1;;;;;1747:30:88;;1779:37;;;;;;;;;;;;;-1:-1:-1;;;1779:37:88;;;1739:78;;;;;-1:-1:-1;;;1739:78:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5006:23:::1;5032:21;5048:4;5032:15;:21::i;:::-;5006:47:::0;-1:-1:-1;5060:20:88::1;5083;:6:::0;5097:5;5083:13:::1;:20::i;:::-;5136:29;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;5136:29:88::1;::::0;::::1;::::0;5060:43;;-1:-1:-1;5117:17:88;5109:57:::1;;;::::0;-1:-1:-1;;;5109:57:88;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;5172:25;5178:4;5184:12;5172:5;:25::i;:::-;5209:34;::::0;;;;;;;-1:-1:-1;;;;;5209:34:88;::::1;::::0;5226:1:::1;::::0;-1:-1:-1;;;;;;;;;;;5209:34:88;;;;::::1;::::0;;::::1;5254:25;::::0;;;;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;5254:25:88;::::1;::::0;::::1;::::0;;;;;;::::1;-1:-1:-1::0;5293:20:88;;4876:442;-1:-1:-1;;;;4876:442:88:o;8304:300::-;8384:7;8399:27;8429:19;:17;:19::i;:::-;8399:49;-1:-1:-1;8459:24:88;8455:53;;8500:1;8493:8;;;;;8455:53;8548:5;;8581:16;;8548:50;;;-1:-1:-1;;;8548:50:88;;-1:-1:-1;;;;;8581:16:88;;;8548:50;;;;;;8521:78;;8548:5;;;;;:32;;:50;;;;;;;;;;;;;;;:5;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8548:50:88;8521:19;;:26;:78::i;:::-;8514:85;;;8304:300;:::o;2534:1035::-;1162:16:74;1181:13;:11;:13::i;:::-;1215:12;;1162:32;;-1:-1:-1;1215:12:74;;;:31;;;1231:15;:13;:15::i;:::-;1215:69;;;;1261:23;;1250:8;:34;1215:69;1200:146;;;;-1:-1:-1;;;1200:146:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1376:12;;;;1375:13;1394:96;;;;1437:4;1422:19;;-1:-1:-1;;1422:19:74;;;;;:12;1449:34;;;1394:96;2839:15:88::1;2920:9;2909:20;;1110:95;3036:10;;3020:28;;;;;;;;;;;;;;;;;;;;;;;;;;;1050:10;;;;;;;;;;;;;-1:-1:-1::0;;;1050:10:88::1;;::::0;3058:26:::1;;;;;;3094:7;3119:4;2977:155;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;2977:155:88::1;;;;;;;;;;;;;;;;;;;;;;;;2960:178;;;;;;2941:16;:197;;;;3145:20;3154:10;;3145:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;3145:8:88::1;::::0;-1:-1:-1;;;3145:20:88:i:1;:::-;3171:24;3182:12;;3171:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;3171:10:88::1;::::0;-1:-1:-1;;;3171:24:88:i:1;:::-;3201:28;3214:14;3201:12;:28::i;:::-;3244:4;3236:5;;:12;;;;;-1:-1:-1::0;;;;;3236:12:88::1;;;;;-1:-1:-1::0;;;;;3236:12:88::1;;;;;;3266:8;3254:9;;:20;;;;;-1:-1:-1::0;;;;;3254:20:88::1;;;;;-1:-1:-1::0;;;;;3254:20:88::1;;;;;;3299:15;3280:16;;:34;;;;;-1:-1:-1::0;;;;;3280:34:88::1;;;;;-1:-1:-1::0;;;;;3280:34:88::1;;;;;;3344:20;3320:21;;:44;;;;;-1:-1:-1::0;;;;;3320:44:88::1;;;;;-1:-1:-1::0;;;;;3320:44:88::1;;;;;;3426:4;-1:-1:-1::0;;;;;3376:188:88::1;3395:15;-1:-1:-1::0;;;;;3376:188:88::1;;3439:8;3463:20;3492:14;3514:10;;3532:12;;3552:6;;3376:188;;;;-1:-1:-1::0;;;;;3376:188:88::1;;;;;;-1:-1:-1::0;;;;;3376:188:88::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;;-1:-1:-1::0;;3376:188:88::1;::::0;;::::1;::::0;;::::1;::::0;;;;;::::1;;::::0;-1:-1:-1;3376:188:88;;;;;::::1;;::::0;;::::1;::::0;::::1;;-1:-1:-1::0;;3376:188:88::1;::::0;;::::1;::::0;;::::1;::::0;;;;;::::1;;::::0;-1:-1:-1;3376:188:88;;;;;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;3376:188:88::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;3376:188:88;;-1:-1:-1;;;;;;;;;;;;;3376:188:88::1;1496:1:74;1508:14:::0;1504:55;;;1532:12;:20;;-1:-1:-1;;1532:20:74;;;1504:55;2534:1035:88;;;;;;;;;;;;;:::o;7544:119::-;7615:7;7637:21;7653:4;7637:15;:21::i;3719:389:90:-;3841:4;3853:36;3863:6;3871:9;3882:6;3853:9;:36::i;:::-;3895:145;3911:6;3925:12;:10;:12::i;:::-;3945:89;3983:6;3945:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3945:19:90;;;;;;:11;:19;;;;;;3965:12;:10;:12::i;:::-;-1:-1:-1;;;;;3945:33:90;;;;;;;;;;;;-1:-1:-1;3945:33:90;;;:89;:37;:89::i;:::-;3895:8;:145::i;:::-;4068:9;-1:-1:-1;;;;;4051:35:90;4060:6;-1:-1:-1;;;;;4051:35:90;-1:-1:-1;;;;;;;;;;;4079:6:90;4051:35;;;;;;;;;;;;;;;;;;-1:-1:-1;4099:4:90;3719:389;;;;;:::o;1209:141:88:-;1255:95;1209:141;:::o;1450:84:90:-;1520:9;;;;1450:84;:::o;1513:31:88:-;;;;:::o;4354:205:90:-;4442:4;4454:83;4463:12;:10;:12::i;:::-;4477:7;4486:50;4525:10;4486:11;:25;4498:12;:10;:12::i;:::-;-1:-1:-1;;;;;4486:25:90;;;;;;;;;;;;;;;;;-1:-1:-1;4486:25:90;;;:34;;;;;;;;;;;:38;:50::i;10198:215:88:-;1771:5;;10319:7;;-1:-1:-1;;;;;1771:5:88;1747:12;:10;:12::i;:::-;-1:-1:-1;;;;;1747:30:88;;1779:37;;;;;;;;;;;;;-1:-1:-1;;;1779:37:88;;;1739:78;;;;;-1:-1:-1;;;1739:78:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10343:16:88::1;::::0;10336:53:::1;::::0;-1:-1:-1;;;;;10343:16:88::1;10374:6:::0;10382;10336:37:::1;:53::i;:::-;-1:-1:-1::0;10402:6:88;10198:215;-1:-1:-1;10198:215:88:o;7026:::-;7185:5;;7218:16;;7185:50;;;-1:-1:-1;;;7185:50:88;;-1:-1:-1;;;;;7218:16:88;;;7185:50;;;;;;7132:7;;7156:80;;7185:5;;:32;;:50;;;;;;;;;;;;;;:5;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7185:50:88;7156:21;7172:4;7156:15;:21::i;:::-;:28;;:80::i;9374:74::-;9438:5;;-1:-1:-1;;;;;9438:5:88;9374:74;:::o;9767:138::-;9834:25;9874:26;:24;:26::i;:::-;9867:33;;9767:138;:::o;1010:50::-;1050:10;;;;;;;;;;;;;-1:-1:-1;;;1050:10:88;;;1010:50;:::o;5534:612::-;1771:5;;-1:-1:-1;;;;;1771:5:88;1747:12;:10;:12::i;:::-;-1:-1:-1;;;;;1747:30:88;;1779:37;;;;;;;;;;;;;-1:-1:-1;;;1779:37:88;;;1739:78;;;;;-1:-1:-1;;;1739:78:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5633:11:88;5629:38:::1;;5654:7;;5629:38;5692:9;::::0;-1:-1:-1;;;;;5692:9:88::1;6014:37;5692:9:::0;6030:20:::1;:6:::0;6044:5;6030:13:::1;:20::i;:::-;6014:5;:37::i;:::-;6063:38;::::0;;;;;;;-1:-1:-1;;;;;6063:38:88;::::1;::::0;6080:1:::1;::::0;-1:-1:-1;;;;;;;;;;;6063:38:88;;;;::::1;::::0;;::::1;6112:29;::::0;;;;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;6112:29:88;::::1;::::0;::::1;::::0;;;;;;::::1;1823:1;;5534:612:::0;;:::o;10600:91::-;1771:5;;-1:-1:-1;;;;;1771:5:88;1747:12;:10;:12::i;:::-;-1:-1:-1;;;;;1747:30:88;;1779:37;;;;;;;;;;;;;-1:-1:-1;;;1779:37:88;;;1739:78;;;;;-1:-1:-1;;;1739:78:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10600:91;;:::o;1306:88:90:-;1382:7;1375:14;;;;;;;;-1:-1:-1;;1375:14:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1354:13;;1375:14;;1382:7;;1375:14;;1382:7;1375:14;;;;;;;;;;;;;;;;;;;;;;;;4815:318;4920:4;4934:177;4950:12;:10;:12::i;:::-;4970:7;4985:120;5033:15;4985:120;;;;;;;;;;;;;;;;;:11;:25;4997:12;:10;:12::i;:::-;-1:-1:-1;;;;;4985:25:90;;;;;;;;;;;;;;;;;-1:-1:-1;4985:25:90;;;:34;;;;;;;;;;;:120;:38;:120::i;2413:214::-;2499:4;2511:42;2521:12;:10;:12::i;:::-;2535:9;2546:6;2511:9;:42::i;:::-;2587:9;-1:-1:-1;;;;;2564:41:90;2573:12;:10;:12::i;:::-;-1:-1:-1;;;;;2564:41:90;-1:-1:-1;;;;;;;;;;;2598:6:90;2564:41;;;;;;;;;;;;;;;;;;-1:-1:-1;2618:4:90;2413:214;;;;:::o;8971:93:88:-;9050:9;;-1:-1:-1;;;;;9050:9:88;8971:93;:::o;9172:109::-;9260:16;;-1:-1:-1;;;;;9260:16:88;9172:109;:::o;8755:113::-;8822:7;8844:19;:17;:19::i;1466:42::-;;;;;;;;;;;;;:::o;11128:741::-;-1:-1:-1;;;;;11295:19:88;;11287:45;;;;;-1:-1:-1;;;11287:45:88;;;;;;;;;;;;-1:-1:-1;;;11287:45:88;;;;;;;;;;;;;;;11396:8;11377:15;:27;;11369:58;;;;;-1:-1:-1;;;11369:58:88;;;;;;;;;;;;-1:-1:-1;;;11369:58:88;;;;;;;;;;;;;;;-1:-1:-1;;;;;11461:14:88;;;11433:25;11461:14;;;:7;:14;;;;;;;;;11573:16;;11611:79;;1255:95;11611:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11601:90;;;;;;-1:-1:-1;;;11523:178:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11504:205;;;;;;;;;11732:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11504:205;;11732:26;;;;;;;11461:14;-1:-1:-1;;11732:26:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11723:35:88;:5;-1:-1:-1;;;;;11723:35:88;;11715:65;;;;;-1:-1:-1;;;11715:65:88;;;;;;;;;;;;-1:-1:-1;;;11715:65:88;;;;;;;;;;;;;;;11803:24;:17;11825:1;11803:21;:24::i;:::-;-1:-1:-1;;;;;11786:14:88;;;;;;:7;:14;;;;;:41;11833:31;11794:5;11849:7;11858:5;11833:8;:31::i;:::-;11128:741;;;;;;;;;:::o;4024:469::-;1771:5;;-1:-1:-1;;;;;1771:5:88;1747:12;:10;:12::i;:::-;-1:-1:-1;;;;;1747:30:88;;1779:37;;;;;;;;;;;;;-1:-1:-1;;;1779:37:88;;;1739:78;;;;;-1:-1:-1;;;1739:78:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4173:20:88::1;4196;:6:::0;4210:5;4196:13:::1;:20::i;:::-;4249:29;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;4249:29:88::1;::::0;::::1;::::0;4173:43;;-1:-1:-1;4230:17:88;4222:57:::1;;;::::0;-1:-1:-1;;;4222:57:88;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;4285:25;4291:4;4297:12;4285:5;:25::i;:::-;4324:16;::::0;4317:67:::1;::::0;-1:-1:-1;;;;;4324:16:88::1;4355:20:::0;4377:6;4317:37:::1;:67::i;:::-;4396:34;::::0;;;;;;;4419:1:::1;::::0;-1:-1:-1;;;;;4396:34:88;::::1;::::0;-1:-1:-1;;;;;;;;;;;4396:34:88;;;;::::1;::::0;;::::1;4452:20;-1:-1:-1::0;;;;;4441:47:88::1;4446:4;-1:-1:-1::0;;;;;4441:47:88::1;;4474:6;4482:5;4441:47;;;;;;;;;;;;;;;;;;;;;;;;1823:1;4024:469:::0;;;;:::o;2893:165:90:-;-1:-1:-1;;;;;3026:18:90;;;3002:7;3026:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2893:165::o;6484:332:88:-;1771:5;;-1:-1:-1;;;;;1771:5:88;1747:12;:10;:12::i;:::-;-1:-1:-1;;;;;1747:30:88;;1779:37;;;;;;;;;;;;;-1:-1:-1;;;1779:37:88;;;1739:78;;;;;-1:-1:-1;;;1739:78:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6741:33:::1;6751:4;6757:2;6761:5;6768;6741:9;:33::i;:::-;6801:2;-1:-1:-1::0;;;;;6786:25:88::1;6795:4;-1:-1:-1::0;;;;;6786:25:88::1;-1:-1:-1::0;;;;;;;;;;;6805:5:88::1;6786:25;;;;;;;;;;;;;;;;;;6484:332:::0;;;:::o;587:98:7:-;670:10;587:98;:::o;7232:338:90:-;-1:-1:-1;;;;;7345:19:90;;7337:68;;;;-1:-1:-1;;;7337:68:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7419:21:90;;7411:68;;;;-1:-1:-1;;;7411:68:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7486:18:90;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7533:32;;;;;;;;;;;;;;;;;7232:338;;;:::o;1749:119::-;-1:-1:-1;;;;;1845:18:90;1823:7;1845:18;;;:9;:18;;;;;;;1749:119::o;1594:100::-;1677:12;;1594:100;:::o;2416:279:86:-;2508:28;;;;;;;;;;;;-1:-1:-1;;;2508:28:86;;;;2477:7;;2500:6;2492:45;;;;-1:-1:-1;;;2492:45:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2619:35:86;;;;;;;;;2563:1;2619:35;;;-1:-1:-1;;;2619:35:86;;;;2559:5;;;432:4;2585:25;;2584:33;2579:38;;;2571:84;;;;-1:-1:-1;;;2571:84:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:1;2680:5;432:4;2670:1;:7;:15;2669:21;;;;;;;2416:279;-1:-1:-1;;;;2416:279:86:o;6072:556:90:-;-1:-1:-1;;;;;6151:21:90;;6143:65;;;;;-1:-1:-1;;;6143:65:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;6215:49;6244:1;6248:7;6257:6;6215:20;:49::i;:::-;6296:12;;6329:26;6296:12;6348:6;6329:18;:26::i;:::-;6314:12;:41;-1:-1:-1;;;;;6390:18:90;;6362:25;6390:18;;;:9;:18;;;;;;6435:29;6390:18;6457:6;6435:21;:29::i;:::-;-1:-1:-1;;;;;6414:18:90;;;;;;:9;:18;;;;;:50;;;;6483:26;:24;:26::i;:::-;-1:-1:-1;;;;;6475:49:90;;6471:153;;6534:26;:24;:26::i;:::-;-1:-1:-1;;;;;6534:39:90;;6574:7;6583:14;6599:17;6534:83;;;;;;;;;;;;;-1:-1:-1;;;;;6534:83:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6471:153;6072:556;;;;:::o;2008:253:86:-;2069:7;2088:6;;;:16;;-1:-1:-1;2098:6:86;;2088:16;2084:45;;;-1:-1:-1;2121:1:86;2114:8;;2084:45;2180:1;-1:-1:-1;;2180:1:86;2148:33;;;;;2143:1;:38;;2183:35;;;;;;;;;;;;;-1:-1:-1;;;2183:35:86;;;2135:84;;;;;-1:-1:-1;;;2135:84:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;432:4:86;2234:5;;476:7;2234:15;2233:23;;2008:253::o;314:85:62:-;391:3;314:85;:::o;1858:510:74:-;2328:9;2316:22;2356:7;1858:510;:::o;7574:76:90:-;7630:15;;;;:5;;:15;;;;;:::i;7654:84::-;7714:19;;;;:7;;:19;;;;;:::i;7742:84::-;7798:9;:23;;-1:-1:-1;;7798:23:90;;;;;;;;;;;;7742:84::o;13072:139:88:-;13173:33;13183:4;13189:2;13193:6;13201:4;13173:9;:33::i;1649:189:13:-;1751:7;1782:12;1774:6;;;;1766:29;;;;-1:-1:-1;;;1766:29:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1813:5:13;;;1649:189::o;851:162::-;909:7;936:5;;;955:6;;;;947:46;;;;;-1:-1:-1;;;947:46:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;1007:1;851:162;-1:-1:-1;;;851:162:13:o;716:184:12:-;836:58;;;-1:-1:-1;;;;;836:58:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;836:58:12;-1:-1:-1;;;836:58:12;;;810:85;;829:5;;810:18;:85::i;9548:134:88:-;9656:21;;-1:-1:-1;;;;;9656:21:88;9548:134;:::o;6632:596:90:-;-1:-1:-1;;;;;6711:21:90;;6703:67;;;;-1:-1:-1;;;6703:67:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6777:49;6798:7;6815:1;6819:6;6777:20;:49::i;:::-;6858:12;;6891:26;6858:12;6910:6;6891:18;:26::i;:::-;6876:12;:41;-1:-1:-1;;;;;6952:18:90;;6924:25;6952:18;;;:9;:18;;;;;;;;;;6997:67;;;;;;;;;;;;6952:18;;6997:67;;7019:6;;6997:67;;;;;;:17;;:67;:21;:67::i;12212:628:88:-;12349:16;;12391:5;;12419:48;;;-1:-1:-1;;;12419:48:88;;-1:-1:-1;;;;;12349:16:88;;;12419:48;;;;;;;;12349:16;;12391:5;;;;-1:-1:-1;;12391:5:88;;12419:31;;:48;;;;;;;;;;;;;;12391:5;12419:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12419:48:88;;-1:-1:-1;12474:25:88;12502:35;12419:48;12502:21;12518:4;12502:15;:21::i;:35::-;12474:63;;12543:23;12569:33;12596:5;12569:19;12585:2;12569:15;:19::i;:33::-;12543:59;-1:-1:-1;12609:47:88;12625:4;12631:2;12635:20;:6;12649:5;12635:13;:20::i;:::-;12609:15;:47::i;:::-;12667:8;12663:121;;;12685:92;;;-1:-1:-1;;;12685:92:88;;-1:-1:-1;;;;;12685:92:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;;;;:92;;;;;-1:-1:-1;;12685:92:88;;;;;;;;-1:-1:-1;12685:21:88;:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12663:121;12817:2;-1:-1:-1;;;;;12795:40:88;12811:4;-1:-1:-1;;;;;12795:40:88;;12821:6;12829:5;12795:40;;;;;;;;;;;;;;;;;;;;;;;;12212:628;;;;;;;;;:::o;1473:555:12:-;1556:27;1564:5;-1:-1:-1;;;;;1556:25:12;;:27::i;:::-;1548:71;;;;;-1:-1:-1;;;1548:71:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;1682:12;1696:23;1731:5;-1:-1:-1;;;;;1723:19:12;1743:4;1723:25;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1723:25:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1681:67;;;;1762:7;1754:52;;;;;-1:-1:-1;;;1754:52:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1817:17;;:21;1813:211;;1951:10;1940:30;;;;;;;;;;;;;;;-1:-1:-1;1940:30:12;1932:85;;;;-1:-1:-1;;;1932:85:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1257:128:13;1315:7;1337:43;1341:1;1344;1337:43;;;;;;;;;;;;;;;;;:3;:43::i;5137:931:90:-;-1:-1:-1;;;;;5254:20:90;;5246:70;;;;-1:-1:-1;;;5246:70:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5330:23:90;;5322:71;;;;-1:-1:-1;;;5322:71:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5400:47;5421:6;5429:9;5440:6;5400:20;:47::i;:::-;5454:24;5481:9;:17;5491:6;-1:-1:-1;;;;;5481:17:90;-1:-1:-1;;;;;5481:17:90;;;;;;;;;;;;;5454:44;;5524:70;5545:6;5524:70;;;;;;;;;;;;;;;;;:16;;:70;:20;:70::i;:::-;-1:-1:-1;;;;;5504:17:90;;;;;;;:9;:17;;;;;;:90;;;;5630:20;;;;;;;5679:32;5630:20;5704:6;5679:24;:32::i;:::-;-1:-1:-1;;;;;5656:20:90;;;;;;:9;:20;;;;;:55;;;;5730:26;:24;:26::i;:::-;-1:-1:-1;;;;;5722:49:90;;5718:346;;5810:12;;5830:26;:24;:26::i;:::-;-1:-1:-1;;;;;5830:39:90;;5870:6;5878:18;5898:16;5830:85;;;;;;;;;;;;;-1:-1:-1;;;;;5830:85:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5937:9;-1:-1:-1;;;;;5927:19:90;:6;-1:-1:-1;;;;;5927:19:90;;5923:135;;5958:26;:24;:26::i;:::-;-1:-1:-1;;;;;5958:39:90;;5998:9;6009:18;6029:19;5958:91;;;;;;;;;;;;;-1:-1:-1;;;;;5958:91:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5923:135;5718:346;;5137:931;;;;;:::o;686:586:6:-;746:4;1185:20;;1032:66;1224:23;;;;;;:42;;-1:-1:-1;1251:15:6;;;1224:42;1216:51;686:586;-1:-1:-1;;;;686:586:6:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;"
            },
            "methodIdentifiers": {
              "ATOKEN_REVISION()": "0bd7ad3b",
              "DOMAIN_SEPARATOR()": "3644e515",
              "EIP712_REVISION()": "78160376",
              "PERMIT_TYPEHASH()": "30adf81f",
              "POOL()": "7535d246",
              "RESERVE_TREASURY_ADDRESS()": "ae167335",
              "UNDERLYING_ASSET_ADDRESS()": "b16a19de",
              "_nonces(address)": "b9844d8d",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "burn(address,address,uint256,uint256)": "d7020d0a",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "getIncentivesController()": "75d26413",
              "getScaledUserBalanceAndSupply(address)": "0afbcdc9",
              "handleRepayment(address,uint256)": "88dd91a1",
              "increaseAllowance(address,uint256)": "39509351",
              "initialize(address,address,address,address,uint8,string,string,bytes)": "183fb413",
              "mint(address,uint256,uint256)": "156e29f6",
              "mintToTreasury(uint256,uint256)": "7df5bd3b",
              "name()": "06fdde03",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "scaledBalanceOf(address)": "1da24f3e",
              "scaledTotalSupply()": "b1bf962d",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOnLiquidation(address,address,uint256)": "f866c319",
              "transferUnderlyingTo(address,uint256)": "4efecaa5"
            }
          }
        }
      },
      "contracts/mocks/upgradeability/MockStableDebtToken.sol": {
        "MockStableDebtToken": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "fromUser",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "toUser",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "BorrowAllowanceDelegated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "currentBalance",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "balanceIncrease",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "avgStableRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newTotalSupply",
                  "type": "uint256"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "underlyingAsset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "incentivesController",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "debtTokenDecimals",
                  "type": "uint8"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "debtTokenName",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "debtTokenSymbol",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "currentBalance",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "balanceIncrease",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "avgStableRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newTotalSupply",
                  "type": "uint256"
                }
              ],
              "name": "Mint",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "DEBT_TOKEN_REVISION",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "POOL",
              "outputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "UNDERLYING_ASSET_ADDRESS",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approveDelegation",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "fromUser",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "toUser",
                  "type": "address"
                }
              ],
              "name": "borrowAllowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "burn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "subtractedValue",
                  "type": "uint256"
                }
              ],
              "name": "decreaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAverageStableRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getIncentivesController",
              "outputs": [
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getSupplyData",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint40",
                  "name": "",
                  "type": "uint40"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getTotalSupplyAndAvgRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getTotalSupplyLastUpdated",
              "outputs": [
                {
                  "internalType": "uint40",
                  "name": "",
                  "type": "uint40"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getUserLastUpdated",
              "outputs": [
                {
                  "internalType": "uint40",
                  "name": "",
                  "type": "uint40"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getUserStableRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "addedValue",
                  "type": "uint256"
                }
              ],
              "name": "increaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "underlyingAsset",
                  "type": "address"
                },
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "incentivesController",
                  "type": "address"
                },
                {
                  "internalType": "uint8",
                  "name": "debtTokenDecimals",
                  "type": "uint8"
                },
                {
                  "internalType": "string",
                  "name": "debtTokenName",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "debtTokenSymbol",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "rate",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "principalBalanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405260006006553480156200001657600080fd5b50604080518082018252600e8082526d111150951513d2d15397d253541360921b60208084018281528551808701909652928552840152815191929160009162000064916003919062000098565b5081516200007a90600490602085019062000098565b506005805460ff191660ff9290921691909117905550620001349050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000db57805160ff19168380011785556200010b565b828001600101855582156200010b579182015b828111156200010b578251825591602001919060010190620000ee565b50620001199291506200011d565b5090565b5b808211156200011957600081556001016200011e565b611d2080620001446000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806395d89b41116100f9578063c04a8a1011610097578063dd62ed3e11610071578063dd62ed3e146106ab578063e7484890146106d9578063e78c9b3b146106e1578063f731e9be14610707576101a9565b8063c04a8a10146104b0578063c222ec8a146104dc578063c634dfaa14610685576101a9565b8063a9059cbb116100d3578063a9059cbb14610438578063b16a19de14610464578063b3f1c93d1461046c578063b9a7b622146104a8576101a9565b806395d89b41146104025780639dc29fac1461040a578063a457c2d7146102d9576101a9565b80636bd76d241161016657806375d264131161014057806375d264131461037d578063797743381461038557806379ce6b8c146103ba57806390f6fcf2146103fa576101a9565b80636bd76d241461030557806370a08231146103335780637535d24614610359576101a9565b806306fdde03146101ae578063095ea7b31461022b57806318160ddd1461026b57806323b872dd14610285578063313ce567146102bb57806339509351146102d9575b600080fd5b6101b6610728565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f05781810151838201526020016101d8565b50505050905090810190601f16801561021d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102576004803603604081101561024157600080fd5b506001600160a01b0381351690602001356107be565b604080519115158252519081900360200190f35b610273610806565b60408051918252519081900360200190f35b6102576004803603606081101561029b57600080fd5b506001600160a01b03813581169160208101359091169060400135610818565b6102c3610860565b6040805160ff9092168252519081900360200190f35b610257600480360360408110156102ef57600080fd5b506001600160a01b038135169060200135610869565b6102736004803603604081101561031b57600080fd5b506001600160a01b03813581169160200135166108b8565b6102736004803603602081101561034957600080fd5b50356001600160a01b03166108e5565b61036161095f565b604080516001600160a01b039092168252519081900360200190f35b610361610977565b61038d610981565b6040805194855260208501939093528383019190915264ffffffffff166060830152519081900360800190f35b6103e0600480360360208110156103d057600080fd5b50356001600160a01b03166109b7565b6040805164ffffffffff9092168252519081900360200190f35b6102736109d9565b6101b66109df565b6104366004803603604081101561042057600080fd5b506001600160a01b038135169060200135610a40565b005b6102576004803603604081101561044e57600080fd5b506001600160a01b038135169060200135610818565b610361610da6565b6102576004803603608081101561048257600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610db5565b61027361110d565b610436600480360360408110156104c657600080fd5b506001600160a01b038135169060200135611112565b610436600480360360e08110156104f257600080fd5b6001600160a01b038235811692602081013582169260408201359092169160ff606083013516919081019060a08101608082013564010000000081111561053857600080fd5b82018360208201111561054a57600080fd5b8035906020019184600183028401116401000000008311171561056c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105bf57600080fd5b8201836020820111156105d157600080fd5b803590602001918460018302840111640100000000831117156105f357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561064657600080fd5b82018360208201111561065857600080fd5b8035906020019184600183028401116401000000008311171561067a57600080fd5b5090925090506111ae565b6102736004803603602081101561069b57600080fd5b50356001600160a01b0316611412565b610273600480360360408110156106c157600080fd5b506001600160a01b0381358116916020013516610869565b6103e061141d565b610273600480360360208110156106f757600080fd5b50356001600160a01b031661142a565b61070f611445565b6040805192835260208301919091528051918290030190f35b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b45780601f10610789576101008083540402835291602001916107b4565b820191906000526020600020905b81548152906001019060200180831161079757829003601f168201915b5050505050905090565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b6000610813603b5461145e565b905090565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60055460ff1690565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b038083166000908152603a60209081526040808320938516835292905220545b92915050565b6000806108f1836114a6565b6001600160a01b0384166000908152603d60205260409020549091508161091d5760009250505061095a565b6001600160a01b0384166000908152603c602052604081205461094890839064ffffffffff166114c1565b905061095483826114d5565b93505050505b919050565b603e546501000000000090046001600160a01b031690565b6000610813611593565b6000806000806000603b5490506109966115a2565b61099f8261145e565b603e54919790965091945064ffffffffff1692509050565b6001600160a01b03166000908152603c602052604090205464ffffffffff1690565b603b5490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b45780601f10610789576101008083540402835291602001916107b4565b610a4861095f565b6001600160a01b0316610a596115a8565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610b075760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610acc578181015183820152602001610ab4565b50505050905090810190601f168015610af95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600080610b14846115ac565b92509250506000610b23610806565b6001600160a01b0386166000908152603d6020526040812054919250908190868411610b58576000603b819055600255610bda565b610b628488611605565b600281905591506000610b80610b7786611647565b603b54906114d5565b90506000610b97610b908a611647565b84906114d5565b9050818110610bb35760006002819055603b8190559450610bd7565b610bcf610bbf85611647565b610bc98484611605565b906116c5565b603b81905594505b50505b85871415610c18576001600160a01b0388166000908152603d60209081526040808320839055603c9091529020805464ffffffffff19169055610c46565b6001600160a01b0388166000908152603c60205260409020805464ffffffffff19164264ffffffffff161790555b603e805464ffffffffff19164264ffffffffff1617905586851115610ce6576000610c718689611605565b9050610c7e8982876117cc565b6040805182815260208101899052808201889052606081018490526080810186905260a0810185905290516001600160a01b038b169182917fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f9181900360c00190a350610d5b565b6000610cf28887611605565b9050610cff898287611891565b6040805182815260208101899052808201889052606081018690526080810185905290516001600160a01b038b16917f44bd20a79e993bdcc7cbedf54a3b4d19fb78490124b6b90d04fe3242eea579e8919081900360a00190a2505b6040805188815290516000916001600160a01b038b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050505050505050565b603f546001600160a01b031690565b6000610dbf61095f565b6001600160a01b0316610dd06115a8565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610e415760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b50610e4a611bd9565b846001600160a01b0316866001600160a01b031614610e6e57610e6e8587866118d3565b600080610e7a876115ac565b9250925050610e87610806565b808452603b546080850152610e9c908761199b565b60028190556020840152610eaf86611647565b6040840152610f0d610ec9610ec4848961199b565b611647565b6040850151610bc990610edc90896114d5565b610f07610ee887611647565b6001600160a01b038d166000908152603d6020526040902054906114d5565b9061199b565b60608401819052604080518082019091526002815261373960f01b6020820152906fffffffffffffffffffffffffffffffff1015610f8c5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5060608301516001600160a01b0388166000908152603d6020908152604080832093909355603c8152919020805464ffffffffff421664ffffffffff199182168117909255603e8054909116909117905583015161102290610fed90611647565b610bc96110078660400151896114d590919063ffffffff16565b610f076110178860000151611647565b6080890151906114d5565b603b81905560808401526110418761103a888461199b565b85516117cc565b6040805187815290516001600160a01b038916916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3866001600160a01b0316886001600160a01b03167fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f888585886060015189608001518a6020015160405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a350159695505050505050565b600181565b80603a600061111f6115a8565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120919091556111576115a8565b6001600160a01b03167fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1611189610da6565b604080516001600160a01b039092168252602082018690528051918290030190a35050565b60006111b86119f5565b60075490915060ff16806111cf57506111cf6119fa565b806111db575060065481115b6112165760405162461bcd60e51b815260040180806020018281038252602e815260200180611cbd602e913960400191505060405180910390fd5b60075460ff16158015611236576007805460ff1916600117905560068290555b61123f86611a00565b61124885611a17565b61125187611a2a565b603e805465010000000000600160c81b031916650100000000006001600160a01b038d811691820292909217909255603f80546001600160a01b03199081168d841690811790925560408054909116928c169283178155805192835260ff8b1660208085019190915260a09184018281528b51928501929092528a5192937f40251fbfb6656cfa65a00d7879029fec1fad21d28fdcff2f4f68f52795b74f2c938e938e938e938e938e938e9390916060840191608085019160c08601918a019080838360005b8381101561132f578181015183820152602001611317565b50505050905090810190601f16801561135c5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b8381101561138f578181015183820152602001611377565b50505050905090810190601f1680156113bc5780820380516001836020036101000a031916815260200191505b508481038252858152602001868680828437600083820152604051601f909101601f19169092018290039b50909950505050505050505050a38015611406576007805460ff191690555b50505050505050505050565b60006108df826114a6565b603e5464ffffffffff1690565b6001600160a01b03166000908152603d602052604090205490565b603b5460009081906114568161145e565b925090509091565b6000806114696115a2565b90508061147a57600091505061095a565b603e5460009061149290859064ffffffffff166114c1565b905061149e82826114d5565b949350505050565b6001600160a01b031660009081526020819052604090205490565b60006114ce838342611a40565b9392505050565b60008215806114e2575081155b156114ef575060006108df565b816b019d971e4fe8401e74000000198161150557fe5b0483111560405180604001604052806002815260200161068760f31b815250906115705760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b6040546001600160a01b031690565b60025490565b3390565b6000806000806115bb856114a6565b9050806115d3576000806000935093509350506115fe565b60006115e8826115e2886108e5565b90611605565b9050816115f5818361199b565b90955093509150505b9193909250565b60006114ce83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b16565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b815250906116be5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5092915050565b604080518082019091526002815261035360f41b60208201526000908261172d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156117a95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5082816b033b2e3c9fd0803ce8000000860201816117c357fe5b04949350505050565b6001600160a01b0383166000908152602081905260409020546117ef818461199b565b6001600160a01b0380861660009081526020819052604090819020929092559054161561188b576040805481516318c39f1760e11b81526001600160a01b0387811660048301526024820186905260448201859052925192909116916331873e2e9160648082019260009290919082900301818387803b15801561187257600080fd5b505af1158015611886573d6000803e3d6000fd5b505050505b50505050565b6001600160a01b038316600090815260208181526040918290205482518084019093526002835261038360f41b91830191909152906117ef9082908590611b16565b6040805180820182526002815261353960f01b6020808301919091526001600160a01b038087166000908152603a8352848120918716815291529182205461191c918490611b16565b6001600160a01b038086166000818152603a60209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1611974610da6565b604080516001600160a01b039092168252602082018690528051918290030190a350505050565b6000828201838110156114ce576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600290565b303b1590565b8051611a13906003906020840190611c08565b5050565b8051611a13906004906020840190611c08565b6005805460ff191660ff92909216919091179055565b600080611a548364ffffffffff8616611605565b905080611a6b57611a63611b70565b9150506114ce565b6000198101600060028311611a81576000611a86565b600283035b90506301e1338087046000611a9b82806114d5565b90506000611aa982846114d5565b905060006002611ac384611abd8a8a611b80565b90611b80565b81611aca57fe5b04905060006006611ae184611abd89818d8d611b80565b81611ae857fe5b049050611b0681610f078481611afe8a8e611b80565b610f07611b70565b9c9b505050505050505050505050565b60008184841115611b685760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b505050900390565b6b033b2e3c9fd0803ce800000090565b600082611b8f575060006108df565b82820282848281611b9c57fe5b04146114ce5760405162461bcd60e51b8152600401808060200182810382526021815260200180611c9c6021913960400191505060405180910390fd5b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c4957805160ff1916838001178555611c76565b82800160010185558215611c76579182015b82811115611c76578251825591602001919060010190611c5b565b50611c82929150611c86565b5090565b5b80821115611c825760008155600101611c8756fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a2646970667358221220f58efde2015ae792a7e8c9d719bc8ceb47c863c746355f1310a025ca581fa77f64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0x6 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP1 DUP3 MSTORE PUSH14 0x111150951513D2D15397D2535413 PUSH1 0x92 SHL PUSH1 0x20 DUP1 DUP5 ADD DUP3 DUP2 MSTORE DUP6 MLOAD DUP1 DUP8 ADD SWAP1 SWAP7 MSTORE SWAP3 DUP6 MSTORE DUP5 ADD MSTORE DUP2 MLOAD SWAP2 SWAP3 SWAP2 PUSH1 0x0 SWAP2 PUSH3 0x64 SWAP2 PUSH1 0x3 SWAP2 SWAP1 PUSH3 0x98 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0x7A SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x98 JUMP JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0x134 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0xDB JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x10B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x10B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x10B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xEE JUMP JUMPDEST POP PUSH3 0x119 SWAP3 SWAP2 POP PUSH3 0x11D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x119 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x11E JUMP JUMPDEST PUSH2 0x1D20 DUP1 PUSH3 0x144 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1A9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x95D89B41 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xC04A8A10 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x6AB JUMPI DUP1 PUSH4 0xE7484890 EQ PUSH2 0x6D9 JUMPI DUP1 PUSH4 0xE78C9B3B EQ PUSH2 0x6E1 JUMPI DUP1 PUSH4 0xF731E9BE EQ PUSH2 0x707 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0xC04A8A10 EQ PUSH2 0x4B0 JUMPI DUP1 PUSH4 0xC222EC8A EQ PUSH2 0x4DC JUMPI DUP1 PUSH4 0xC634DFAA EQ PUSH2 0x685 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0xA9059CBB GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x438 JUMPI DUP1 PUSH4 0xB16A19DE EQ PUSH2 0x464 JUMPI DUP1 PUSH4 0xB3F1C93D EQ PUSH2 0x46C JUMPI DUP1 PUSH4 0xB9A7B622 EQ PUSH2 0x4A8 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x402 JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x40A JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x2D9 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x6BD76D24 GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x75D26413 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x75D26413 EQ PUSH2 0x37D JUMPI DUP1 PUSH4 0x79774338 EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0x79CE6B8C EQ PUSH2 0x3BA JUMPI DUP1 PUSH4 0x90F6FCF2 EQ PUSH2 0x3FA JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x6BD76D24 EQ PUSH2 0x305 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x333 JUMPI DUP1 PUSH4 0x7535D246 EQ PUSH2 0x359 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x26B JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2D9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B6 PUSH2 0x728 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1D8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x21D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x241 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7BE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x273 PUSH2 0x806 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x818 JUMP JUMPDEST PUSH2 0x2C3 PUSH2 0x860 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x869 JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x31B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x8B8 JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x349 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8E5 JUMP JUMPDEST PUSH2 0x361 PUSH2 0x95F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x361 PUSH2 0x977 JUMP JUMPDEST PUSH2 0x38D PUSH2 0x981 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH5 0xFFFFFFFFFF AND PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9B7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH5 0xFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x273 PUSH2 0x9D9 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x9DF JUMP JUMPDEST PUSH2 0x436 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA40 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x44E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x818 JUMP JUMPDEST PUSH2 0x361 PUSH2 0xDA6 JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0xDB5 JUMP JUMPDEST PUSH2 0x273 PUSH2 0x110D JUMP JUMPDEST PUSH2 0x436 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1112 JUMP JUMPDEST PUSH2 0x436 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x4F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 PUSH1 0xFF PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x538 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x54A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x56C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x658 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x67A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x11AE JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x69B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1412 JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x869 JUMP JUMPDEST PUSH2 0x3E0 PUSH2 0x141D JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x142A JUMP JUMPDEST PUSH2 0x70F PUSH2 0x1445 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7B4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x789 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7B4 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x797 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1054141493D5905317D393D517D4D5541413D4951151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x813 PUSH1 0x3B SLOAD PUSH2 0x145E JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1514905394D1915497D393D517D4D5541413D4951151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x414C4C4F57414E43455F4E4F545F535550504F52544544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8F1 DUP4 PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 PUSH2 0x91D JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x95A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x948 SWAP1 DUP4 SWAP1 PUSH5 0xFFFFFFFFFF AND PUSH2 0x14C1 JUMP JUMPDEST SWAP1 POP PUSH2 0x954 DUP4 DUP3 PUSH2 0x14D5 JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH6 0x10000000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x813 PUSH2 0x1593 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x3B SLOAD SWAP1 POP PUSH2 0x996 PUSH2 0x15A2 JUMP JUMPDEST PUSH2 0x99F DUP3 PUSH2 0x145E JUMP JUMPDEST PUSH1 0x3E SLOAD SWAP2 SWAP8 SWAP1 SWAP7 POP SWAP2 SWAP5 POP PUSH5 0xFFFFFFFFFF AND SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH5 0xFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x3B SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7B4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x789 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7B4 JUMP JUMPDEST PUSH2 0xA48 PUSH2 0x95F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA59 PUSH2 0x15A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xB07 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xAF9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 PUSH2 0xB14 DUP5 PUSH2 0x15AC JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH1 0x0 PUSH2 0xB23 PUSH2 0x806 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 DUP2 SWAP1 DUP7 DUP5 GT PUSH2 0xB58 JUMPI PUSH1 0x0 PUSH1 0x3B DUP2 SWAP1 SSTORE PUSH1 0x2 SSTORE PUSH2 0xBDA JUMP JUMPDEST PUSH2 0xB62 DUP5 DUP9 PUSH2 0x1605 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE SWAP2 POP PUSH1 0x0 PUSH2 0xB80 PUSH2 0xB77 DUP7 PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x3B SLOAD SWAP1 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB97 PUSH2 0xB90 DUP11 PUSH2 0x1647 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT PUSH2 0xBB3 JUMPI PUSH1 0x0 PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x3B DUP2 SWAP1 SSTORE SWAP5 POP PUSH2 0xBD7 JUMP JUMPDEST PUSH2 0xBCF PUSH2 0xBBF DUP6 PUSH2 0x1647 JUMP JUMPDEST PUSH2 0xBC9 DUP5 DUP5 PUSH2 0x1605 JUMP JUMPDEST SWAP1 PUSH2 0x16C5 JUMP JUMPDEST PUSH1 0x3B DUP2 SWAP1 SSTORE SWAP5 POP JUMPDEST POP POP JUMPDEST DUP6 DUP8 EQ ISZERO PUSH2 0xC18 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE PUSH1 0x3C SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0xFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH2 0xC46 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0xFFFFFFFFFF NOT AND TIMESTAMP PUSH5 0xFFFFFFFFFF AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x3E DUP1 SLOAD PUSH5 0xFFFFFFFFFF NOT AND TIMESTAMP PUSH5 0xFFFFFFFFFF AND OR SWAP1 SSTORE DUP7 DUP6 GT ISZERO PUSH2 0xCE6 JUMPI PUSH1 0x0 PUSH2 0xC71 DUP7 DUP10 PUSH2 0x1605 JUMP JUMPDEST SWAP1 POP PUSH2 0xC7E DUP10 DUP3 DUP8 PUSH2 0x17CC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP10 SWAP1 MSTORE DUP1 DUP3 ADD DUP9 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 DUP3 SWAP2 PUSH32 0xC16F4E4CA34D790DE4C656C72FD015C667D688F20BE64EEA360618545C4C530F SWAP2 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 LOG3 POP PUSH2 0xD5B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCF2 DUP9 DUP8 PUSH2 0x1605 JUMP JUMPDEST SWAP1 POP PUSH2 0xCFF DUP10 DUP3 DUP8 PUSH2 0x1891 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP10 SWAP1 MSTORE DUP1 DUP3 ADD DUP9 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 PUSH32 0x44BD20A79E993BDCC7CBEDF54A3B4D19FB78490124B6B90D04FE3242EEA579E8 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3F SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDBF PUSH2 0x95F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDD0 PUSH2 0x15A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xE41 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP PUSH2 0xE4A PUSH2 0x1BD9 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xE6E JUMPI PUSH2 0xE6E DUP6 DUP8 DUP7 PUSH2 0x18D3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xE7A DUP8 PUSH2 0x15AC JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0xE87 PUSH2 0x806 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x3B SLOAD PUSH1 0x80 DUP6 ADD MSTORE PUSH2 0xE9C SWAP1 DUP8 PUSH2 0x199B JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xEAF DUP7 PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0xF0D PUSH2 0xEC9 PUSH2 0xEC4 DUP5 DUP10 PUSH2 0x199B JUMP JUMPDEST PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD PUSH2 0xBC9 SWAP1 PUSH2 0xEDC SWAP1 DUP10 PUSH2 0x14D5 JUMP JUMPDEST PUSH2 0xF07 PUSH2 0xEE8 DUP8 PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 PUSH2 0x199B JUMP JUMPDEST PUSH1 0x60 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3739 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF LT ISZERO PUSH2 0xF8C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x3C DUP2 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0xFFFFFFFFFF TIMESTAMP AND PUSH5 0xFFFFFFFFFF NOT SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x3E DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SWAP2 OR SWAP1 SSTORE DUP4 ADD MLOAD PUSH2 0x1022 SWAP1 PUSH2 0xFED SWAP1 PUSH2 0x1647 JUMP JUMPDEST PUSH2 0xBC9 PUSH2 0x1007 DUP7 PUSH1 0x40 ADD MLOAD DUP10 PUSH2 0x14D5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0xF07 PUSH2 0x1017 DUP9 PUSH1 0x0 ADD MLOAD PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x80 DUP10 ADD MLOAD SWAP1 PUSH2 0x14D5 JUMP JUMPDEST PUSH1 0x3B DUP2 SWAP1 SSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x1041 DUP8 PUSH2 0x103A DUP9 DUP5 PUSH2 0x199B JUMP JUMPDEST DUP6 MLOAD PUSH2 0x17CC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC16F4E4CA34D790DE4C656C72FD015C667D688F20BE64EEA360618545C4C530F DUP9 DUP6 DUP6 DUP9 PUSH1 0x60 ADD MLOAD DUP10 PUSH1 0x80 ADD MLOAD DUP11 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP ISZERO SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST DUP1 PUSH1 0x3A PUSH1 0x0 PUSH2 0x111F PUSH2 0x15A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1157 PUSH2 0x15A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDA919360433220E13B51E8C211E490D148E61A3BD53DE8C097194E458B97F3E1 PUSH2 0x1189 PUSH2 0xDA6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11B8 PUSH2 0x19F5 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 PUSH2 0x11CF JUMPI POP PUSH2 0x11CF PUSH2 0x19FA JUMP JUMPDEST DUP1 PUSH2 0x11DB JUMPI POP PUSH1 0x6 SLOAD DUP2 GT JUMPDEST PUSH2 0x1216 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1CBD PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x1236 JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x6 DUP3 SWAP1 SSTORE JUMPDEST PUSH2 0x123F DUP7 PUSH2 0x1A00 JUMP JUMPDEST PUSH2 0x1248 DUP6 PUSH2 0x1A17 JUMP JUMPDEST PUSH2 0x1251 DUP8 PUSH2 0x1A2A JUMP JUMPDEST PUSH1 0x3E DUP1 SLOAD PUSH6 0x10000000000 PUSH1 0x1 PUSH1 0xC8 SHL SUB NOT AND PUSH6 0x10000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x3F DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND DUP14 DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 SLOAD SWAP1 SWAP2 AND SWAP3 DUP13 AND SWAP3 DUP4 OR DUP2 SSTORE DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0xFF DUP12 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 SWAP2 DUP5 ADD DUP3 DUP2 MSTORE DUP12 MLOAD SWAP3 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP11 MLOAD SWAP3 SWAP4 PUSH32 0x40251FBFB6656CFA65A00D7879029FEC1FAD21D28FDCFF2F4F68F52795B74F2C SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 SWAP1 SWAP2 PUSH1 0x60 DUP5 ADD SWAP2 PUSH1 0x80 DUP6 ADD SWAP2 PUSH1 0xC0 DUP7 ADD SWAP2 DUP11 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x132F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1317 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x135C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP5 DUP2 SUB DUP4 MSTORE DUP8 MLOAD DUP2 MSTORE DUP8 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP10 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x138F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1377 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13BC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP7 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP12 POP SWAP1 SWAP10 POP POP POP POP POP POP POP POP POP POP LOG3 DUP1 ISZERO PUSH2 0x1406 JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8DF DUP3 PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH5 0xFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH2 0x1456 DUP2 PUSH2 0x145E JUMP JUMPDEST SWAP3 POP SWAP1 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1469 PUSH2 0x15A2 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x147A JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x95A JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1492 SWAP1 DUP6 SWAP1 PUSH5 0xFFFFFFFFFF AND PUSH2 0x14C1 JUMP JUMPDEST SWAP1 POP PUSH2 0x149E DUP3 DUP3 PUSH2 0x14D5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CE DUP4 DUP4 TIMESTAMP PUSH2 0x1A40 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x14E2 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x14EF JUMPI POP PUSH1 0x0 PUSH2 0x8DF JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x1505 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1570 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP POP PUSH12 0x33B2E3C9FD0803CE8000000 SWAP2 MUL PUSH12 0x19D971E4FE8401E74000000 ADD DIV SWAP1 JUMP JUMPDEST PUSH1 0x40 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x15BB DUP6 PUSH2 0x14A6 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x15D3 JUMPI PUSH1 0x0 DUP1 PUSH1 0x0 SWAP4 POP SWAP4 POP SWAP4 POP POP PUSH2 0x15FE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15E8 DUP3 PUSH2 0x15E2 DUP9 PUSH2 0x8E5 JUMP JUMPDEST SWAP1 PUSH2 0x1605 JUMP JUMPDEST SWAP1 POP DUP2 PUSH2 0x15F5 DUP2 DUP4 PUSH2 0x199B JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP SWAP2 POP POP JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CE DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1B16 JUMP JUMPDEST PUSH1 0x0 PUSH4 0x3B9ACA00 DUP3 DUP2 MUL SWAP1 DUP4 SWAP1 DUP3 DIV EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x16BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x172D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x17A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x17C3 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x17EF DUP2 DUP5 PUSH2 0x199B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE SWAP1 SLOAD AND ISZERO PUSH2 0x188B JUMPI PUSH1 0x40 DUP1 SLOAD DUP2 MLOAD PUSH4 0x18C39F17 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP3 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH4 0x31873E2E SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1872 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1886 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x2 DUP4 MSTORE PUSH2 0x383 PUSH1 0xF4 SHL SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 PUSH2 0x17EF SWAP1 DUP3 SWAP1 DUP6 SWAP1 PUSH2 0x1B16 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3539 PUSH1 0xF0 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A DUP4 MSTORE DUP5 DUP2 KECCAK256 SWAP2 DUP8 AND DUP2 MSTORE SWAP2 MSTORE SWAP2 DUP3 KECCAK256 SLOAD PUSH2 0x191C SWAP2 DUP5 SWAP1 PUSH2 0x1B16 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP10 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP4 SWAP1 SSTORE SWAP2 SWAP3 POP SWAP1 PUSH32 0xDA919360433220E13B51E8C211E490D148E61A3BD53DE8C097194E458B97F3E1 PUSH2 0x1974 PUSH2 0xDA6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x14CE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SWAP1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1A13 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1C08 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1A13 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1C08 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1A54 DUP4 PUSH5 0xFFFFFFFFFF DUP7 AND PUSH2 0x1605 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1A6B JUMPI PUSH2 0x1A63 PUSH2 0x1B70 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x14CE JUMP JUMPDEST PUSH1 0x0 NOT DUP2 ADD PUSH1 0x0 PUSH1 0x2 DUP4 GT PUSH2 0x1A81 JUMPI PUSH1 0x0 PUSH2 0x1A86 JUMP JUMPDEST PUSH1 0x2 DUP4 SUB JUMPDEST SWAP1 POP PUSH4 0x1E13380 DUP8 DIV PUSH1 0x0 PUSH2 0x1A9B DUP3 DUP1 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1AA9 DUP3 DUP5 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x2 PUSH2 0x1AC3 DUP5 PUSH2 0x1ABD DUP11 DUP11 PUSH2 0x1B80 JUMP JUMPDEST SWAP1 PUSH2 0x1B80 JUMP JUMPDEST DUP2 PUSH2 0x1ACA JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x6 PUSH2 0x1AE1 DUP5 PUSH2 0x1ABD DUP10 DUP2 DUP14 DUP14 PUSH2 0x1B80 JUMP JUMPDEST DUP2 PUSH2 0x1AE8 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x1B06 DUP2 PUSH2 0xF07 DUP5 DUP2 PUSH2 0x1AFE DUP11 DUP15 PUSH2 0x1B80 JUMP JUMPDEST PUSH2 0xF07 PUSH2 0x1B70 JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1B68 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1B8F JUMPI POP PUSH1 0x0 PUSH2 0x8DF JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1B9C JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x14CE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1C9C PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x1C49 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x1C76 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x1C76 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1C76 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1C5B JUMP JUMPDEST POP PUSH2 0x1C82 SWAP3 SWAP2 POP PUSH2 0x1C86 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1C82 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1C87 JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77436F6E747261637420 PUSH10 0x6E7374616E6365206861 PUSH20 0x20616C7265616479206265656E20696E69746961 PUSH13 0x697A6564A26469706673582212 KECCAK256 CREATE2 DUP15 REVERT 0xE2 ADD GAS 0xE7 SWAP3 0xA7 0xE8 0xC9 0xD7 NOT 0xBC DUP13 0xEB SELFBALANCE 0xC8 PUSH4 0xC746355F SGT LT LOG0 0x25 0xCA PC 0x1F 0xA7 PUSH32 0x64736F6C634300060C0033000000000000000000000000000000000000000000 ",
              "sourceMap": "144:139:63:-:0;;;926:1:74;884:43;;144:139:63;;;;;;;;;-1:-1:-1;952:164:90;;;;;;;;;;;;-1:-1:-1;;;952:164:90;;;;;;;;;;;;;;;;;;;;;1051:12;;952:164;;;-1:-1:-1;;1051:12:90;;:5;;952:164;1051:12;:::i;:::-;-1:-1:-1;1069:16:90;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;1091:9:90;:20;;-1:-1:-1;;1091:20:90;;;;;;;;;;;;-1:-1:-1;144:139:63;;-1:-1:-1;144:139:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;144:139:63;;;-1:-1:-1;144:139:63;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101a95760003560e01c806395d89b41116100f9578063c04a8a1011610097578063dd62ed3e11610071578063dd62ed3e146106ab578063e7484890146106d9578063e78c9b3b146106e1578063f731e9be14610707576101a9565b8063c04a8a10146104b0578063c222ec8a146104dc578063c634dfaa14610685576101a9565b8063a9059cbb116100d3578063a9059cbb14610438578063b16a19de14610464578063b3f1c93d1461046c578063b9a7b622146104a8576101a9565b806395d89b41146104025780639dc29fac1461040a578063a457c2d7146102d9576101a9565b80636bd76d241161016657806375d264131161014057806375d264131461037d578063797743381461038557806379ce6b8c146103ba57806390f6fcf2146103fa576101a9565b80636bd76d241461030557806370a08231146103335780637535d24614610359576101a9565b806306fdde03146101ae578063095ea7b31461022b57806318160ddd1461026b57806323b872dd14610285578063313ce567146102bb57806339509351146102d9575b600080fd5b6101b6610728565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f05781810151838201526020016101d8565b50505050905090810190601f16801561021d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102576004803603604081101561024157600080fd5b506001600160a01b0381351690602001356107be565b604080519115158252519081900360200190f35b610273610806565b60408051918252519081900360200190f35b6102576004803603606081101561029b57600080fd5b506001600160a01b03813581169160208101359091169060400135610818565b6102c3610860565b6040805160ff9092168252519081900360200190f35b610257600480360360408110156102ef57600080fd5b506001600160a01b038135169060200135610869565b6102736004803603604081101561031b57600080fd5b506001600160a01b03813581169160200135166108b8565b6102736004803603602081101561034957600080fd5b50356001600160a01b03166108e5565b61036161095f565b604080516001600160a01b039092168252519081900360200190f35b610361610977565b61038d610981565b6040805194855260208501939093528383019190915264ffffffffff166060830152519081900360800190f35b6103e0600480360360208110156103d057600080fd5b50356001600160a01b03166109b7565b6040805164ffffffffff9092168252519081900360200190f35b6102736109d9565b6101b66109df565b6104366004803603604081101561042057600080fd5b506001600160a01b038135169060200135610a40565b005b6102576004803603604081101561044e57600080fd5b506001600160a01b038135169060200135610818565b610361610da6565b6102576004803603608081101561048257600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610db5565b61027361110d565b610436600480360360408110156104c657600080fd5b506001600160a01b038135169060200135611112565b610436600480360360e08110156104f257600080fd5b6001600160a01b038235811692602081013582169260408201359092169160ff606083013516919081019060a08101608082013564010000000081111561053857600080fd5b82018360208201111561054a57600080fd5b8035906020019184600183028401116401000000008311171561056c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105bf57600080fd5b8201836020820111156105d157600080fd5b803590602001918460018302840111640100000000831117156105f357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561064657600080fd5b82018360208201111561065857600080fd5b8035906020019184600183028401116401000000008311171561067a57600080fd5b5090925090506111ae565b6102736004803603602081101561069b57600080fd5b50356001600160a01b0316611412565b610273600480360360408110156106c157600080fd5b506001600160a01b0381358116916020013516610869565b6103e061141d565b610273600480360360208110156106f757600080fd5b50356001600160a01b031661142a565b61070f611445565b6040805192835260208301919091528051918290030190f35b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b45780601f10610789576101008083540402835291602001916107b4565b820191906000526020600020905b81548152906001019060200180831161079757829003601f168201915b5050505050905090565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b6000610813603b5461145e565b905090565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60055460ff1690565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b038083166000908152603a60209081526040808320938516835292905220545b92915050565b6000806108f1836114a6565b6001600160a01b0384166000908152603d60205260409020549091508161091d5760009250505061095a565b6001600160a01b0384166000908152603c602052604081205461094890839064ffffffffff166114c1565b905061095483826114d5565b93505050505b919050565b603e546501000000000090046001600160a01b031690565b6000610813611593565b6000806000806000603b5490506109966115a2565b61099f8261145e565b603e54919790965091945064ffffffffff1692509050565b6001600160a01b03166000908152603c602052604090205464ffffffffff1690565b603b5490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b45780601f10610789576101008083540402835291602001916107b4565b610a4861095f565b6001600160a01b0316610a596115a8565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610b075760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610acc578181015183820152602001610ab4565b50505050905090810190601f168015610af95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600080610b14846115ac565b92509250506000610b23610806565b6001600160a01b0386166000908152603d6020526040812054919250908190868411610b58576000603b819055600255610bda565b610b628488611605565b600281905591506000610b80610b7786611647565b603b54906114d5565b90506000610b97610b908a611647565b84906114d5565b9050818110610bb35760006002819055603b8190559450610bd7565b610bcf610bbf85611647565b610bc98484611605565b906116c5565b603b81905594505b50505b85871415610c18576001600160a01b0388166000908152603d60209081526040808320839055603c9091529020805464ffffffffff19169055610c46565b6001600160a01b0388166000908152603c60205260409020805464ffffffffff19164264ffffffffff161790555b603e805464ffffffffff19164264ffffffffff1617905586851115610ce6576000610c718689611605565b9050610c7e8982876117cc565b6040805182815260208101899052808201889052606081018490526080810186905260a0810185905290516001600160a01b038b169182917fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f9181900360c00190a350610d5b565b6000610cf28887611605565b9050610cff898287611891565b6040805182815260208101899052808201889052606081018690526080810185905290516001600160a01b038b16917f44bd20a79e993bdcc7cbedf54a3b4d19fb78490124b6b90d04fe3242eea579e8919081900360a00190a2505b6040805188815290516000916001600160a01b038b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050505050505050565b603f546001600160a01b031690565b6000610dbf61095f565b6001600160a01b0316610dd06115a8565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610e415760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b50610e4a611bd9565b846001600160a01b0316866001600160a01b031614610e6e57610e6e8587866118d3565b600080610e7a876115ac565b9250925050610e87610806565b808452603b546080850152610e9c908761199b565b60028190556020840152610eaf86611647565b6040840152610f0d610ec9610ec4848961199b565b611647565b6040850151610bc990610edc90896114d5565b610f07610ee887611647565b6001600160a01b038d166000908152603d6020526040902054906114d5565b9061199b565b60608401819052604080518082019091526002815261373960f01b6020820152906fffffffffffffffffffffffffffffffff1015610f8c5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5060608301516001600160a01b0388166000908152603d6020908152604080832093909355603c8152919020805464ffffffffff421664ffffffffff199182168117909255603e8054909116909117905583015161102290610fed90611647565b610bc96110078660400151896114d590919063ffffffff16565b610f076110178860000151611647565b6080890151906114d5565b603b81905560808401526110418761103a888461199b565b85516117cc565b6040805187815290516001600160a01b038916916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3866001600160a01b0316886001600160a01b03167fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f888585886060015189608001518a6020015160405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a350159695505050505050565b600181565b80603a600061111f6115a8565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120919091556111576115a8565b6001600160a01b03167fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1611189610da6565b604080516001600160a01b039092168252602082018690528051918290030190a35050565b60006111b86119f5565b60075490915060ff16806111cf57506111cf6119fa565b806111db575060065481115b6112165760405162461bcd60e51b815260040180806020018281038252602e815260200180611cbd602e913960400191505060405180910390fd5b60075460ff16158015611236576007805460ff1916600117905560068290555b61123f86611a00565b61124885611a17565b61125187611a2a565b603e805465010000000000600160c81b031916650100000000006001600160a01b038d811691820292909217909255603f80546001600160a01b03199081168d841690811790925560408054909116928c169283178155805192835260ff8b1660208085019190915260a09184018281528b51928501929092528a5192937f40251fbfb6656cfa65a00d7879029fec1fad21d28fdcff2f4f68f52795b74f2c938e938e938e938e938e938e9390916060840191608085019160c08601918a019080838360005b8381101561132f578181015183820152602001611317565b50505050905090810190601f16801561135c5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b8381101561138f578181015183820152602001611377565b50505050905090810190601f1680156113bc5780820380516001836020036101000a031916815260200191505b508481038252858152602001868680828437600083820152604051601f909101601f19169092018290039b50909950505050505050505050a38015611406576007805460ff191690555b50505050505050505050565b60006108df826114a6565b603e5464ffffffffff1690565b6001600160a01b03166000908152603d602052604090205490565b603b5460009081906114568161145e565b925090509091565b6000806114696115a2565b90508061147a57600091505061095a565b603e5460009061149290859064ffffffffff166114c1565b905061149e82826114d5565b949350505050565b6001600160a01b031660009081526020819052604090205490565b60006114ce838342611a40565b9392505050565b60008215806114e2575081155b156114ef575060006108df565b816b019d971e4fe8401e74000000198161150557fe5b0483111560405180604001604052806002815260200161068760f31b815250906115705760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b6040546001600160a01b031690565b60025490565b3390565b6000806000806115bb856114a6565b9050806115d3576000806000935093509350506115fe565b60006115e8826115e2886108e5565b90611605565b9050816115f5818361199b565b90955093509150505b9193909250565b60006114ce83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b16565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b815250906116be5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5092915050565b604080518082019091526002815261035360f41b60208201526000908261172d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156117a95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5082816b033b2e3c9fd0803ce8000000860201816117c357fe5b04949350505050565b6001600160a01b0383166000908152602081905260409020546117ef818461199b565b6001600160a01b0380861660009081526020819052604090819020929092559054161561188b576040805481516318c39f1760e11b81526001600160a01b0387811660048301526024820186905260448201859052925192909116916331873e2e9160648082019260009290919082900301818387803b15801561187257600080fd5b505af1158015611886573d6000803e3d6000fd5b505050505b50505050565b6001600160a01b038316600090815260208181526040918290205482518084019093526002835261038360f41b91830191909152906117ef9082908590611b16565b6040805180820182526002815261353960f01b6020808301919091526001600160a01b038087166000908152603a8352848120918716815291529182205461191c918490611b16565b6001600160a01b038086166000818152603a60209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1611974610da6565b604080516001600160a01b039092168252602082018690528051918290030190a350505050565b6000828201838110156114ce576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600290565b303b1590565b8051611a13906003906020840190611c08565b5050565b8051611a13906004906020840190611c08565b6005805460ff191660ff92909216919091179055565b600080611a548364ffffffffff8616611605565b905080611a6b57611a63611b70565b9150506114ce565b6000198101600060028311611a81576000611a86565b600283035b90506301e1338087046000611a9b82806114d5565b90506000611aa982846114d5565b905060006002611ac384611abd8a8a611b80565b90611b80565b81611aca57fe5b04905060006006611ae184611abd89818d8d611b80565b81611ae857fe5b049050611b0681610f078481611afe8a8e611b80565b610f07611b70565b9c9b505050505050505050505050565b60008184841115611b685760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b505050900390565b6b033b2e3c9fd0803ce800000090565b600082611b8f575060006108df565b82820282848281611b9c57fe5b04146114ce5760405162461bcd60e51b8152600401808060200182810382526021815260200180611c9c6021913960400191505060405180910390fd5b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c4957805160ff1916838001178555611c76565b82800160010185558215611c76579182015b82811115611c76578251825591602001919060010190611c5b565b50611c82929150611c86565b5090565b5b80821115611c825760008155600101611c8756fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a2646970667358221220f58efde2015ae792a7e8c9d719bc8ceb47c863c746355f1310a025ca581fa77f64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1A9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x95D89B41 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xC04A8A10 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x6AB JUMPI DUP1 PUSH4 0xE7484890 EQ PUSH2 0x6D9 JUMPI DUP1 PUSH4 0xE78C9B3B EQ PUSH2 0x6E1 JUMPI DUP1 PUSH4 0xF731E9BE EQ PUSH2 0x707 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0xC04A8A10 EQ PUSH2 0x4B0 JUMPI DUP1 PUSH4 0xC222EC8A EQ PUSH2 0x4DC JUMPI DUP1 PUSH4 0xC634DFAA EQ PUSH2 0x685 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0xA9059CBB GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x438 JUMPI DUP1 PUSH4 0xB16A19DE EQ PUSH2 0x464 JUMPI DUP1 PUSH4 0xB3F1C93D EQ PUSH2 0x46C JUMPI DUP1 PUSH4 0xB9A7B622 EQ PUSH2 0x4A8 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x402 JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x40A JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x2D9 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x6BD76D24 GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x75D26413 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x75D26413 EQ PUSH2 0x37D JUMPI DUP1 PUSH4 0x79774338 EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0x79CE6B8C EQ PUSH2 0x3BA JUMPI DUP1 PUSH4 0x90F6FCF2 EQ PUSH2 0x3FA JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x6BD76D24 EQ PUSH2 0x305 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x333 JUMPI DUP1 PUSH4 0x7535D246 EQ PUSH2 0x359 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x26B JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2D9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B6 PUSH2 0x728 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1D8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x21D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x241 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7BE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x273 PUSH2 0x806 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x818 JUMP JUMPDEST PUSH2 0x2C3 PUSH2 0x860 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x869 JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x31B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x8B8 JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x349 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8E5 JUMP JUMPDEST PUSH2 0x361 PUSH2 0x95F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x361 PUSH2 0x977 JUMP JUMPDEST PUSH2 0x38D PUSH2 0x981 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH5 0xFFFFFFFFFF AND PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9B7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH5 0xFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x273 PUSH2 0x9D9 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x9DF JUMP JUMPDEST PUSH2 0x436 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA40 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x44E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x818 JUMP JUMPDEST PUSH2 0x361 PUSH2 0xDA6 JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0xDB5 JUMP JUMPDEST PUSH2 0x273 PUSH2 0x110D JUMP JUMPDEST PUSH2 0x436 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1112 JUMP JUMPDEST PUSH2 0x436 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x4F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 PUSH1 0xFF PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x538 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x54A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x56C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x658 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x67A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x11AE JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x69B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1412 JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x869 JUMP JUMPDEST PUSH2 0x3E0 PUSH2 0x141D JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x142A JUMP JUMPDEST PUSH2 0x70F PUSH2 0x1445 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7B4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x789 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7B4 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x797 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1054141493D5905317D393D517D4D5541413D4951151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x813 PUSH1 0x3B SLOAD PUSH2 0x145E JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1514905394D1915497D393D517D4D5541413D4951151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x414C4C4F57414E43455F4E4F545F535550504F52544544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8F1 DUP4 PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 PUSH2 0x91D JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x95A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x948 SWAP1 DUP4 SWAP1 PUSH5 0xFFFFFFFFFF AND PUSH2 0x14C1 JUMP JUMPDEST SWAP1 POP PUSH2 0x954 DUP4 DUP3 PUSH2 0x14D5 JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH6 0x10000000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x813 PUSH2 0x1593 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x3B SLOAD SWAP1 POP PUSH2 0x996 PUSH2 0x15A2 JUMP JUMPDEST PUSH2 0x99F DUP3 PUSH2 0x145E JUMP JUMPDEST PUSH1 0x3E SLOAD SWAP2 SWAP8 SWAP1 SWAP7 POP SWAP2 SWAP5 POP PUSH5 0xFFFFFFFFFF AND SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH5 0xFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x3B SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7B4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x789 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7B4 JUMP JUMPDEST PUSH2 0xA48 PUSH2 0x95F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA59 PUSH2 0x15A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xB07 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xAF9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 PUSH2 0xB14 DUP5 PUSH2 0x15AC JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH1 0x0 PUSH2 0xB23 PUSH2 0x806 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 DUP2 SWAP1 DUP7 DUP5 GT PUSH2 0xB58 JUMPI PUSH1 0x0 PUSH1 0x3B DUP2 SWAP1 SSTORE PUSH1 0x2 SSTORE PUSH2 0xBDA JUMP JUMPDEST PUSH2 0xB62 DUP5 DUP9 PUSH2 0x1605 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE SWAP2 POP PUSH1 0x0 PUSH2 0xB80 PUSH2 0xB77 DUP7 PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x3B SLOAD SWAP1 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB97 PUSH2 0xB90 DUP11 PUSH2 0x1647 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT PUSH2 0xBB3 JUMPI PUSH1 0x0 PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x3B DUP2 SWAP1 SSTORE SWAP5 POP PUSH2 0xBD7 JUMP JUMPDEST PUSH2 0xBCF PUSH2 0xBBF DUP6 PUSH2 0x1647 JUMP JUMPDEST PUSH2 0xBC9 DUP5 DUP5 PUSH2 0x1605 JUMP JUMPDEST SWAP1 PUSH2 0x16C5 JUMP JUMPDEST PUSH1 0x3B DUP2 SWAP1 SSTORE SWAP5 POP JUMPDEST POP POP JUMPDEST DUP6 DUP8 EQ ISZERO PUSH2 0xC18 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE PUSH1 0x3C SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0xFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH2 0xC46 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0xFFFFFFFFFF NOT AND TIMESTAMP PUSH5 0xFFFFFFFFFF AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x3E DUP1 SLOAD PUSH5 0xFFFFFFFFFF NOT AND TIMESTAMP PUSH5 0xFFFFFFFFFF AND OR SWAP1 SSTORE DUP7 DUP6 GT ISZERO PUSH2 0xCE6 JUMPI PUSH1 0x0 PUSH2 0xC71 DUP7 DUP10 PUSH2 0x1605 JUMP JUMPDEST SWAP1 POP PUSH2 0xC7E DUP10 DUP3 DUP8 PUSH2 0x17CC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP10 SWAP1 MSTORE DUP1 DUP3 ADD DUP9 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 DUP3 SWAP2 PUSH32 0xC16F4E4CA34D790DE4C656C72FD015C667D688F20BE64EEA360618545C4C530F SWAP2 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 LOG3 POP PUSH2 0xD5B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCF2 DUP9 DUP8 PUSH2 0x1605 JUMP JUMPDEST SWAP1 POP PUSH2 0xCFF DUP10 DUP3 DUP8 PUSH2 0x1891 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP10 SWAP1 MSTORE DUP1 DUP3 ADD DUP9 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 PUSH32 0x44BD20A79E993BDCC7CBEDF54A3B4D19FB78490124B6B90D04FE3242EEA579E8 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3F SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDBF PUSH2 0x95F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDD0 PUSH2 0x15A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xE41 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP PUSH2 0xE4A PUSH2 0x1BD9 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xE6E JUMPI PUSH2 0xE6E DUP6 DUP8 DUP7 PUSH2 0x18D3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xE7A DUP8 PUSH2 0x15AC JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0xE87 PUSH2 0x806 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x3B SLOAD PUSH1 0x80 DUP6 ADD MSTORE PUSH2 0xE9C SWAP1 DUP8 PUSH2 0x199B JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xEAF DUP7 PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0xF0D PUSH2 0xEC9 PUSH2 0xEC4 DUP5 DUP10 PUSH2 0x199B JUMP JUMPDEST PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD PUSH2 0xBC9 SWAP1 PUSH2 0xEDC SWAP1 DUP10 PUSH2 0x14D5 JUMP JUMPDEST PUSH2 0xF07 PUSH2 0xEE8 DUP8 PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 PUSH2 0x199B JUMP JUMPDEST PUSH1 0x60 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3739 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF LT ISZERO PUSH2 0xF8C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x3C DUP2 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0xFFFFFFFFFF TIMESTAMP AND PUSH5 0xFFFFFFFFFF NOT SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x3E DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SWAP2 OR SWAP1 SSTORE DUP4 ADD MLOAD PUSH2 0x1022 SWAP1 PUSH2 0xFED SWAP1 PUSH2 0x1647 JUMP JUMPDEST PUSH2 0xBC9 PUSH2 0x1007 DUP7 PUSH1 0x40 ADD MLOAD DUP10 PUSH2 0x14D5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0xF07 PUSH2 0x1017 DUP9 PUSH1 0x0 ADD MLOAD PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x80 DUP10 ADD MLOAD SWAP1 PUSH2 0x14D5 JUMP JUMPDEST PUSH1 0x3B DUP2 SWAP1 SSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x1041 DUP8 PUSH2 0x103A DUP9 DUP5 PUSH2 0x199B JUMP JUMPDEST DUP6 MLOAD PUSH2 0x17CC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC16F4E4CA34D790DE4C656C72FD015C667D688F20BE64EEA360618545C4C530F DUP9 DUP6 DUP6 DUP9 PUSH1 0x60 ADD MLOAD DUP10 PUSH1 0x80 ADD MLOAD DUP11 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP ISZERO SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST DUP1 PUSH1 0x3A PUSH1 0x0 PUSH2 0x111F PUSH2 0x15A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1157 PUSH2 0x15A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDA919360433220E13B51E8C211E490D148E61A3BD53DE8C097194E458B97F3E1 PUSH2 0x1189 PUSH2 0xDA6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11B8 PUSH2 0x19F5 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 PUSH2 0x11CF JUMPI POP PUSH2 0x11CF PUSH2 0x19FA JUMP JUMPDEST DUP1 PUSH2 0x11DB JUMPI POP PUSH1 0x6 SLOAD DUP2 GT JUMPDEST PUSH2 0x1216 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1CBD PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x1236 JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x6 DUP3 SWAP1 SSTORE JUMPDEST PUSH2 0x123F DUP7 PUSH2 0x1A00 JUMP JUMPDEST PUSH2 0x1248 DUP6 PUSH2 0x1A17 JUMP JUMPDEST PUSH2 0x1251 DUP8 PUSH2 0x1A2A JUMP JUMPDEST PUSH1 0x3E DUP1 SLOAD PUSH6 0x10000000000 PUSH1 0x1 PUSH1 0xC8 SHL SUB NOT AND PUSH6 0x10000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x3F DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND DUP14 DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 SLOAD SWAP1 SWAP2 AND SWAP3 DUP13 AND SWAP3 DUP4 OR DUP2 SSTORE DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0xFF DUP12 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 SWAP2 DUP5 ADD DUP3 DUP2 MSTORE DUP12 MLOAD SWAP3 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP11 MLOAD SWAP3 SWAP4 PUSH32 0x40251FBFB6656CFA65A00D7879029FEC1FAD21D28FDCFF2F4F68F52795B74F2C SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 SWAP1 SWAP2 PUSH1 0x60 DUP5 ADD SWAP2 PUSH1 0x80 DUP6 ADD SWAP2 PUSH1 0xC0 DUP7 ADD SWAP2 DUP11 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x132F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1317 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x135C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP5 DUP2 SUB DUP4 MSTORE DUP8 MLOAD DUP2 MSTORE DUP8 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP10 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x138F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1377 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13BC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP7 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP12 POP SWAP1 SWAP10 POP POP POP POP POP POP POP POP POP POP LOG3 DUP1 ISZERO PUSH2 0x1406 JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8DF DUP3 PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH5 0xFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH2 0x1456 DUP2 PUSH2 0x145E JUMP JUMPDEST SWAP3 POP SWAP1 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1469 PUSH2 0x15A2 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x147A JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x95A JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1492 SWAP1 DUP6 SWAP1 PUSH5 0xFFFFFFFFFF AND PUSH2 0x14C1 JUMP JUMPDEST SWAP1 POP PUSH2 0x149E DUP3 DUP3 PUSH2 0x14D5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CE DUP4 DUP4 TIMESTAMP PUSH2 0x1A40 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x14E2 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x14EF JUMPI POP PUSH1 0x0 PUSH2 0x8DF JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x1505 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1570 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP POP PUSH12 0x33B2E3C9FD0803CE8000000 SWAP2 MUL PUSH12 0x19D971E4FE8401E74000000 ADD DIV SWAP1 JUMP JUMPDEST PUSH1 0x40 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x15BB DUP6 PUSH2 0x14A6 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x15D3 JUMPI PUSH1 0x0 DUP1 PUSH1 0x0 SWAP4 POP SWAP4 POP SWAP4 POP POP PUSH2 0x15FE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15E8 DUP3 PUSH2 0x15E2 DUP9 PUSH2 0x8E5 JUMP JUMPDEST SWAP1 PUSH2 0x1605 JUMP JUMPDEST SWAP1 POP DUP2 PUSH2 0x15F5 DUP2 DUP4 PUSH2 0x199B JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP SWAP2 POP POP JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CE DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1B16 JUMP JUMPDEST PUSH1 0x0 PUSH4 0x3B9ACA00 DUP3 DUP2 MUL SWAP1 DUP4 SWAP1 DUP3 DIV EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x16BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x172D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x17A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x17C3 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x17EF DUP2 DUP5 PUSH2 0x199B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE SWAP1 SLOAD AND ISZERO PUSH2 0x188B JUMPI PUSH1 0x40 DUP1 SLOAD DUP2 MLOAD PUSH4 0x18C39F17 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP3 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH4 0x31873E2E SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1872 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1886 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x2 DUP4 MSTORE PUSH2 0x383 PUSH1 0xF4 SHL SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 PUSH2 0x17EF SWAP1 DUP3 SWAP1 DUP6 SWAP1 PUSH2 0x1B16 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3539 PUSH1 0xF0 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A DUP4 MSTORE DUP5 DUP2 KECCAK256 SWAP2 DUP8 AND DUP2 MSTORE SWAP2 MSTORE SWAP2 DUP3 KECCAK256 SLOAD PUSH2 0x191C SWAP2 DUP5 SWAP1 PUSH2 0x1B16 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP10 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP4 SWAP1 SSTORE SWAP2 SWAP3 POP SWAP1 PUSH32 0xDA919360433220E13B51E8C211E490D148E61A3BD53DE8C097194E458B97F3E1 PUSH2 0x1974 PUSH2 0xDA6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x14CE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SWAP1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1A13 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1C08 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1A13 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1C08 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1A54 DUP4 PUSH5 0xFFFFFFFFFF DUP7 AND PUSH2 0x1605 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1A6B JUMPI PUSH2 0x1A63 PUSH2 0x1B70 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x14CE JUMP JUMPDEST PUSH1 0x0 NOT DUP2 ADD PUSH1 0x0 PUSH1 0x2 DUP4 GT PUSH2 0x1A81 JUMPI PUSH1 0x0 PUSH2 0x1A86 JUMP JUMPDEST PUSH1 0x2 DUP4 SUB JUMPDEST SWAP1 POP PUSH4 0x1E13380 DUP8 DIV PUSH1 0x0 PUSH2 0x1A9B DUP3 DUP1 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1AA9 DUP3 DUP5 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x2 PUSH2 0x1AC3 DUP5 PUSH2 0x1ABD DUP11 DUP11 PUSH2 0x1B80 JUMP JUMPDEST SWAP1 PUSH2 0x1B80 JUMP JUMPDEST DUP2 PUSH2 0x1ACA JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x6 PUSH2 0x1AE1 DUP5 PUSH2 0x1ABD DUP10 DUP2 DUP14 DUP14 PUSH2 0x1B80 JUMP JUMPDEST DUP2 PUSH2 0x1AE8 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x1B06 DUP2 PUSH2 0xF07 DUP5 DUP2 PUSH2 0x1AFE DUP11 DUP15 PUSH2 0x1B80 JUMP JUMPDEST PUSH2 0xF07 PUSH2 0x1B70 JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1B68 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1B8F JUMPI POP PUSH1 0x0 PUSH2 0x8DF JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1B9C JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x14CE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1C9C PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x1C49 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x1C76 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x1C76 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1C76 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1C5B JUMP JUMPDEST POP PUSH2 0x1C82 SWAP3 SWAP2 POP PUSH2 0x1C86 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1C82 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1C87 JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77436F6E747261637420 PUSH10 0x6E7374616E6365206861 PUSH20 0x20616C7265616479206265656E20696E69746961 PUSH13 0x697A6564A26469706673582212 KECCAK256 CREATE2 DUP15 REVERT 0xE2 ADD GAS 0xE7 SWAP3 0xA7 0xE8 0xC9 0xD7 NOT 0xBC DUP13 0xEB SELFBALANCE 0xC8 PUSH4 0xC746355F SGT LT LOG0 0x25 0xCA PC 0x1F 0xA7 PUSH32 0x64736F6C634300060C0033000000000000000000000000000000000000000000 ",
              "sourceMap": "144:139:63:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1168:84:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2539:157:95;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2539:157:95;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;10230:112:91;;;:::i;:::-;;;;;;;;;;;;;;;;2700:210:95;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2700:210:95;;;;;;;;;;;;;;;;;:::i;1450:84:90:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2914:194:95;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2914:194:95;;;;;;;;:::i;1855:171::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1855:171:95;;;;;;;;;;:::i;3457:412:91:-;;;;;;;;;;;;;;;;-1:-1:-1;3457:412:91;-1:-1:-1;;;;;3457:412:91;;:::i;11163:74::-;;;:::i;:::-;;;;-1:-1:-1;;;;;11163:74:91;;;;;;;;;;;;;;11322:138;;;:::i;9644:274::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2947:125;;;;;;;;;;;;;;;;-1:-1:-1;2947:125:91;-1:-1:-1;;;;;2947:125:91;;:::i;:::-;;;;;;;;;;;;;;;;;;;2722:113;;;:::i;1306:88:90:-;;;:::i;6403:2285:91:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6403:2285:91;;;;;;;;:::i;:::-;;2181:162:95;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2181:162:95;;;;;;;;:::i;10970:100:91:-;;;:::i;4589:1641::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4589:1641:91;;;;;;;;;;;;;;;;;;;;;;:::i;776:49::-;;;:::i;1403:240:95:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1403:240:95;;;;;;;;:::i;1662:686:91:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1662:686:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1662:686:91;;;;;;;;-1:-1:-1;1662:686:91;;-1:-1:-1;;1662:686:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1662:686:91;;;;;;;;-1:-1:-1;1662:686:91;;-1:-1:-1;;1662:686:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1662:686:91;;-1:-1:-1;1662:686:91;-1:-1:-1;1662:686:91;:::i;10732:130::-;;;;;;;;;;;;;;;;-1:-1:-1;10732:130:91;-1:-1:-1;;;;;10732:130:91;;:::i;2347:188:95:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2347:188:95;;;;;;;;;;:::i;10429:114:91:-;;;:::i;3213:130::-;;;;;;;;;;;;;;;;-1:-1:-1;3213:130:91;-1:-1:-1;;;;;3213:130:91;;:::i;10002:176::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1168:84:90;1242:5;1235:12;;;;;;;;-1:-1:-1;;1235:12:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1214:13;;1235:12;;1242:5;;1235:12;;1242:5;1235:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1168:84;:::o;2539:157:95:-;2659:32;;;-1:-1:-1;;;2659:32:95;;;;;;;;;;;;-1:-1:-1;;;2659:32:95;;;;;;2622:4;;2659:32;;;;;;;10230:112:91;10283:7;10305:32;10322:14;;10305:16;:32::i;:::-;10298:39;;10230:112;:::o;2700:210:95:-;2873:32;;;-1:-1:-1;;;2873:32:95;;;;;;;;;;;;-1:-1:-1;;;2873:32:95;;;;;;2822:4;;2873:32;;;;;;;1450:84:90;1520:9;;;;1450:84;:::o;2914:194:95:-;3070:33;;;-1:-1:-1;;;3070:33:95;;;;;;;;;;;;;;;;;;;3027:4;;3070:33;;;;;;;1855:171;-1:-1:-1;;;;;1986:27:95;;;1962:7;1986:27;;;:17;:27;;;;;;;;:35;;;;;;;;;;1855:171;;;;;:::o;3457:412:91:-;3531:7;3546:22;3571:24;3587:7;3571:15;:24::i;:::-;-1:-1:-1;;;;;3622:25:91;;3601:18;3622:25;;;:16;:25;;;;;;3546:49;;-1:-1:-1;3657:19:91;3653:48;;3693:1;3686:8;;;;;;3653:48;-1:-1:-1;;;;;3790:20:91;;3706:25;3790:20;;;:11;:20;;;;;;3740:71;;3778:10;;3790:20;;3740:37;:71::i;:::-;3706:105;-1:-1:-1;3824:40:91;:14;3706:105;3824:21;:40::i;:::-;3817:47;;;;;3457:412;;;;:::o;11163:74::-;11227:5;;;;;-1:-1:-1;;;;;11227:5:91;;11163:74::o;11322:138::-;11389:25;11429:26;:24;:26::i;9644:274::-;9722:7;9737;9752;9767:6;9788:15;9806:14;;9788:32;;9834:19;:17;:19::i;:::-;9855:25;9872:7;9855:16;:25::i;:::-;9891:21;;9826:87;;;;-1:-1:-1;9882:7:91;;-1:-1:-1;9891:21:91;;;-1:-1:-1;9644:274:91;-1:-1:-1;9644:274:91:o;2947:125::-;-1:-1:-1;;;;;3050:17:91;3029:6;3050:17;;;:11;:17;;;;;;;;;2947:125::o;2722:113::-;2816:14;;2722:113;:::o;1306:88:90:-;1382:7;1375:14;;;;;;;;-1:-1:-1;;1375:14:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1354:13;;1375:14;;1382:7;;1375:14;;1382:7;1375:14;;;;;;;;;;;;;;;;;;;;;;;;6403:2285:91;971:17:95;:15;:17::i;:::-;-1:-1:-1;;;;;947:42:95;:12;:10;:12::i;:::-;-1:-1:-1;;;;;947:42:95;;991:37;;;;;;;;;;;;;-1:-1:-1;;;991:37:95;;;939:90;;;;;-1:-1:-1;;;939:90:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6490:22:91::1;6514:23:::0;6541:31:::1;6567:4;6541:25;:31::i;:::-;6487:85;;;;;6579:22;6604:13;:11;:13::i;:::-;-1:-1:-1::0;;;;;6710:22:91;::::1;6623:24;6710:22:::0;;;:16:::1;:22;::::0;;;;;6579:38;;-1:-1:-1;6623:24:91;;;7046;;::::1;7042:745;;7097:1;7080:14;:18:::0;;;7106:12:::1;:16:::0;7042:745:::1;;;7171:26;:14:::0;7190:6;7171:18:::1;:26::i;:::-;7156:12;:41;;;7143:54;;7205:17;7225:48;7247:25;:14;:23;:25::i;:::-;7225:14;::::0;;:21:::1;:48::i;:::-;7205:68;;7281:18;7302:40;7324:17;:6;:15;:17::i;:::-;7302:14:::0;;:21:::1;:40::i;:::-;7281:61;;7583:9;7569:10;:23;7565:216;;7655:1;7640:12;:16;;;7623:14;:33;;;7604:52;;7565:216;;;7717:55;7750:21;:10;:19;:21::i;:::-;7717:25;:9:::0;7731:10;7717:13:::1;:25::i;:::-;:32:::0;::::1;:55::i;:::-;7700:14;:72;;;7681:91;;7565:216;7042:745;;;7807:14;7797:6;:24;7793:197;;;-1:-1:-1::0;;;;;7831:22:91;::::1;7856:1;7831:22:::0;;;:16:::1;:22;::::0;;;;;;;:26;;;7865:11:::1;:17:::0;;;;;:21;;-1:-1:-1;;7865:21:91::1;::::0;;7793:197:::1;;;-1:-1:-1::0;;;;;7940:17:91;::::1;;::::0;;;:11:::1;:17;::::0;;;;:43;;-1:-1:-1;;7940:43:91::1;7967:15;7940:43;;;::::0;;7793:197:::1;8026:21;:47:::0;;-1:-1:-1;;8026:47:91::1;8057:15;8026:47;;;::::0;;8084:24;;::::1;8080:558;;;8118:20;8141:27;:15:::0;8161:6;8141:19:::1;:27::i;:::-;8118:50;;8176:41;8182:4;8188:12;8202:14;8176:5;:41::i;:::-;8230:181;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8230:181:91;::::1;::::0;;;::::1;::::0;;;;;;;::::1;8080:558;;;;8432:20;8455:27;:6:::0;8466:15;8455:10:::1;:27::i;:::-;8432:50;;8490:41;8496:4;8502:12;8516:14;8490:5;:41::i;:::-;8544:87;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8544:87:91;::::1;::::0;::::1;::::0;;;;;;;;::::1;8080:558;;8649:34;::::0;;;;;;;8672:1:::1;::::0;-1:-1:-1;;;;;8649:34:91;::::1;::::0;::::1;::::0;;;;::::1;::::0;;::::1;1035:1:95;;;;;;6403:2285:91::0;;:::o;10970:100::-;11049:16;;-1:-1:-1;;;;;11049:16:91;10970:100;:::o;4589:1641::-;4730:4;971:17:95;:15;:17::i;:::-;-1:-1:-1;;;;;947:42:95;:12;:10;:12::i;:::-;-1:-1:-1;;;;;947:42:95;;991:37;;;;;;;;;;;;;-1:-1:-1;;;991:37:95;;;939:90;;;;;-1:-1:-1;;;939:90:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4742:25:91::1;;:::i;:::-;4786:10;-1:-1:-1::0;;;;;4778:18:91::1;:4;-1:-1:-1::0;;;;;4778:18:91::1;;4774:89;;4806:50;4831:10;4843:4;4849:6;4806:24;:50::i;:::-;4872:22;4896:23:::0;4923:37:::1;4949:10;4923:25;:37::i;:::-;4869:91;;;;;4989:13;:11;:13::i;:::-;4967:35:::0;;;5036:14:::1;::::0;5008:25:::1;::::0;::::1;:42:::0;5089:31:::1;::::0;5113:6;5089:23:::1;:31::i;:::-;5074:12;:46:::0;;;5056:15:::1;::::0;::::1;:64:::0;5146:17:::1;:6:::0;:15:::1;:17::i;:::-;5127:16;::::0;::::1;:36:::0;5191:164:::1;5317:37;:26;:14:::0;5336:6;5317:18:::1;:26::i;:::-;:35;:37::i;:::-;5272:16;::::0;::::1;::::0;5191:111:::1;::::0;5272:29:::1;::::0;5296:4;5272:23:::1;:29::i;:::-;5191:69;5234:25;:14;:23;:25::i;:::-;-1:-1:-1::0;;;;;5191:28:91;::::1;;::::0;;;:16:::1;:28;::::0;;;;;;:42:::1;:69::i;:::-;:80:::0;::::1;:111::i;:164::-;5170:18;::::0;::::1;:185:::0;;;5411:31:::1;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;5411:31:91;::::1;::::0;;5392:17:::1;-1:-1:-1::0;5370:39:91::1;5362:81;;;::::0;-1:-1:-1;;;5362:81:91;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;-1:-1:-1::0;5480:18:91::1;::::0;::::1;::::0;-1:-1:-1;;;;;5449:28:91;::::1;;::::0;;;:16:::1;:28;::::0;;;;;;;:49;;;;5560:11:::1;:23:::0;;;;;:49;;::::1;5593:15;5560:49;-1:-1:-1::0;;5560:49:91;;::::1;::::0;::::1;::::0;;;5536:21:::1;:73:::0;;;;::::1;::::0;;::::1;::::0;;5846:15;::::1;::::0;5711:162:::1;::::0;5846:26:::1;::::0;:24:::1;:26::i;:::-;5711:120;5801:29;5813:4;:16;;;5801:4;:11;;:29;;;;:::i;:::-;5711:78;5758:30;:4;:19;;;:28;:30::i;:::-;5711:32;::::0;::::1;::::0;;:46:::1;:78::i;:162::-;5694:14;:179:::0;;;5666:25:::1;::::0;::::1;:207:::0;5880:67:::1;5886:10:::0;5898:27:::1;:6:::0;5909:15;5898:10:::1;:27::i;:::-;5927:19:::0;;5880:5:::1;:67::i;:::-;5959:40;::::0;;;;;;;-1:-1:-1;;;;;5959:40:91;::::1;::::0;5976:1:::1;::::0;5959:40:::1;::::0;;;;::::1;::::0;;::::1;6035:10;-1:-1:-1::0;;;;;6011:181:91::1;6023:4;-1:-1:-1::0;;;;;6011:181:91::1;;6053:6;6067:14;6089:15;6112:4;:18;;;6138:4;:25;;;6171:4;:15;;;6011:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;6206:19:91;;4589:1641;-1:-1:-1;;;;;;4589:1641:91:o;776:49::-;822:3;776:49;:::o;1403:240:95:-;1534:6;1489:17;:31;1507:12;:10;:12::i;:::-;-1:-1:-1;;;;;1489:31:95;;;;;;;;;;;;;;;;;-1:-1:-1;1489:31:95;;;:42;;;;;;;;;;;;:51;;;;1576:12;:10;:12::i;:::-;-1:-1:-1;;;;;1551:87:95;;1601:28;:26;:28::i;:::-;1551:87;;;-1:-1:-1;;;;;1551:87:95;;;;;;;;;;;;;;;;;;;;1403:240;;:::o;1662:686:91:-;1162:16:74;1181:13;:11;:13::i;:::-;1215:12;;1162:32;;-1:-1:-1;1215:12:74;;;:31;;;1231:15;:13;:15::i;:::-;1215:69;;;;1261:23;;1250:8;:34;1215:69;1200:146;;;;-1:-1:-1;;;1200:146:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1376:12;;;;1375:13;1394:96;;;;1422:12;:19;;-1:-1:-1;;1422:19:74;1437:4;1422:19;;;1449:23;:34;;;1394:96;1948:23:91::1;1957:13;1948:8;:23::i;:::-;1977:27;1988:15;1977:10;:27::i;:::-;2010:31;2023:17;2010:12;:31::i;:::-;2048:5;:12:::0;;-1:-1:-1;;;;;;2048:12:91::1;::::0;-1:-1:-1;;;;;2048:12:91;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;2066:16:::1;:34:::0;;-1:-1:-1;;;;;;2066:34:91;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;2106:21:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;2162:181;;;;;::::1;::::0;::::1;;::::0;;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;2066:34;;2162:181:::1;::::0;2106:44;;2162:181;;;;2308:15;;2331:6;;;;2162:181;;;;;;;;;;;;;;;::::1;::::0;;;;-1:-1:-1;2162:181:91::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;2162:181:91;;::::1;::::0;;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;::::1;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;2162:181:91;;::::1;::::0;;;;;::::1;;::::0;;;;;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;2162:181:91::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;2162:181:91;;-1:-1:-1;;;;;;;;;;2162:181:91::1;1508:14:74::0;1504:55;;;1532:12;:20;;-1:-1:-1;;1532:20:74;;;1504:55;1662:686:91;;;;;;;;;;:::o;10732:130::-;10814:7;10836:21;10852:4;10836:15;:21::i;10429:114::-;10517:21;;;;10429:114;:::o;3213:130::-;-1:-1:-1;;;;;3316:22:91;3294:7;3316:22;;;:16;:22;;;;;;;3213:130::o;10002:176::-;10110:14;;10068:7;;;;10138:25;10110:14;10138:16;:25::i;:::-;10130:43;-1:-1:-1;10165:7:91;-1:-1:-1;10002:176:91;;:::o;12254:359::-;12328:7;12343:23;12369:19;:17;:19::i;:::-;12343:45;-1:-1:-1;12399:20:91;12395:49;;12436:1;12429:8;;;;;12395:49;12531:21;;12450:25;;12484:69;;12522:7;;12531:21;;12484:37;:69::i;:::-;12450:103;-1:-1:-1;12567:41:91;:15;12450:103;12567:22;:41::i;:::-;12560:48;12254:359;-1:-1:-1;;;;12254:359:91:o;1749:119:90:-;-1:-1:-1;;;;;1845:18:90;1823:7;1845:18;;;;;;;;;;;;1749:119::o;2856:214:83:-;2970:7;2994:71;3022:4;3028:19;3049:15;2994:27;:71::i;:::-;2987:78;2856:214;-1:-1:-1;;;2856:214:83:o;2008:253:86:-;2069:7;2088:6;;;:16;;-1:-1:-1;2098:6:86;;2088:16;2084:45;;;-1:-1:-1;2121:1:86;2114:8;;2084:45;2180:1;-1:-1:-1;;2180:1:86;2148:33;;;;;2143:1;:38;;2183:35;;;;;;;;;;;;;-1:-1:-1;;;2183:35:86;;;2135:84;;;;;-1:-1:-1;;;2135:84:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;432:4:86;2234:5;;476:7;2234:15;2233:23;;2008:253::o;11543:134:91:-;11651:21;;-1:-1:-1;;;;;11651:21:91;11543:134;:::o;1594:100:90:-;1677:12;;1594:100;:::o;587:98:7:-;670:10;587:98;:::o;8963:553:91:-;9054:7;9069;9084;9106:32;9141:21;9157:4;9141:15;:21::i;:::-;9106:56;-1:-1:-1;9173:29:91;9169:66;;9220:1;9223;9226;9212:16;;;;;;;;;9169:66;9312:23;9338:45;9358:24;9338:15;9348:4;9338:9;:15::i;:::-;:19;;:45::i;:::-;9312:71;-1:-1:-1;9405:24:91;9437:45;9405:24;9312:71;9437:28;:45::i;:::-;9390:121;;-1:-1:-1;9390:121:91;-1:-1:-1;9490:15:91;-1:-1:-1;;8963:553:91;;;;;;:::o;1257:128:13:-;1315:7;1337:43;1341:1;1344;1337:43;;;;;;;;;;;;;;;;;:3;:43::i;3173:204:86:-;3225:7;530:3;3257:17;;;;:1;;:17;3288:22;:27;3317:35;;;;;;;;;;;;;-1:-1:-1;;;3317:35:86;;;3280:73;;;;;-1:-1:-1;;;3280:73:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3366:6:86;3173:204;-1:-1:-1;;3173:204:86:o;2416:279::-;2508:28;;;;;;;;;;;;-1:-1:-1;;;2508:28:86;;;;2477:7;;2500:6;2492:45;;;;-1:-1:-1;;;2492:45:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2619:35:86;;;;;;;;;2563:1;2619:35;;;-1:-1:-1;;;2619:35:86;;;;2559:5;;;432:4;2585:25;;2584:33;2579:38;;;2571:84;;;;-1:-1:-1;;;2571:84:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:1;2680:5;432:4;2670:1;:7;:15;2669:21;;;;;;;2416:279;-1:-1:-1;;;;2416:279:86:o;12846:359:91:-;-1:-1:-1;;;;;12977:18:91;;12949:25;12977:18;;;;;;;;;;;13022:29;12977:18;13044:6;13022:21;:29::i;:::-;-1:-1:-1;;;;;13001:18:91;;;:9;:18;;;;;;;;;;;;:50;;;;13070:21;;;13062:44;13058:143;;13116:21;;;:78;;-1:-1:-1;;;13116:78:91;;-1:-1:-1;;;;;13116:78:91;;;;;;;;;;;;;;;;;;;;;:21;;;;;:34;;:78;;;;;:21;;:78;;;;;;;;:21;;:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13058:143;12846:359;;;;:::o;13433:392::-;-1:-1:-1;;;;;13564:18:91;;13536:25;13564:18;;;;;;;;;;;;;13639:31;;;;;;;;;;;-1:-1:-1;;;13639:31:91;;;;;;;13564:18;13609:62;;13564:18;;13631:6;;13609:21;:62::i;3320:403:95:-;3520:34;;;;;;;;;;;-1:-1:-1;;;3520:34:95;;;;;;;;-1:-1:-1;;;;;3468:28:95;;;3439:20;3468:28;;;:17;:28;;;;;:39;;;;;;;;;;;:87;;3512:6;;3468:43;:87::i;:::-;-1:-1:-1;;;;;3562:28:95;;;;;;;:17;:28;;;;;;;;:39;;;;;;;;;;;;:54;;;3439:116;;-1:-1:-1;3562:39:95;3628:90;3675:28;:26;:28::i;:::-;3628:90;;;-1:-1:-1;;;;;3628:90:95;;;;;;;;;;;;;;;;;;;;3320:403;;;;:::o;851:162:13:-;909:7;936:5;;;955:6;;;;947:46;;;;;-1:-1:-1;;;947:46:13;;;;;;;;;;;;;;;;;;;;;;;;;;;196:85:63;273:3;196:85;:::o;1858:510:74:-;2328:9;2316:22;2356:7;1858:510;:::o;7574:76:90:-;7630:15;;;;:5;;:15;;;;;:::i;:::-;;7574:76;:::o;7654:84::-;7714:19;;;;:7;;:19;;;;;:::i;7742:84::-;7798:9;:23;;-1:-1:-1;;7798:23:90;;;;;;;;;;;;7742:84::o;1738:833:83:-;1882:7;;1942:50;:16;1963:28;;;1942:20;:50::i;:::-;1928:64;-1:-1:-1;2003:8:83;1999:52;;2028:16;:14;:16::i;:::-;2021:23;;;;;1999:52;-1:-1:-1;;2079:7:83;;2057:19;2121:1;2115:7;;:21;;2135:1;2115:21;;;2131:1;2125:3;:7;2115:21;2093:43;-1:-1:-1;353:8:83;2167:23;;2143:21;2220:35;2167:23;;2220:20;:35::i;:::-;2197:58;-1:-1:-1;2261:22:83;2286:34;2197:58;2306:13;2286:19;:34::i;:::-;2261:59;-1:-1:-1;2327:18:83;2389:1;2348:38;2373:12;2348:20;:3;2356:11;2348:7;:20::i;:::-;:24;;:38::i;:::-;:42;;;;;;;-1:-1:-1;2396:17:83;2476:1;2416:57;2458:14;2416:37;2441:11;2416:37;:3;2424:11;2416:7;:20::i;:57::-;:61;;;;;;;-1:-1:-1;2491:75:83;2416:61;2491:60;2540:10;2491:60;2512:22;:13;2530:3;2512:17;:22::i;:::-;2491:16;:14;:16::i;:75::-;2484:82;1738:833;-1:-1:-1;;;;;;;;;;;;1738:833:83:o;1649:189:13:-;1751:7;1782:12;1774:6;;;;1766:29;;;;-1:-1:-1;;;1766:29:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1813:5:13;;;1649:189::o;578:68:86:-;432:4;578:68;:::o;2058:419:13:-;2116:7;2341:6;2337:35;;-1:-1:-1;2364:1:13;2357:8;;2337:35;2390:5;;;2394:1;2390;:5;:1;2409:5;;;;;:10;2401:56;;;;-1:-1:-1;;;2401:56:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;"
            },
            "methodIdentifiers": {
              "DEBT_TOKEN_REVISION()": "b9a7b622",
              "POOL()": "7535d246",
              "UNDERLYING_ASSET_ADDRESS()": "b16a19de",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "approveDelegation(address,uint256)": "c04a8a10",
              "balanceOf(address)": "70a08231",
              "borrowAllowance(address,address)": "6bd76d24",
              "burn(address,uint256)": "9dc29fac",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "getAverageStableRate()": "90f6fcf2",
              "getIncentivesController()": "75d26413",
              "getSupplyData()": "79774338",
              "getTotalSupplyAndAvgRate()": "f731e9be",
              "getTotalSupplyLastUpdated()": "e7484890",
              "getUserLastUpdated(address)": "79ce6b8c",
              "getUserStableRate(address)": "e78c9b3b",
              "increaseAllowance(address,uint256)": "39509351",
              "initialize(address,address,address,uint8,string,string,bytes)": "c222ec8a",
              "mint(address,address,uint256,uint256)": "b3f1c93d",
              "name()": "06fdde03",
              "principalBalanceOf(address)": "c634dfaa",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "contracts/mocks/upgradeability/MockVariableDebtToken.sol": {
        "MockVariableDebtToken": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "fromUser",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "toUser",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "BorrowAllowanceDelegated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "underlyingAsset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "incentivesController",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "debtTokenDecimals",
                  "type": "uint8"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "debtTokenName",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "debtTokenSymbol",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "Mint",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "DEBT_TOKEN_REVISION",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "POOL",
              "outputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "UNDERLYING_ASSET_ADDRESS",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approveDelegation",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "fromUser",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "toUser",
                  "type": "address"
                }
              ],
              "name": "borrowAllowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "burn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "subtractedValue",
                  "type": "uint256"
                }
              ],
              "name": "decreaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getIncentivesController",
              "outputs": [
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getScaledUserBalanceAndSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "addedValue",
                  "type": "uint256"
                }
              ],
              "name": "increaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "underlyingAsset",
                  "type": "address"
                },
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "incentivesController",
                  "type": "address"
                },
                {
                  "internalType": "uint8",
                  "name": "debtTokenDecimals",
                  "type": "uint8"
                },
                {
                  "internalType": "string",
                  "name": "debtTokenName",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "debtTokenSymbol",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "scaledBalanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "scaledTotalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405260006006553480156200001657600080fd5b50604080518082018252600e8082526d111150951513d2d15397d253541360921b60208084018281528551808701909652928552840152815191929160009162000064916003919062000098565b5081516200007a90600490602085019062000098565b506005805460ff191660ff9290921691909117905550620001349050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000db57805160ff19168380011785556200010b565b828001600101855582156200010b579182015b828111156200010b578251825591602001919060010190620000ee565b50620001199291506200011d565b5090565b5b808211156200011957600081556001016200011e565b6117c780620001446000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806375d26413116100c3578063b3f1c93d1161007c578063b3f1c93d146103d2578063b9a7b6221461040e578063c04a8a1014610416578063c222ec8a14610444578063dd62ed3e146105ed578063f5298aca1461061b5761014d565b806375d264131461038657806395d89b411461038e578063a457c2d7146102e2578063a9059cbb14610396578063b16a19de146103c2578063b1bf962d146103ca5761014d565b806323b872dd1161011557806323b872dd1461028e578063313ce567146102c457806339509351146102e25780636bd76d241461030e57806370a082311461033c5780637535d246146103625761014d565b806306fdde0314610152578063095ea7b3146101cf5780630afbcdc91461020f57806318160ddd1461024e5780631da24f3e14610268575b600080fd5b61015a61064d565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019457818101518382015260200161017c565b50505050905090810190601f1680156101c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101fb600480360360408110156101e557600080fd5b506001600160a01b0381351690602001356106e3565b604080519115158252519081900360200190f35b6102356004803603602081101561022557600080fd5b50356001600160a01b031661072b565b6040805192835260208301919091528051918290030190f35b610256610748565b60408051918252519081900360200190f35b6102566004803603602081101561027e57600080fd5b50356001600160a01b03166107db565b6101fb600480360360608110156102a457600080fd5b506001600160a01b038135811691602081013590911690604001356107ee565b6102cc610836565b6040805160ff9092168252519081900360200190f35b6101fb600480360360408110156102f857600080fd5b506001600160a01b03813516906020013561083f565b6102566004803603604081101561032457600080fd5b506001600160a01b038135811691602001351661088e565b6102566004803603602081101561035257600080fd5b50356001600160a01b03166108bb565b61036a610967565b604080516001600160a01b039092168252519081900360200190f35b61036a610976565b61015a610980565b6101fb600480360360408110156103ac57600080fd5b506001600160a01b0381351690602001356107ee565b61036a6109e1565b6102566109f0565b6101fb600480360360808110156103e857600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356109fa565b610256610c13565b6104426004803603604081101561042c57600080fd5b506001600160a01b038135169060200135610c18565b005b610442600480360360e081101561045a57600080fd5b6001600160a01b038235811692602081013582169260408201359092169160ff606083013516919081019060a0810160808201356401000000008111156104a057600080fd5b8201836020820111156104b257600080fd5b803590602001918460018302840111640100000000831117156104d457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561052757600080fd5b82018360208201111561053957600080fd5b8035906020019184600183028401116401000000008311171561055b57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105ae57600080fd5b8201836020820111156105c057600080fd5b803590602001918460018302840111640100000000831117156105e257600080fd5b509092509050610cb4565b6102566004803603604081101561060357600080fd5b506001600160a01b038135811691602001351661083f565b6104426004803603606081101561063157600080fd5b506001600160a01b038135169060208101359060400135610f03565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106d95780601f106106ae576101008083540402835291602001916106d9565b820191906000526020600020905b8154815290600101906020018083116106bc57829003601f168201915b5050505050905090565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60008061073783611097565b61073f6110b2565b91509150915091565b603b54603c546040805163386497fd60e01b81526001600160a01b03928316600482015290516000936107d693169163386497fd916024808301926020929190829003018186803b15801561079c57600080fd5b505afa1580156107b0573d6000803e3d6000fd5b505050506040513d60208110156107c657600080fd5b50516107d06110b2565b906110b8565b905090565b60006107e682611097565b90505b919050565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60055460ff1690565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b038083166000908152603a60209081526040808320938516835292905220545b92915050565b6000806108c783611097565b9050806108d85760009150506107e9565b603b54603c546040805163386497fd60e01b81526001600160a01b039283166004820152905161096093929092169163386497fd91602480820192602092909190829003018186803b15801561092d57600080fd5b505afa158015610941573d6000803e3d6000fd5b505050506040513d602081101561095757600080fd5b505182906110b8565b9392505050565b603b546001600160a01b031690565b60006107d6611176565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106d95780601f106106ae576101008083540402835291602001916106d9565b603c546001600160a01b031690565b60006107d66110b2565b6000610a04610967565b6001600160a01b0316610a15611185565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610ac35760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a88578181015183820152602001610a70565b50505050905090810190601f168015610ab55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50836001600160a01b0316856001600160a01b031614610ae857610ae8848685611189565b6000610af385611097565b90506000610b018585611251565b6040805180820190915260028152611a9b60f11b602082015290915081610b695760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b50610b748682611358565b6040805186815290516001600160a01b038816916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3856001600160a01b0316876001600160a01b03167f2f00e3cdd69a77be7ed215ec7b2a36784dd158f921fca79ac29deffa353fe6ee8787604051808381526020018281526020019250505060405180910390a3501595945050505050565b600181565b80603a6000610c25611185565b6001600160a01b0390811682526020808301939093526040918201600090812091871680825291909352912091909155610c5d611185565b6001600160a01b03167fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1610c8f6109e1565b604080516001600160a01b039092168252602082018690528051918290030190a35050565b6000610cbe6114a9565b60075490915060ff1680610cd55750610cd56114ae565b80610ce1575060065481115b610d1c5760405162461bcd60e51b815260040180806020018281038252602e815260200180611743602e913960400191505060405180910390fd5b60075460ff16158015610d3c576007805460ff1916600117905560068290555b610d45866114b4565b610d4e856114cb565b610d57876114de565b603b80546001600160a01b03808d166001600160a01b03199283168117909355603c80548d83169084168117909155603d8054928d169290931682179092556040805191825260ff8b1660208084019190915260a09183018281528b51928401929092528a517f40251fbfb6656cfa65a00d7879029fec1fad21d28fdcff2f4f68f52795b74f2c938e938e938e938e938e938e93919290916060840191608085019160c0860191908a019080838360005b83811015610e20578181015183820152602001610e08565b50505050905090810190601f168015610e4d5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b83811015610e80578181015183820152602001610e68565b50505050905090810190601f168015610ead5780820380516001836020036101000a031916815260200191505b508481038252858152602001868680828437600083820152604051601f909101601f19169092018290039b50909950505050505050505050a38015610ef7576007805460ff191690555b50505050505050505050565b610f0b610967565b6001600160a01b0316610f1c611185565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610f8d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b506000610f9a8383611251565b60408051808201909152600281526106a760f31b6020820152909150816110025760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5061100d84826114f4565b6040805184815290516000916001600160a01b038716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3604080518481526020810184905281516001600160a01b038716927f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a928290030190a250505050565b6001600160a01b031660009081526020819052604090205490565b60025490565b60008215806110c5575081155b156110d2575060006108b5565b816b019d971e4fe8401e7400000019816110e857fe5b0483111560405180604001604052806002815260200161068760f31b815250906111535760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b603d546001600160a01b031690565b3390565b6040805180820182526002815261353960f01b6020808301919091526001600160a01b038087166000908152603a835284812091871681529152918220546111d2918490611592565b6001600160a01b038086166000818152603a60209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e161122a6109e1565b604080516001600160a01b039092168252602082018690528051918290030190a350505050565b604080518082019091526002815261035360f41b6020820152600090826112b95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156113355760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5082816b033b2e3c9fd0803ce80000008602018161134f57fe5b04949350505050565b6001600160a01b0382166113b3576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6113bf600083836115ec565b6002546113cc81836115f1565b6002556001600160a01b0383166000908152602081905260409020546113f281846115f1565b6001600160a01b038516600090815260208190526040812091909155611416611176565b6001600160a01b0316146114a35761142c611176565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561148a57600080fd5b505af115801561149e573d6000803e3d6000fd5b505050505b50505050565b600290565b303b1590565b80516114c790600390602084019061168d565b5050565b80516114c790600490602084019061168d565b6005805460ff191660ff92909216919091179055565b6001600160a01b0382166115395760405162461bcd60e51b81526004018080602001828103825260218152602001806117716021913960400191505060405180910390fd5b611545826000836115ec565b600254611552818361164b565b6002556001600160a01b0383166000908152602081815260409182902054825160608101909352602280845290926113f292869290611721908301398391905b600081848411156115e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b505050900390565b505050565b600082820183811015610960576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061096083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611592565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106116ce57805160ff19168380011785556116fb565b828001600101855582156116fb579182015b828111156116fb5782518255916020019190600101906116e0565b5061170792915061170b565b5090565b5b80821115611707576000815560010161170c56fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656445524332303a206275726e2066726f6d20746865207a65726f2061646472657373a264697066735822122092d890b54523b305f08f4b8656533728e2751b69d23d4bada83846632d71be5764736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0x6 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP1 DUP3 MSTORE PUSH14 0x111150951513D2D15397D2535413 PUSH1 0x92 SHL PUSH1 0x20 DUP1 DUP5 ADD DUP3 DUP2 MSTORE DUP6 MLOAD DUP1 DUP8 ADD SWAP1 SWAP7 MSTORE SWAP3 DUP6 MSTORE DUP5 ADD MSTORE DUP2 MLOAD SWAP2 SWAP3 SWAP2 PUSH1 0x0 SWAP2 PUSH3 0x64 SWAP2 PUSH1 0x3 SWAP2 SWAP1 PUSH3 0x98 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0x7A SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x98 JUMP JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0x134 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0xDB JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x10B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x10B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x10B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xEE JUMP JUMPDEST POP PUSH3 0x119 SWAP3 SWAP2 POP PUSH3 0x11D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x119 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x11E JUMP JUMPDEST PUSH2 0x17C7 DUP1 PUSH3 0x144 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x14D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x75D26413 GT PUSH2 0xC3 JUMPI DUP1 PUSH4 0xB3F1C93D GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xB3F1C93D EQ PUSH2 0x3D2 JUMPI DUP1 PUSH4 0xB9A7B622 EQ PUSH2 0x40E JUMPI DUP1 PUSH4 0xC04A8A10 EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0xC222EC8A EQ PUSH2 0x444 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x5ED JUMPI DUP1 PUSH4 0xF5298ACA EQ PUSH2 0x61B JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x75D26413 EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x38E JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x2E2 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x396 JUMPI DUP1 PUSH4 0xB16A19DE EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0xB1BF962D EQ PUSH2 0x3CA JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x115 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2E2 JUMPI DUP1 PUSH4 0x6BD76D24 EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x33C JUMPI DUP1 PUSH4 0x7535D246 EQ PUSH2 0x362 JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0xAFBCDC9 EQ PUSH2 0x20F JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0x1DA24F3E EQ PUSH2 0x268 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15A PUSH2 0x64D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x194 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1C1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6E3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x235 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x225 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x72B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x256 PUSH2 0x748 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7DB JUMP JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x7EE JUMP JUMPDEST PUSH2 0x2CC PUSH2 0x836 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x83F JUMP JUMPDEST PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x88E JUMP JUMPDEST PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8BB JUMP JUMPDEST PUSH2 0x36A PUSH2 0x967 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x36A PUSH2 0x976 JUMP JUMPDEST PUSH2 0x15A PUSH2 0x980 JUMP JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7EE JUMP JUMPDEST PUSH2 0x36A PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x256 PUSH2 0x9F0 JUMP JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x3E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x9FA JUMP JUMPDEST PUSH2 0x256 PUSH2 0xC13 JUMP JUMPDEST PUSH2 0x442 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x42C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC18 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x442 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x45A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 PUSH1 0xFF PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x527 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x539 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xCB4 JUMP JUMPDEST PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x603 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x83F JUMP JUMPDEST PUSH2 0x442 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF03 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x6D9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6AE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6D9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6BC JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1054141493D5905317D393D517D4D5541413D4951151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x737 DUP4 PUSH2 0x1097 JUMP JUMPDEST PUSH2 0x73F PUSH2 0x10B2 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x386497FD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 PUSH2 0x7D6 SWAP4 AND SWAP2 PUSH4 0x386497FD SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x79C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x7D0 PUSH2 0x10B2 JUMP JUMPDEST SWAP1 PUSH2 0x10B8 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7E6 DUP3 PUSH2 0x1097 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1514905394D1915497D393D517D4D5541413D4951151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x414C4C4F57414E43455F4E4F545F535550504F52544544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8C7 DUP4 PUSH2 0x1097 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x8D8 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x7E9 JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x386497FD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x960 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0x386497FD SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x92D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x941 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x957 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 SWAP1 PUSH2 0x10B8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D6 PUSH2 0x1176 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x6D9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6AE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6D9 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D6 PUSH2 0x10B2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA04 PUSH2 0x967 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA15 PUSH2 0x1185 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xAC3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xAB5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xAE8 JUMPI PUSH2 0xAE8 DUP5 DUP7 DUP6 PUSH2 0x1189 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAF3 DUP6 PUSH2 0x1097 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB01 DUP6 DUP6 PUSH2 0x1251 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1A9B PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0xB69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP PUSH2 0xB74 DUP7 DUP3 PUSH2 0x1358 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2F00E3CDD69A77BE7ED215EC7B2A36784DD158F921FCA79AC29DEFFA353FE6EE DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP ISZERO SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST DUP1 PUSH1 0x3A PUSH1 0x0 PUSH2 0xC25 PUSH2 0x1185 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0xC5D PUSH2 0x1185 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDA919360433220E13B51E8C211E490D148E61A3BD53DE8C097194E458B97F3E1 PUSH2 0xC8F PUSH2 0x9E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCBE PUSH2 0x14A9 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 PUSH2 0xCD5 JUMPI POP PUSH2 0xCD5 PUSH2 0x14AE JUMP JUMPDEST DUP1 PUSH2 0xCE1 JUMPI POP PUSH1 0x6 SLOAD DUP2 GT JUMPDEST PUSH2 0xD1C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1743 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0xD3C JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x6 DUP3 SWAP1 SSTORE JUMPDEST PUSH2 0xD45 DUP7 PUSH2 0x14B4 JUMP JUMPDEST PUSH2 0xD4E DUP6 PUSH2 0x14CB JUMP JUMPDEST PUSH2 0xD57 DUP8 PUSH2 0x14DE JUMP JUMPDEST PUSH1 0x3B DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP14 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x3C DUP1 SLOAD DUP14 DUP4 AND SWAP1 DUP5 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x3D DUP1 SLOAD SWAP3 DUP14 AND SWAP3 SWAP1 SWAP4 AND DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE PUSH1 0xFF DUP12 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 SWAP2 DUP4 ADD DUP3 DUP2 MSTORE DUP12 MLOAD SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP11 MLOAD PUSH32 0x40251FBFB6656CFA65A00D7879029FEC1FAD21D28FDCFF2F4F68F52795B74F2C SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x60 DUP5 ADD SWAP2 PUSH1 0x80 DUP6 ADD SWAP2 PUSH1 0xC0 DUP7 ADD SWAP2 SWAP1 DUP11 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE20 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE08 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE4D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP5 DUP2 SUB DUP4 MSTORE DUP8 MLOAD DUP2 MSTORE DUP8 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP10 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE80 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE68 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xEAD JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP7 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP12 POP SWAP1 SWAP10 POP POP POP POP POP POP POP POP POP POP LOG3 DUP1 ISZERO PUSH2 0xEF7 JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xF0B PUSH2 0x967 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF1C PUSH2 0x1185 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xF8D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xF9A DUP4 DUP4 PUSH2 0x1251 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x6A7 PUSH1 0xF3 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0x1002 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP PUSH2 0x100D DUP5 DUP3 PUSH2 0x14F4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP3 PUSH32 0x49995E5DD6158CF69AD3E9777C46755A1A826A446C6416992167462DAD033B2A SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x10C5 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x10D2 JUMPI POP PUSH1 0x0 PUSH2 0x8B5 JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x10E8 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1153 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP POP PUSH12 0x33B2E3C9FD0803CE8000000 SWAP2 MUL PUSH12 0x19D971E4FE8401E74000000 ADD DIV SWAP1 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3539 PUSH1 0xF0 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A DUP4 MSTORE DUP5 DUP2 KECCAK256 SWAP2 DUP8 AND DUP2 MSTORE SWAP2 MSTORE SWAP2 DUP3 KECCAK256 SLOAD PUSH2 0x11D2 SWAP2 DUP5 SWAP1 PUSH2 0x1592 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP10 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP4 SWAP1 SSTORE SWAP2 SWAP3 POP SWAP1 PUSH32 0xDA919360433220E13B51E8C211E490D148E61A3BD53DE8C097194E458B97F3E1 PUSH2 0x122A PUSH2 0x9E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x12B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x1335 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x134F JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x13B3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x13BF PUSH1 0x0 DUP4 DUP4 PUSH2 0x15EC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x13CC DUP2 DUP4 PUSH2 0x15F1 JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x13F2 DUP2 DUP5 PUSH2 0x15F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1416 PUSH2 0x1176 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x14A3 JUMPI PUSH2 0x142C PUSH2 0x1176 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP6 DUP5 DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x148A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x149E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SWAP1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x14C7 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x168D JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x14C7 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x168D JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1539 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1771 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1545 DUP3 PUSH1 0x0 DUP4 PUSH2 0x15EC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x1552 DUP2 DUP4 PUSH2 0x164B JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x22 DUP1 DUP5 MSTORE SWAP1 SWAP3 PUSH2 0x13F2 SWAP3 DUP7 SWAP3 SWAP1 PUSH2 0x1721 SWAP1 DUP4 ADD CODECOPY DUP4 SWAP2 SWAP1 JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x15E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x960 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x960 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1592 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x16CE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x16FB JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x16FB JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x16FB JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x16E0 JUMP JUMPDEST POP PUSH2 0x1707 SWAP3 SWAP2 POP PUSH2 0x170B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1707 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x170C JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E6365436F6E74 PUSH19 0x61637420696E7374616E63652068617320616C PUSH19 0x65616479206265656E20696E697469616C697A PUSH6 0x644552433230 GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F2061646472657373A264697066735822122092D890B54523 0xB3 SDIV CREATE DUP16 0x4B DUP7 JUMP MSTORE8 CALLDATACOPY 0x28 0xE2 PUSH22 0x1B69D23D4BADA83846632D71BE5764736F6C63430006 0xC STOP CALLER ",
              "sourceMap": "148:143:64:-:0;;;926:1:74;884:43;;148:143:64;;;;;;;;;-1:-1:-1;952:164:90;;;;;;;;;;;;-1:-1:-1;;;952:164:90;;;;;;;;;;;;;;;;;;;;;1051:12;;952:164;;;-1:-1:-1;;1051:12:90;;:5;;952:164;1051:12;:::i;:::-;-1:-1:-1;1069:16:90;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;1091:9:90;:20;;-1:-1:-1;;1091:20:90;;;;;;;;;;;;-1:-1:-1;148:143:64;;-1:-1:-1;148:143:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;148:143:64;;;-1:-1:-1;148:143:64;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061014d5760003560e01c806375d26413116100c3578063b3f1c93d1161007c578063b3f1c93d146103d2578063b9a7b6221461040e578063c04a8a1014610416578063c222ec8a14610444578063dd62ed3e146105ed578063f5298aca1461061b5761014d565b806375d264131461038657806395d89b411461038e578063a457c2d7146102e2578063a9059cbb14610396578063b16a19de146103c2578063b1bf962d146103ca5761014d565b806323b872dd1161011557806323b872dd1461028e578063313ce567146102c457806339509351146102e25780636bd76d241461030e57806370a082311461033c5780637535d246146103625761014d565b806306fdde0314610152578063095ea7b3146101cf5780630afbcdc91461020f57806318160ddd1461024e5780631da24f3e14610268575b600080fd5b61015a61064d565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019457818101518382015260200161017c565b50505050905090810190601f1680156101c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101fb600480360360408110156101e557600080fd5b506001600160a01b0381351690602001356106e3565b604080519115158252519081900360200190f35b6102356004803603602081101561022557600080fd5b50356001600160a01b031661072b565b6040805192835260208301919091528051918290030190f35b610256610748565b60408051918252519081900360200190f35b6102566004803603602081101561027e57600080fd5b50356001600160a01b03166107db565b6101fb600480360360608110156102a457600080fd5b506001600160a01b038135811691602081013590911690604001356107ee565b6102cc610836565b6040805160ff9092168252519081900360200190f35b6101fb600480360360408110156102f857600080fd5b506001600160a01b03813516906020013561083f565b6102566004803603604081101561032457600080fd5b506001600160a01b038135811691602001351661088e565b6102566004803603602081101561035257600080fd5b50356001600160a01b03166108bb565b61036a610967565b604080516001600160a01b039092168252519081900360200190f35b61036a610976565b61015a610980565b6101fb600480360360408110156103ac57600080fd5b506001600160a01b0381351690602001356107ee565b61036a6109e1565b6102566109f0565b6101fb600480360360808110156103e857600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356109fa565b610256610c13565b6104426004803603604081101561042c57600080fd5b506001600160a01b038135169060200135610c18565b005b610442600480360360e081101561045a57600080fd5b6001600160a01b038235811692602081013582169260408201359092169160ff606083013516919081019060a0810160808201356401000000008111156104a057600080fd5b8201836020820111156104b257600080fd5b803590602001918460018302840111640100000000831117156104d457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561052757600080fd5b82018360208201111561053957600080fd5b8035906020019184600183028401116401000000008311171561055b57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105ae57600080fd5b8201836020820111156105c057600080fd5b803590602001918460018302840111640100000000831117156105e257600080fd5b509092509050610cb4565b6102566004803603604081101561060357600080fd5b506001600160a01b038135811691602001351661083f565b6104426004803603606081101561063157600080fd5b506001600160a01b038135169060208101359060400135610f03565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106d95780601f106106ae576101008083540402835291602001916106d9565b820191906000526020600020905b8154815290600101906020018083116106bc57829003601f168201915b5050505050905090565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60008061073783611097565b61073f6110b2565b91509150915091565b603b54603c546040805163386497fd60e01b81526001600160a01b03928316600482015290516000936107d693169163386497fd916024808301926020929190829003018186803b15801561079c57600080fd5b505afa1580156107b0573d6000803e3d6000fd5b505050506040513d60208110156107c657600080fd5b50516107d06110b2565b906110b8565b905090565b60006107e682611097565b90505b919050565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60055460ff1690565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b038083166000908152603a60209081526040808320938516835292905220545b92915050565b6000806108c783611097565b9050806108d85760009150506107e9565b603b54603c546040805163386497fd60e01b81526001600160a01b039283166004820152905161096093929092169163386497fd91602480820192602092909190829003018186803b15801561092d57600080fd5b505afa158015610941573d6000803e3d6000fd5b505050506040513d602081101561095757600080fd5b505182906110b8565b9392505050565b603b546001600160a01b031690565b60006107d6611176565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106d95780601f106106ae576101008083540402835291602001916106d9565b603c546001600160a01b031690565b60006107d66110b2565b6000610a04610967565b6001600160a01b0316610a15611185565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610ac35760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a88578181015183820152602001610a70565b50505050905090810190601f168015610ab55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50836001600160a01b0316856001600160a01b031614610ae857610ae8848685611189565b6000610af385611097565b90506000610b018585611251565b6040805180820190915260028152611a9b60f11b602082015290915081610b695760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b50610b748682611358565b6040805186815290516001600160a01b038816916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3856001600160a01b0316876001600160a01b03167f2f00e3cdd69a77be7ed215ec7b2a36784dd158f921fca79ac29deffa353fe6ee8787604051808381526020018281526020019250505060405180910390a3501595945050505050565b600181565b80603a6000610c25611185565b6001600160a01b0390811682526020808301939093526040918201600090812091871680825291909352912091909155610c5d611185565b6001600160a01b03167fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1610c8f6109e1565b604080516001600160a01b039092168252602082018690528051918290030190a35050565b6000610cbe6114a9565b60075490915060ff1680610cd55750610cd56114ae565b80610ce1575060065481115b610d1c5760405162461bcd60e51b815260040180806020018281038252602e815260200180611743602e913960400191505060405180910390fd5b60075460ff16158015610d3c576007805460ff1916600117905560068290555b610d45866114b4565b610d4e856114cb565b610d57876114de565b603b80546001600160a01b03808d166001600160a01b03199283168117909355603c80548d83169084168117909155603d8054928d169290931682179092556040805191825260ff8b1660208084019190915260a09183018281528b51928401929092528a517f40251fbfb6656cfa65a00d7879029fec1fad21d28fdcff2f4f68f52795b74f2c938e938e938e938e938e938e93919290916060840191608085019160c0860191908a019080838360005b83811015610e20578181015183820152602001610e08565b50505050905090810190601f168015610e4d5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b83811015610e80578181015183820152602001610e68565b50505050905090810190601f168015610ead5780820380516001836020036101000a031916815260200191505b508481038252858152602001868680828437600083820152604051601f909101601f19169092018290039b50909950505050505050505050a38015610ef7576007805460ff191690555b50505050505050505050565b610f0b610967565b6001600160a01b0316610f1c611185565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610f8d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b506000610f9a8383611251565b60408051808201909152600281526106a760f31b6020820152909150816110025760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5061100d84826114f4565b6040805184815290516000916001600160a01b038716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3604080518481526020810184905281516001600160a01b038716927f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a928290030190a250505050565b6001600160a01b031660009081526020819052604090205490565b60025490565b60008215806110c5575081155b156110d2575060006108b5565b816b019d971e4fe8401e7400000019816110e857fe5b0483111560405180604001604052806002815260200161068760f31b815250906111535760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b603d546001600160a01b031690565b3390565b6040805180820182526002815261353960f01b6020808301919091526001600160a01b038087166000908152603a835284812091871681529152918220546111d2918490611592565b6001600160a01b038086166000818152603a60209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e161122a6109e1565b604080516001600160a01b039092168252602082018690528051918290030190a350505050565b604080518082019091526002815261035360f41b6020820152600090826112b95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156113355760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5082816b033b2e3c9fd0803ce80000008602018161134f57fe5b04949350505050565b6001600160a01b0382166113b3576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6113bf600083836115ec565b6002546113cc81836115f1565b6002556001600160a01b0383166000908152602081905260409020546113f281846115f1565b6001600160a01b038516600090815260208190526040812091909155611416611176565b6001600160a01b0316146114a35761142c611176565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561148a57600080fd5b505af115801561149e573d6000803e3d6000fd5b505050505b50505050565b600290565b303b1590565b80516114c790600390602084019061168d565b5050565b80516114c790600490602084019061168d565b6005805460ff191660ff92909216919091179055565b6001600160a01b0382166115395760405162461bcd60e51b81526004018080602001828103825260218152602001806117716021913960400191505060405180910390fd5b611545826000836115ec565b600254611552818361164b565b6002556001600160a01b0383166000908152602081815260409182902054825160608101909352602280845290926113f292869290611721908301398391905b600081848411156115e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b505050900390565b505050565b600082820183811015610960576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061096083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611592565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106116ce57805160ff19168380011785556116fb565b828001600101855582156116fb579182015b828111156116fb5782518255916020019190600101906116e0565b5061170792915061170b565b5090565b5b80821115611707576000815560010161170c56fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656445524332303a206275726e2066726f6d20746865207a65726f2061646472657373a264697066735822122092d890b54523b305f08f4b8656533728e2751b69d23d4bada83846632d71be5764736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x14D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x75D26413 GT PUSH2 0xC3 JUMPI DUP1 PUSH4 0xB3F1C93D GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xB3F1C93D EQ PUSH2 0x3D2 JUMPI DUP1 PUSH4 0xB9A7B622 EQ PUSH2 0x40E JUMPI DUP1 PUSH4 0xC04A8A10 EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0xC222EC8A EQ PUSH2 0x444 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x5ED JUMPI DUP1 PUSH4 0xF5298ACA EQ PUSH2 0x61B JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x75D26413 EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x38E JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x2E2 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x396 JUMPI DUP1 PUSH4 0xB16A19DE EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0xB1BF962D EQ PUSH2 0x3CA JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x115 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2E2 JUMPI DUP1 PUSH4 0x6BD76D24 EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x33C JUMPI DUP1 PUSH4 0x7535D246 EQ PUSH2 0x362 JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0xAFBCDC9 EQ PUSH2 0x20F JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0x1DA24F3E EQ PUSH2 0x268 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15A PUSH2 0x64D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x194 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1C1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6E3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x235 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x225 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x72B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x256 PUSH2 0x748 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7DB JUMP JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x7EE JUMP JUMPDEST PUSH2 0x2CC PUSH2 0x836 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x83F JUMP JUMPDEST PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x88E JUMP JUMPDEST PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8BB JUMP JUMPDEST PUSH2 0x36A PUSH2 0x967 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x36A PUSH2 0x976 JUMP JUMPDEST PUSH2 0x15A PUSH2 0x980 JUMP JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7EE JUMP JUMPDEST PUSH2 0x36A PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x256 PUSH2 0x9F0 JUMP JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x3E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x9FA JUMP JUMPDEST PUSH2 0x256 PUSH2 0xC13 JUMP JUMPDEST PUSH2 0x442 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x42C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC18 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x442 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x45A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 PUSH1 0xFF PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x527 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x539 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xCB4 JUMP JUMPDEST PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x603 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x83F JUMP JUMPDEST PUSH2 0x442 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF03 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x6D9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6AE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6D9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6BC JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1054141493D5905317D393D517D4D5541413D4951151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x737 DUP4 PUSH2 0x1097 JUMP JUMPDEST PUSH2 0x73F PUSH2 0x10B2 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x386497FD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 PUSH2 0x7D6 SWAP4 AND SWAP2 PUSH4 0x386497FD SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x79C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x7D0 PUSH2 0x10B2 JUMP JUMPDEST SWAP1 PUSH2 0x10B8 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7E6 DUP3 PUSH2 0x1097 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1514905394D1915497D393D517D4D5541413D4951151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x414C4C4F57414E43455F4E4F545F535550504F52544544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8C7 DUP4 PUSH2 0x1097 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x8D8 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x7E9 JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x386497FD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x960 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0x386497FD SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x92D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x941 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x957 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 SWAP1 PUSH2 0x10B8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D6 PUSH2 0x1176 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x6D9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6AE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6D9 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D6 PUSH2 0x10B2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA04 PUSH2 0x967 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA15 PUSH2 0x1185 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xAC3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xAB5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xAE8 JUMPI PUSH2 0xAE8 DUP5 DUP7 DUP6 PUSH2 0x1189 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAF3 DUP6 PUSH2 0x1097 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB01 DUP6 DUP6 PUSH2 0x1251 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1A9B PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0xB69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP PUSH2 0xB74 DUP7 DUP3 PUSH2 0x1358 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2F00E3CDD69A77BE7ED215EC7B2A36784DD158F921FCA79AC29DEFFA353FE6EE DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP ISZERO SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST DUP1 PUSH1 0x3A PUSH1 0x0 PUSH2 0xC25 PUSH2 0x1185 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0xC5D PUSH2 0x1185 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDA919360433220E13B51E8C211E490D148E61A3BD53DE8C097194E458B97F3E1 PUSH2 0xC8F PUSH2 0x9E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCBE PUSH2 0x14A9 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 PUSH2 0xCD5 JUMPI POP PUSH2 0xCD5 PUSH2 0x14AE JUMP JUMPDEST DUP1 PUSH2 0xCE1 JUMPI POP PUSH1 0x6 SLOAD DUP2 GT JUMPDEST PUSH2 0xD1C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1743 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0xD3C JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x6 DUP3 SWAP1 SSTORE JUMPDEST PUSH2 0xD45 DUP7 PUSH2 0x14B4 JUMP JUMPDEST PUSH2 0xD4E DUP6 PUSH2 0x14CB JUMP JUMPDEST PUSH2 0xD57 DUP8 PUSH2 0x14DE JUMP JUMPDEST PUSH1 0x3B DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP14 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x3C DUP1 SLOAD DUP14 DUP4 AND SWAP1 DUP5 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x3D DUP1 SLOAD SWAP3 DUP14 AND SWAP3 SWAP1 SWAP4 AND DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE PUSH1 0xFF DUP12 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 SWAP2 DUP4 ADD DUP3 DUP2 MSTORE DUP12 MLOAD SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP11 MLOAD PUSH32 0x40251FBFB6656CFA65A00D7879029FEC1FAD21D28FDCFF2F4F68F52795B74F2C SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x60 DUP5 ADD SWAP2 PUSH1 0x80 DUP6 ADD SWAP2 PUSH1 0xC0 DUP7 ADD SWAP2 SWAP1 DUP11 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE20 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE08 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE4D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP5 DUP2 SUB DUP4 MSTORE DUP8 MLOAD DUP2 MSTORE DUP8 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP10 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE80 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE68 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xEAD JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP7 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP12 POP SWAP1 SWAP10 POP POP POP POP POP POP POP POP POP POP LOG3 DUP1 ISZERO PUSH2 0xEF7 JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xF0B PUSH2 0x967 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF1C PUSH2 0x1185 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xF8D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xF9A DUP4 DUP4 PUSH2 0x1251 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x6A7 PUSH1 0xF3 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0x1002 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP PUSH2 0x100D DUP5 DUP3 PUSH2 0x14F4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP3 PUSH32 0x49995E5DD6158CF69AD3E9777C46755A1A826A446C6416992167462DAD033B2A SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x10C5 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x10D2 JUMPI POP PUSH1 0x0 PUSH2 0x8B5 JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x10E8 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1153 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP POP PUSH12 0x33B2E3C9FD0803CE8000000 SWAP2 MUL PUSH12 0x19D971E4FE8401E74000000 ADD DIV SWAP1 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3539 PUSH1 0xF0 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A DUP4 MSTORE DUP5 DUP2 KECCAK256 SWAP2 DUP8 AND DUP2 MSTORE SWAP2 MSTORE SWAP2 DUP3 KECCAK256 SLOAD PUSH2 0x11D2 SWAP2 DUP5 SWAP1 PUSH2 0x1592 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP10 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP4 SWAP1 SSTORE SWAP2 SWAP3 POP SWAP1 PUSH32 0xDA919360433220E13B51E8C211E490D148E61A3BD53DE8C097194E458B97F3E1 PUSH2 0x122A PUSH2 0x9E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x12B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x1335 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x134F JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x13B3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x13BF PUSH1 0x0 DUP4 DUP4 PUSH2 0x15EC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x13CC DUP2 DUP4 PUSH2 0x15F1 JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x13F2 DUP2 DUP5 PUSH2 0x15F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1416 PUSH2 0x1176 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x14A3 JUMPI PUSH2 0x142C PUSH2 0x1176 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP6 DUP5 DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x148A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x149E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SWAP1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x14C7 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x168D JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x14C7 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x168D JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1539 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1771 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1545 DUP3 PUSH1 0x0 DUP4 PUSH2 0x15EC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x1552 DUP2 DUP4 PUSH2 0x164B JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x22 DUP1 DUP5 MSTORE SWAP1 SWAP3 PUSH2 0x13F2 SWAP3 DUP7 SWAP3 SWAP1 PUSH2 0x1721 SWAP1 DUP4 ADD CODECOPY DUP4 SWAP2 SWAP1 JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x15E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x960 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x960 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1592 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x16CE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x16FB JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x16FB JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x16FB JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x16E0 JUMP JUMPDEST POP PUSH2 0x1707 SWAP3 SWAP2 POP PUSH2 0x170B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1707 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x170C JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E6365436F6E74 PUSH19 0x61637420696E7374616E63652068617320616C PUSH19 0x65616479206265656E20696E697469616C697A PUSH6 0x644552433230 GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F2061646472657373A264697066735822122092D890B54523 0xB3 SDIV CREATE DUP16 0x4B DUP7 JUMP MSTORE8 CALLDATACOPY 0x28 0xE2 PUSH22 0x1B69D23D4BADA83846632D71BE5764736F6C63430006 0xC STOP CALLER ",
              "sourceMap": "148:143:64:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1168:84:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2539:157:95;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2539:157:95;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;5540:183:94;;;;;;;;;;;;;;;;-1:-1:-1;5540:183:94;-1:-1:-1;;;;;5540:183:94;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4879:172;;;:::i;:::-;;;;;;;;;;;;;;;;4597:125;;;;;;;;;;;;;;;;-1:-1:-1;4597:125:94;-1:-1:-1;;;;;4597:125:94;;:::i;2700:210:95:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2700:210:95;;;;;;;;;;;;;;;;;:::i;1450:84:90:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2914:194:95;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2914:194:95;;;;;;;;:::i;1855:171::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1855:171:95;;;;;;;;;;:::i;2485:281:94:-;;;;;;;;;;;;;;;;-1:-1:-1;2485:281:94;-1:-1:-1;;;;;2485:281:94;;:::i;6247:74::-;;;:::i;:::-;;;;-1:-1:-1;;;;;6247:74:94;;;;;;;;;;;;;;6016:138;;;:::i;1306:88:90:-;;;:::i;2181:162:95:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2181:162:95;;;;;;;;:::i;5831:100:94:-;;;:::i;5202:113::-;;;:::i;3264:591::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3264:591:94;;;;;;;;;;;;;;;;;;;;;;:::i;731:49::-;;;:::i;1403:240:95:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1403:240:95;;;;;;;;:::i;:::-;;1432:686:94;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1432:686:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1432:686:94;;;;;;;;-1:-1:-1;1432:686:94;;-1:-1:-1;;1432:686:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1432:686:94;;;;;;;;-1:-1:-1;1432:686:94;;-1:-1:-1;;1432:686:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1432:686:94;;-1:-1:-1;1432:686:94;-1:-1:-1;1432:686:94;:::i;2347:188:95:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2347:188:95;;;;;;;;;;:::i;4104:340:94:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4104:340:94;;;;;;;;;;;;;:::i;1168:84:90:-;1242:5;1235:12;;;;;;;;-1:-1:-1;;1235:12:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1214:13;;1235:12;;1242:5;;1235:12;;1242:5;1235:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1168:84;:::o;2539:157:95:-;2659:32;;;-1:-1:-1;;;2659:32:95;;;;;;;;;;;;-1:-1:-1;;;2659:32:95;;;;;;2622:4;;2659:32;;;;;;;5540:183:94;5641:7;5650;5675:21;5691:4;5675:15;:21::i;:::-;5698:19;:17;:19::i;:::-;5667:51;;;;5540:183;;;:::o;4879:172::-;4989:5;;5028:16;;4989:56;;;-1:-1:-1;;;4989:56:94;;-1:-1:-1;;;;;5028:16:94;;;4989:56;;;;;;4940:7;;4962:84;;4989:5;;:38;;:56;;;;;;;;;;;;;;:5;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4989:56:94;4962:19;:17;:19::i;:::-;:26;;:84::i;:::-;4955:91;;4879:172;:::o;4597:125::-;4674:7;4696:21;4712:4;4696:15;:21::i;:::-;4689:28;;4597:125;;;;:::o;2700:210:95:-;2873:32;;;-1:-1:-1;;;2873:32:95;;;;;;;;;;;;-1:-1:-1;;;2873:32:95;;;;;;2822:4;;2873:32;;;;;;;1450:84:90;1520:9;;;;1450:84;:::o;2914:194:95:-;3070:33;;;-1:-1:-1;;;3070:33:95;;;;;;;;;;;;;;;;;;;3027:4;;3070:33;;;;;;;1855:171;-1:-1:-1;;;;;1986:27:95;;;1962:7;1986:27;;;:17;:27;;;;;;;;:35;;;;;;;;;;1855:171;;;;;:::o;2485:281:94:-;2556:7;2571:21;2595;2611:4;2595:15;:21::i;:::-;2571:45;-1:-1:-1;2627:18:94;2623:47;;2662:1;2655:8;;;;;2623:47;2704:5;;2743:16;;2704:56;;;-1:-1:-1;;;2704:56:94;;-1:-1:-1;;;;;2743:16:94;;;2704:56;;;;;;2683:78;;2704:5;;;;;:38;;:56;;;;;;;;;;;;;;;:5;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2704:56:94;2683:13;;:20;:78::i;:::-;2676:85;2485:281;-1:-1:-1;;;2485:281:94:o;6247:74::-;6311:5;;-1:-1:-1;;;;;6311:5:94;6247:74;:::o;6016:138::-;6083:25;6123:26;:24;:26::i;1306:88:90:-;1382:7;1375:14;;;;;;;;-1:-1:-1;;1375:14:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1354:13;;1375:14;;1382:7;;1375:14;;1382:7;1375:14;;;;;;;;;;;;;;;;;;;;;;;;5831:100:94;5910:16;;-1:-1:-1;;;;;5910:16:94;5831:100;:::o;5202:113::-;5269:7;5291:19;:17;:19::i;3264:591::-;3406:4;971:17:95;:15;:17::i;:::-;-1:-1:-1;;;;;947:42:95;:12;:10;:12::i;:::-;-1:-1:-1;;;;;947:42:95;;991:37;;;;;;;;;;;;;-1:-1:-1;;;991:37:95;;;939:90;;;;;-1:-1:-1;;;939:90:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3430:10:94::1;-1:-1:-1::0;;;;;3422:18:94::1;:4;-1:-1:-1::0;;;;;3422:18:94::1;;3418:89;;3450:50;3475:10;3487:4;3493:6;3450:24;:50::i;:::-;3513:23;3539:27;3555:10;3539:15;:27::i;:::-;3513:53:::0;-1:-1:-1;3572:20:94::1;3595;:6:::0;3609:5;3595:13:::1;:20::i;:::-;3648:29;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;3648:29:94::1;::::0;::::1;::::0;3572:43;;-1:-1:-1;3629:17:94;3621:57:::1;;;::::0;-1:-1:-1;;;3621:57:94;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;3685:31;3691:10;3703:12;3685:5;:31::i;:::-;3728:40;::::0;;;;;;;-1:-1:-1;;;;;3728:40:94;::::1;::::0;3745:1:::1;::::0;3728:40:::1;::::0;;;;::::1;::::0;;::::1;3790:10;-1:-1:-1::0;;;;;3779:37:94::1;3784:4;-1:-1:-1::0;;;;;3779:37:94::1;;3802:6;3810:5;3779:37;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;3830:20:94;;3264:591;-1:-1:-1;;;;;3264:591:94:o;731:49::-;777:3;731:49;:::o;1403:240:95:-;1534:6;1489:17;:31;1507:12;:10;:12::i;:::-;-1:-1:-1;;;;;1489:31:95;;;;;;;;;;;;;;;;;-1:-1:-1;1489:31:95;;;:42;;;;;;;;;;;;:51;;;;1576:12;:10;:12::i;:::-;-1:-1:-1;;;;;1551:87:95;;1601:28;:26;:28::i;:::-;1551:87;;;-1:-1:-1;;;;;1551:87:95;;;;;;;;;;;;;;;;;;;;1403:240;;:::o;1432:686:94:-;1162:16:74;1181:13;:11;:13::i;:::-;1215:12;;1162:32;;-1:-1:-1;1215:12:74;;;:31;;;1231:15;:13;:15::i;:::-;1215:69;;;;1261:23;;1250:8;:34;1215:69;1200:146;;;;-1:-1:-1;;;1200:146:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1376:12;;;;1375:13;1394:96;;;;1422:12;:19;;-1:-1:-1;;1422:19:74;1437:4;1422:19;;;1449:23;:34;;;1394:96;1718:23:94::1;1727:13;1718:8;:23::i;:::-;1747:27;1758:15;1747:10;:27::i;:::-;1780:31;1793:17;1780:12;:31::i;:::-;1818:5;:12:::0;;-1:-1:-1;;;;;1818:12:94;;::::1;-1:-1:-1::0;;;;;;1818:12:94;;::::1;::::0;::::1;::::0;;;1836:16:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;1876:21:::1;:44:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;1932:181:::1;::::0;;;;;::::1;::::0;::::1;;::::0;;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;::::1;::::0;1900:20;;2032:17;;2057:13;;2078:15;;2101:6;;;;1932:181;;;;;;;;;;;;;;;;;;::::1;::::0;;;;1818:5:::1;1932:181;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;1932:181:94;;::::1;::::0;;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;::::1;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;1932:181:94;;::::1;::::0;;;;;::::1;;::::0;;;;;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;1932:181:94::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;1932:181:94;;-1:-1:-1;;;;;;;;;;1932:181:94::1;1508:14:74::0;1504:55;;;1532:12;:20;;-1:-1:-1;;1532:20:74;;;1504:55;1432:686:94;;;;;;;;;;:::o;4104:340::-;971:17:95;:15;:17::i;:::-;-1:-1:-1;;;;;947:42:95;:12;:10;:12::i;:::-;-1:-1:-1;;;;;947:42:95;;991:37;;;;;;;;;;;;;-1:-1:-1;;;991:37:95;;;939:90;;;;;-1:-1:-1;;;939:90:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4219:20:94::1;4242;:6:::0;4256:5;4242:13:::1;:20::i;:::-;4295:29;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;4295:29:94::1;::::0;::::1;::::0;4219:43;;-1:-1:-1;4276:17:94;4268:57:::1;;;::::0;-1:-1:-1;;;4268:57:94;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;4332:25;4338:4;4344:12;4332:5;:25::i;:::-;4369:34;::::0;;;;;;;4392:1:::1;::::0;-1:-1:-1;;;;;4369:34:94;::::1;::::0;::::1;::::0;;;;::::1;::::0;;::::1;4414:25;::::0;;;;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;4414:25:94;::::1;::::0;::::1;::::0;;;;;;::::1;1035:1:95;4104:340:94::0;;;:::o;1749:119:90:-;-1:-1:-1;;;;;1845:18:90;1823:7;1845:18;;;;;;;;;;;;1749:119::o;1594:100::-;1677:12;;1594:100;:::o;2008:253:86:-;2069:7;2088:6;;;:16;;-1:-1:-1;2098:6:86;;2088:16;2084:45;;;-1:-1:-1;2121:1:86;2114:8;;2084:45;2180:1;-1:-1:-1;;2180:1:86;2148:33;;;;;2143:1;:38;;2183:35;;;;;;;;;;;;;-1:-1:-1;;;2183:35:86;;;2135:84;;;;;-1:-1:-1;;;2135:84:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;432:4:86;2234:5;;476:7;2234:15;2233:23;;2008:253::o;6325:134:94:-;6433:21;;-1:-1:-1;;;;;6433:21:94;6325:134;:::o;587:98:7:-;670:10;587:98;:::o;3320:403:95:-;3520:34;;;;;;;;;;;-1:-1:-1;;;3520:34:95;;;;;;;;-1:-1:-1;;;;;3468:28:95;;;3439:20;3468:28;;;:17;:28;;;;;:39;;;;;;;;;;;:87;;3512:6;;3468:43;:87::i;:::-;-1:-1:-1;;;;;3562:28:95;;;;;;;:17;:28;;;;;;;;:39;;;;;;;;;;;;:54;;;3439:116;;-1:-1:-1;3562:39:95;3628:90;3675:28;:26;:28::i;:::-;3628:90;;;-1:-1:-1;;;;;3628:90:95;;;;;;;;;;;;;;;;;;;;3320:403;;;;:::o;2416:279:86:-;2508:28;;;;;;;;;;;;-1:-1:-1;;;2508:28:86;;;;2477:7;;2500:6;2492:45;;;;-1:-1:-1;;;2492:45:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2619:35:86;;;;;;;;;2563:1;2619:35;;;-1:-1:-1;;;2619:35:86;;;;2559:5;;;432:4;2585:25;;2584:33;2579:38;;;2571:84;;;;-1:-1:-1;;;2571:84:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:1;2680:5;432:4;2670:1;:7;:15;2669:21;;;;;;;2416:279;-1:-1:-1;;;;2416:279:86:o;6072:556:90:-;-1:-1:-1;;;;;6151:21:90;;6143:65;;;;;-1:-1:-1;;;6143:65:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;6215:49;6244:1;6248:7;6257:6;6215:20;:49::i;:::-;6296:12;;6329:26;6296:12;6348:6;6329:18;:26::i;:::-;6314:12;:41;-1:-1:-1;;;;;6390:18:90;;6362:25;6390:18;;;;;;;;;;;6435:29;6390:18;6457:6;6435:21;:29::i;:::-;-1:-1:-1;;;;;6414:18:90;;:9;:18;;;;;;;;;;:50;;;;6483:26;:24;:26::i;:::-;-1:-1:-1;;;;;6475:49:90;;6471:153;;6534:26;:24;:26::i;:::-;-1:-1:-1;;;;;6534:39:90;;6574:7;6583:14;6599:17;6534:83;;;;;;;;;;;;;-1:-1:-1;;;;;6534:83:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6471:153;6072:556;;;;:::o;204:85:64:-;281:3;204:85;:::o;1858:510:74:-;2328:9;2316:22;2356:7;1858:510;:::o;7574:76:90:-;7630:15;;;;:5;;:15;;;;;:::i;:::-;;7574:76;:::o;7654:84::-;7714:19;;;;:7;;:19;;;;;:::i;7742:84::-;7798:9;:23;;-1:-1:-1;;7798:23:90;;;;;;;;;;;;7742:84::o;6632:596::-;-1:-1:-1;;;;;6711:21:90;;6703:67;;;;-1:-1:-1;;;6703:67:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6777:49;6798:7;6815:1;6819:6;6777:20;:49::i;:::-;6858:12;;6891:26;6858:12;6910:6;6891:18;:26::i;:::-;6876:12;:41;-1:-1:-1;;;;;6952:18:90;;6924:25;6952:18;;;;;;;;;;;;;6997:67;;;;;;;;;;;;6952:18;;6997:67;;7019:6;;6997:67;;;;;;:17;;:67;1649:189:13;1751:7;1782:12;1774:6;;;;1766:29;;;;-1:-1:-1;;;1766:29:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1813:5:13;;;1649:189::o;7830:107:90:-;;;;:::o;851:162:13:-;909:7;936:5;;;955:6;;;;947:46;;;;;-1:-1:-1;;;947:46:13;;;;;;;;;;;;;;;;;;;;;;;;;;;1257:128;1315:7;1337:43;1341:1;1344;1337:43;;;;;;;;;;;;;;;;;:3;:43::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;"
            },
            "methodIdentifiers": {
              "DEBT_TOKEN_REVISION()": "b9a7b622",
              "POOL()": "7535d246",
              "UNDERLYING_ASSET_ADDRESS()": "b16a19de",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "approveDelegation(address,uint256)": "c04a8a10",
              "balanceOf(address)": "70a08231",
              "borrowAllowance(address,address)": "6bd76d24",
              "burn(address,uint256,uint256)": "f5298aca",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "getIncentivesController()": "75d26413",
              "getScaledUserBalanceAndSupply(address)": "0afbcdc9",
              "increaseAllowance(address,uint256)": "39509351",
              "initialize(address,address,address,uint8,string,string,bytes)": "c222ec8a",
              "mint(address,address,uint256,uint256)": "b3f1c93d",
              "name()": "06fdde03",
              "scaledBalanceOf(address)": "1da24f3e",
              "scaledTotalSupply()": "b1bf962d",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "contracts/protocol/configuration/LendingPoolAddressesProvider.sol": {
        "LendingPoolAddressesProvider": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "marketId",
                  "type": "string"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "hasProxy",
                  "type": "bool"
                }
              ],
              "name": "AddressSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                }
              ],
              "name": "ConfigurationAdminUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                }
              ],
              "name": "EmergencyAdminUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                }
              ],
              "name": "LendingPoolCollateralManagerUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                }
              ],
              "name": "LendingPoolConfiguratorUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                }
              ],
              "name": "LendingPoolUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                }
              ],
              "name": "LendingRateOracleUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "newMarketId",
                  "type": "string"
                }
              ],
              "name": "MarketIdSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                }
              ],
              "name": "PriceOracleUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                }
              ],
              "name": "ProxyCreated",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                }
              ],
              "name": "getAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getEmergencyAdmin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getLendingPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getLendingPoolCollateralManager",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getLendingPoolConfigurator",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getLendingRateOracle",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getMarketId",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getPoolAdmin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getPriceOracle",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                }
              ],
              "name": "setAddress",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "id",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "implementationAddress",
                  "type": "address"
                }
              ],
              "name": "setAddressAsProxy",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "emergencyAdmin",
                  "type": "address"
                }
              ],
              "name": "setEmergencyAdmin",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "manager",
                  "type": "address"
                }
              ],
              "name": "setLendingPoolCollateralManager",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "configurator",
                  "type": "address"
                }
              ],
              "name": "setLendingPoolConfiguratorImpl",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                }
              ],
              "name": "setLendingPoolImpl",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "lendingRateOracle",
                  "type": "address"
                }
              ],
              "name": "setLendingRateOracle",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "marketId",
                  "type": "string"
                }
              ],
              "name": "setMarketId",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "name": "setPoolAdmin",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "priceOracle",
                  "type": "address"
                }
              ],
              "name": "setPriceOracle",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b5060405162001dca38038062001dca833981810160405260208110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b506040525050506000620000ff6200015b60201b60201c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000154816200015f565b50620002b0565b3390565b80516200017490600190602084019062000214565b507f5e667c32fd847cf8bce48ab3400175cbf107bdc82b2dea62e3364909dfaee799816040518080602001828103825283818151815260200191508051906020019080838360005b83811015620001d6578181015183820152602001620001bc565b50505050905090810190601f168015620002045780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200025757805160ff191683800117855562000287565b8280016001018555821562000287579182015b82811115620002875782518255916020019190600101906200026a565b506200029592915062000299565b5090565b5b808211156200029557600081556001016200029a565b611b0a80620002c06000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c8063715018a6116100b8578063c12542df1161007c578063c12542df14610347578063ca446dd91461036d578063ddcaa9ea14610399578063f2fde38b146103a1578063f67b1847146103c7578063fca513a81461046d57610142565b8063715018a614610301578063820d12741461030957806385c858b11461032f5780638da5cb5b14610337578063aecda3781461033f57610142565b8063398e55531161010a578063398e5553146101de578063530e784f14610204578063568ef4701461022a5780635aef021f146102a75780635dcc528c146102cd578063712d9171146102f957610142565b80630261bf8b1461014757806321f8a7211461016b578063283d62ad1461018857806335da3394146101b05780633618abba146101d6575b600080fd5b61014f610475565b604080516001600160a01b039092168252519081900360200190f35b61014f6004803603602081101561018157600080fd5b5035610494565b6101ae6004803603602081101561019e57600080fd5b50356001600160a01b03166104af565b005b6101ae600480360360208110156101c657600080fd5b50356001600160a01b0316610587565b61014f610664565b6101ae600480360360208110156101f457600080fd5b50356001600160a01b0316610685565b6101ae6004803603602081101561021a57600080fd5b50356001600160a01b0316610765565b61023261083f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026c578181015183820152602001610254565b50505050905090810190601f1680156102995780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ae600480360360208110156102bd57600080fd5b50356001600160a01b03166108d4565b6101ae600480360360408110156102e357600080fd5b50803590602001356001600160a01b031661097c565b61014f610a25565b6101ae610a45565b6101ae6004803603602081101561031f57600080fd5b50356001600160a01b0316610ae7565b61014f610bc8565b61014f610bef565b61014f610bfe565b6101ae6004803603602081101561035d57600080fd5b50356001600160a01b0316610c16565b6101ae6004803603604081101561038357600080fd5b50803590602001356001600160a01b0316610ccb565b61014f610d8c565b6101ae600480360360208110156103b757600080fd5b50356001600160a01b0316610da9565b6101ae600480360360208110156103dd57600080fd5b8101906020810181356401000000008111156103f857600080fd5b82018360208201111561040a57600080fd5b8035906020019184600183028401116401000000008311171561042c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ea1945050505050565b61014f610f05565b600061048f6b13115391125391d7d413d3d360a21b610494565b905090565b6000908152600260205260409020546001600160a01b031690565b6104b7610f1f565b6000546001600160a01b03908116911614610507576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b692827a7a62fa0a226a4a760b11b600090815260026020527f8625fbc469bac10fd11de1d783dcd446542784dbcc535ef64a1da61860fda74c80546001600160a01b0319166001600160a01b03841690811790915560405190917fc20a317155a9e7d84e06b716b4b355d47742ab9f8c5d630e7f556553f582430d91a250565b61058f610f1f565b6000546001600160a01b039081169116146105df576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b6e22a6a2a923a2a721acafa0a226a4a760891b600090815260026020527f767aa9c986e1d88108b2558f00fbd21b689a0397581446e2e868cd70421026cc80546001600160a01b0319166001600160a01b03841690811790915560405190917fe19673fc861bfeb894cf2d6b7662505497ef31c0f489b742db24ee331082691691a250565b600061048f724c454e44494e475f524154455f4f5241434c4560681b610494565b61068d610f1f565b6000546001600160a01b039081169116146106dd576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b7121a7a62620aa22a920a62fa6a0a720a3a2a960711b600090815260026020527f65e3f3080e9127c1765503a54b8dbb495249e66169f096dfc87ee63bed17e22c80546001600160a01b0319166001600160a01b03841690811790915560405190917f991888326f0eab3df6084aadb82bee6781b5c9aa75379e8bc50ae8693454163891a250565b61076d610f1f565b6000546001600160a01b039081169116146107bd576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b6b50524943455f4f5241434c4560a01b600090815260026020527f740f710666bd7a12af42df98311e541e47f7fd33d382d11602457a6d540cbd6380546001600160a01b0319166001600160a01b03841690811790915560405190917fefe8ab924ca486283a79dc604baa67add51afb82af1db8ac386ebbba643cdffd91a250565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156108ca5780601f1061089f576101008083540402835291602001916108ca565b820191906000526020600020905b8154815290600101906020018083116108ad57829003601f168201915b5050505050905090565b6108dc610f1f565b6000546001600160a01b0390811691161461092c576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b6109456b13115391125391d7d413d3d360a21b82610f23565b6040516001600160a01b038216907fc4e6c6cdf28d0edbd8bcf071d724d33cc2e7a30be7d06443925656e9cb492aa490600090a250565b610984610f1f565b6000546001600160a01b039081169116146109d4576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b6109de8282610f23565b604080518381526001602082015281516001600160a01b038416927ff2689d5d5cd0c639e137642cae5d40afced201a1a0327e7ac9358461dc9fff31928290030190a25050565b600061048f7121a7a62620aa22a920a62fa6a0a720a3a2a960711b610494565b610a4d610f1f565b6000546001600160a01b03908116911614610a9d576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610aef610f1f565b6000546001600160a01b03908116911614610b3f576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b724c454e44494e475f524154455f4f5241434c4560681b600090815260026020527f10f0e20294ece4bd93e7a467dbf22ab9ab1740ebd0a532cc53066601e880c0cf80546001600160a01b0319166001600160a01b03841690811790915560405190917f5c29179aba6942020a8a2d38f65de02fb6b7f784e7f049ed3a3cab97621859b591a250565b600061048f782622a72224a723afa827a7a62fa1a7a72324a3aaa920aa27a960391b610494565b6000546001600160a01b031690565b600061048f692827a7a62fa0a226a4a760b11b610494565b610c1e610f1f565b6000546001600160a01b03908116911614610c6e576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b610c94782622a72224a723afa827a7a62fa1a7a72324a3aaa920aa27a960391b82610f23565b6040516001600160a01b038216907fdfabe479bad36782fb1e77fbfddd4e382671713527e4786cfc93a022ae76372990600090a250565b610cd3610f1f565b6000546001600160a01b03908116911614610d23576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b600082815260026020908152604080832080546001600160a01b0319166001600160a01b03861690811790915581518681529283019390935280517ff2689d5d5cd0c639e137642cae5d40afced201a1a0327e7ac9358461dc9fff319281900390910190a25050565b600061048f6e22a6a2a923a2a721acafa0a226a4a760891b610494565b610db1610f1f565b6000546001600160a01b03908116911614610e01576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b6001600160a01b038116610e465760405162461bcd60e51b8152600401808060200182810382526026815260200180611a8f6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610ea9610f1f565b6000546001600160a01b03908116911614610ef9576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b610f02816111cb565b50565b600061048f6b50524943455f4f5241434c4560a01b610494565b3390565b6000828152600260209081526040918290205482513060248083019190915284518083039091018152604490910190935290820180516001600160e01b031663189acdbd60e31b1790526001600160a01b0316908190816110f25730604051610f8b9061127b565b6001600160a01b03909116815260405190819003602001906000f080158015610fb8573d6000803e3d6000fd5b509150816001600160a01b031663d1f5789485836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561102757818101518382015260200161100f565b50505050905090810190601f1680156110545780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561107457600080fd5b505af1158015611088573d6000803e3d6000fd5b50505060008681526002602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155825189815292519093507f1eb35cb4b5bbb23d152f3b4016a5a46c37a07ae930ed0956aba951e2311424389281900390910190a26111c4565b816001600160a01b0316634f1ef28685836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561115e578181015183820152602001611146565b50505050905090810190601f16801561118b5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b1580156111ab57600080fd5b505af11580156111bf573d6000803e3d6000fd5b505050505b5050505050565b80516111de906001906020840190611288565b507f5e667c32fd847cf8bce48ab3400175cbf107bdc82b2dea62e3364909dfaee799816040518080602001828103825283818151815260200191508051906020019080838360005b8381101561123e578181015183820152602001611226565b50505050905090810190601f16801561126b5780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b6107738061131c83390190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106112c957805160ff19168380011785556112f6565b828001600101855582156112f6579182015b828111156112f65782518255916020019190600101906112db565b50611302929150611306565b5090565b5b80821115611302576000815560010161130756fe60a060405234801561001057600080fd5b506040516107733803806107738339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b03166106f36100806000398061022852806102725280610331528061045e528061048752806105af52506106f36000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b14610107578063d1f5789414610138578063f851a440146101ee575b610052610203565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661021d565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b509092509050610267565b34801561011357600080fd5b5061011c610324565b604080516001600160a01b039092168252519081900360200190f35b6100526004803603604081101561014e57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561017957600080fd5b82018360208201111561018b57600080fd5b803590602001918460018302840111640100000000831117156101ad57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610371945050505050565b3480156101fa57600080fd5b5061011c610451565b61020b6104ab565b61021b6102166104b3565b6104d8565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561025c57610257816104fc565b610264565b610264610203565b50565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610317576102a1836104fc565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146102fe576040519150601f19603f3d011682016040523d82523d6000602084013e610303565b606091505b505090508061031157600080fd5b5061031f565b61031f610203565b505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156103665761035f6104b3565b905061036e565b61036e610203565b90565b600061037b6104b3565b6001600160a01b03161461038e57600080fd5b6103978261053c565b80511561044d576000826001600160a01b0316826040518082805190602001908083835b602083106103da5780518252601f1990920191602091820191016103bb565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461043a576040519150601f19603f3d011682016040523d82523d6000602084013e61043f565b606091505b505090508061031f57600080fd5b5050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561036657507f000000000000000000000000000000000000000000000000000000000000000061036e565b61021b6105a4565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156104f7573d6000f35b3d6000fd5b6105058161053c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b61054581610614565b6105805760405162461bcd60e51b815260040180806020018281038252603b815260200180610683603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561060c5760405162461bcd60e51b81526004018080602001828103825260328152602001806106516032913960400191505060405180910390fd5b61021b61021b565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061064857508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212203801682b75a74ce25ca5dbe58739c5b62298b707b9119c9413881c56f29bcfa864736f6c634300060c00334f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220f13a46c313fb355d6a9419920c6e2fd982efdc1f9b41ed61f3e408eb17ac382764736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1DCA CODESIZE SUB DUP1 PUSH3 0x1DCA DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP POP PUSH1 0x0 PUSH3 0xFF PUSH3 0x15B PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH3 0x154 DUP2 PUSH3 0x15F JUMP JUMPDEST POP PUSH3 0x2B0 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH3 0x174 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x214 JUMP JUMPDEST POP PUSH32 0x5E667C32FD847CF8BCE48AB3400175CBF107BDC82B2DEA62E3364909DFAEE799 DUP2 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x1D6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x1BC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x204 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x257 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x287 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x287 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x287 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x26A JUMP JUMPDEST POP PUSH3 0x295 SWAP3 SWAP2 POP PUSH3 0x299 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x295 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x29A JUMP JUMPDEST PUSH2 0x1B0A DUP1 PUSH3 0x2C0 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x142 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xC12542DF GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xC12542DF EQ PUSH2 0x347 JUMPI DUP1 PUSH4 0xCA446DD9 EQ PUSH2 0x36D JUMPI DUP1 PUSH4 0xDDCAA9EA EQ PUSH2 0x399 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x3A1 JUMPI DUP1 PUSH4 0xF67B1847 EQ PUSH2 0x3C7 JUMPI DUP1 PUSH4 0xFCA513A8 EQ PUSH2 0x46D JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x301 JUMPI DUP1 PUSH4 0x820D1274 EQ PUSH2 0x309 JUMPI DUP1 PUSH4 0x85C858B1 EQ PUSH2 0x32F JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x337 JUMPI DUP1 PUSH4 0xAECDA378 EQ PUSH2 0x33F JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x398E5553 GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x398E5553 EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x530E784F EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0x568EF470 EQ PUSH2 0x22A JUMPI DUP1 PUSH4 0x5AEF021F EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0x5DCC528C EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0x712D9171 EQ PUSH2 0x2F9 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x261BF8B EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x21F8A721 EQ PUSH2 0x16B JUMPI DUP1 PUSH4 0x283D62AD EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x35DA3394 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x3618ABBA EQ PUSH2 0x1D6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F PUSH2 0x475 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x494 JUMP JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4AF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x587 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x664 JUMP JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x685 JUMP JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x765 JUMP JUMPDEST PUSH2 0x232 PUSH2 0x83F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x26C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x254 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x299 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8D4 JUMP JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x97C JUMP JUMPDEST PUSH2 0x14F PUSH2 0xA25 JUMP JUMPDEST PUSH2 0x1AE PUSH2 0xA45 JUMP JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x14F PUSH2 0xBC8 JUMP JUMPDEST PUSH2 0x14F PUSH2 0xBEF JUMP JUMPDEST PUSH2 0x14F PUSH2 0xBFE JUMP JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x35D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC16 JUMP JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x383 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xCCB JUMP JUMPDEST PUSH2 0x14F PUSH2 0xD8C JUMP JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDA9 JUMP JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x40A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x42C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xEA1 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x14F PUSH2 0xF05 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48F PUSH12 0x13115391125391D7D413D3D3 PUSH1 0xA2 SHL PUSH2 0x494 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x4B7 PUSH2 0xF1F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x507 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1AB5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH10 0x2827A7A62FA0A226A4A7 PUSH1 0xB1 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH32 0x8625FBC469BAC10FD11DE1D783DCD446542784DBCC535EF64A1DA61860FDA74C DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 PUSH32 0xC20A317155A9E7D84E06B716B4B355D47742AB9F8C5D630E7F556553F582430D SWAP2 LOG2 POP JUMP JUMPDEST PUSH2 0x58F PUSH2 0xF1F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x5DF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1AB5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH15 0x22A6A2A923A2A721ACAFA0A226A4A7 PUSH1 0x89 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH32 0x767AA9C986E1D88108B2558F00FBD21B689A0397581446E2E868CD70421026CC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 PUSH32 0xE19673FC861BFEB894CF2D6B7662505497EF31C0F489B742DB24EE3310826916 SWAP2 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48F PUSH19 0x4C454E44494E475F524154455F4F5241434C45 PUSH1 0x68 SHL PUSH2 0x494 JUMP JUMPDEST PUSH2 0x68D PUSH2 0xF1F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x6DD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1AB5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH18 0x21A7A62620AA22A920A62FA6A0A720A3A2A9 PUSH1 0x71 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH32 0x65E3F3080E9127C1765503A54B8DBB495249E66169F096DFC87EE63BED17E22C DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 PUSH32 0x991888326F0EAB3DF6084AADB82BEE6781B5C9AA75379E8BC50AE86934541638 SWAP2 LOG2 POP JUMP JUMPDEST PUSH2 0x76D PUSH2 0xF1F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x7BD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1AB5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH12 0x50524943455F4F5241434C45 PUSH1 0xA0 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH32 0x740F710666BD7A12AF42DF98311E541E47F7FD33D382D11602457A6D540CBD63 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 PUSH32 0xEFE8AB924CA486283A79DC604BAA67ADD51AFB82AF1DB8AC386EBBBA643CDFFD SWAP2 LOG2 POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 DUP8 DUP10 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x8CA JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x89F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x8CA JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x8AD JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x8DC PUSH2 0xF1F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x92C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1AB5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x945 PUSH12 0x13115391125391D7D413D3D3 PUSH1 0xA2 SHL DUP3 PUSH2 0xF23 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xC4E6C6CDF28D0EDBD8BCF071D724D33CC2E7A30BE7D06443925656E9CB492AA4 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x984 PUSH2 0xF1F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x9D4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1AB5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x9DE DUP3 DUP3 PUSH2 0xF23 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP3 PUSH32 0xF2689D5D5CD0C639E137642CAE5D40AFCED201A1A0327E7AC9358461DC9FFF31 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48F PUSH18 0x21A7A62620AA22A920A62FA6A0A720A3A2A9 PUSH1 0x71 SHL PUSH2 0x494 JUMP JUMPDEST PUSH2 0xA4D PUSH2 0xF1F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xA9D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1AB5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xAEF PUSH2 0xF1F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xB3F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1AB5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH19 0x4C454E44494E475F524154455F4F5241434C45 PUSH1 0x68 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH32 0x10F0E20294ECE4BD93E7A467DBF22AB9AB1740EBD0A532CC53066601E880C0CF DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 PUSH32 0x5C29179ABA6942020A8A2D38F65DE02FB6B7F784E7F049ED3A3CAB97621859B5 SWAP2 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48F PUSH25 0x2622A72224A723AFA827A7A62FA1A7A72324A3AAA920AA27A9 PUSH1 0x39 SHL PUSH2 0x494 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48F PUSH10 0x2827A7A62FA0A226A4A7 PUSH1 0xB1 SHL PUSH2 0x494 JUMP JUMPDEST PUSH2 0xC1E PUSH2 0xF1F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xC6E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1AB5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xC94 PUSH25 0x2622A72224A723AFA827A7A62FA1A7A72324A3AAA920AA27A9 PUSH1 0x39 SHL DUP3 PUSH2 0xF23 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xDFABE479BAD36782FB1E77FBFDDD4E382671713527E4786CFC93A022AE763729 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0xCD3 PUSH2 0xF1F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xD23 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1AB5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP3 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP1 MLOAD PUSH32 0xF2689D5D5CD0C639E137642CAE5D40AFCED201A1A0327E7AC9358461DC9FFF31 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48F PUSH15 0x22A6A2A923A2A721ACAFA0A226A4A7 PUSH1 0x89 SHL PUSH2 0x494 JUMP JUMPDEST PUSH2 0xDB1 PUSH2 0xF1F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xE01 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1AB5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xE46 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A8F PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xEA9 PUSH2 0xF1F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xEF9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1AB5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xF02 DUP2 PUSH2 0x11CB JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48F PUSH12 0x50524943455F4F5241434C45 PUSH1 0xA0 SHL PUSH2 0x494 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD ADDRESS PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD SWAP1 SWAP4 MSTORE SWAP1 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 SWAP1 DUP2 PUSH2 0x10F2 JUMPI ADDRESS PUSH1 0x40 MLOAD PUSH2 0xF8B SWAP1 PUSH2 0x127B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0xFB8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD1F57894 DUP6 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1027 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x100F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1054 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1074 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1088 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD DUP10 DUP2 MSTORE SWAP3 MLOAD SWAP1 SWAP4 POP PUSH32 0x1EB35CB4B5BBB23D152F3B4016A5A46C37A07AE930ED0956ABA951E231142438 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 PUSH2 0x11C4 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4F1EF286 DUP6 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x115E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1146 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x118B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x11DE SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1288 JUMP JUMPDEST POP PUSH32 0x5E667C32FD847CF8BCE48AB3400175CBF107BDC82B2DEA62E3364909DFAEE799 DUP2 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x123E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1226 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x126B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x773 DUP1 PUSH2 0x131C DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x12C9 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x12F6 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x12F6 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x12F6 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x12DB JUMP JUMPDEST POP PUSH2 0x1302 SWAP3 SWAP2 POP PUSH2 0x1306 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1302 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1307 JUMP INVALID PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x773 CODESIZE SUB DUP1 PUSH2 0x773 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 DUP2 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6F3 PUSH2 0x80 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x228 MSTORE DUP1 PUSH2 0x272 MSTORE DUP1 PUSH2 0x331 MSTORE DUP1 PUSH2 0x45E MSTORE DUP1 PUSH2 0x487 MSTORE DUP1 PUSH2 0x5AF MSTORE POP PUSH2 0x6F3 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x54 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x87 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x107 JUMPI DUP1 PUSH4 0xD1F57894 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x1EE JUMPI JUMPDEST PUSH2 0x52 PUSH2 0x203 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x21D JUMP JUMPDEST PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x267 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11C PUSH2 0x324 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x14E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x371 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11C PUSH2 0x451 JUMP JUMPDEST PUSH2 0x20B PUSH2 0x4AB JUMP JUMPDEST PUSH2 0x21B PUSH2 0x216 PUSH2 0x4B3 JUMP JUMPDEST PUSH2 0x4D8 JUMP JUMPDEST JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x25C JUMPI PUSH2 0x257 DUP2 PUSH2 0x4FC JUMP JUMPDEST PUSH2 0x264 JUMP JUMPDEST PUSH2 0x264 PUSH2 0x203 JUMP JUMPDEST POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x317 JUMPI PUSH2 0x2A1 DUP4 PUSH2 0x4FC JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2FE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x303 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31F JUMP JUMPDEST PUSH2 0x31F PUSH2 0x203 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x366 JUMPI PUSH2 0x35F PUSH2 0x4B3 JUMP JUMPDEST SWAP1 POP PUSH2 0x36E JUMP JUMPDEST PUSH2 0x36E PUSH2 0x203 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37B PUSH2 0x4B3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x397 DUP3 PUSH2 0x53C JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x44D JUMPI PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3DA JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3BB JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x43A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x43F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x366 JUMPI POP PUSH32 0x0 PUSH2 0x36E JUMP JUMPDEST PUSH2 0x21B PUSH2 0x5A4 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x4F7 JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x505 DUP2 PUSH2 0x53C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x545 DUP2 PUSH2 0x614 JUMP JUMPDEST PUSH2 0x580 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x683 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SSTORE JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x60C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x651 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x21B PUSH2 0x21B JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x648 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID NUMBER PUSH2 0x6E6E PUSH16 0x742063616C6C2066616C6C6261636B20 PUSH7 0x756E6374696F6E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH17 0x726F78792061646D696E43616E6E6F7420 PUSH20 0x657420612070726F787920696D706C656D656E74 PUSH2 0x7469 PUSH16 0x6E20746F2061206E6F6E2D636F6E7472 PUSH2 0x6374 KECCAK256 PUSH2 0x6464 PUSH19 0x657373A26469706673582212203801682B75A7 0x4C 0xE2 0x5C 0xA5 0xDB 0xE5 DUP8 CODECOPY 0xC5 0xB6 0x22 SWAP9 0xB7 SMOD 0xB9 GT SWAP13 SWAP5 SGT DUP9 SHR JUMP CALLCODE SWAP12 0xCF 0xA8 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F20616464726573734F776E61626C653A2063616C6C657220 PUSH10 0x73206E6F742074686520 PUSH16 0x776E6572A2646970667358221220F13A CHAINID 0xC3 SGT 0xFB CALLDATALOAD 0x5D PUSH11 0x9419920C6E2FD982EFDC1F SWAP12 COINBASE 0xED PUSH2 0xF3E4 ADDMOD 0xEB OR 0xAC CODESIZE 0x27 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "771:7325:65:-:0;;;1408:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1408:76:65;;;;;;;;;;-1:-1:-1;1408:76:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;844:17:11;864:12;:10;;;:12;;:::i;:::-;882:6;:18;;-1:-1:-1;;;;;;882:18:11;-1:-1:-1;;;;;882:18:11;;;;;;;911:43;;882:18;;-1:-1:-1;882:18:11;911:43;;882:6;;911:43;-1:-1:-1;1457:22:65;1470:8;1457:12;:22::i;:::-;1408:76;771:7325;;587:98:7;670:10;587:98;:::o;7976:118:65:-;8037:20;;;;:9;;:20;;;;;:::i;:::-;;8068:21;8080:8;8068:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7976:118;:::o;771:7325::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;771:7325:65;;;-1:-1:-1;771:7325:65;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101425760003560e01c8063715018a6116100b8578063c12542df1161007c578063c12542df14610347578063ca446dd91461036d578063ddcaa9ea14610399578063f2fde38b146103a1578063f67b1847146103c7578063fca513a81461046d57610142565b8063715018a614610301578063820d12741461030957806385c858b11461032f5780638da5cb5b14610337578063aecda3781461033f57610142565b8063398e55531161010a578063398e5553146101de578063530e784f14610204578063568ef4701461022a5780635aef021f146102a75780635dcc528c146102cd578063712d9171146102f957610142565b80630261bf8b1461014757806321f8a7211461016b578063283d62ad1461018857806335da3394146101b05780633618abba146101d6575b600080fd5b61014f610475565b604080516001600160a01b039092168252519081900360200190f35b61014f6004803603602081101561018157600080fd5b5035610494565b6101ae6004803603602081101561019e57600080fd5b50356001600160a01b03166104af565b005b6101ae600480360360208110156101c657600080fd5b50356001600160a01b0316610587565b61014f610664565b6101ae600480360360208110156101f457600080fd5b50356001600160a01b0316610685565b6101ae6004803603602081101561021a57600080fd5b50356001600160a01b0316610765565b61023261083f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026c578181015183820152602001610254565b50505050905090810190601f1680156102995780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ae600480360360208110156102bd57600080fd5b50356001600160a01b03166108d4565b6101ae600480360360408110156102e357600080fd5b50803590602001356001600160a01b031661097c565b61014f610a25565b6101ae610a45565b6101ae6004803603602081101561031f57600080fd5b50356001600160a01b0316610ae7565b61014f610bc8565b61014f610bef565b61014f610bfe565b6101ae6004803603602081101561035d57600080fd5b50356001600160a01b0316610c16565b6101ae6004803603604081101561038357600080fd5b50803590602001356001600160a01b0316610ccb565b61014f610d8c565b6101ae600480360360208110156103b757600080fd5b50356001600160a01b0316610da9565b6101ae600480360360208110156103dd57600080fd5b8101906020810181356401000000008111156103f857600080fd5b82018360208201111561040a57600080fd5b8035906020019184600183028401116401000000008311171561042c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ea1945050505050565b61014f610f05565b600061048f6b13115391125391d7d413d3d360a21b610494565b905090565b6000908152600260205260409020546001600160a01b031690565b6104b7610f1f565b6000546001600160a01b03908116911614610507576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b692827a7a62fa0a226a4a760b11b600090815260026020527f8625fbc469bac10fd11de1d783dcd446542784dbcc535ef64a1da61860fda74c80546001600160a01b0319166001600160a01b03841690811790915560405190917fc20a317155a9e7d84e06b716b4b355d47742ab9f8c5d630e7f556553f582430d91a250565b61058f610f1f565b6000546001600160a01b039081169116146105df576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b6e22a6a2a923a2a721acafa0a226a4a760891b600090815260026020527f767aa9c986e1d88108b2558f00fbd21b689a0397581446e2e868cd70421026cc80546001600160a01b0319166001600160a01b03841690811790915560405190917fe19673fc861bfeb894cf2d6b7662505497ef31c0f489b742db24ee331082691691a250565b600061048f724c454e44494e475f524154455f4f5241434c4560681b610494565b61068d610f1f565b6000546001600160a01b039081169116146106dd576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b7121a7a62620aa22a920a62fa6a0a720a3a2a960711b600090815260026020527f65e3f3080e9127c1765503a54b8dbb495249e66169f096dfc87ee63bed17e22c80546001600160a01b0319166001600160a01b03841690811790915560405190917f991888326f0eab3df6084aadb82bee6781b5c9aa75379e8bc50ae8693454163891a250565b61076d610f1f565b6000546001600160a01b039081169116146107bd576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b6b50524943455f4f5241434c4560a01b600090815260026020527f740f710666bd7a12af42df98311e541e47f7fd33d382d11602457a6d540cbd6380546001600160a01b0319166001600160a01b03841690811790915560405190917fefe8ab924ca486283a79dc604baa67add51afb82af1db8ac386ebbba643cdffd91a250565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156108ca5780601f1061089f576101008083540402835291602001916108ca565b820191906000526020600020905b8154815290600101906020018083116108ad57829003601f168201915b5050505050905090565b6108dc610f1f565b6000546001600160a01b0390811691161461092c576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b6109456b13115391125391d7d413d3d360a21b82610f23565b6040516001600160a01b038216907fc4e6c6cdf28d0edbd8bcf071d724d33cc2e7a30be7d06443925656e9cb492aa490600090a250565b610984610f1f565b6000546001600160a01b039081169116146109d4576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b6109de8282610f23565b604080518381526001602082015281516001600160a01b038416927ff2689d5d5cd0c639e137642cae5d40afced201a1a0327e7ac9358461dc9fff31928290030190a25050565b600061048f7121a7a62620aa22a920a62fa6a0a720a3a2a960711b610494565b610a4d610f1f565b6000546001600160a01b03908116911614610a9d576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610aef610f1f565b6000546001600160a01b03908116911614610b3f576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b724c454e44494e475f524154455f4f5241434c4560681b600090815260026020527f10f0e20294ece4bd93e7a467dbf22ab9ab1740ebd0a532cc53066601e880c0cf80546001600160a01b0319166001600160a01b03841690811790915560405190917f5c29179aba6942020a8a2d38f65de02fb6b7f784e7f049ed3a3cab97621859b591a250565b600061048f782622a72224a723afa827a7a62fa1a7a72324a3aaa920aa27a960391b610494565b6000546001600160a01b031690565b600061048f692827a7a62fa0a226a4a760b11b610494565b610c1e610f1f565b6000546001600160a01b03908116911614610c6e576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b610c94782622a72224a723afa827a7a62fa1a7a72324a3aaa920aa27a960391b82610f23565b6040516001600160a01b038216907fdfabe479bad36782fb1e77fbfddd4e382671713527e4786cfc93a022ae76372990600090a250565b610cd3610f1f565b6000546001600160a01b03908116911614610d23576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b600082815260026020908152604080832080546001600160a01b0319166001600160a01b03861690811790915581518681529283019390935280517ff2689d5d5cd0c639e137642cae5d40afced201a1a0327e7ac9358461dc9fff319281900390910190a25050565b600061048f6e22a6a2a923a2a721acafa0a226a4a760891b610494565b610db1610f1f565b6000546001600160a01b03908116911614610e01576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b6001600160a01b038116610e465760405162461bcd60e51b8152600401808060200182810382526026815260200180611a8f6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610ea9610f1f565b6000546001600160a01b03908116911614610ef9576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b610f02816111cb565b50565b600061048f6b50524943455f4f5241434c4560a01b610494565b3390565b6000828152600260209081526040918290205482513060248083019190915284518083039091018152604490910190935290820180516001600160e01b031663189acdbd60e31b1790526001600160a01b0316908190816110f25730604051610f8b9061127b565b6001600160a01b03909116815260405190819003602001906000f080158015610fb8573d6000803e3d6000fd5b509150816001600160a01b031663d1f5789485836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561102757818101518382015260200161100f565b50505050905090810190601f1680156110545780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561107457600080fd5b505af1158015611088573d6000803e3d6000fd5b50505060008681526002602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155825189815292519093507f1eb35cb4b5bbb23d152f3b4016a5a46c37a07ae930ed0956aba951e2311424389281900390910190a26111c4565b816001600160a01b0316634f1ef28685836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561115e578181015183820152602001611146565b50505050905090810190601f16801561118b5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b1580156111ab57600080fd5b505af11580156111bf573d6000803e3d6000fd5b505050505b5050505050565b80516111de906001906020840190611288565b507f5e667c32fd847cf8bce48ab3400175cbf107bdc82b2dea62e3364909dfaee799816040518080602001828103825283818151815260200191508051906020019080838360005b8381101561123e578181015183820152602001611226565b50505050905090810190601f16801561126b5780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b6107738061131c83390190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106112c957805160ff19168380011785556112f6565b828001600101855582156112f6579182015b828111156112f65782518255916020019190600101906112db565b50611302929150611306565b5090565b5b80821115611302576000815560010161130756fe60a060405234801561001057600080fd5b506040516107733803806107738339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b03166106f36100806000398061022852806102725280610331528061045e528061048752806105af52506106f36000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b14610107578063d1f5789414610138578063f851a440146101ee575b610052610203565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661021d565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b509092509050610267565b34801561011357600080fd5b5061011c610324565b604080516001600160a01b039092168252519081900360200190f35b6100526004803603604081101561014e57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561017957600080fd5b82018360208201111561018b57600080fd5b803590602001918460018302840111640100000000831117156101ad57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610371945050505050565b3480156101fa57600080fd5b5061011c610451565b61020b6104ab565b61021b6102166104b3565b6104d8565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561025c57610257816104fc565b610264565b610264610203565b50565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610317576102a1836104fc565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146102fe576040519150601f19603f3d011682016040523d82523d6000602084013e610303565b606091505b505090508061031157600080fd5b5061031f565b61031f610203565b505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156103665761035f6104b3565b905061036e565b61036e610203565b90565b600061037b6104b3565b6001600160a01b03161461038e57600080fd5b6103978261053c565b80511561044d576000826001600160a01b0316826040518082805190602001908083835b602083106103da5780518252601f1990920191602091820191016103bb565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461043a576040519150601f19603f3d011682016040523d82523d6000602084013e61043f565b606091505b505090508061031f57600080fd5b5050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561036657507f000000000000000000000000000000000000000000000000000000000000000061036e565b61021b6105a4565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156104f7573d6000f35b3d6000fd5b6105058161053c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b61054581610614565b6105805760405162461bcd60e51b815260040180806020018281038252603b815260200180610683603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561060c5760405162461bcd60e51b81526004018080602001828103825260328152602001806106516032913960400191505060405180910390fd5b61021b61021b565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061064857508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212203801682b75a74ce25ca5dbe58739c5b62298b707b9119c9413881c56f29bcfa864736f6c634300060c00334f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220f13a46c313fb355d6a9419920c6e2fd982efdc1f9b41ed61f3e408eb17ac382764736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x142 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xC12542DF GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xC12542DF EQ PUSH2 0x347 JUMPI DUP1 PUSH4 0xCA446DD9 EQ PUSH2 0x36D JUMPI DUP1 PUSH4 0xDDCAA9EA EQ PUSH2 0x399 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x3A1 JUMPI DUP1 PUSH4 0xF67B1847 EQ PUSH2 0x3C7 JUMPI DUP1 PUSH4 0xFCA513A8 EQ PUSH2 0x46D JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x301 JUMPI DUP1 PUSH4 0x820D1274 EQ PUSH2 0x309 JUMPI DUP1 PUSH4 0x85C858B1 EQ PUSH2 0x32F JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x337 JUMPI DUP1 PUSH4 0xAECDA378 EQ PUSH2 0x33F JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x398E5553 GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x398E5553 EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x530E784F EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0x568EF470 EQ PUSH2 0x22A JUMPI DUP1 PUSH4 0x5AEF021F EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0x5DCC528C EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0x712D9171 EQ PUSH2 0x2F9 JUMPI PUSH2 0x142 JUMP JUMPDEST DUP1 PUSH4 0x261BF8B EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x21F8A721 EQ PUSH2 0x16B JUMPI DUP1 PUSH4 0x283D62AD EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x35DA3394 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x3618ABBA EQ PUSH2 0x1D6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F PUSH2 0x475 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x14F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x494 JUMP JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4AF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x587 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x664 JUMP JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x685 JUMP JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x765 JUMP JUMPDEST PUSH2 0x232 PUSH2 0x83F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x26C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x254 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x299 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8D4 JUMP JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x97C JUMP JUMPDEST PUSH2 0x14F PUSH2 0xA25 JUMP JUMPDEST PUSH2 0x1AE PUSH2 0xA45 JUMP JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x14F PUSH2 0xBC8 JUMP JUMPDEST PUSH2 0x14F PUSH2 0xBEF JUMP JUMPDEST PUSH2 0x14F PUSH2 0xBFE JUMP JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x35D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC16 JUMP JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x383 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xCCB JUMP JUMPDEST PUSH2 0x14F PUSH2 0xD8C JUMP JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDA9 JUMP JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x40A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x42C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xEA1 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x14F PUSH2 0xF05 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48F PUSH12 0x13115391125391D7D413D3D3 PUSH1 0xA2 SHL PUSH2 0x494 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x4B7 PUSH2 0xF1F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x507 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1AB5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH10 0x2827A7A62FA0A226A4A7 PUSH1 0xB1 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH32 0x8625FBC469BAC10FD11DE1D783DCD446542784DBCC535EF64A1DA61860FDA74C DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 PUSH32 0xC20A317155A9E7D84E06B716B4B355D47742AB9F8C5D630E7F556553F582430D SWAP2 LOG2 POP JUMP JUMPDEST PUSH2 0x58F PUSH2 0xF1F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x5DF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1AB5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH15 0x22A6A2A923A2A721ACAFA0A226A4A7 PUSH1 0x89 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH32 0x767AA9C986E1D88108B2558F00FBD21B689A0397581446E2E868CD70421026CC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 PUSH32 0xE19673FC861BFEB894CF2D6B7662505497EF31C0F489B742DB24EE3310826916 SWAP2 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48F PUSH19 0x4C454E44494E475F524154455F4F5241434C45 PUSH1 0x68 SHL PUSH2 0x494 JUMP JUMPDEST PUSH2 0x68D PUSH2 0xF1F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x6DD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1AB5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH18 0x21A7A62620AA22A920A62FA6A0A720A3A2A9 PUSH1 0x71 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH32 0x65E3F3080E9127C1765503A54B8DBB495249E66169F096DFC87EE63BED17E22C DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 PUSH32 0x991888326F0EAB3DF6084AADB82BEE6781B5C9AA75379E8BC50AE86934541638 SWAP2 LOG2 POP JUMP JUMPDEST PUSH2 0x76D PUSH2 0xF1F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x7BD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1AB5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH12 0x50524943455F4F5241434C45 PUSH1 0xA0 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH32 0x740F710666BD7A12AF42DF98311E541E47F7FD33D382D11602457A6D540CBD63 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 PUSH32 0xEFE8AB924CA486283A79DC604BAA67ADD51AFB82AF1DB8AC386EBBBA643CDFFD SWAP2 LOG2 POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 DUP8 DUP10 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x8CA JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x89F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x8CA JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x8AD JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x8DC PUSH2 0xF1F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x92C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1AB5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x945 PUSH12 0x13115391125391D7D413D3D3 PUSH1 0xA2 SHL DUP3 PUSH2 0xF23 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xC4E6C6CDF28D0EDBD8BCF071D724D33CC2E7A30BE7D06443925656E9CB492AA4 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x984 PUSH2 0xF1F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x9D4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1AB5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x9DE DUP3 DUP3 PUSH2 0xF23 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP3 PUSH32 0xF2689D5D5CD0C639E137642CAE5D40AFCED201A1A0327E7AC9358461DC9FFF31 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48F PUSH18 0x21A7A62620AA22A920A62FA6A0A720A3A2A9 PUSH1 0x71 SHL PUSH2 0x494 JUMP JUMPDEST PUSH2 0xA4D PUSH2 0xF1F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xA9D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1AB5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xAEF PUSH2 0xF1F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xB3F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1AB5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH19 0x4C454E44494E475F524154455F4F5241434C45 PUSH1 0x68 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH32 0x10F0E20294ECE4BD93E7A467DBF22AB9AB1740EBD0A532CC53066601E880C0CF DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 PUSH32 0x5C29179ABA6942020A8A2D38F65DE02FB6B7F784E7F049ED3A3CAB97621859B5 SWAP2 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48F PUSH25 0x2622A72224A723AFA827A7A62FA1A7A72324A3AAA920AA27A9 PUSH1 0x39 SHL PUSH2 0x494 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48F PUSH10 0x2827A7A62FA0A226A4A7 PUSH1 0xB1 SHL PUSH2 0x494 JUMP JUMPDEST PUSH2 0xC1E PUSH2 0xF1F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xC6E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1AB5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xC94 PUSH25 0x2622A72224A723AFA827A7A62FA1A7A72324A3AAA920AA27A9 PUSH1 0x39 SHL DUP3 PUSH2 0xF23 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xDFABE479BAD36782FB1E77FBFDDD4E382671713527E4786CFC93A022AE763729 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0xCD3 PUSH2 0xF1F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xD23 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1AB5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP3 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP1 MLOAD PUSH32 0xF2689D5D5CD0C639E137642CAE5D40AFCED201A1A0327E7AC9358461DC9FFF31 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48F PUSH15 0x22A6A2A923A2A721ACAFA0A226A4A7 PUSH1 0x89 SHL PUSH2 0x494 JUMP JUMPDEST PUSH2 0xDB1 PUSH2 0xF1F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xE01 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1AB5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xE46 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A8F PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xEA9 PUSH2 0xF1F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0xEF9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x1AB5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xF02 DUP2 PUSH2 0x11CB JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48F PUSH12 0x50524943455F4F5241434C45 PUSH1 0xA0 SHL PUSH2 0x494 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD ADDRESS PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD SWAP1 SWAP4 MSTORE SWAP1 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 SWAP1 DUP2 PUSH2 0x10F2 JUMPI ADDRESS PUSH1 0x40 MLOAD PUSH2 0xF8B SWAP1 PUSH2 0x127B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0xFB8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD1F57894 DUP6 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1027 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x100F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1054 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1074 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1088 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD DUP10 DUP2 MSTORE SWAP3 MLOAD SWAP1 SWAP4 POP PUSH32 0x1EB35CB4B5BBB23D152F3B4016A5A46C37A07AE930ED0956ABA951E231142438 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 PUSH2 0x11C4 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4F1EF286 DUP6 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x115E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1146 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x118B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x11DE SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1288 JUMP JUMPDEST POP PUSH32 0x5E667C32FD847CF8BCE48AB3400175CBF107BDC82B2DEA62E3364909DFAEE799 DUP2 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x123E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1226 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x126B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x773 DUP1 PUSH2 0x131C DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x12C9 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x12F6 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x12F6 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x12F6 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x12DB JUMP JUMPDEST POP PUSH2 0x1302 SWAP3 SWAP2 POP PUSH2 0x1306 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1302 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1307 JUMP INVALID PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x773 CODESIZE SUB DUP1 PUSH2 0x773 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 DUP2 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6F3 PUSH2 0x80 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x228 MSTORE DUP1 PUSH2 0x272 MSTORE DUP1 PUSH2 0x331 MSTORE DUP1 PUSH2 0x45E MSTORE DUP1 PUSH2 0x487 MSTORE DUP1 PUSH2 0x5AF MSTORE POP PUSH2 0x6F3 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x54 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x87 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x107 JUMPI DUP1 PUSH4 0xD1F57894 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x1EE JUMPI JUMPDEST PUSH2 0x52 PUSH2 0x203 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x21D JUMP JUMPDEST PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x267 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11C PUSH2 0x324 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x14E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x371 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11C PUSH2 0x451 JUMP JUMPDEST PUSH2 0x20B PUSH2 0x4AB JUMP JUMPDEST PUSH2 0x21B PUSH2 0x216 PUSH2 0x4B3 JUMP JUMPDEST PUSH2 0x4D8 JUMP JUMPDEST JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x25C JUMPI PUSH2 0x257 DUP2 PUSH2 0x4FC JUMP JUMPDEST PUSH2 0x264 JUMP JUMPDEST PUSH2 0x264 PUSH2 0x203 JUMP JUMPDEST POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x317 JUMPI PUSH2 0x2A1 DUP4 PUSH2 0x4FC JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2FE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x303 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31F JUMP JUMPDEST PUSH2 0x31F PUSH2 0x203 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x366 JUMPI PUSH2 0x35F PUSH2 0x4B3 JUMP JUMPDEST SWAP1 POP PUSH2 0x36E JUMP JUMPDEST PUSH2 0x36E PUSH2 0x203 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37B PUSH2 0x4B3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x397 DUP3 PUSH2 0x53C JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x44D JUMPI PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3DA JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3BB JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x43A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x43F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x366 JUMPI POP PUSH32 0x0 PUSH2 0x36E JUMP JUMPDEST PUSH2 0x21B PUSH2 0x5A4 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x4F7 JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x505 DUP2 PUSH2 0x53C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x545 DUP2 PUSH2 0x614 JUMP JUMPDEST PUSH2 0x580 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x683 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SSTORE JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x60C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x651 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x21B PUSH2 0x21B JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x648 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID NUMBER PUSH2 0x6E6E PUSH16 0x742063616C6C2066616C6C6261636B20 PUSH7 0x756E6374696F6E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH17 0x726F78792061646D696E43616E6E6F7420 PUSH20 0x657420612070726F787920696D706C656D656E74 PUSH2 0x7469 PUSH16 0x6E20746F2061206E6F6E2D636F6E7472 PUSH2 0x6374 KECCAK256 PUSH2 0x6464 PUSH19 0x657373A26469706673582212203801682B75A7 0x4C 0xE2 0x5C 0xA5 0xDB 0xE5 DUP8 CODECOPY 0xC5 0xB6 0x22 SWAP9 0xB7 SMOD 0xB9 GT SWAP13 SWAP5 SGT DUP9 SHR JUMP CALLCODE SWAP12 0xCF 0xA8 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F20616464726573734F776E61626C653A2063616C6C657220 PUSH10 0x73206E6F742074686520 PUSH16 0x776E6572A2646970667358221220F13A CHAINID 0xC3 SGT 0xFB CALLDATALOAD 0x5D PUSH11 0x9419920C6E2FD982EFDC1F SWAP12 COINBASE 0xED PUSH2 0xF3E4 ADDMOD 0xEB OR 0xAC CODESIZE 0x27 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "771:7325:65:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3336:109;;;:::i;:::-;;;;-1:-1:-1;;;;;3336:109:65;;;;;;;;;;;;;;3118:103;;;;;;;;;;;;;;;;-1:-1:-1;3118:103:65;;:::i;5663:149::-;;;;;;;;;;;;;;;;-1:-1:-1;5663:149:65;-1:-1:-1;;;;;5663:149:65;;:::i;:::-;;5935:182;;;;;;;;;;;;;;;;-1:-1:-1;5935:182:65;-1:-1:-1;;;;;5935:182:65;;:::i;6402:122::-;;;:::i;5171:205::-;;;;;;;;;;;;;;;;-1:-1:-1;5171:205:65;-1:-1:-1;;;;;5171:205:65;;:::i;6234:164::-;;;;;;;;;;;;;;;;-1:-1:-1;6234:164:65;-1:-1:-1;;;;;6234:164:65;;:::i;1606:97::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3664:147;;;;;;;;;;;;;;;;-1:-1:-1;3664:147:65;-1:-1:-1;;;;;3664:147:65;;:::i;2423:215::-;;;;;;;;;;;;;;;;-1:-1:-1;2423:215:65;;;;;;-1:-1:-1;;;;;2423:215:65;;:::i;4878:145::-;;;:::i;1610:135:11:-;;;:::i;6528:201:65:-;;;;;;;;;;;;;;;;-1:-1:-1;6528:201:65;-1:-1:-1;;;;;6528:201:65;;:::i;3950:134::-;;;:::i;1027:71:11:-;;;:::i;5554:105:65:-;;;:::i;4343:208::-;;;;;;;;;;;;;;;;-1:-1:-1;4343:208:65;-1:-1:-1;;;;;4343:208:65;;:::i;2880:162::-;;;;;;;;;;;;;;;;-1:-1:-1;2880:162:65;;;;;;-1:-1:-1;;;;;2880:162:65;;:::i;5816:115::-;;;:::i;1884:226:11:-;;;;;;;;;;;;;;;;-1:-1:-1;1884:226:11;-1:-1:-1;;;;;1884:226:11;;:::i;1840:106:65:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1840:106:65;;-1:-1:-1;1840:106:65;;-1:-1:-1;;;;;1840:106:65:i;6121:109::-;;;:::i;3336:::-;3394:7;3416:24;-1:-1:-1;;;3416:10:65;:24::i;:::-;3409:31;;3336:109;:::o;3118:103::-;3180:7;3202:14;;;:10;:14;;;;;;-1:-1:-1;;;;;3202:14:65;;3118:103::o;5663:149::-;1223:12:11;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;;-1:-1:-1;;;1205:67:11;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1205:67:11;;;;;;;;;;;;;;;-1:-1:-1;;;5734:22:65::1;::::0;;;:10:::1;:22;::::0;;:30;;-1:-1:-1;;;;;;5734:30:65::1;-1:-1:-1::0;;;;;5734:30:65;::::1;::::0;;::::1;::::0;;;:22;5775:32;5734:30;;5775:32:::1;::::0;::::1;5663:149:::0;:::o;5935:182::-;1223:12:11;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;;-1:-1:-1;;;1205:67:11;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1205:67:11;;;;;;;;;;;;;;;-1:-1:-1;;;6020:27:65::1;::::0;;;:10:::1;:27;::::0;;:44;;-1:-1:-1;;;;;;6020:44:65::1;-1:-1:-1::0;;;;;6020:44:65;::::1;::::0;;::::1;::::0;;;:27;6075:37;6020:44;;6075:37:::1;::::0;::::1;5935:182:::0;:::o;6402:122::-;6466:7;6488:31;-1:-1:-1;;;6488:10:65;:31::i;5171:205::-;1223:12:11;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;;-1:-1:-1;;;1205:67:11;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1205:67:11;;;;;;;;;;;;;;;-1:-1:-1;;;5263:43:65::1;::::0;;;:10:::1;:43;::::0;;:53;;-1:-1:-1;;;;;;5263:53:65::1;-1:-1:-1::0;;;;;5263:53:65;::::1;::::0;;::::1;::::0;;;:43;5327:44;5263:53;;5327:44:::1;::::0;::::1;5171:205:::0;:::o;6234:164::-;1223:12:11;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;;-1:-1:-1;;;1205:67:11;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1205:67:11;;;;;;;;;;;;;;;-1:-1:-1;;;6313:24:65::1;::::0;;;:10:::1;:24;::::0;;:38;;-1:-1:-1;;;;;;6313:38:65::1;-1:-1:-1::0;;;;;6313:38:65;::::1;::::0;;::::1;::::0;;;:24;6362:31;6313:38;;6362:31:::1;::::0;::::1;6234:164:::0;:::o;1606:97::-;1689:9;1682:16;;;;;;;;-1:-1:-1;;1682:16:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1661:13;;1682:16;;1689:9;;1682:16;;1689:9;1682:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1606:97;:::o;3664:147::-;1223:12:11;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;;-1:-1:-1;;;1205:67:11;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1205:67:11;;;;;;;;;;;;;;;3740:31:65::1;-1:-1:-1::0;;;3766:4:65::1;3740:11;:31::i;:::-;3782:24;::::0;-1:-1:-1;;;;;3782:24:65;::::1;::::0;::::1;::::0;;;::::1;3664:147:::0;:::o;2423:215::-;1223:12:11;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;;-1:-1:-1;;;1205:67:11;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1205:67:11;;;;;;;;;;;;;;;2541:38:65::1;2553:2;2557:21;2541:11;:38::i;:::-;2590:43;::::0;;;;;2628:4:::1;2590:43;::::0;::::1;::::0;;;-1:-1:-1;;;;;2590:43:65;::::1;::::0;::::1;::::0;;;;;;::::1;2423:215:::0;;:::o;4878:145::-;4953:7;4975:43;-1:-1:-1;;;4975:10:65;:43::i;1610:135:11:-;1223:12;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;;-1:-1:-1;;;1205:67:11;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1205:67:11;;;;;;;;;;;;;;;1712:1:::1;1696:6:::0;;1675:40:::1;::::0;-1:-1:-1;;;;;1696:6:11;;::::1;::::0;1675:40:::1;::::0;1712:1;;1675:40:::1;1738:1;1721:19:::0;;-1:-1:-1;;;;;;1721:19:11::1;::::0;;1610:135::o;6528:201:65:-;1223:12:11;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;;-1:-1:-1;;;1205:67:11;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1205:67:11;;;;;;;;;;;;;;;-1:-1:-1;;;6619:31:65::1;::::0;;;:10:::1;:31;::::0;;:51;;-1:-1:-1;;;;;;6619:51:65::1;-1:-1:-1::0;;;;;6619:51:65;::::1;::::0;;::::1;::::0;;;:31;6681:43;6619:51;;6681:43:::1;::::0;::::1;6528:201:::0;:::o;3950:134::-;4020:7;4042:37;-1:-1:-1;;;4042:10:65;:37::i;1027:71:11:-;1065:7;1087:6;-1:-1:-1;;;;;1087:6:11;1027:71;:::o;5554:105:65:-;5610:7;5632:22;-1:-1:-1;;;5632:10:65;:22::i;4343:208::-;1223:12:11;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;;-1:-1:-1;;;1205:67:11;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1205:67:11;;;;;;;;;;;;;;;4439:52:65::1;-1:-1:-1::0;;;4478:12:65::1;4439:11;:52::i;:::-;4502:44;::::0;-1:-1:-1;;;;;4502:44:65;::::1;::::0;::::1;::::0;;;::::1;4343:208:::0;:::o;2880:162::-;1223:12:11;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;;-1:-1:-1;;;1205:67:11;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1205:67:11;;;;;;;;;;;;;;;2966:14:65::1;::::0;;;:10:::1;:14;::::0;;;;;;;:27;;-1:-1:-1;;;;;;2966:27:65::1;-1:-1:-1::0;;;;;2966:27:65;::::1;::::0;;::::1;::::0;;;3004:33;;;;;;;::::1;::::0;;;;;;::::1;::::0;;;;;;;;::::1;2880:162:::0;;:::o;5816:115::-;5877:7;5899:27;-1:-1:-1;;;5899:10:65;:27::i;1884:226:11:-;1223:12;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;;-1:-1:-1;;;1205:67:11;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1205:67:11;;;;;;;;;;;;;;;-1:-1:-1;;;;;1968:22:11;::::1;1960:73;;;;-1:-1:-1::0;;;1960:73:11::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2065:6;::::0;;2044:38:::1;::::0;-1:-1:-1;;;;;2044:38:11;;::::1;::::0;2065:6;::::1;::::0;2044:38:::1;::::0;::::1;2088:6;:17:::0;;-1:-1:-1;;;;;;2088:17:11::1;-1:-1:-1::0;;;;;2088:17:11;;;::::1;::::0;;;::::1;::::0;;1884:226::o;1840:106:65:-;1223:12:11;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;;-1:-1:-1;;;1205:67:11;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1205:67:11;;;;;;;;;;;;;;;1919:22:65::1;1932:8;1919:12;:22::i;:::-;1840:106:::0;:::o;6121:109::-;6179:7;6201:24;-1:-1:-1;;;6201:10:65;:24::i;587:98:7:-;670:10;587:98;:::o;7311:661:65:-;7379:28;7418:14;;;:10;:14;;;;;;;;;;7589:61;;7644:4;7589:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7589:61:65;-1:-1:-1;;;7589:61:65;;;-1:-1:-1;;;;;7418:14:65;;;;7661:26;7657:311;;7764:4;7705:65;;;;;:::i;:::-;-1:-1:-1;;;;;7705:65:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7697:73;;7778:5;-1:-1:-1;;;;;7778:16:65;;7795:10;7807:6;7778:36;;;;;;;;;;;;;-1:-1:-1;;;;;7778:36:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7822:14:65;;;;:10;:14;;;;;;;;;:31;;-1:-1:-1;;;;;;7822:31:65;-1:-1:-1;;;;;7822:31:65;;;;;;;;7866:32;;;;;;;7822:31;;-1:-1:-1;7866:32:65;;;;;;;;;;7657:311;;;7919:5;-1:-1:-1;;;;;7919:22:65;;7942:10;7954:6;7919:42;;;;;;;;;;;;;-1:-1:-1;;;;;7919:42:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7657:311;7311:661;;;;;:::o;7976:118::-;8037:20;;;;:9;;:20;;;;;:::i;:::-;;8068:21;8080:8;8068:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7976:118;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;"
            },
            "methodIdentifiers": {
              "getAddress(bytes32)": "21f8a721",
              "getEmergencyAdmin()": "ddcaa9ea",
              "getLendingPool()": "0261bf8b",
              "getLendingPoolCollateralManager()": "712d9171",
              "getLendingPoolConfigurator()": "85c858b1",
              "getLendingRateOracle()": "3618abba",
              "getMarketId()": "568ef470",
              "getPoolAdmin()": "aecda378",
              "getPriceOracle()": "fca513a8",
              "owner()": "8da5cb5b",
              "renounceOwnership()": "715018a6",
              "setAddress(bytes32,address)": "ca446dd9",
              "setAddressAsProxy(bytes32,address)": "5dcc528c",
              "setEmergencyAdmin(address)": "35da3394",
              "setLendingPoolCollateralManager(address)": "398e5553",
              "setLendingPoolConfiguratorImpl(address)": "c12542df",
              "setLendingPoolImpl(address)": "5aef021f",
              "setLendingRateOracle(address)": "820d1274",
              "setMarketId(string)": "f67b1847",
              "setPoolAdmin(address)": "283d62ad",
              "setPriceOracle(address)": "530e784f",
              "transferOwnership(address)": "f2fde38b"
            }
          }
        }
      },
      "contracts/protocol/configuration/LendingPoolAddressesProviderRegistry.sol": {
        "LendingPoolAddressesProviderRegistry": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                }
              ],
              "name": "AddressesProviderRegistered",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newAddress",
                  "type": "address"
                }
              ],
              "name": "AddressesProviderUnregistered",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "addressesProvider",
                  "type": "address"
                }
              ],
              "name": "getAddressesProviderIdByAddress",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAddressesProvidersList",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "provider",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ],
              "name": "registerAddressesProvider",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "provider",
                  "type": "address"
                }
              ],
              "name": "unregisterAddressesProvider",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600061001b61006a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b6108698061007d6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b1461010a578063d0267be71461012e578063d258191e14610166578063f2fde38b146101925761007d565b80630de2670714610082578063365ccbbf146100aa578063715018a614610102575b600080fd5b6100a86004803603602081101561009857600080fd5b50356001600160a01b03166101b8565b005b6100b2610322565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156100ee5781810151838201526020016100d6565b505050509050019250505060405180910390f35b6100a861046b565b61011261050d565b604080516001600160a01b039092168252519081900360200190f35b6101546004803603602081101561014457600080fd5b50356001600160a01b031661051c565b60408051918252519081900360200190f35b6100a86004803603604081101561017c57600080fd5b506001600160a01b038135169060200135610537565b6100a8600480360360208110156101a857600080fd5b50356001600160a01b0316610651565b6101c0610749565b6000546001600160a01b03908116911614610210576040805162461bcd60e51b81526020600482018190526024820152600080516020610814833981519152604482015290519081900360640190fd5b600060016000836001600160a01b03166001600160a01b03168152602001908152602001600020541160405180604001604052806002815260200161343160f01b815250906102dd5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156102a257818101518382015260200161028a565b50505050905090810190601f1680156102cf5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506001600160a01b038116600081815260016020526040808220829055517f851e5971c053e6b76e3a1e0b8ffa81430df738007fad86e195c409a757faccd29190a250565b606080600280548060200260200160405190810160405280929190818152602001828054801561037b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161035d575b5050505050905060008151905060608167ffffffffffffffff811180156103a157600080fd5b506040519080825280602002602001820160405280156103cb578160200160208202803683370190505b50905060005b82811015610463576000600160008684815181106103eb57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054111561045b5783818151811061042657fe5b602002602001015182828151811061043a57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6001016103d1565b509250505090565b610473610749565b6000546001600160a01b039081169116146104c3576040805162461bcd60e51b81526020600482018190526024820152600080516020610814833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6001600160a01b031660009081526001602052604090205490565b61053f610749565b6000546001600160a01b0390811691161461058f576040805162461bcd60e51b81526020600482018190526024820152600080516020610814833981519152604482015290519081900360640190fd5b6040805180820190915260028152611b9960f11b6020820152816105f45760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102a257818101518382015260200161028a565b506001600160a01b03821660009081526001602052604090208190556106198261074d565b6040516001600160a01b038316907f2db38786c10176b033a1608361716b0ca992e3af55dc05b6dc710969790beeda90600090a25050565b610659610749565b6000546001600160a01b039081169116146106a9576040805162461bcd60e51b81526020600482018190526024820152600080516020610814833981519152604482015290519081900360640190fd5b6001600160a01b0381166106ee5760405162461bcd60e51b81526004018080602001828103825260268152602001806107ee6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b60025460005b8181101561079c57826001600160a01b03166002828154811061077257fe5b6000918252602090912001546001600160a01b031614156107945750506107ea565b600101610753565b5050600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b0383161790555b5056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122028449229e270c38757cefd266a37ac596d145eb7cb558ecc94f768be6eafe61f64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0x1B PUSH2 0x6A JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0x6E JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0x869 DUP1 PUSH2 0x7D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0xD0267BE7 EQ PUSH2 0x12E JUMPI DUP1 PUSH4 0xD258191E EQ PUSH2 0x166 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x192 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0xDE26707 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x365CCBBF EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x102 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB2 PUSH2 0x322 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xEE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD6 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA8 PUSH2 0x46B JUMP JUMPDEST PUSH2 0x112 PUSH2 0x50D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x154 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x144 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x51C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x537 JUMP JUMPDEST PUSH2 0xA8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x651 JUMP JUMPDEST PUSH2 0x1C0 PUSH2 0x749 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x210 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x814 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3431 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x2DD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2A2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x28A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2CF JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP3 SWAP1 SSTORE MLOAD PUSH32 0x851E5971C053E6B76E3A1E0B8FFA81430DF738007FAD86E195C409A757FACCD2 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x2 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x37B JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x35D JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3CB JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x463 JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x3EB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT ISZERO PUSH2 0x45B JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x426 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x43A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x3D1 JUMP JUMPDEST POP SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x473 PUSH2 0x749 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x4C3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x814 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x53F PUSH2 0x749 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x58F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x814 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1B99 PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH2 0x5F4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x2A2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x28A JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH2 0x619 DUP3 PUSH2 0x74D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0x2DB38786C10176B033A1608361716B0CA992E3AF55DC05B6DC710969790BEEDA SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0x659 PUSH2 0x749 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x6A9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x814 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x6EE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x7EE PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x79C JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x772 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x794 JUMPI POP POP PUSH2 0x7EA JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x753 JUMP JUMPDEST POP POP PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x405787FA12A823E0F2B7631CC41B3BA8828B3321CA811111FA75CD3AA3BB5ACE ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR SWAP1 SSTORE JUMPDEST POP JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F20616464726573734F776E61626C653A2063616C6C657220 PUSH10 0x73206E6F742074686520 PUSH16 0x776E6572A26469706673582212202844 SWAP3 0x29 0xE2 PUSH17 0xC38757CEFD266A37AC596D145EB7CB558E 0xCC SWAP5 0xF7 PUSH9 0xBE6EAFE61F64736F6C PUSH4 0x4300060C STOP CALLER ",
              "sourceMap": "724:2494:66:-:0;;;;;;;;;;;;-1:-1:-1;844:17:11;864:12;:10;:12::i;:::-;882:6;:18;;-1:-1:-1;;;;;;882:18:11;-1:-1:-1;;;;;882:18:11;;;;;;;911:43;;882:18;;-1:-1:-1;882:18:11;911:43;;882:6;;911:43;815:144;724:2494:66;;587:98:7;670:10;587:98;:::o;724:2494:66:-;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b1461010a578063d0267be71461012e578063d258191e14610166578063f2fde38b146101925761007d565b80630de2670714610082578063365ccbbf146100aa578063715018a614610102575b600080fd5b6100a86004803603602081101561009857600080fd5b50356001600160a01b03166101b8565b005b6100b2610322565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156100ee5781810151838201526020016100d6565b505050509050019250505060405180910390f35b6100a861046b565b61011261050d565b604080516001600160a01b039092168252519081900360200190f35b6101546004803603602081101561014457600080fd5b50356001600160a01b031661051c565b60408051918252519081900360200190f35b6100a86004803603604081101561017c57600080fd5b506001600160a01b038135169060200135610537565b6100a8600480360360208110156101a857600080fd5b50356001600160a01b0316610651565b6101c0610749565b6000546001600160a01b03908116911614610210576040805162461bcd60e51b81526020600482018190526024820152600080516020610814833981519152604482015290519081900360640190fd5b600060016000836001600160a01b03166001600160a01b03168152602001908152602001600020541160405180604001604052806002815260200161343160f01b815250906102dd5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156102a257818101518382015260200161028a565b50505050905090810190601f1680156102cf5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506001600160a01b038116600081815260016020526040808220829055517f851e5971c053e6b76e3a1e0b8ffa81430df738007fad86e195c409a757faccd29190a250565b606080600280548060200260200160405190810160405280929190818152602001828054801561037b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161035d575b5050505050905060008151905060608167ffffffffffffffff811180156103a157600080fd5b506040519080825280602002602001820160405280156103cb578160200160208202803683370190505b50905060005b82811015610463576000600160008684815181106103eb57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054111561045b5783818151811061042657fe5b602002602001015182828151811061043a57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6001016103d1565b509250505090565b610473610749565b6000546001600160a01b039081169116146104c3576040805162461bcd60e51b81526020600482018190526024820152600080516020610814833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6001600160a01b031660009081526001602052604090205490565b61053f610749565b6000546001600160a01b0390811691161461058f576040805162461bcd60e51b81526020600482018190526024820152600080516020610814833981519152604482015290519081900360640190fd5b6040805180820190915260028152611b9960f11b6020820152816105f45760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102a257818101518382015260200161028a565b506001600160a01b03821660009081526001602052604090208190556106198261074d565b6040516001600160a01b038316907f2db38786c10176b033a1608361716b0ca992e3af55dc05b6dc710969790beeda90600090a25050565b610659610749565b6000546001600160a01b039081169116146106a9576040805162461bcd60e51b81526020600482018190526024820152600080516020610814833981519152604482015290519081900360640190fd5b6001600160a01b0381166106ee5760405162461bcd60e51b81526004018080602001828103825260268152602001806107ee6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b60025460005b8181101561079c57826001600160a01b03166002828154811061077257fe5b6000918252602090912001546001600160a01b031614156107945750506107ea565b600101610753565b5050600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b0383161790555b5056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122028449229e270c38757cefd266a37ac596d145eb7cb558ecc94f768be6eafe61f64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0xD0267BE7 EQ PUSH2 0x12E JUMPI DUP1 PUSH4 0xD258191E EQ PUSH2 0x166 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x192 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0xDE26707 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x365CCBBF EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x102 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1B8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB2 PUSH2 0x322 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xEE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD6 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA8 PUSH2 0x46B JUMP JUMPDEST PUSH2 0x112 PUSH2 0x50D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x154 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x144 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x51C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x537 JUMP JUMPDEST PUSH2 0xA8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x651 JUMP JUMPDEST PUSH2 0x1C0 PUSH2 0x749 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x210 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x814 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3431 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x2DD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2A2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x28A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2CF JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP3 SWAP1 SSTORE MLOAD PUSH32 0x851E5971C053E6B76E3A1E0B8FFA81430DF738007FAD86E195C409A757FACCD2 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x2 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x37B JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x35D JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3CB JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x463 JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x3EB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT ISZERO PUSH2 0x45B JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x426 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x43A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x3D1 JUMP JUMPDEST POP SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x473 PUSH2 0x749 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x4C3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x814 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x53F PUSH2 0x749 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x58F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x814 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1B99 PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH2 0x5F4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x2A2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x28A JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH2 0x619 DUP3 PUSH2 0x74D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0x2DB38786C10176B033A1608361716B0CA992E3AF55DC05B6DC710969790BEEDA SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0x659 PUSH2 0x749 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ PUSH2 0x6A9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x814 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x6EE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x7EE PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x79C JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x772 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x794 JUMPI POP POP PUSH2 0x7EA JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x753 JUMP JUMPDEST POP POP PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x405787FA12A823E0F2B7631CC41B3BA8828B3321CA811111FA75CD3AA3BB5ACE ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR SWAP1 SSTORE JUMPDEST POP JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F20616464726573734F776E61626C653A2063616C6C657220 PUSH10 0x73206E6F742074686520 PUSH16 0x776E6572A26469706673582212202844 SWAP3 0x29 0xE2 PUSH17 0xC38757CEFD266A37AC596D145EB7CB558E 0xCC SWAP5 0xF7 PUSH9 0xBE6EAFE61F64736F6C PUSH4 0x4300060C STOP CALLER ",
              "sourceMap": "724:2494:66:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:263;;;;;;;;;;;;;;;;-1:-1:-1;2291:263:66;-1:-1:-1;;;;;2291:263:66;;:::i;:::-;;1090:495;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1610:135:11;;;:::i;1027:71::-;;;:::i;:::-;;;;-1:-1:-1;;;;;1027:71:11;;;;;;;;;;;;;;2719:183:66;;;;;;;;;;;;;;;;-1:-1:-1;2719:183:66;-1:-1:-1;;;;;2719:183:66;;:::i;:::-;;;;;;;;;;;;;;;;1819:297;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1819:297:66;;;;;;;;:::i;1884:226:11:-;;;;;;;;;;;;;;;;-1:-1:-1;1884:226:11;-1:-1:-1;;;;;1884:226:11;;:::i;2291:263:66:-;1223:12:11;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;;-1:-1:-1;;;1205:67:11;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1205:67:11;;;;;;;;;;;;;;;2420:1:66::1;2388:19;:29;2408:8;-1:-1:-1::0;;;;;2388:29:66::1;-1:-1:-1::0;;;;;2388:29:66::1;;;;;;;;;;;;;:33;2423:36;;;;;;;;;;;;;-1:-1:-1::0;;;2423:36:66::1;;::::0;2380:80:::1;;;;;-1:-1:-1::0;;;2380:80:66::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;2466:29:66;::::1;2498:1;2466:29:::0;;;:19:::1;:29;::::0;;;;;:33;;;2510:39;::::1;::::0;2498:1;2510:39:::1;2291:263:::0;:::o;1090:495::-;1159:16;1183:39;1225:23;1183:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1183:65:66;;;;;;;;;;;;;;;;;;;;;;;1255:17;1275:22;:29;1255:49;;1311:32;1360:9;1346:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1346:24:66;;1311:59;;1382:9;1377:175;1401:9;1397:1;:13;1377:175;;;1478:1;1429:19;:46;1449:22;1472:1;1449:25;;;;;;;;;;;;;;-1:-1:-1;;;;;1429:46:66;-1:-1:-1;;;;;1429:46:66;;;;;;;;;;;;;:50;1425:121;;;1512:22;1535:1;1512:25;;;;;;;;;;;;;;1491:15;1507:1;1491:18;;;;;;;;;;;;;:46;-1:-1:-1;;;;;1491:46:66;;;-1:-1:-1;;;;;1491:46:66;;;;;1425:121;1412:3;;1377:175;;;-1:-1:-1;1565:15:66;-1:-1:-1;;;1090:495:66;:::o;1610:135:11:-;1223:12;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;;-1:-1:-1;;;1205:67:11;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1205:67:11;;;;;;;;;;;;;;;1712:1:::1;1696:6:::0;;1675:40:::1;::::0;-1:-1:-1;;;;;1696:6:11;;::::1;::::0;1675:40:::1;::::0;1712:1;;1675:40:::1;1738:1;1721:19:::0;;-1:-1:-1;;;;;;1721:19:11::1;::::0;;1610:135::o;1027:71::-;1065:7;1087:6;-1:-1:-1;;;;;1087:6:11;1027:71;:::o;2719:183:66:-;-1:-1:-1;;;;;2859:38:66;2835:7;2859:38;;;:19;:38;;;;;;;2719:183::o;1819:297::-;1223:12:11;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;;-1:-1:-1;;;1205:67:11;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1205:67:11;;;;;;;;;;;;;;;1935:42:66::1;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;1935:42:66::1;::::0;::::1;::::0;1926:7;1918:60:::1;;;::::0;-1:-1:-1;;;1918:60:66;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;-1:-1:-1::0;;;;;;1985:29:66;::::1;;::::0;;;:19:::1;:29;::::0;;;;:34;;;2025:38:::1;2005:8:::0;2025:28:::1;:38::i;:::-;2074:37;::::0;-1:-1:-1;;;;;2074:37:66;::::1;::::0;::::1;::::0;;;::::1;1819:297:::0;;:::o;1884:226:11:-;1223:12;:10;:12::i;:::-;1213:6;;-1:-1:-1;;;;;1213:6:11;;;:22;;;1205:67;;;;;-1:-1:-1;;;1205:67:11;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1205:67:11;;;;;;;;;;;;;;;-1:-1:-1;;;;;1968:22:11;::::1;1960:73;;;;-1:-1:-1::0;;;1960:73:11::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2065:6;::::0;;2044:38:::1;::::0;-1:-1:-1;;;;;2044:38:11;;::::1;::::0;2065:6;::::1;::::0;2044:38:::1;::::0;::::1;2088:6;:17:::0;;-1:-1:-1;;;;;;2088:17:11::1;-1:-1:-1::0;;;;;2088:17:11;;;::::1;::::0;;;::::1;::::0;;1884:226::o;587:98:7:-;670:10;587:98;:::o;2906:310:66:-;3002:23;:30;2977:22;3039:128;3063:14;3059:1;:18;3039:128;;;3126:8;-1:-1:-1;;;;;3096:38:66;:23;3120:1;3096:26;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3096:26:66;:38;3092:69;;;3146:7;;;;3092:69;3079:3;;3039:128;;;-1:-1:-1;;3173:23:66;:38;;;;;;;-1:-1:-1;3173:38:66;;;;;;;;-1:-1:-1;;;;;;3173:38:66;-1:-1:-1;;;;;3173:38:66;;;;;2906:310;;:::o"
            },
            "methodIdentifiers": {
              "getAddressesProviderIdByAddress(address)": "d0267be7",
              "getAddressesProvidersList()": "365ccbbf",
              "owner()": "8da5cb5b",
              "registerAddressesProvider(address,uint256)": "d258191e",
              "renounceOwnership()": "715018a6",
              "transferOwnership(address)": "f2fde38b",
              "unregisterAddressesProvider(address)": "0de26707"
            }
          }
        }
      },
      "contracts/protocol/lendingpool/DefaultReserveInterestRateStrategy.sol": {
        "DefaultReserveInterestRateStrategy": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPoolAddressesProvider",
                  "name": "provider",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "optimalUtilizationRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "baseVariableBorrowRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "variableRateSlope1",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "variableRateSlope2",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "stableRateSlope1",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "stableRateSlope2",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "EXCESS_UTILIZATION_RATE",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "OPTIMAL_UTILIZATION_RATE",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "addressesProvider",
              "outputs": [
                {
                  "internalType": "contract ILendingPoolAddressesProvider",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "baseVariableBorrowRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "aToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidityAdded",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidityTaken",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "totalStableDebt",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "totalVariableDebt",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "averageStableBorrowRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "reserveFactor",
                  "type": "uint256"
                }
              ],
              "name": "calculateInterestRates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "availableLiquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "totalStableDebt",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "totalVariableDebt",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "averageStableBorrowRate",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "reserveFactor",
                  "type": "uint256"
                }
              ],
              "name": "calculateInterestRates",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getMaxVariableBorrowRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "stableRateSlope1",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "stableRateSlope2",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "variableRateSlope1",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "variableRateSlope2",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "61018060405234801561001157600080fd5b50604051610fbb380380610fbb833981810160405260e081101561003457600080fd5b5080516020808301516040840151606085015160808087015160a088015160c0909801519185905295969395929491939161008e90879061007c906108526100c3821b17901c565b6100d360201b6108621790919060201c565b60a05260609690961b6001600160601b03191660c05260e09390935261010091909152610120526101405250610160526101b9565b6b033b2e3c9fd0803ce800000090565b600061011b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061012260201b60201c565b9392505050565b600081848411156101b15760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561017657818101518382015260200161015e565b50505050905090810190601f1680156101a35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60805160a05160c05160601c60e05161010051610120516101405161016051610d4d61026e6000398061059752806108305250806101dd52806105c752806106b15250806102df528061032c52806105f852508061030352806103715280610643528061071b5250806103505280610622528061074152806107e8525080610400528061080c52508061020152806105315250806105055280610555528061067d52806106f552806107c45250610d4d6000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806380031e371161007157806380031e37146101535780639584df281461015b578063a15f30ac1461019f578063b2589544146101a7578063c72c4d10146101af578063ccab01a3146101d3576100a9565b80630bdf953f146100ae57806317319873146100c857806329db497d146100d057806365614f81146101435780637b832f581461014b575b600080fd5b6100b66101db565b60408051918252519081900360200190f35b6100b66101ff565b61012560048036036101008110156100e757600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a08101359060c08101359060e00135610223565b60408051938452602084019290925282820152519081900360600190f35b6100b66102dd565b6100b6610301565b6100b6610325565b610125600480360360c081101561017157600080fd5b506001600160a01b038135169060208101359060408101359060608101359060808101359060a001356103a0565b6100b66107c2565b6100b66107e6565b6101b761080a565b604080516001600160a01b039092168252519081900360200190f35b6100b661082e565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000808b6001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561027657600080fd5b505afa15801561028a573d6000803e3d6000fd5b505050506040513d60208110156102a057600080fd5b505190506102b8896102b2838d6108ad565b90610862565b90506102c88c828a8a8a8a6103a0565b93509350935050985098509895505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061039b7f00000000000000000000000000000000000000000000000000000000000000006103957f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006108ad565b906108ad565b905090565b60008060006103ad610ce8565b6103b788886108ad565b808252600060208301819052604083018190526060830152156103f25780516103ed906103e5908b906108ad565b825190610907565b6103f5565b60005b8160800181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633618abba6040518163ffffffff1660e01b815260040160206040518083038186803b15801561045757600080fd5b505afa15801561046b573d6000803e3d6000fd5b505050506040513d602081101561048157600080fd5b50516040805163bb85c0bb60e01b81526001600160a01b038d811660048301529151919092169163bb85c0bb916024808301926020929190829003018186803b1580156104cd57600080fd5b505afa1580156104e1573d6000803e3d6000fd5b505050506040513d60208110156104f757600080fd5b5051604082015260808101517f0000000000000000000000000000000000000000000000000000000000000000101561067257600061058d7f00000000000000000000000000000000000000000000000000000000000000006105877f0000000000000000000000000000000000000000000000000000000000000000856080015161086290919063ffffffff16565b90610907565b90506105eb6105bc7f000000000000000000000000000000000000000000000000000000000000000083610a4b565b6040840151610395907f00000000000000000000000000000000000000000000000000000000000000006108ad565b604083015261066761061d7f000000000000000000000000000000000000000000000000000000000000000083610a4b565b6103957f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006108ad565b60208301525061076c565b6106e16106d66106af7f0000000000000000000000000000000000000000000000000000000000000000846080015161090790919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000090610a4b565b6040830151906108ad565b604082015260808101516107669061073f907f000000000000000000000000000000000000000000000000000000000000000090610587907f0000000000000000000000000000000000000000000000000000000000000000610a4b565b7f0000000000000000000000000000000000000000000000000000000000000000906108ad565b60208201525b61079f61077b61271087610862565b61079983608001516107938c8c87602001518d610b0c565b90610a4b565b90610b73565b606082018190526040820151602090920151909b919a5098509650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000090565b6b033b2e3c9fd0803ce800000090565b60006108a483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c10565b90505b92915050565b6000828201838110156108a4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080518082019091526002815261035360f41b6020820152600090826109ac5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610971578181015183820152602001610959565b50505050905090810190601f16801561099e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce8000000821904851115610a285760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b5082816b033b2e3c9fd0803ce800000086020181610a4257fe5b04949350505050565b6000821580610a58575081155b15610a65575060006108a7565b816b019d971e4fe8401e740000001981610a7b57fe5b0483111560405180604001604052806002815260200161068760f31b81525090610ae65760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b506b033b2e3c9fd0803ce80000006002815b048385020181610b0457fe5b049392505050565b600080610b1986866108ad565b905080610b2a576000915050610b6b565b6000610b398561079388610c6a565b90506000610b4a856107938a610c6a565b90506000610b64610b5a85610c6a565b61058785856108ad565b9450505050505b949350505050565b6000821580610b80575081155b15610b8d575060006108a7565b816113881981610b9957fe5b0483111560405180604001604052806002815260200161068760f31b81525090610c045760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b50612710600281610af8565b60008184841115610c625760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b505050900390565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b81525090610ce15760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b5092915050565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160008152509056fea26469706673582212202de93b4e5bd8eff563a6594cebe41ba1046984974b817cc22176094a2c3682bf64736f6c634300060c0033",
              "opcodes": "PUSH2 0x180 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xFBB CODESIZE SUB DUP1 PUSH2 0xFBB DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x80 DUP1 DUP8 ADD MLOAD PUSH1 0xA0 DUP9 ADD MLOAD PUSH1 0xC0 SWAP1 SWAP9 ADD MLOAD SWAP2 DUP6 SWAP1 MSTORE SWAP6 SWAP7 SWAP4 SWAP6 SWAP3 SWAP5 SWAP2 SWAP4 SWAP2 PUSH2 0x8E SWAP1 DUP8 SWAP1 PUSH2 0x7C SWAP1 PUSH2 0x852 PUSH2 0xC3 DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST PUSH2 0xD3 PUSH1 0x20 SHL PUSH2 0x862 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0xA0 MSTORE PUSH1 0x60 SWAP7 SWAP1 SWAP7 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xC0 MSTORE PUSH1 0xE0 SWAP4 SWAP1 SWAP4 MSTORE PUSH2 0x100 SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x120 MSTORE PUSH2 0x140 MSTORE POP PUSH2 0x160 MSTORE PUSH2 0x1B9 JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11B DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x122 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x176 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x15E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1A3 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0xD4D PUSH2 0x26E PUSH1 0x0 CODECOPY DUP1 PUSH2 0x597 MSTORE DUP1 PUSH2 0x830 MSTORE POP DUP1 PUSH2 0x1DD MSTORE DUP1 PUSH2 0x5C7 MSTORE DUP1 PUSH2 0x6B1 MSTORE POP DUP1 PUSH2 0x2DF MSTORE DUP1 PUSH2 0x32C MSTORE DUP1 PUSH2 0x5F8 MSTORE POP DUP1 PUSH2 0x303 MSTORE DUP1 PUSH2 0x371 MSTORE DUP1 PUSH2 0x643 MSTORE DUP1 PUSH2 0x71B MSTORE POP DUP1 PUSH2 0x350 MSTORE DUP1 PUSH2 0x622 MSTORE DUP1 PUSH2 0x741 MSTORE DUP1 PUSH2 0x7E8 MSTORE POP DUP1 PUSH2 0x400 MSTORE DUP1 PUSH2 0x80C MSTORE POP DUP1 PUSH2 0x201 MSTORE DUP1 PUSH2 0x531 MSTORE POP DUP1 PUSH2 0x505 MSTORE DUP1 PUSH2 0x555 MSTORE DUP1 PUSH2 0x67D MSTORE DUP1 PUSH2 0x6F5 MSTORE DUP1 PUSH2 0x7C4 MSTORE POP PUSH2 0xD4D PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x80031E37 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x80031E37 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0x9584DF28 EQ PUSH2 0x15B JUMPI DUP1 PUSH4 0xA15F30AC EQ PUSH2 0x19F JUMPI DUP1 PUSH4 0xB2589544 EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0xC72C4D10 EQ PUSH2 0x1AF JUMPI DUP1 PUSH4 0xCCAB01A3 EQ PUSH2 0x1D3 JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0xBDF953F EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x17319873 EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0x29DB497D EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0x65614F81 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x7B832F58 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB6 PUSH2 0x1DB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB6 PUSH2 0x1FF JUMP JUMPDEST PUSH2 0x125 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x223 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB6 PUSH2 0x2DD JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x301 JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x325 JUMP JUMPDEST PUSH2 0x125 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x171 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x3A0 JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x7C2 JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x7E6 JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x80A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB6 PUSH2 0x82E JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP13 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x28A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x2B8 DUP10 PUSH2 0x2B2 DUP4 DUP14 PUSH2 0x8AD JUMP JUMPDEST SWAP1 PUSH2 0x862 JUMP JUMPDEST SWAP1 POP PUSH2 0x2C8 DUP13 DUP3 DUP11 DUP11 DUP11 DUP11 PUSH2 0x3A0 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP9 POP SWAP9 POP SWAP9 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39B PUSH32 0x0 PUSH2 0x395 PUSH32 0x0 PUSH32 0x0 PUSH2 0x8AD JUMP JUMPDEST SWAP1 PUSH2 0x8AD JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3AD PUSH2 0xCE8 JUMP JUMPDEST PUSH2 0x3B7 DUP9 DUP9 PUSH2 0x8AD JUMP JUMPDEST DUP1 DUP3 MSTORE PUSH1 0x0 PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP4 ADD MSTORE ISZERO PUSH2 0x3F2 JUMPI DUP1 MLOAD PUSH2 0x3ED SWAP1 PUSH2 0x3E5 SWAP1 DUP12 SWAP1 PUSH2 0x8AD JUMP JUMPDEST DUP3 MLOAD SWAP1 PUSH2 0x907 JUMP JUMPDEST PUSH2 0x3F5 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 PUSH1 0x80 ADD DUP2 DUP2 MSTORE POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3618ABBA PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x457 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x46B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xBB85C0BB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xBB85C0BB SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH32 0x0 LT ISZERO PUSH2 0x672 JUMPI PUSH1 0x0 PUSH2 0x58D PUSH32 0x0 PUSH2 0x587 PUSH32 0x0 DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0x862 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x907 JUMP JUMPDEST SWAP1 POP PUSH2 0x5EB PUSH2 0x5BC PUSH32 0x0 DUP4 PUSH2 0xA4B JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x395 SWAP1 PUSH32 0x0 PUSH2 0x8AD JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x667 PUSH2 0x61D PUSH32 0x0 DUP4 PUSH2 0xA4B JUMP JUMPDEST PUSH2 0x395 PUSH32 0x0 PUSH32 0x0 PUSH2 0x8AD JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH2 0x76C JUMP JUMPDEST PUSH2 0x6E1 PUSH2 0x6D6 PUSH2 0x6AF PUSH32 0x0 DUP5 PUSH1 0x80 ADD MLOAD PUSH2 0x907 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH32 0x0 SWAP1 PUSH2 0xA4B JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MLOAD SWAP1 PUSH2 0x8AD JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH2 0x766 SWAP1 PUSH2 0x73F SWAP1 PUSH32 0x0 SWAP1 PUSH2 0x587 SWAP1 PUSH32 0x0 PUSH2 0xA4B JUMP JUMPDEST PUSH32 0x0 SWAP1 PUSH2 0x8AD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST PUSH2 0x79F PUSH2 0x77B PUSH2 0x2710 DUP8 PUSH2 0x862 JUMP JUMPDEST PUSH2 0x799 DUP4 PUSH1 0x80 ADD MLOAD PUSH2 0x793 DUP13 DUP13 DUP8 PUSH1 0x20 ADD MLOAD DUP14 PUSH2 0xB0C JUMP JUMPDEST SWAP1 PUSH2 0xA4B JUMP JUMPDEST SWAP1 PUSH2 0xB73 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x20 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP12 SWAP2 SWAP11 POP SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8A4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0xC10 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x8A4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x9AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x971 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x959 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x99E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0xA28 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x971 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x959 JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0xA42 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0xA58 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0xA65 JUMPI POP PUSH1 0x0 PUSH2 0x8A7 JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0xA7B JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xAE6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x971 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x959 JUMP JUMPDEST POP PUSH12 0x33B2E3C9FD0803CE8000000 PUSH1 0x2 DUP2 JUMPDEST DIV DUP4 DUP6 MUL ADD DUP2 PUSH2 0xB04 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB19 DUP7 DUP7 PUSH2 0x8AD JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xB2A JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xB6B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB39 DUP6 PUSH2 0x793 DUP9 PUSH2 0xC6A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB4A DUP6 PUSH2 0x793 DUP11 PUSH2 0xC6A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB64 PUSH2 0xB5A DUP6 PUSH2 0xC6A JUMP JUMPDEST PUSH2 0x587 DUP6 DUP6 PUSH2 0x8AD JUMP JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0xB80 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0xB8D JUMPI POP PUSH1 0x0 PUSH2 0x8A7 JUMP JUMPDEST DUP2 PUSH2 0x1388 NOT DUP2 PUSH2 0xB99 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xC04 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x971 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x959 JUMP JUMPDEST POP PUSH2 0x2710 PUSH1 0x2 DUP2 PUSH2 0xAF8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xC62 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x971 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x959 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH4 0x3B9ACA00 DUP3 DUP2 MUL SWAP1 DUP4 SWAP1 DUP3 DIV EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xCE1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x971 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x959 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2D 0xE9 EXTCODESIZE 0x4E JUMPDEST 0xD8 0xEF CREATE2 PUSH4 0xA6594CEB 0xE4 SHL LOG1 DIV PUSH10 0x84974B817CC22176094A 0x2C CALLDATASIZE DUP3 0xBF PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "1093:8712:67:-:0;;;2603:663;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2603:663:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2872:49;;;;2603:663;;;;;;;;;2953:44;;2603:663;;2953:16;;:14;;;;;:16;;:::i;:::-;:20;;;;;;:44;;;;:::i;:::-;2927:70;;3003:28;;;;;-1:-1:-1;;3003:28:67;;;3037:48;;;;;3091:40;;;;;3137;;3183:36;;-1:-1:-1;3225:36:67;;1093:8712;;578:68:86;432:4;578:68;:::o;1257:128:13:-;1315:7;1337:43;1341:1;1344;1337:43;;;;;;;;;;;;;;;;;:3;;;:43;;:::i;:::-;1330:50;1257:128;-1:-1:-1;;;1257:128:13:o;1649:189::-;1751:7;1782:12;1774:6;;;;1766:29;;;;-1:-1:-1;;;1766:29:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1813:5:13;;;1649:189::o;1093:8712:67:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "11483": [
                  {
                    "length": 32,
                    "start": 1285
                  },
                  {
                    "length": 32,
                    "start": 1365
                  },
                  {
                    "length": 32,
                    "start": 1661
                  },
                  {
                    "length": 32,
                    "start": 1781
                  },
                  {
                    "length": 32,
                    "start": 1988
                  }
                ],
                "11486": [
                  {
                    "length": 32,
                    "start": 513
                  },
                  {
                    "length": 32,
                    "start": 1329
                  }
                ],
                "11488": [
                  {
                    "length": 32,
                    "start": 1024
                  },
                  {
                    "length": 32,
                    "start": 2060
                  }
                ],
                "11490": [
                  {
                    "length": 32,
                    "start": 848
                  },
                  {
                    "length": 32,
                    "start": 1570
                  },
                  {
                    "length": 32,
                    "start": 1857
                  },
                  {
                    "length": 32,
                    "start": 2024
                  }
                ],
                "11492": [
                  {
                    "length": 32,
                    "start": 771
                  },
                  {
                    "length": 32,
                    "start": 881
                  },
                  {
                    "length": 32,
                    "start": 1603
                  },
                  {
                    "length": 32,
                    "start": 1819
                  }
                ],
                "11494": [
                  {
                    "length": 32,
                    "start": 735
                  },
                  {
                    "length": 32,
                    "start": 812
                  },
                  {
                    "length": 32,
                    "start": 1528
                  }
                ],
                "11496": [
                  {
                    "length": 32,
                    "start": 477
                  },
                  {
                    "length": 32,
                    "start": 1479
                  },
                  {
                    "length": 32,
                    "start": 1713
                  }
                ],
                "11498": [
                  {
                    "length": 32,
                    "start": 1431
                  },
                  {
                    "length": 32,
                    "start": 2096
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100a95760003560e01c806380031e371161007157806380031e37146101535780639584df281461015b578063a15f30ac1461019f578063b2589544146101a7578063c72c4d10146101af578063ccab01a3146101d3576100a9565b80630bdf953f146100ae57806317319873146100c857806329db497d146100d057806365614f81146101435780637b832f581461014b575b600080fd5b6100b66101db565b60408051918252519081900360200190f35b6100b66101ff565b61012560048036036101008110156100e757600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a08101359060c08101359060e00135610223565b60408051938452602084019290925282820152519081900360600190f35b6100b66102dd565b6100b6610301565b6100b6610325565b610125600480360360c081101561017157600080fd5b506001600160a01b038135169060208101359060408101359060608101359060808101359060a001356103a0565b6100b66107c2565b6100b66107e6565b6101b761080a565b604080516001600160a01b039092168252519081900360200190f35b6100b661082e565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000808b6001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561027657600080fd5b505afa15801561028a573d6000803e3d6000fd5b505050506040513d60208110156102a057600080fd5b505190506102b8896102b2838d6108ad565b90610862565b90506102c88c828a8a8a8a6103a0565b93509350935050985098509895505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061039b7f00000000000000000000000000000000000000000000000000000000000000006103957f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006108ad565b906108ad565b905090565b60008060006103ad610ce8565b6103b788886108ad565b808252600060208301819052604083018190526060830152156103f25780516103ed906103e5908b906108ad565b825190610907565b6103f5565b60005b8160800181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633618abba6040518163ffffffff1660e01b815260040160206040518083038186803b15801561045757600080fd5b505afa15801561046b573d6000803e3d6000fd5b505050506040513d602081101561048157600080fd5b50516040805163bb85c0bb60e01b81526001600160a01b038d811660048301529151919092169163bb85c0bb916024808301926020929190829003018186803b1580156104cd57600080fd5b505afa1580156104e1573d6000803e3d6000fd5b505050506040513d60208110156104f757600080fd5b5051604082015260808101517f0000000000000000000000000000000000000000000000000000000000000000101561067257600061058d7f00000000000000000000000000000000000000000000000000000000000000006105877f0000000000000000000000000000000000000000000000000000000000000000856080015161086290919063ffffffff16565b90610907565b90506105eb6105bc7f000000000000000000000000000000000000000000000000000000000000000083610a4b565b6040840151610395907f00000000000000000000000000000000000000000000000000000000000000006108ad565b604083015261066761061d7f000000000000000000000000000000000000000000000000000000000000000083610a4b565b6103957f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006108ad565b60208301525061076c565b6106e16106d66106af7f0000000000000000000000000000000000000000000000000000000000000000846080015161090790919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000090610a4b565b6040830151906108ad565b604082015260808101516107669061073f907f000000000000000000000000000000000000000000000000000000000000000090610587907f0000000000000000000000000000000000000000000000000000000000000000610a4b565b7f0000000000000000000000000000000000000000000000000000000000000000906108ad565b60208201525b61079f61077b61271087610862565b61079983608001516107938c8c87602001518d610b0c565b90610a4b565b90610b73565b606082018190526040820151602090920151909b919a5098509650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000090565b6b033b2e3c9fd0803ce800000090565b60006108a483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c10565b90505b92915050565b6000828201838110156108a4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080518082019091526002815261035360f41b6020820152600090826109ac5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610971578181015183820152602001610959565b50505050905090810190601f16801561099e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce8000000821904851115610a285760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b5082816b033b2e3c9fd0803ce800000086020181610a4257fe5b04949350505050565b6000821580610a58575081155b15610a65575060006108a7565b816b019d971e4fe8401e740000001981610a7b57fe5b0483111560405180604001604052806002815260200161068760f31b81525090610ae65760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b506b033b2e3c9fd0803ce80000006002815b048385020181610b0457fe5b049392505050565b600080610b1986866108ad565b905080610b2a576000915050610b6b565b6000610b398561079388610c6a565b90506000610b4a856107938a610c6a565b90506000610b64610b5a85610c6a565b61058785856108ad565b9450505050505b949350505050565b6000821580610b80575081155b15610b8d575060006108a7565b816113881981610b9957fe5b0483111560405180604001604052806002815260200161068760f31b81525090610c045760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b50612710600281610af8565b60008184841115610c625760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b505050900390565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b81525090610ce15760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b5092915050565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160008152509056fea26469706673582212202de93b4e5bd8eff563a6594cebe41ba1046984974b817cc22176094a2c3682bf64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x80031E37 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x80031E37 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0x9584DF28 EQ PUSH2 0x15B JUMPI DUP1 PUSH4 0xA15F30AC EQ PUSH2 0x19F JUMPI DUP1 PUSH4 0xB2589544 EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0xC72C4D10 EQ PUSH2 0x1AF JUMPI DUP1 PUSH4 0xCCAB01A3 EQ PUSH2 0x1D3 JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0xBDF953F EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x17319873 EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0x29DB497D EQ PUSH2 0xD0 JUMPI DUP1 PUSH4 0x65614F81 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x7B832F58 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB6 PUSH2 0x1DB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB6 PUSH2 0x1FF JUMP JUMPDEST PUSH2 0x125 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x223 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB6 PUSH2 0x2DD JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x301 JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x325 JUMP JUMPDEST PUSH2 0x125 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x171 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x3A0 JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x7C2 JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x7E6 JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x80A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB6 PUSH2 0x82E JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP13 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x28A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x2B8 DUP10 PUSH2 0x2B2 DUP4 DUP14 PUSH2 0x8AD JUMP JUMPDEST SWAP1 PUSH2 0x862 JUMP JUMPDEST SWAP1 POP PUSH2 0x2C8 DUP13 DUP3 DUP11 DUP11 DUP11 DUP11 PUSH2 0x3A0 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP9 POP SWAP9 POP SWAP9 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39B PUSH32 0x0 PUSH2 0x395 PUSH32 0x0 PUSH32 0x0 PUSH2 0x8AD JUMP JUMPDEST SWAP1 PUSH2 0x8AD JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3AD PUSH2 0xCE8 JUMP JUMPDEST PUSH2 0x3B7 DUP9 DUP9 PUSH2 0x8AD JUMP JUMPDEST DUP1 DUP3 MSTORE PUSH1 0x0 PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP4 ADD MSTORE ISZERO PUSH2 0x3F2 JUMPI DUP1 MLOAD PUSH2 0x3ED SWAP1 PUSH2 0x3E5 SWAP1 DUP12 SWAP1 PUSH2 0x8AD JUMP JUMPDEST DUP3 MLOAD SWAP1 PUSH2 0x907 JUMP JUMPDEST PUSH2 0x3F5 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 PUSH1 0x80 ADD DUP2 DUP2 MSTORE POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3618ABBA PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x457 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x46B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xBB85C0BB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xBB85C0BB SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH32 0x0 LT ISZERO PUSH2 0x672 JUMPI PUSH1 0x0 PUSH2 0x58D PUSH32 0x0 PUSH2 0x587 PUSH32 0x0 DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0x862 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x907 JUMP JUMPDEST SWAP1 POP PUSH2 0x5EB PUSH2 0x5BC PUSH32 0x0 DUP4 PUSH2 0xA4B JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x395 SWAP1 PUSH32 0x0 PUSH2 0x8AD JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x667 PUSH2 0x61D PUSH32 0x0 DUP4 PUSH2 0xA4B JUMP JUMPDEST PUSH2 0x395 PUSH32 0x0 PUSH32 0x0 PUSH2 0x8AD JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH2 0x76C JUMP JUMPDEST PUSH2 0x6E1 PUSH2 0x6D6 PUSH2 0x6AF PUSH32 0x0 DUP5 PUSH1 0x80 ADD MLOAD PUSH2 0x907 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH32 0x0 SWAP1 PUSH2 0xA4B JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MLOAD SWAP1 PUSH2 0x8AD JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH2 0x766 SWAP1 PUSH2 0x73F SWAP1 PUSH32 0x0 SWAP1 PUSH2 0x587 SWAP1 PUSH32 0x0 PUSH2 0xA4B JUMP JUMPDEST PUSH32 0x0 SWAP1 PUSH2 0x8AD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST PUSH2 0x79F PUSH2 0x77B PUSH2 0x2710 DUP8 PUSH2 0x862 JUMP JUMPDEST PUSH2 0x799 DUP4 PUSH1 0x80 ADD MLOAD PUSH2 0x793 DUP13 DUP13 DUP8 PUSH1 0x20 ADD MLOAD DUP14 PUSH2 0xB0C JUMP JUMPDEST SWAP1 PUSH2 0xA4B JUMP JUMPDEST SWAP1 PUSH2 0xB73 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x20 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP12 SWAP2 SWAP11 POP SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8A4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0xC10 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x8A4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x9AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x971 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x959 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x99E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0xA28 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x971 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x959 JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0xA42 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0xA58 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0xA65 JUMPI POP PUSH1 0x0 PUSH2 0x8A7 JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0xA7B JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xAE6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x971 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x959 JUMP JUMPDEST POP PUSH12 0x33B2E3C9FD0803CE8000000 PUSH1 0x2 DUP2 JUMPDEST DIV DUP4 DUP6 MUL ADD DUP2 PUSH2 0xB04 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB19 DUP7 DUP7 PUSH2 0x8AD JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xB2A JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xB6B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB39 DUP6 PUSH2 0x793 DUP9 PUSH2 0xC6A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB4A DUP6 PUSH2 0x793 DUP11 PUSH2 0xC6A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB64 PUSH2 0xB5A DUP6 PUSH2 0xC6A JUMP JUMPDEST PUSH2 0x587 DUP6 DUP6 PUSH2 0x8AD JUMP JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0xB80 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0xB8D JUMPI POP PUSH1 0x0 PUSH2 0x8A7 JUMP JUMPDEST DUP2 PUSH2 0x1388 NOT DUP2 PUSH2 0xB99 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xC04 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x971 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x959 JUMP JUMPDEST POP PUSH2 0x2710 PUSH1 0x2 DUP2 PUSH2 0xAF8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xC62 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x971 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x959 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH4 0x3B9ACA00 DUP3 DUP2 MUL SWAP1 DUP4 SWAP1 DUP3 DIV EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xCE1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x971 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x959 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2D 0xE9 EXTCODESIZE 0x4E JUMPDEST 0xD8 0xEF CREATE2 PUSH4 0xA6594CEB 0xE4 SHL LOG1 DIV PUSH10 0x84974B817CC22176094A 0x2C CALLDATASIZE DUP3 0xBF PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "1093:8712:67:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3476:95;;;:::i;:::-;;;;;;;;;;;;;;;;1701:48;;;:::i;4690:746::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4690:746:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4690:746:67;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;3373:99;;;:::i;3270:::-;;;:::i;3794:168::-;;;:::i;6505:2101::-;;;;;;;;;;;;;;;;-1:-1:-1;6505:2101:67;;-1:-1:-1;;;;;6505:2101:67;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6505:2101:67;;;:::i;1427:49::-;;;:::i;3674:116::-;;;:::i;1754:64::-;;;:::i;:::-;;;;-1:-1:-1;;;;;1754:64:67;;;;;;;;;;;;;;3575:95;;;:::i;3476:::-;3549:17;3476:95;:::o;1701:48::-;;;:::o;4690:746::-;5083:33;;;-1:-1:-1;;;5083:33:67;;-1:-1:-1;;;;;5083:33:67;;;;;;;;;5002:7;;;;;;;;5083:25;;;;;:33;;;;;;;;;;;;;;:25;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5083:33:67;;-1:-1:-1;5170:58:67;5213:14;5170:38;5083:33;5193:14;5170:22;:38::i;:::-;:42;;:58::i;:::-;5149:79;;5248:183;5280:7;5297:18;5325:15;5350:17;5377:23;5410:13;5248:22;:183::i;:::-;5235:196;;;;;;;4690:746;;;;;;;;;;;;:::o;3373:99::-;3448:19;3373:99;:::o;3270:::-;3345:19;3270:99;:::o;3794:168::-;3862:7;3884:73;3937:19;3884:48;:23;3912:19;3884:27;:48::i;:::-;:52;;:73::i;:::-;3877:80;;3794:168;:::o;6505:2101::-;6771:7;6786;6801;6823:38;;:::i;:::-;6885;:15;6905:17;6885:19;:38::i;:::-;6868:55;;;:14;6929:30;;;:34;;;6969:28;;;:32;;;7007:25;;;:29;7066:19;:99;;7149:14;;7104:61;;7126:38;;:18;;:22;:38::i;:::-;7104:14;;;:21;:61::i;:::-;7066:99;;;7094:1;7066:99;7043:20;;;:122;7222:40;;;-1:-1:-1;;;7222:40:67;;;;-1:-1:-1;;;;;7222:17:67;:38;;;;:40;;;;;;;;;;;;;;:38;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7222:40:67;7203:96;;;-1:-1:-1;;;7203:96:67;;-1:-1:-1;;;;;7203:96:67;;;;;;;;;:87;;;;;-1:-1:-1;;7203:96:67;;;;;7222:40;;7203:96;;;;;;;:87;:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7203:96:67;7172:28;;;:127;7310:20;;;;7333:24;-1:-1:-1;7306:874:67;;;7367:34;7412:82;7470:23;7412:50;7437:24;7412:4;:20;;;:24;;:50;;;;:::i;:::-;:57;;:82::i;:::-;7367:127;-1:-1:-1;7534:125:67;7599:52;:17;7367:127;7599:24;:52::i;:::-;7534:28;;;;:51;;7567:17;7534:32;:51::i;:125::-;7503:28;;;:156;7701:124;7763:54;:19;7790:26;7763;:54::i;:::-;7701:48;:23;7729:19;7701:27;:48::i;:124::-;7668:30;;;:157;-1:-1:-1;7306:874:67;;;7877:129;7919:79;7944:53;7972:24;7944:4;:20;;;:27;;:53;;;;:::i;:::-;7919:17;;:24;:79::i;:::-;7877:28;;;;;:32;:129::i;:::-;7846:28;;;:160;8084:20;;;;8047:126;;8084:81;;8140:24;;8084:48;;8112:19;8084:27;:48::i;:81::-;8047:23;;:27;:126::i;:::-;8014:30;;;:159;7306:874;8214:260;8422:51;466:3:84;8459:13:67;8422:36;:51::i;:::-;8214:189;8382:4;:20;;;8214:153;8243:15;8266:17;8291:4;:39;;;8338:23;8214:21;:153::i;:::-;:167;;:189::i;:::-;:207;;:260::i;:::-;8186:25;;;:288;;;8529:28;;;;8565:30;;;;;8186:288;;8529:28;;-1:-1:-1;8565:30:67;-1:-1:-1;6505:2101:67;-1:-1:-1;;;;;;;6505:2101:67:o;1427:49::-;;;:::o;3674:116::-;3762:23;3674:116;:::o;1754:64::-;;;:::o;3575:95::-;3648:17;3575:95;:::o;578:68:86:-;432:4;578:68;:::o;1257:128:13:-;1315:7;1337:43;1341:1;1344;1337:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1330:50;;1257:128;;;;;:::o;851:162::-;909:7;936:5;;;955:6;;;;947:46;;;;;-1:-1:-1;;;947:46:13;;;;;;;;;;;;;;;;;;;;;;;;;;;2416:279:86;2508:28;;;;;;;;;;;;-1:-1:-1;;;2508:28:86;;;;-1:-1:-1;;2500:6:86;2492:45;;;;-1:-1:-1;;;2492:45:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2619:35:86;;;;;;;;;2563:1;2619:35;;;-1:-1:-1;;;2619:35:86;;;;2559:5;;;432:4;2585:25;;2584:33;2579:38;;;2571:84;;;;-1:-1:-1;;;2571:84:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2571:84:86;;;;;;;;;;;;;;;;;;2689:1;2680:5;432:4;2670:1;:7;:15;2669:21;;;;;;;2416:279;-1:-1:-1;;;;2416:279:86:o;2008:253::-;2069:7;2088:6;;;:16;;-1:-1:-1;2098:6:86;;2088:16;2084:45;;;-1:-1:-1;2121:1:86;2114:8;;2084:45;2180:1;-1:-1:-1;;2180:1:86;2148:33;;;;2183:35;;;;;;;;;;;;-1:-1:-1;;;2183:35:86;;;;;2148:33;;2143:38;;;2135:84;;;;-1:-1:-1;;;2135:84:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2135:84:86;;;;;;;;;;;;;;;;;-1:-1:-1;432:4:86;482:1;432:4;476:7;;2238:1;2234;:5;:15;2233:23;;;;;;;2008:253;-1:-1:-1;;;2008:253:86:o;9143:660:67:-;9344:7;;9379:38;:15;9399:17;9379:19;:38::i;:::-;9359:58;-1:-1:-1;9428:14:67;9424:28;;9451:1;9444:8;;;;;9424:28;9459;9490:62;9526:25;9490:28;:17;:26;:28::i;:62::-;9459:93;;9559:26;9588:65;9622:30;9588:26;:15;:24;:26::i;:65::-;9559:94;;9660:25;9694:73;9746:20;:9;:18;:20::i;:::-;9694:44;:20;9719:18;9694:24;:44::i;:73::-;9660:107;-1:-1:-1;;;;;9143:660:67;;;;;;;:::o;802:351:84:-;880:7;899:10;;;:29;;-1:-1:-1;913:15:84;;899:29;895:58;;;-1:-1:-1;945:1:84;938:8;;895:58;1020:10;-1:-1:-1;;1020:10:84;983:47;;;;1038:35;;;;;;;;;;;;-1:-1:-1;;;1038:35:84;;;;;983:47;;974:56;;;959:120;;;;-1:-1:-1;;;959:120:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;959:120:84;;;;;;;;;;;;;;;;;-1:-1:-1;466:3:84;556:1;466:3;536:21;;1649:189:13;1751:7;1782:12;1774:6;;;;1766:29;;;;-1:-1:-1;;;1766:29:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1766:29:13;;;;;;;;;;;;;;;;;-1:-1:-1;;;1813:5:13;;;1649:189::o;3173:204:86:-;3317:35;;;;;;;;;;;;-1:-1:-1;;;3317:35:86;;;;3225:7;;530:3;3257:17;;;;3317:35;3288:22;;:27;;3280:73;;;;-1:-1:-1;;;3280:73:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3280:73:86;;;;;;;;;;;;;;;;;-1:-1:-1;3366:6:86;3173:204;-1:-1:-1;;3173:204:86:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o"
            },
            "methodIdentifiers": {
              "EXCESS_UTILIZATION_RATE()": "17319873",
              "OPTIMAL_UTILIZATION_RATE()": "a15f30ac",
              "addressesProvider()": "c72c4d10",
              "baseVariableBorrowRate()": "b2589544",
              "calculateInterestRates(address,address,uint256,uint256,uint256,uint256,uint256,uint256)": "29db497d",
              "calculateInterestRates(address,uint256,uint256,uint256,uint256,uint256)": "9584df28",
              "getMaxVariableBorrowRate()": "80031e37",
              "stableRateSlope1()": "0bdf953f",
              "stableRateSlope2()": "ccab01a3",
              "variableRateSlope1()": "7b832f58",
              "variableRateSlope2()": "65614f81"
            }
          }
        }
      },
      "contracts/protocol/lendingpool/LendingPool.sol": {
        "LendingPool": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "borrowRateMode",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "borrowRate",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "uint16",
                  "name": "referral",
                  "type": "uint16"
                }
              ],
              "name": "Borrow",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "uint16",
                  "name": "referral",
                  "type": "uint16"
                }
              ],
              "name": "Deposit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "initiator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "premium",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint16",
                  "name": "referralCode",
                  "type": "uint16"
                }
              ],
              "name": "FlashLoan",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "collateralAsset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "debtAsset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "debtToCover",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "liquidatedCollateralAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "liquidator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "receiveAToken",
                  "type": "bool"
                }
              ],
              "name": "LiquidationCall",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "Paused",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "RebalanceStableBorrowRate",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "repayer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Repay",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "liquidityRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "stableBorrowRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "variableBorrowRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "liquidityIndex",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "variableBorrowIndex",
                  "type": "uint256"
                }
              ],
              "name": "ReserveDataUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "ReserveUsedAsCollateralDisabled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "ReserveUsedAsCollateralEnabled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "rateMode",
                  "type": "uint256"
                }
              ],
              "name": "Swap",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "Unpaused",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Withdraw",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "FLASHLOAN_PREMIUM_TOTAL",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LENDINGPOOL_REVISION",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "MAX_NUMBER_RESERVES",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "MAX_STABLE_RATE_BORROW_SIZE_PERCENT",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "interestRateMode",
                  "type": "uint256"
                },
                {
                  "internalType": "uint16",
                  "name": "referralCode",
                  "type": "uint16"
                },
                {
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                }
              ],
              "name": "borrow",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                },
                {
                  "internalType": "uint16",
                  "name": "referralCode",
                  "type": "uint16"
                }
              ],
              "name": "deposit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "balanceFromBefore",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "balanceToBefore",
                  "type": "uint256"
                }
              ],
              "name": "finalizeTransfer",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiverAddress",
                  "type": "address"
                },
                {
                  "internalType": "address[]",
                  "name": "assets",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "modes",
                  "type": "uint256[]"
                },
                {
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                },
                {
                  "internalType": "uint16",
                  "name": "referralCode",
                  "type": "uint16"
                }
              ],
              "name": "flashLoan",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAddressesProvider",
              "outputs": [
                {
                  "internalType": "contract ILendingPoolAddressesProvider",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "getConfiguration",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "data",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct DataTypes.ReserveConfigurationMap",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "getReserveData",
              "outputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "uint256",
                          "name": "data",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct DataTypes.ReserveConfigurationMap",
                      "name": "configuration",
                      "type": "tuple"
                    },
                    {
                      "internalType": "uint128",
                      "name": "liquidityIndex",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint128",
                      "name": "variableBorrowIndex",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint128",
                      "name": "currentLiquidityRate",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint128",
                      "name": "currentVariableBorrowRate",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint128",
                      "name": "currentStableBorrowRate",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint40",
                      "name": "lastUpdateTimestamp",
                      "type": "uint40"
                    },
                    {
                      "internalType": "address",
                      "name": "aTokenAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "stableDebtTokenAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "variableDebtTokenAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "interestRateStrategyAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "uint8",
                      "name": "id",
                      "type": "uint8"
                    }
                  ],
                  "internalType": "struct DataTypes.ReserveData",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "getReserveNormalizedIncome",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "getReserveNormalizedVariableDebt",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getReservesList",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getUserAccountData",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "totalCollateralETH",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "totalDebtETH",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "availableBorrowsETH",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "currentLiquidationThreshold",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "ltv",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "healthFactor",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getUserConfiguration",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "data",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct DataTypes.UserConfigurationMap",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "aTokenAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "stableDebtAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "variableDebtAddress",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "interestRateStrategyAddress",
                  "type": "address"
                }
              ],
              "name": "initReserve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPoolAddressesProvider",
                  "name": "provider",
                  "type": "address"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "collateralAsset",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "debtAsset",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "debtToCover",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "receiveAToken",
                  "type": "bool"
                }
              ],
              "name": "liquidationCall",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "paused",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "rebalanceStableBorrowRate",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "rateMode",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                }
              ],
              "name": "repay",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "configuration",
                  "type": "uint256"
                }
              ],
              "name": "setConfiguration",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "val",
                  "type": "bool"
                }
              ],
              "name": "setPause",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "rateStrategyAddress",
                  "type": "address"
                }
              ],
              "name": "setReserveInterestRateStrategyAddress",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "useAsCollateral",
                  "type": "bool"
                }
              ],
              "name": "setUserUseReserveAsCollateral",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "rateMode",
                  "type": "uint256"
                }
              ],
              "name": "swapBorrowRateMode",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "withdraw",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {
                "contracts/protocol/libraries/logic/ReserveLogic.sol": {
                  "ReserveLogic": [
                    {
                      "length": 20,
                      "start": 4103
                    }
                  ]
                },
                "contracts/protocol/libraries/logic/ValidationLogic.sol": {
                  "ValidationLogic": [
                    {
                      "length": 20,
                      "start": 1986
                    },
                    {
                      "length": 20,
                      "start": 2787
                    },
                    {
                      "length": 20,
                      "start": 3358
                    },
                    {
                      "length": 20,
                      "start": 4315
                    },
                    {
                      "length": 20,
                      "start": 7798
                    },
                    {
                      "length": 20,
                      "start": 9069
                    },
                    {
                      "length": 20,
                      "start": 12404
                    }
                  ]
                }
              },
              "object": "60806040526000805534801561001457600080fd5b506155c780620000256000396000f3fe608060405234801561001057600080fd5b50600436106101c35760003560e01c8063ab9c4b5d116100f9578063d15e005311610097578063e82fec2f11610071578063e82fec2f146103c2578063e8eda9df146103ca578063f8119d51146103dd578063fe65acfe146103e5576101c3565b8063d15e005314610387578063d1946dbc1461039a578063d5ed3933146103af576101c3565b8063bf92857c116100d3578063bf92857c14610329578063c44b11f71461034e578063c4d66de814610361578063cd11238214610374576101c3565b8063ab9c4b5d146102f0578063b8d2927614610303578063bedb86fb14610316576101c3565b80635a3b74b9116101665780637a708e92116101405780637a708e92146102af5780638afaff02146102c257806394ba89a2146102ca578063a415bcad146102dd576101c3565b80635a3b74b9146102745780635c975abb1461028757806369328dec1461029c576101c3565b806335ea6a75116101a257806335ea6a751461020e578063386497fd1461022e5780634417a58314610241578063573ade8114610261576101c3565b8062a718a9146101c8578063074b2e43146101dd5780631d2118f9146101fb575b600080fd5b6101db6101d6366004614875565b6103fa565b005b6101e56105d0565b6040516101f291906154bd565b60405180910390f35b6101db6102093660046147cd565b6105d6565b61022161021c366004614795565b61060f565b6040516101f291906152d5565b6101e561023c366004614795565b6106f1565b61025461024f366004614795565b610718565b6040516101f291906152cb565b6101e561026f366004614b14565b61074b565b6101db610282366004614a2a565b610a77565b61028f610c3c565b6040516101f29190615111565b6101e56102aa366004614a82565b610c45565b6101db6102bd366004614805565b610f6f565b6101e5611051565b6101db6102d8366004614a57565b611056565b6101db6102eb366004614b5d565b6113c3565b6101db6102fe366004614932565b611443565b6101db610311366004614a57565b611b17565b6101db610324366004614b9c565b611b3b565b61033c610337366004614795565b611bb6565b6040516101f29695949392919061550f565b61025461035c366004614795565b611cb2565b6101db61036f366004614795565b611ce5565b6101db6103823660046147cd565b611d8d565b6101e5610395366004614795565b612003565b6103a2612024565b6040516101f291906150c4565b6101db6103bd3660046148ce565b6120c9565b6101e5612312565b6101db6103d8366004614ac3565b612318565b6101e5612545565b6103ed61254b565b6040516101f29190614de3565b61040261255a565b6034546040805163712d917160e01b815290516000926001600160a01b03169163712d9171916004808301926020929190829003018186803b15801561044757600080fd5b505afa15801561045b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047f91906147b1565b905060006060826001600160a01b031688888888886040516024016104a8959493929190614e6b565b60408051601f198184030181529181526020820180516001600160e01b031662a718a960e01b179052516104dc9190614dc7565b600060405180830381855af49150503d8060008114610517576040519150601f19603f3d011682016040523d82523d6000602084013e61051c565b606091505b50915091508160405180604001604052806002815260200161323360f01b815250906105645760405162461bcd60e51b815260040161055b919061511c565b60405180910390fd5b50600060608280602001905181019061057d9190614bec565b9150915081600014816040516020016105969190614dc7565b604051602081830303815290604052906105c35760405162461bcd60e51b815260040161055b919061511c565b5050505050505050505050565b603b5490565b6105de612598565b6001600160a01b03918216600090815260356020526040902060070180546001600160a01b03191691909216179055565b6106176144e3565b506001600160a01b0381811660009081526035602090815260409182902082516101a08101845281546101808201908152815260018201546001600160801b0380821694830194909452600160801b908190048416948201949094526002820154808416606083015284900483166080820152600382015492831660a08201529290910464ffffffffff1660c08301526004810154831660e0830152600581015483166101008301526006810154831661012083015260070154918216610140820152600160a01b90910460ff166101608201525b919050565b6001600160a01b038116600090815260356020526040812061071290612657565b92915050565b61072061454e565b506001600160a01b031660009081526036602090815260409182902082519182019092529054815290565b600061075561255a565b6001600160a01b0385166000908152603560205260408120908061077985846126d4565b91509150600086600281111561078b57fe5b60405163fa0c214960e01b815290915073__$de8c0cf1a7d7c36c802af9a64fb9d86036$__9063fa0c2149906107cf9087908c9086908c908a908a9060040161547b565b60006040518083038186803b1580156107e757600080fd5b505af41580156107fb573d6000803e3d6000fd5b50600092506001915061080b9050565b82600281111561081757fe5b146108225782610824565b835b9050808910156108315750875b61083a856127e9565b600182600281111561084857fe5b14156108b9576005850154604051632770a7eb60e21b81526001600160a01b0390911690639dc29fac90610882908a908590600401614e28565b600060405180830381600087803b15801561089c57600080fd5b505af11580156108b0573d6000803e3d6000fd5b50505050610937565b60068501546001860154604051637a94c56560e11b81526001600160a01b039092169163f5298aca91610904918b918691600160801b9091046001600160801b031690600401614e41565b600060405180830381600087803b15801561091e57600080fd5b505af1158015610932573d6000803e3d6000fd5b505050505b60048501546001600160a01b0316610953868c838560006128b6565b610967826109618787612c1e565b90612c43565b61099f5760078601546001600160a01b038916600090815260366020526040812061099f929091600160a01b90910460ff1690612c85565b6109b46001600160a01b038c16338385612cf5565b6040516388dd91a160e01b81526001600160a01b038216906388dd91a1906109e29033908690600401614e28565b600060405180830381600087803b1580156109fc57600080fd5b505af1158015610a10573d6000803e3d6000fd5b50505050336001600160a01b0316886001600160a01b03168c6001600160a01b03167f4cdde6e09bb755c9a5589ebaec640bbfedff1362d4b255ebf8339782b9942faa85604051610a6191906154bd565b60405180910390a4509998505050505050505050565b610a7f61255a565b6001600160a01b03808316600090815260356020818152604080842033855260368352938190206038546034548351631f94a27560e31b81529351969773__$de8c0cf1a7d7c36c802af9a64fb9d86036$__97635fa297e5978a978d978d9792969295603795939493169263fca513a892600480840193919291829003018186803b158015610b0d57600080fd5b505afa158015610b21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4591906147b1565b6040518963ffffffff1660e01b8152600401610b689897969594939291906153f6565b60006040518083038186803b158015610b8057600080fd5b505af4158015610b94573d6000803e3d6000fd5b505050506007810154336000908152603660205260409020610bc091600160a01b900460ff1684612d53565b8115610c005760405133906001600160a01b038516907e058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f290600090a3610c37565b60405133906001600160a01b038516907f44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd90600090a35b505050565b60395460ff1690565b6000610c4f61255a565b6001600160a01b0380851660009081526035602052604080822060048082015492516370a0823160e01b8152919492909216929183916370a0823191610c9791339101614de3565b60206040518083038186803b158015610caf57600080fd5b505afa158015610cc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce79190614bd4565b905085600019811415610cf75750805b73__$de8c0cf1a7d7c36c802af9a64fb9d86036$__63d09db04a898385603560366000336001600160a01b03166001600160a01b031681526020019081526020016000206037603854603460009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8e57600080fd5b505afa158015610da2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc691906147b1565b6040518963ffffffff1660e01b8152600401610de9989796959493929190614f94565b60006040518083038186803b158015610e0157600080fd5b505af4158015610e15573d6000803e3d6000fd5b50505050610e22846127e9565b610e308489856000856128b6565b81811415610e9a576007840154336000908152603660205260408120610e63929091600160a01b90910460ff1690612d53565b60405133906001600160a01b038a16907f44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd90600090a35b6001840154604051636b81068560e11b81526001600160a01b0385169163d7020d0a91610edb9133918b9187916001600160801b0390911690600401614df7565b600060405180830381600087803b158015610ef557600080fd5b505af1158015610f09573d6000803e3d6000fd5b50505050856001600160a01b0316336001600160a01b0316896001600160a01b03167f3115d1449a7b732c986cba18244e897a450f61e1bb8d589cd2e69e6c8924f9f784604051610f5a91906154bd565b60405180910390a493505050505b9392505050565b610f77612598565b610f8085612dc9565b6040518060400160405280600281526020016106e760f31b81525090610fb95760405162461bcd60e51b815260040161055b919061511c565b506001600160a01b038516600090815260356020526040908190209051630acce25f60e21b815273__$22cd43a9dda9ce44e9b92ba393b88fb9ac$__91632b33897c91611011919088908890889088906004016153c8565b60006040518083038186803b15801561102957600080fd5b505af415801561103d573d6000803e3d6000fd5b5050505061104a85612e02565b5050505050565b600281565b61105e61255a565b6001600160a01b0382166000908152603560205260408120908061108233846126d4565b91509150600084600281111561109457fe5b3360009081526036602052604090819020905163a8695b1d60e01b815291925073__$de8c0cf1a7d7c36c802af9a64fb9d86036$__9163a8695b1d916110e591889190889088908890600401615438565b60006040518083038186803b1580156110fd57600080fd5b505af4158015611111573d6000803e3d6000fd5b5050505061111e846127e9565b600181600281111561112c57fe5b141561123c576005840154604051632770a7eb60e21b81526001600160a01b0390911690639dc29fac906111669033908790600401614e28565b600060405180830381600087803b15801561118057600080fd5b505af1158015611194573d6000803e3d6000fd5b505050506006840154600185015460405163b3f1c93d60e01b81526001600160a01b039092169163b3f1c93d916111e491339182918991600160801b90046001600160801b031690600401614df7565b602060405180830381600087803b1580156111fe57600080fd5b505af1158015611212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112369190614bb8565b50611352565b60068401546001850154604051637a94c56560e11b81526001600160a01b039092169163f5298aca916112879133918791600160801b9091046001600160801b031690600401614e41565b600060405180830381600087803b1580156112a157600080fd5b505af11580156112b5573d6000803e3d6000fd5b505050506005840154600385015460405163b3f1c93d60e01b81526001600160a01b039092169163b3f1c93d916112fe913391829188916001600160801b031690600401614df7565b602060405180830381600087803b15801561131857600080fd5b505af115801561132c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113509190614bb8565b505b600484015461137090859088906001600160a01b03166000806128b6565b336001600160a01b0316866001600160a01b03167fea368a40e9570069bb8e6511d668293ad2e1f03b0d982431fd223de9f3b70ca6876040516113b391906154bd565b60405180910390a3505050505050565b6113cb61255a565b6001600160a01b038086166000818152603560209081526040918290208251610100810184529384523391840191909152848416918301919091526060820187905260808201869052600481015490921660a082015261ffff841660c0820152600160e082015261143b90612f0b565b505050505050565b61144b61255a565b611453614561565b6114c08b8b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808f0282810182019093528e82529093508e92508d91829185019084908082843760009201919091525061340492505050565b60608a67ffffffffffffffff811180156114d957600080fd5b50604051908082528060200260200182016040528015611503578160200160208202803683370190505b50905060608b67ffffffffffffffff8111801561151f57600080fd5b50604051908082528060200260200182016040528015611549578160200160208202803683370190505b506001600160a01b038f1684526000604085015290505b60408301518c111561170d57603560008e8e866040015181811061158057fe5b90506020020160208101906115959190614795565b6001600160a01b03166001600160a01b0316815260200190815260200160002060040160009054906101000a90046001600160a01b0316828460400151815181106115dc57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505061163361271061162d603b548e8e886040015181811061161857fe5b9050602002013561344290919063ffffffff16565b9061347c565b8184604001518151811061164357fe5b6020026020010181815250508183604001518151811061165f57fe5b60200260200101516001600160a01b0316634efecaa58f8d8d876040015181811061168657fe5b905060200201356040518363ffffffff1660e01b81526004016116aa929190614e28565b602060405180830381600087803b1580156116c457600080fd5b505af11580156116d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fc9190614bd4565b506040830180516001019052611560565b82600001516001600160a01b031663920f5c848e8e8e8e86338d8d6040518963ffffffff1660e01b815260040161174b989796959493929190615000565b602060405180830381600087803b15801561176557600080fd5b505af1158015611779573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179d9190614bb8565b604051806040016040528060028152602001611b1b60f11b815250906117d65760405162461bcd60e51b815260040161055b919061511c565b50600060408401525b60408301518c1115611b07578c8c84604001518181106117fb57fe5b90506020020160208101906118109190614795565b6001600160a01b0316606084015260408301518b908b9081811061183057fe5b905060200201358360a00181815250508083604001518151811061185057fe5b60200260200101518360c00181815250508183604001518151811061187157fe5b60209081029190910101516001600160a01b0316608084015260c083015160a084015161189d91612c1e565b60e08401526000898985604001518181106118b457fe5b9050602002013560028111156118c657fe5b60028111156118d157fe5b1415611a035760608301516001600160a01b031660009081526035602052604090206118fc906127e9565b61199c83608001516001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561193c57600080fd5b505afa158015611950573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119749190614bd4565b60c085015160608601516001600160a01b0316600090815260356020526040902091906134be565b6060830151608084015160e08501516001600160a01b03831660009081526035602052604081206119d2949093909290916128b6565b6119fe8e84608001518560e0015186606001516001600160a01b0316612cf5909392919063ffffffff16565b611a92565b611a9260405180610100016040528085606001516001600160a01b03168152602001336001600160a01b03168152602001896001600160a01b031681526020018560a0015181526020018b8b8760400151818110611a5d57fe5b90506020020135815260200185608001516001600160a01b031681526020018661ffff16815260200160001515815250612f0b565b82606001516001600160a01b0316336001600160a01b03168f6001600160a01b03167f631042c832b07452973831137f2d73e395028b44b250dedc5abb0ee766e168ac8660a001518760c0015189604051611aef939291906154c6565b60405180910390a460408301805160010190526117df565b5050505050505050505050505050565b611b1f612598565b6001600160a01b03909116600090815260356020526040902055565b611b43612598565b6039805460ff1916821515179081905560ff1615611b89576040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1611bb3565b6040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a15b50565b600080600080600080611c8f876035603660008b6001600160a01b03166001600160a01b031681526020019081526020016000206040518060200160405290816000820154815250506037603854603460009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b158015611c5257600080fd5b505afa158015611c66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8a91906147b1565b61357b565b93995091975090945092509050611ca7868684613a3c565b935091939550919395565b611cba61454e565b506001600160a01b031660009081526035602090815260409182902082519182019092529054815290565b6000611cef613a70565b60015490915060ff1680611d065750611d06613a75565b80611d12575060005481115b611d2e5760405162461bcd60e51b815260040161055b906151fc565b60015460ff16158015611d4d576001805460ff19168117905560008290555b603480546001600160a01b0319166001600160a01b0385161790556109c4603a556009603b556080603c558015610c37576001805460ff19169055505050565b611d9561255a565b6001600160a01b038083166000908152603560205260408082206005810154600682015460048084015494516370a0823160e01b81529396928316959183169490921692909185916370a0823191611def918a9101614de3565b60206040518083038186803b158015611e0757600080fd5b505afa158015611e1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3f9190614bd4565b60405163548cad0960e01b815290915073__$de8c0cf1a7d7c36c802af9a64fb9d86036$__9063548cad0990611e819088908b908990899089906004016153c8565b60006040518083038186803b158015611e9957600080fd5b505af4158015611ead573d6000803e3d6000fd5b50505050611eba856127e9565b604051632770a7eb60e21b81526001600160a01b03851690639dc29fac90611ee89089908590600401614e28565b600060405180830381600087803b158015611f0257600080fd5b505af1158015611f16573d6000803e3d6000fd5b505050600386015460405163b3f1c93d60e01b81526001600160a01b038716925063b3f1c93d91611f59918a91829187916001600160801b031690600401614df7565b602060405180830381600087803b158015611f7357600080fd5b505af1158015611f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fab9190614bb8565b50611fba8588846000806128b6565b856001600160a01b0316876001600160a01b03167f9f439ae0c81e41a04d3fdfe07aed54e6a179fb0db15be7702eb66fa8ef6f530060405160405180910390a350505050505050565b6001600160a01b038116600090815260356020526040812061071290613a7b565b60608060385467ffffffffffffffff8111801561204057600080fd5b5060405190808252806020026020018201604052801561206a578160200160208202803683370190505b50905060005b6038548110156120c35760008181526037602052604090205482516001600160a01b03909116908390839081106120a357fe5b6001600160a01b0390921660209283029190910190910152600101612070565b50905090565b6120d161255a565b6001600160a01b038681166000908152603560209081526040918290206004015482518084019093526002835261363360f01b91830191909152909116331461212d5760405162461bcd60e51b815260040161055b919061511c565b506121e985603560366000896001600160a01b03166001600160a01b031681526020019081526020016000206037603854603460009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b1580156121ac57600080fd5b505afa1580156121c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e491906147b1565b613ada565b6001600160a01b03868116600090815260356020526040902060070154600160a01b900460ff169085811690871614612309576122268385612c43565b612292576001600160a01b0386166000908152603660205260408120906122509082908490612d53565b866001600160a01b0316886001600160a01b03167f44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd60405160405180910390a3505b8115801561229f57508315155b15612309576001600160a01b03851660009081526036602052604090206122c881836001612d53565b856001600160a01b0316886001600160a01b03167e058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f260405160405180910390a3505b50505050505050565b603a5490565b61232061255a565b6001600160a01b038416600090815260356020526040908190209051630eca322b60e01b815273__$de8c0cf1a7d7c36c802af9a64fb9d86036$__90630eca322b90612372908490889060040161546d565b60006040518083038186803b15801561238a57600080fd5b505af415801561239e573d6000803e3d6000fd5b5050505060048101546001600160a01b03166123b9826127e9565b6123c78287838860006128b6565b6123dc6001600160a01b038716338388612cf5565b6001820154604051630ab714fb60e11b81526000916001600160a01b0384169163156e29f69161241e9189918b916001600160801b0390911690600401614e41565b602060405180830381600087803b15801561243857600080fd5b505af115801561244c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124709190614bb8565b905080156124ea5760078301546001600160a01b03861660009081526036602052604090206124aa91600160a01b900460ff166001612d53565b846001600160a01b0316876001600160a01b03167e058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f260405160405180910390a35b8361ffff16856001600160a01b0316886001600160a01b03167fde6857219544bb5b7746f48ed30be6386fefc61b2f864cacf559893bf50fd951338a604051612534929190614e28565b60405180910390a450505050505050565b603c5490565b6034546001600160a01b031690565b6039546040805180820190915260028152610d8d60f21b60208201529060ff1615611bb35760405162461bcd60e51b815260040161055b919061511c565b603454604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b1580156125dc57600080fd5b505afa1580156125f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261491906147b1565b6001600160a01b03161460405180604001604052806002815260200161323760f01b81525090611bb35760405162461bcd60e51b815260040161055b919061511c565b600381015460009064ffffffffff600160801b90910481169042168114156126955750506001810154600160801b90046001600160801b03166106ec565b600183015460028401546000916126cc916001600160801b03600160801b928390048116926126c692041685613b50565b90613b5d565b949350505050565b60058101546040516370a0823160e01b815260009182916001600160a01b03909116906370a082319061270b908790600401614de3565b60206040518083038186803b15801561272357600080fd5b505afa158015612737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275b9190614bd4565b60068401546040516370a0823160e01b81526001600160a01b03909116906370a082319061278d908890600401614de3565b60206040518083038186803b1580156127a557600080fd5b505afa1580156127b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127dd9190614bd4565b915091505b9250929050565b60068101546040805163b1bf962d60e01b815290516000926001600160a01b03169163b1bf962d916004808301926020929190829003018186803b15801561283057600080fd5b505afa158015612844573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128689190614bd4565b60018301546003840154919250600160801b8082046001600160801b03908116939216910464ffffffffff166000806128a48787868887613bf0565b91509150612309878787858588613d4d565b6128be6145ad565b60058601546001600160a01b031680825260408051637b98f4df60e11b8152815163f731e9be92600480840193919291829003018186803b15801561290257600080fd5b505afa158015612916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293a9190614c93565b60c083015260408083019190915260018701546006880154825163b1bf962d60e01b815292516129df93600160801b9093046001600160801b0316926001600160a01b039092169163b1bf962d916004808301926020929190829003018186803b1580156129a757600080fd5b505afa1580156129bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c69190614bd4565b60e082018190526007870154604083015160c08401516001600160a01b03909216926329db497d9289928992899289929190612a1a8f613f10565b6040518963ffffffff1660e01b8152600401612a3d989796959493929190614eec565b60606040518083038186803b158015612a5557600080fd5b505afa158015612a69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8d9190614cb6565b60a0840152608083015260608201819052604080518082019091526002815261353360f01b6020820152906001600160801b031015612adf5760405162461bcd60e51b815260040161055b919061511c565b506080810151604080518082019091526002815261353560f01b6020820152906001600160801b031015612b265760405162461bcd60e51b815260040161055b919061511c565b5060a08101516040805180820190915260028152610d4d60f21b6020820152906001600160801b031015612b6d5760405162461bcd60e51b815260040161055b919061511c565b506060810151600287018054608084015160038a0180546001600160801b03199081166001600160801b038085169190911790925560a08701519316818616178116600160801b84831681029190911790945560018b01546040516001600160a01b038c16967f804c9b842b2748a22bb64b345453a3de7ca54a6ca45ce00d415894979e22897a96612c0e96919594919380831693919004909116906154e0565b60405180910390a2505050505050565b600082820183811015610f685760405162461bcd60e51b815260040161055b9061514f565b6000610f6883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613f1b565b604080518082019091526002815261373760f01b602082015260808310612cbf5760405162461bcd60e51b815260040161055b919061511c565b508160020281612cd0576000612cd3565b60015b60ff16901b826002026001901b19846000015416178360000181905550505050565b612d4d846323b872dd60e01b858585604051602401612d1693929190614e9f565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613f47565b50505050565b604080518082019091526002815261373760f01b602082015260808310612d8d5760405162461bcd60e51b815260040161055b919061511c565b508160020260010181612da1576000612da4565b60015b60ff16901b826002026001016001901b19846000015416178360000181905550505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906126cc575050151592915050565b603854603c54604080518082019091526002815261363560f01b6020820152908210612e415760405162461bcd60e51b815260040161055b919061511c565b506001600160a01b038216600090815260356020526040812060070154600160a01b900460ff16151580612eaa57506000805260376020527fa0a618d80eda9243166be83cb7421d97e9dab6ddddd3c70ac7a6b4440256e8e7546001600160a01b038481169116145b905080610c3757506001600160a01b03919091166000818152603560209081526040808320600701805460ff60a01b1916600160a01b60ff8816021790558483526037909152902080546001600160a01b0319169091179055600101603855565b80516001600160a01b0390811660009081526035602090815260408083208186015185168452603683528184206034548351631f94a27560e31b81529351929691959491169263fca513a89260048083019392829003018186803b158015612f7257600080fd5b505afa158015612f86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612faa91906147b1565b9050600061304b612fba8561402c565b600a0a61162d8760600151856001600160a01b031663b3596f078a600001516040518263ffffffff1660e01b8152600401612ff59190614de3565b60206040518083038186803b15801561300d57600080fd5b505afa158015613021573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130459190614bd4565b90613442565b905073__$de8c0cf1a7d7c36c802af9a64fb9d86036$__63721a92f986600001518688604001518960600151868b60800151603a5460358c60376038548e6040518d63ffffffff1660e01b81526004016130b09c9b9a99989796959493929190614f30565b60006040518083038186803b1580156130c857600080fd5b505af41580156130dc573d6000803e3d6000fd5b505050506130e9846127e9565b6000806001876080015160028111156130fe57fe5b600281111561310957fe5b14156131be576003860154600587015460208901516040808b015160608c0151915163b3f1c93d60e01b81526001600160801b0390951696506001600160a01b039093169363b3f1c93d93613165939290918890600401614ec3565b602060405180830381600087803b15801561317f57600080fd5b505af1158015613193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b79190614bb8565b905061326d565b600686015460208801516040808a015160608b015160018b0154925163b3f1c93d60e01b81526001600160a01b039095169463b3f1c93d946132189490939291600160801b9091046001600160801b031690600401614df7565b602060405180830381600087803b15801561323257600080fd5b505af1158015613246573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326a9190614bb8565b90505b801561328f57600786015461328f908690600160a01b900460ff166001612c85565b6132be87600001518860a0015160008a60e001516132ae5760006132b4565b8a606001515b8a939291906128b6565b8660e0015115613356578660a001516001600160a01b0316634efecaa5886020015189606001516040518363ffffffff1660e01b8152600401613302929190614e28565b602060405180830381600087803b15801561331c57600080fd5b505af1158015613330573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133549190614bd4565b505b8660c0015161ffff1687604001516001600160a01b031688600001516001600160a01b03167fc6a898309e823ee50bac64e45ca8adba6690e99e7841c45d754e2a38e9019d9b8a602001518b606001518c60800151600160028111156133b857fe5b8e6080015160028111156133c857fe5b60028111156133d357fe5b146133f25760028d0154600160801b90046001600160801b03166133f4565b885b6040516125349493929190614fda565b805182511460405180604001604052806002815260200161373360f01b81525090610c375760405162461bcd60e51b815260040161055b919061511c565b60008261345157506000610712565b8282028284828161345e57fe5b0414610f685760405162461bcd60e51b815260040161055b906151bb565b6000610f6883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614036565b60006134db6134cc8461406d565b6134d58461406d565b906140bd565b905060006134f16134ea614168565b8390612c1e565b600186015490915061350d9082906001600160801b0316613b5d565b604080518082019091526002815261353160f01b60208201529091506001600160801b038211156135515760405162461bcd60e51b815260040161055b919061511c565b5060019490940180546001600160801b0319166001600160801b0390951694909417909355505050565b600080600080600061358b6145fb565b6135948a614178565b156135b2576000806000806000199550955095509550955050613a2e565b600060e08201525b878160e00151101561398d5760e08101516135d6908b9061417d565b6135df5761397d565b60e0810151600090815260208a81526040808320546001600160a01b03166101e085018190528352908d90529020613616816141ce565b506080860181905260c08601929092525060a0840191909152600a0a60208301526101e082015160405163b3596f0760e01b81526001600160a01b038a169163b3596f07916136689190600401614de3565b60206040518083038186803b15801561368057600080fd5b505afa158015613694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136b89190614bd4565b825260c0820151158015906136d8575060e08201516136d8908c906141f9565b156137f6578060040160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b81526004016137209190614de3565b60206040518083038186803b15801561373857600080fd5b505afa15801561374c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137709190614bd4565b604083018190526020830151835160009261378f929161162d91613442565b6101208401519091506137a29082612c1e565b61012084015260a08301516137c8906137bc908390613442565b61016085015190612c1e565b61016084015260c08301516137ee906137e2908390613442565b61018085015190612c1e565b610180840152505b60e0820151613806908c90614251565b1561397b578060050160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b815260040161384e9190614de3565b60206040518083038186803b15801561386657600080fd5b505afa15801561387a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061389e9190614bd4565b8260600181815250506139488160060160009054906101000a90046001600160a01b03166001600160a01b03166370a082318f6040518263ffffffff1660e01b81526004016138ed9190614de3565b60206040518083038186803b15801561390557600080fd5b505afa158015613919573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061393d9190614bd4565b606084015190612c1e565b606083018190526020830151835161397492613968929161162d91613442565b61014084015190612c1e565b6101408301525b505b60e08101805160010190526135ba565b6000816101200151116139a15760006139b6565b6101208101516101608201516139b69161347c565b6101608201526101208101516139cd5760006139e2565b6101208101516101808201516139e29161347c565b61018082018190526101208201516101408301516139ff926142a2565b610100820181905261012082015161014083015161016084015161018090940151919850965091945090925090505b965096509650965096915050565b600080613a4985846142c6565b905083811015613a5d576000915050610f68565b613a678185612c43565b95945050505050565b600290565b303b1590565b600381015460009064ffffffffff600160801b9091048116904216811415613ab257505060018101546001600160801b03166106ec565b600183015460028401546000916126cc916001600160801b03918216916126c6911685614335565b604080516020810190915284548152600090613afc908890889087878761357b565b945050505050670de0b6b3a7640000811015604051806040016040528060018152602001601b60f91b81525090613b465760405162461bcd60e51b815260040161055b919061511c565b5050505050505050565b6000610f68838342614373565b6000821580613b6a575081155b15613b7757506000610712565b816b019d971e4fe8401e740000001981613b8d57fe5b0483111560405180604001604052806002815260200161068760f31b81525090613bca5760405162461bcd60e51b815260040161055b919061511c565b506b033b2e3c9fd0803ce80000006002815b048385020181613be857fe5b049392505050565b600285015460009081906001600160801b031685858215613d1e576000613c178488614335565b9050613c23818a613b5d565b604080518082019091526002815261353160f01b60208201529093506001600160801b03841115613c675760405162461bcd60e51b815260040161055b919061511c565b5060018b0180546001600160801b0319166001600160801b0385161790558915613d1c5760028b0154600090613cad90600160801b90046001600160801b031689613b50565b9050613cb9818a613b5d565b6040805180820190915260028152611a9960f11b60208201529093506001600160801b03841115613cfd5760405162461bcd60e51b815260040161055b919061511c565b505060018b0180546001600160801b03808516600160801b0291161790555b505b600399909901805464ffffffffff60801b1916600160801b4264ffffffffff1602179055989650505050505050565b613d55614695565b613d5e87613f10565b6101208201819052613d70575061143b565b8660050160009054906101000a90046001600160a01b03166001600160a01b031663797743386040518163ffffffff1660e01b815260040160806040518083038186803b158015613dc057600080fd5b505afa158015613dd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df89190614ce3565b64ffffffffff1661014085015260a084015282526020820152613e1b8686613b5d565b6080820152613e2a8684613b5d565b606082015260a0810151610140820151613e4c919064ffffffffff8516614373565b60c082018190526020820151613e6191613b5d565b60408201819052608082015182516060840151613e8693926109619290918391612c1e565b60e08201819052610120820151613e9d91906142c6565b61010082018190521561230957600480880154610100830151604051637df5bd3b60e01b81526001600160a01b0390921692637df5bd3b92613ee2929189910161546d565b600060405180830381600087803b158015613efc57600080fd5b505af11580156105c3573d6000803e3d6000fd5b5460401c61ffff1690565b60008184841115613f3f5760405162461bcd60e51b815260040161055b919061511c565b505050900390565b613f59826001600160a01b0316612dc9565b613f755760405162461bcd60e51b815260040161055b90615294565b60006060836001600160a01b031683604051613f919190614dc7565b6000604051808303816000865af19150503d8060008114613fce576040519150601f19603f3d011682016040523d82523d6000602084013e613fd3565b606091505b509150915081613ff55760405162461bcd60e51b815260040161055b90615186565b805115612d4d57808060200190518101906140109190614bb8565b612d4d5760405162461bcd60e51b815260040161055b9061524a565b5460301c60ff1690565b600081836140575760405162461bcd60e51b815260040161055b919061511c565b50600083858161406357fe5b0495945050505050565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b815250906140b65760405162461bcd60e51b815260040161055b919061511c565b5092915050565b604080518082019091526002815261035360f41b6020820152600090826140f75760405162461bcd60e51b815260040161055b919061511c565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156141455760405162461bcd60e51b815260040161055b919061511c565b5082816b033b2e3c9fd0803ce80000008602018161415f57fe5b04949350505050565b6b033b2e3c9fd0803ce800000090565b511590565b60006080821060405180604001604052806002815260200161373760f01b815250906141bc5760405162461bcd60e51b815260040161055b919061511c565b50509051600360029092021c16151590565b5461ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b60006080821060405180604001604052806002815260200161373760f01b815250906142385760405162461bcd60e51b815260040161055b919061511c565b5050815160016002830281019190911c16151592915050565b60006080821060405180604001604052806002815260200161373760f01b815250906142905760405162461bcd60e51b815260040161055b919061511c565b50509051600160029092021c16151590565b6000826142b25750600019610f68565b6126cc836142c086856142c6565b90614449565b60008215806142d3575081155b156142e057506000610712565b8161138819816142ec57fe5b0483111560405180604001604052806002815260200161068760f31b815250906143295760405162461bcd60e51b815260040161055b919061511c565b50612710600281613bdc565b6000806143494264ffffffffff8516612c43565b90506126cc614356614168565b6301e133806143658785613442565b8161436c57fe5b0490612c1e565b6000806143878364ffffffffff8616612c43565b90508061439e57614396614168565b915050610f68565b60001981016000600283116143b45760006143b9565b600283035b90506301e13380870460006143ce8280613b5d565b905060006143dc8284613b5d565b9050600060026143f0846130458a8a613442565b816143f757fe5b0490506000600661440e8461304589818d8d613442565b8161441557fe5b04905061443981614433848161442b8a8e613442565b614433614168565b90612c1e565b9c9b505050505050505050505050565b604080518082019091526002815261035360f41b6020820152600090826144835760405162461bcd60e51b815260040161055b919061511c565b5060408051808201909152600280825261068760f31b6020830152830490670de0b6b3a76400008219048511156144cd5760405162461bcd60e51b815260040161055b919061511c565b508281670de0b6b3a76400008602018161415f57fe5b6040518061018001604052806144f761454e565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040518060200160405280600081525090565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60405180610100016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806102400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b031681526020016000151581526020016000151581525090565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600064ffffffffff1681525090565b80356107128161556e565b60008083601f840112614712578182fd5b50813567ffffffffffffffff811115614729578182fd5b60208301915083602080830285010111156127e257600080fd5b60008083601f840112614754578182fd5b50813567ffffffffffffffff81111561476b578182fd5b6020830191508360208285010111156127e257600080fd5b803561ffff8116811461071257600080fd5b6000602082840312156147a6578081fd5b8135610f688161556e565b6000602082840312156147c2578081fd5b8151610f688161556e565b600080604083850312156147df578081fd5b82356147ea8161556e565b915060208301356147fa8161556e565b809150509250929050565b600080600080600060a0868803121561481c578081fd5b85356148278161556e565b945060208601356148378161556e565b935060408601356148478161556e565b925060608601356148578161556e565b915060808601356148678161556e565b809150509295509295909350565b600080600080600060a0868803121561488c578081fd5b85356148978161556e565b945060208601356148a78161556e565b935060408601356148b78161556e565b925060608601359150608086013561486781615583565b60008060008060008060c087890312156148e6578081fd5b86356148f18161556e565b955060208701356149018161556e565b945060408701356149118161556e565b959894975094956060810135955060808101359460a0909101359350915050565b600080600080600080600080600080600060e08c8e031215614952578485fd5b61495c8d8d6146f6565b9a5067ffffffffffffffff8060208e01351115614977578586fd5b6149878e60208f01358f01614701565b909b50995060408d013581101561499c578586fd5b6149ac8e60408f01358f01614701565b909950975060608d01358110156149c1578586fd5b6149d18e60608f01358f01614701565b90975095506149e38e60808f016146f6565b94508060a08e013511156149f5578384fd5b50614a068d60a08e01358e01614743565b9093509150614a188d60c08e01614783565b90509295989b509295989b9093969950565b60008060408385031215614a3c578081fd5b8235614a478161556e565b915060208301356147fa81615583565b60008060408385031215614a69578182fd5b8235614a748161556e565b946020939093013593505050565b600080600060608486031215614a96578081fd5b8335614aa18161556e565b9250602084013591506040840135614ab88161556e565b809150509250925092565b60008060008060808587031215614ad8578182fd5b8435614ae38161556e565b9350602085013592506040850135614afa8161556e565b9150614b098660608701614783565b905092959194509250565b60008060008060808587031215614b29578182fd5b8435614b348161556e565b935060208501359250604085013591506060850135614b528161556e565b939692955090935050565b600080600080600060a08688031215614b74578283fd5b8535614b7f8161556e565b945060208601359350604086013592506148578760608801614783565b600060208284031215614bad578081fd5b8135610f6881615583565b600060208284031215614bc9578081fd5b8151610f6881615583565b600060208284031215614be5578081fd5b5051919050565b60008060408385031215614bfe578182fd5b82519150602083015167ffffffffffffffff80821115614c1c578283fd5b818501915085601f830112614c2f578283fd5b815181811115614c3d578384fd5b604051601f8201601f191681016020018381118282101715614c5d578586fd5b604052818152838201602001881015614c74578485fd5b614c85826020830160208701615542565b809450505050509250929050565b60008060408385031215614ca5578182fd5b505080516020909101519092909150565b600080600060608486031215614cca578081fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215614cf8578182fd5b845193506020850151925060408501519150606085015164ffffffffff81168114614b52578182fd5b6001600160a01b0316815260200190565b6001600160a01b03169052565b6000815180845260208085019450808401835b83811015614d6e57815187529582019590820190600101614d52565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b519052565b6001600160801b03169052565b64ffffffffff169052565b60ff169052565b60008251614dd9818460208701615542565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03948516815292909316602083015260408201526001600160801b03909116606082015260800190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393909316835260208301919091526001600160801b0316604082015260600190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252901515608082015260a00190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b03988916815296909716602087015260408601949094526060850192909252608084015260a083015260c082015260e08101919091526101000190565b6001600160a01b039c8d168152602081019b909b52988b1660408b015260608a0197909752608089019590955260a088019390935260c087019190915260e08601526101008501526101208401526101408301529091166101608201526101800190565b6001600160a01b039889168152602081019790975260408701959095526060860193909352608085019190915260a084015260c083015290911660e08201526101000190565b6001600160a01b0394909416845260208401929092526040830152606082015260800190565b600060a0820160a08352806150158b836154bd565b90508b9150825b8b811015615048576020830161503b8361503683876146f6565b614d21565b909350915060010161501c565b5083810360208501528881526001600160fb1b03891115615067578283fd5b602089029150818a602083013701602081810183815284830390910160408501526150928189614d3f565b9150506150a26060840187614d32565b82810360808401526150b5818587614d79565b9b9a5050505050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156151055783516001600160a01b0316835292840192918401916001016150e0565b50909695505050505050565b901515815260200190565b600060208252825180602084015261513b816040850160208701615542565b601f01601f19169190910160400192915050565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b9051815260200190565b6000610180820190506152e9828451614da3565b60208301516152fb6020840182614da8565b50604083015161530e6040840182614da8565b5060608301516153216060840182614da8565b5060808301516153346080840182614da8565b5060a083015161534760a0840182614da8565b5060c083015161535a60c0840182614db5565b5060e083015161536d60e0840182614d32565b506101008084015161538182850182614d32565b50506101208084015161539682850182614d32565b5050610140808401516153ab82850182614d32565b5050610160808401516153c082850182614dc0565b505092915050565b9485526001600160a01b03938416602086015291831660408501528216606084015216608082015260a00190565b9788526001600160a01b03968716602089015294151560408801526060870193909352608086019190915260a085015260c08401521660e08201526101000190565b600060a08201905086825285602083015284604083015283606083015261545e83615537565b60808301529695505050505050565b918252602082015260400190565b8681526020810186905260c0810161549286615537565b60408301526001600160a01b03949094166060820152608081019290925260a0909101529392505050565b90815260200190565b928352602083019190915261ffff16604082015260600190565b948552602085019390935260408401919091526001600160801b03908116606084015216608082015260a00190565b958652602086019490945260408501929092526060840152608083015260a082015260c00190565b80600381106106ec57fe5b60005b8381101561555d578181015183820152602001615545565b83811115612d4d5750506000910152565b6001600160a01b0381168114611bb357600080fd5b8015158114611bb357600080fdfea26469706673582212202505739dab21150e478c1736417a175691c65c6a55ed7b492de01e7270751db164736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x55C7 DUP1 PUSH3 0x25 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1C3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAB9C4B5D GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xD15E0053 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xE82FEC2F GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xE82FEC2F EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0xE8EDA9DF EQ PUSH2 0x3CA JUMPI DUP1 PUSH4 0xF8119D51 EQ PUSH2 0x3DD JUMPI DUP1 PUSH4 0xFE65ACFE EQ PUSH2 0x3E5 JUMPI PUSH2 0x1C3 JUMP JUMPDEST DUP1 PUSH4 0xD15E0053 EQ PUSH2 0x387 JUMPI DUP1 PUSH4 0xD1946DBC EQ PUSH2 0x39A JUMPI DUP1 PUSH4 0xD5ED3933 EQ PUSH2 0x3AF JUMPI PUSH2 0x1C3 JUMP JUMPDEST DUP1 PUSH4 0xBF92857C GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0xBF92857C EQ PUSH2 0x329 JUMPI DUP1 PUSH4 0xC44B11F7 EQ PUSH2 0x34E JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x361 JUMPI DUP1 PUSH4 0xCD112382 EQ PUSH2 0x374 JUMPI PUSH2 0x1C3 JUMP JUMPDEST DUP1 PUSH4 0xAB9C4B5D EQ PUSH2 0x2F0 JUMPI DUP1 PUSH4 0xB8D29276 EQ PUSH2 0x303 JUMPI DUP1 PUSH4 0xBEDB86FB EQ PUSH2 0x316 JUMPI PUSH2 0x1C3 JUMP JUMPDEST DUP1 PUSH4 0x5A3B74B9 GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x7A708E92 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x7A708E92 EQ PUSH2 0x2AF JUMPI DUP1 PUSH4 0x8AFAFF02 EQ PUSH2 0x2C2 JUMPI DUP1 PUSH4 0x94BA89A2 EQ PUSH2 0x2CA JUMPI DUP1 PUSH4 0xA415BCAD EQ PUSH2 0x2DD JUMPI PUSH2 0x1C3 JUMP JUMPDEST DUP1 PUSH4 0x5A3B74B9 EQ PUSH2 0x274 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0x69328DEC EQ PUSH2 0x29C JUMPI PUSH2 0x1C3 JUMP JUMPDEST DUP1 PUSH4 0x35EA6A75 GT PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x35EA6A75 EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0x386497FD EQ PUSH2 0x22E JUMPI DUP1 PUSH4 0x4417A583 EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0x573ADE81 EQ PUSH2 0x261 JUMPI PUSH2 0x1C3 JUMP JUMPDEST DUP1 PUSH3 0xA718A9 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x74B2E43 EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x1D2118F9 EQ PUSH2 0x1FB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1DB PUSH2 0x1D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4875 JUMP JUMPDEST PUSH2 0x3FA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1E5 PUSH2 0x5D0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F2 SWAP2 SWAP1 PUSH2 0x54BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1DB PUSH2 0x209 CALLDATASIZE PUSH1 0x4 PUSH2 0x47CD JUMP JUMPDEST PUSH2 0x5D6 JUMP JUMPDEST PUSH2 0x221 PUSH2 0x21C CALLDATASIZE PUSH1 0x4 PUSH2 0x4795 JUMP JUMPDEST PUSH2 0x60F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F2 SWAP2 SWAP1 PUSH2 0x52D5 JUMP JUMPDEST PUSH2 0x1E5 PUSH2 0x23C CALLDATASIZE PUSH1 0x4 PUSH2 0x4795 JUMP JUMPDEST PUSH2 0x6F1 JUMP JUMPDEST PUSH2 0x254 PUSH2 0x24F CALLDATASIZE PUSH1 0x4 PUSH2 0x4795 JUMP JUMPDEST PUSH2 0x718 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F2 SWAP2 SWAP1 PUSH2 0x52CB JUMP JUMPDEST PUSH2 0x1E5 PUSH2 0x26F CALLDATASIZE PUSH1 0x4 PUSH2 0x4B14 JUMP JUMPDEST PUSH2 0x74B JUMP JUMPDEST PUSH2 0x1DB PUSH2 0x282 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A2A JUMP JUMPDEST PUSH2 0xA77 JUMP JUMPDEST PUSH2 0x28F PUSH2 0xC3C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F2 SWAP2 SWAP1 PUSH2 0x5111 JUMP JUMPDEST PUSH2 0x1E5 PUSH2 0x2AA CALLDATASIZE PUSH1 0x4 PUSH2 0x4A82 JUMP JUMPDEST PUSH2 0xC45 JUMP JUMPDEST PUSH2 0x1DB PUSH2 0x2BD CALLDATASIZE PUSH1 0x4 PUSH2 0x4805 JUMP JUMPDEST PUSH2 0xF6F JUMP JUMPDEST PUSH2 0x1E5 PUSH2 0x1051 JUMP JUMPDEST PUSH2 0x1DB PUSH2 0x2D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A57 JUMP JUMPDEST PUSH2 0x1056 JUMP JUMPDEST PUSH2 0x1DB PUSH2 0x2EB CALLDATASIZE PUSH1 0x4 PUSH2 0x4B5D JUMP JUMPDEST PUSH2 0x13C3 JUMP JUMPDEST PUSH2 0x1DB PUSH2 0x2FE CALLDATASIZE PUSH1 0x4 PUSH2 0x4932 JUMP JUMPDEST PUSH2 0x1443 JUMP JUMPDEST PUSH2 0x1DB PUSH2 0x311 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A57 JUMP JUMPDEST PUSH2 0x1B17 JUMP JUMPDEST PUSH2 0x1DB PUSH2 0x324 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B9C JUMP JUMPDEST PUSH2 0x1B3B JUMP JUMPDEST PUSH2 0x33C PUSH2 0x337 CALLDATASIZE PUSH1 0x4 PUSH2 0x4795 JUMP JUMPDEST PUSH2 0x1BB6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F2 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x550F JUMP JUMPDEST PUSH2 0x254 PUSH2 0x35C CALLDATASIZE PUSH1 0x4 PUSH2 0x4795 JUMP JUMPDEST PUSH2 0x1CB2 JUMP JUMPDEST PUSH2 0x1DB PUSH2 0x36F CALLDATASIZE PUSH1 0x4 PUSH2 0x4795 JUMP JUMPDEST PUSH2 0x1CE5 JUMP JUMPDEST PUSH2 0x1DB PUSH2 0x382 CALLDATASIZE PUSH1 0x4 PUSH2 0x47CD JUMP JUMPDEST PUSH2 0x1D8D JUMP JUMPDEST PUSH2 0x1E5 PUSH2 0x395 CALLDATASIZE PUSH1 0x4 PUSH2 0x4795 JUMP JUMPDEST PUSH2 0x2003 JUMP JUMPDEST PUSH2 0x3A2 PUSH2 0x2024 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F2 SWAP2 SWAP1 PUSH2 0x50C4 JUMP JUMPDEST PUSH2 0x1DB PUSH2 0x3BD CALLDATASIZE PUSH1 0x4 PUSH2 0x48CE JUMP JUMPDEST PUSH2 0x20C9 JUMP JUMPDEST PUSH2 0x1E5 PUSH2 0x2312 JUMP JUMPDEST PUSH2 0x1DB PUSH2 0x3D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x4AC3 JUMP JUMPDEST PUSH2 0x2318 JUMP JUMPDEST PUSH2 0x1E5 PUSH2 0x2545 JUMP JUMPDEST PUSH2 0x3ED PUSH2 0x254B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F2 SWAP2 SWAP1 PUSH2 0x4DE3 JUMP JUMPDEST PUSH2 0x402 PUSH2 0x255A JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x712D9171 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x712D9171 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x447 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x45B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x47F SWAP2 SWAP1 PUSH2 0x47B1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x4A8 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4E6B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH3 0xA718A9 PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x4DC SWAP2 SWAP1 PUSH2 0x4DC7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x517 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x51C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3233 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x564 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x60 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x57D SWAP2 SWAP1 PUSH2 0x4BEC JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x596 SWAP2 SWAP1 PUSH2 0x4DC7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH2 0x5C3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3B SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x5DE PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x7 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x617 PUSH2 0x44E3 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH2 0x1A0 DUP2 ADD DUP5 MSTORE DUP2 SLOAD PUSH2 0x180 DUP3 ADD SWAP1 DUP2 MSTORE DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND SWAP5 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DUP2 SWAP1 DIV DUP5 AND SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x2 DUP3 ADD SLOAD DUP1 DUP5 AND PUSH1 0x60 DUP4 ADD MSTORE DUP5 SWAP1 DIV DUP4 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x3 DUP3 ADD SLOAD SWAP3 DUP4 AND PUSH1 0xA0 DUP3 ADD MSTORE SWAP3 SWAP1 SWAP2 DIV PUSH5 0xFFFFFFFFFF AND PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0x4 DUP2 ADD SLOAD DUP4 AND PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0x5 DUP2 ADD SLOAD DUP4 AND PUSH2 0x100 DUP4 ADD MSTORE PUSH1 0x6 DUP2 ADD SLOAD DUP4 AND PUSH2 0x120 DUP4 ADD MSTORE PUSH1 0x7 ADD SLOAD SWAP2 DUP3 AND PUSH2 0x140 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND PUSH2 0x160 DUP3 ADD MSTORE JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x712 SWAP1 PUSH2 0x2657 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x720 PUSH2 0x454E JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD SWAP2 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 SLOAD DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x755 PUSH2 0x255A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 DUP1 PUSH2 0x779 DUP6 DUP5 PUSH2 0x26D4 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP7 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x78B JUMPI INVALID JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFA0C2149 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0x0 SWAP1 PUSH4 0xFA0C2149 SWAP1 PUSH2 0x7CF SWAP1 DUP8 SWAP1 DUP13 SWAP1 DUP7 SWAP1 DUP13 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x547B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x7FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 SWAP2 POP PUSH2 0x80B SWAP1 POP JUMP JUMPDEST DUP3 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x817 JUMPI INVALID JUMPDEST EQ PUSH2 0x822 JUMPI DUP3 PUSH2 0x824 JUMP JUMPDEST DUP4 JUMPDEST SWAP1 POP DUP1 DUP10 LT ISZERO PUSH2 0x831 JUMPI POP DUP8 JUMPDEST PUSH2 0x83A DUP6 PUSH2 0x27E9 JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x848 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x8B9 JUMPI PUSH1 0x5 DUP6 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x2770A7EB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x9DC29FAC SWAP1 PUSH2 0x882 SWAP1 DUP11 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E28 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x937 JUMP JUMPDEST PUSH1 0x6 DUP6 ADD SLOAD PUSH1 0x1 DUP7 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x7A94C565 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xF5298ACA SWAP2 PUSH2 0x904 SWAP2 DUP12 SWAP2 DUP7 SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH1 0x4 ADD PUSH2 0x4E41 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x91E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x932 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x953 DUP7 DUP13 DUP4 DUP6 PUSH1 0x0 PUSH2 0x28B6 JUMP JUMPDEST PUSH2 0x967 DUP3 PUSH2 0x961 DUP8 DUP8 PUSH2 0x2C1E JUMP JUMPDEST SWAP1 PUSH2 0x2C43 JUMP JUMPDEST PUSH2 0x99F JUMPI PUSH1 0x7 DUP7 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x99F SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH2 0x2C85 JUMP JUMPDEST PUSH2 0x9B4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND CALLER DUP4 DUP6 PUSH2 0x2CF5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x88DD91A1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x88DD91A1 SWAP1 PUSH2 0x9E2 SWAP1 CALLER SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E28 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA10 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4CDDE6E09BB755C9A5589EBAEC640BBFEDFF1362D4B255EBF8339782B9942FAA DUP6 PUSH1 0x40 MLOAD PUSH2 0xA61 SWAP2 SWAP1 PUSH2 0x54BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xA7F PUSH2 0x255A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 CALLER DUP6 MSTORE PUSH1 0x36 DUP4 MSTORE SWAP4 DUP2 SWAP1 KECCAK256 PUSH1 0x38 SLOAD PUSH1 0x34 SLOAD DUP4 MLOAD PUSH4 0x1F94A275 PUSH1 0xE3 SHL DUP2 MSTORE SWAP4 MLOAD SWAP7 SWAP8 PUSH20 0x0 SWAP8 PUSH4 0x5FA297E5 SWAP8 DUP11 SWAP8 DUP14 SWAP8 DUP14 SWAP8 SWAP3 SWAP7 SWAP3 SWAP6 PUSH1 0x37 SWAP6 SWAP4 SWAP5 SWAP4 AND SWAP3 PUSH4 0xFCA513A8 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB21 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB45 SWAP2 SWAP1 PUSH2 0x47B1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB68 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x53F6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xB94 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x7 DUP2 ADD SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xBC0 SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND DUP5 PUSH2 0x2D53 JUMP JUMPDEST DUP2 ISZERO PUSH2 0xC00 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH31 0x58A56EA94653CDF4F152D227ACE22D4C00AD99E2A43F58CB7D9E3FEB295F2 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH2 0xC37 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH32 0x44C58D81365B66DD4B1A7F36C25AA97B8C71C361EE4937ADC1A00000227DB5DD SWAP1 PUSH1 0x0 SWAP1 LOG3 JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x39 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC4F PUSH2 0x255A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x4 DUP1 DUP3 ADD SLOAD SWAP3 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP5 SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP2 DUP4 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH2 0xC97 SWAP2 CALLER SWAP2 ADD PUSH2 0x4DE3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCC3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCE7 SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x0 NOT DUP2 EQ ISZERO PUSH2 0xCF7 JUMPI POP DUP1 JUMPDEST PUSH20 0x0 PUSH4 0xD09DB04A DUP10 DUP4 DUP6 PUSH1 0x35 PUSH1 0x36 PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x37 PUSH1 0x38 SLOAD PUSH1 0x34 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFCA513A8 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDA2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDC6 SWAP2 SWAP1 PUSH2 0x47B1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDE9 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4F94 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xE15 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xE22 DUP5 PUSH2 0x27E9 JUMP JUMPDEST PUSH2 0xE30 DUP5 DUP10 DUP6 PUSH1 0x0 DUP6 PUSH2 0x28B6 JUMP JUMPDEST DUP2 DUP2 EQ ISZERO PUSH2 0xE9A JUMPI PUSH1 0x7 DUP5 ADD SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0xE63 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH2 0x2D53 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP1 PUSH32 0x44C58D81365B66DD4B1A7F36C25AA97B8C71C361EE4937ADC1A00000227DB5DD SWAP1 PUSH1 0x0 SWAP1 LOG3 JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x6B810685 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xD7020D0A SWAP2 PUSH2 0xEDB SWAP2 CALLER SWAP2 DUP12 SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0x4DF7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF09 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x3115D1449A7B732C986CBA18244E897A450F61E1BB8D589CD2E69E6C8924F9F7 DUP5 PUSH1 0x40 MLOAD PUSH2 0xF5A SWAP2 SWAP1 PUSH2 0x54BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xF77 PUSH2 0x2598 JUMP JUMPDEST PUSH2 0xF80 DUP6 PUSH2 0x2DC9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6E7 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xFB9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP1 MLOAD PUSH4 0xACCE25F PUSH1 0xE2 SHL DUP2 MSTORE PUSH20 0x0 SWAP2 PUSH4 0x2B33897C SWAP2 PUSH2 0x1011 SWAP2 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x53C8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1029 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x103D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x104A DUP6 PUSH2 0x2E02 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 JUMP JUMPDEST PUSH2 0x105E PUSH2 0x255A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 DUP1 PUSH2 0x1082 CALLER DUP5 PUSH2 0x26D4 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1094 JUMPI INVALID JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP1 MLOAD PUSH4 0xA8695B1D PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP3 POP PUSH20 0x0 SWAP2 PUSH4 0xA8695B1D SWAP2 PUSH2 0x10E5 SWAP2 DUP9 SWAP2 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x5438 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1111 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x111E DUP5 PUSH2 0x27E9 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x112C JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x123C JUMPI PUSH1 0x5 DUP5 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x2770A7EB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x9DC29FAC SWAP1 PUSH2 0x1166 SWAP1 CALLER SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E28 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1180 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1194 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x6 DUP5 ADD SLOAD PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xB3F1C93D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB3F1C93D SWAP2 PUSH2 0x11E4 SWAP2 CALLER SWAP2 DUP3 SWAP2 DUP10 SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH1 0x4 ADD PUSH2 0x4DF7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1212 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1236 SWAP2 SWAP1 PUSH2 0x4BB8 JUMP JUMPDEST POP PUSH2 0x1352 JUMP JUMPDEST PUSH1 0x6 DUP5 ADD SLOAD PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x7A94C565 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xF5298ACA SWAP2 PUSH2 0x1287 SWAP2 CALLER SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH1 0x4 ADD PUSH2 0x4E41 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x12B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x5 DUP5 ADD SLOAD PUSH1 0x3 DUP6 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xB3F1C93D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB3F1C93D SWAP2 PUSH2 0x12FE SWAP2 CALLER SWAP2 DUP3 SWAP2 DUP9 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH1 0x4 ADD PUSH2 0x4DF7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1318 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x132C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1350 SWAP2 SWAP1 PUSH2 0x4BB8 JUMP JUMPDEST POP JUMPDEST PUSH1 0x4 DUP5 ADD SLOAD PUSH2 0x1370 SWAP1 DUP6 SWAP1 DUP9 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 PUSH2 0x28B6 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xEA368A40E9570069BB8E6511D668293AD2E1F03B0D982431FD223DE9F3B70CA6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x13B3 SWAP2 SWAP1 PUSH2 0x54BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x13CB PUSH2 0x255A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH2 0x100 DUP2 ADD DUP5 MSTORE SWAP4 DUP5 MSTORE CALLER SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 DUP5 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP3 ADD DUP8 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x4 DUP2 ADD SLOAD SWAP1 SWAP3 AND PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0xFFFF DUP5 AND PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x143B SWAP1 PUSH2 0x2F0B JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x144B PUSH2 0x255A JUMP JUMPDEST PUSH2 0x1453 PUSH2 0x4561 JUMP JUMPDEST PUSH2 0x14C0 DUP12 DUP12 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP16 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP15 DUP3 MSTORE SWAP1 SWAP4 POP DUP15 SWAP3 POP DUP14 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3404 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP11 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x14D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1503 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP12 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x151F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1549 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 AND DUP5 MSTORE PUSH1 0x0 PUSH1 0x40 DUP6 ADD MSTORE SWAP1 POP JUMPDEST PUSH1 0x40 DUP4 ADD MLOAD DUP13 GT ISZERO PUSH2 0x170D JUMPI PUSH1 0x35 PUSH1 0x0 DUP15 DUP15 DUP7 PUSH1 0x40 ADD MLOAD DUP2 DUP2 LT PUSH2 0x1580 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1595 SWAP2 SWAP1 PUSH2 0x4795 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP5 PUSH1 0x40 ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x15DC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH2 0x1633 PUSH2 0x2710 PUSH2 0x162D PUSH1 0x3B SLOAD DUP15 DUP15 DUP9 PUSH1 0x40 ADD MLOAD DUP2 DUP2 LT PUSH2 0x1618 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x3442 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x347C JUMP JUMPDEST DUP2 DUP5 PUSH1 0x40 ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1643 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP2 DUP4 PUSH1 0x40 ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x165F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4EFECAA5 DUP16 DUP14 DUP14 DUP8 PUSH1 0x40 ADD MLOAD DUP2 DUP2 LT PUSH2 0x1686 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16AA SWAP3 SWAP2 SWAP1 PUSH2 0x4E28 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16D8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x16FC SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE PUSH2 0x1560 JUMP JUMPDEST DUP3 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x920F5C84 DUP15 DUP15 DUP15 DUP15 DUP7 CALLER DUP14 DUP14 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x174B SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5000 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1765 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1779 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x179D SWAP2 SWAP1 PUSH2 0x4BB8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B1B PUSH1 0xF1 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x17D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP5 ADD MSTORE JUMPDEST PUSH1 0x40 DUP4 ADD MLOAD DUP13 GT ISZERO PUSH2 0x1B07 JUMPI DUP13 DUP13 DUP5 PUSH1 0x40 ADD MLOAD DUP2 DUP2 LT PUSH2 0x17FB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1810 SWAP2 SWAP1 PUSH2 0x4795 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD DUP12 SWAP1 DUP12 SWAP1 DUP2 DUP2 LT PUSH2 0x1830 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP4 PUSH1 0xA0 ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP4 PUSH1 0x40 ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1850 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH1 0xC0 ADD DUP2 DUP2 MSTORE POP POP DUP2 DUP4 PUSH1 0x40 ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1871 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD MLOAD PUSH1 0xA0 DUP5 ADD MLOAD PUSH2 0x189D SWAP2 PUSH2 0x2C1E JUMP JUMPDEST PUSH1 0xE0 DUP5 ADD MSTORE PUSH1 0x0 DUP10 DUP10 DUP6 PUSH1 0x40 ADD MLOAD DUP2 DUP2 LT PUSH2 0x18B4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x18C6 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x18D1 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1A03 JUMPI PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x18FC SWAP1 PUSH2 0x27E9 JUMP JUMPDEST PUSH2 0x199C DUP4 PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x193C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1950 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1974 SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST PUSH1 0xC0 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 PUSH2 0x34BE JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x80 DUP5 ADD MLOAD PUSH1 0xE0 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x19D2 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH2 0x28B6 JUMP JUMPDEST PUSH2 0x19FE DUP15 DUP5 PUSH1 0x80 ADD MLOAD DUP6 PUSH1 0xE0 ADD MLOAD DUP7 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2CF5 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x1A92 JUMP JUMPDEST PUSH2 0x1A92 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE DUP1 DUP6 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0xA0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP12 DUP8 PUSH1 0x40 ADD MLOAD DUP2 DUP2 LT PUSH2 0x1A5D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP PUSH2 0x2F0B JUMP JUMPDEST DUP3 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP16 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x631042C832B07452973831137F2D73E395028B44B250DEDC5ABB0EE766E168AC DUP7 PUSH1 0xA0 ADD MLOAD DUP8 PUSH1 0xC0 ADD MLOAD DUP10 PUSH1 0x40 MLOAD PUSH2 0x1AEF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x54C6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x40 DUP4 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE PUSH2 0x17DF JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1B1F PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH2 0x1B43 PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x39 DUP1 SLOAD PUSH1 0xFF NOT AND DUP3 ISZERO ISZERO OR SWAP1 DUP2 SWAP1 SSTORE PUSH1 0xFF AND ISZERO PUSH2 0x1B89 JUMPI PUSH1 0x40 MLOAD PUSH32 0x9E87FAC88FF661F02D44F95383C817FECE4BCE600A3DAB7A54406878B965E752 SWAP1 PUSH1 0x0 SWAP1 LOG1 PUSH2 0x1BB3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA45F47FDEA8A1EFDD9029A5691C7F759C32B7C698632B563573E155625D16933 SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1C8F DUP8 PUSH1 0x35 PUSH1 0x36 PUSH1 0x0 DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE POP POP PUSH1 0x37 PUSH1 0x38 SLOAD PUSH1 0x34 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFCA513A8 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C66 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C8A SWAP2 SWAP1 PUSH2 0x47B1 JUMP JUMPDEST PUSH2 0x357B JUMP JUMPDEST SWAP4 SWAP10 POP SWAP2 SWAP8 POP SWAP1 SWAP5 POP SWAP3 POP SWAP1 POP PUSH2 0x1CA7 DUP7 DUP7 DUP5 PUSH2 0x3A3C JUMP JUMPDEST SWAP4 POP SWAP2 SWAP4 SWAP6 POP SWAP2 SWAP4 SWAP6 JUMP JUMPDEST PUSH2 0x1CBA PUSH2 0x454E JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD SWAP2 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 SLOAD DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CEF PUSH2 0x3A70 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 PUSH2 0x1D06 JUMPI POP PUSH2 0x1D06 PUSH2 0x3A75 JUMP JUMPDEST DUP1 PUSH2 0x1D12 JUMPI POP PUSH1 0x0 SLOAD DUP2 GT JUMPDEST PUSH2 0x1D2E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP1 PUSH2 0x51FC JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x1D4D JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 OR SWAP1 SSTORE PUSH1 0x0 DUP3 SWAP1 SSTORE JUMPDEST PUSH1 0x34 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE PUSH2 0x9C4 PUSH1 0x3A SSTORE PUSH1 0x9 PUSH1 0x3B SSTORE PUSH1 0x80 PUSH1 0x3C SSTORE DUP1 ISZERO PUSH2 0xC37 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH2 0x1D95 PUSH2 0x255A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x5 DUP2 ADD SLOAD PUSH1 0x6 DUP3 ADD SLOAD PUSH1 0x4 DUP1 DUP5 ADD SLOAD SWAP5 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP7 SWAP3 DUP4 AND SWAP6 SWAP2 DUP4 AND SWAP5 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP2 DUP6 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH2 0x1DEF SWAP2 DUP11 SWAP2 ADD PUSH2 0x4DE3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E1B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1E3F SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x548CAD09 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0x0 SWAP1 PUSH4 0x548CAD09 SWAP1 PUSH2 0x1E81 SWAP1 DUP9 SWAP1 DUP12 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x53C8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1EAD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1EBA DUP6 PUSH2 0x27E9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2770A7EB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x9DC29FAC SWAP1 PUSH2 0x1EE8 SWAP1 DUP10 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E28 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F16 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x3 DUP7 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xB3F1C93D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP3 POP PUSH4 0xB3F1C93D SWAP2 PUSH2 0x1F59 SWAP2 DUP11 SWAP2 DUP3 SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH1 0x4 ADD PUSH2 0x4DF7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F87 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1FAB SWAP2 SWAP1 PUSH2 0x4BB8 JUMP JUMPDEST POP PUSH2 0x1FBA DUP6 DUP9 DUP5 PUSH1 0x0 DUP1 PUSH2 0x28B6 JUMP JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x9F439AE0C81E41A04D3FDFE07AED54E6A179FB0DB15BE7702EB66FA8EF6F5300 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x712 SWAP1 PUSH2 0x3A7B JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x38 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2040 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x206A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x38 SLOAD DUP2 LT ISZERO PUSH2 0x20C3 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x37 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP4 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x20A3 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x2070 JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x20D1 PUSH2 0x255A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x4 ADD SLOAD DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x2 DUP4 MSTORE PUSH2 0x3633 PUSH1 0xF0 SHL SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP2 AND CALLER EQ PUSH2 0x212D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH2 0x21E9 DUP6 PUSH1 0x35 PUSH1 0x36 PUSH1 0x0 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x37 PUSH1 0x38 SLOAD PUSH1 0x34 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFCA513A8 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x21AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x21C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x21E4 SWAP2 SWAP1 PUSH2 0x47B1 JUMP JUMPDEST PUSH2 0x3ADA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x7 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP6 DUP2 AND SWAP1 DUP8 AND EQ PUSH2 0x2309 JUMPI PUSH2 0x2226 DUP4 DUP6 PUSH2 0x2C43 JUMP JUMPDEST PUSH2 0x2292 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x2250 SWAP1 DUP3 SWAP1 DUP5 SWAP1 PUSH2 0x2D53 JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x44C58D81365B66DD4B1A7F36C25AA97B8C71C361EE4937ADC1A00000227DB5DD PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMPDEST DUP2 ISZERO DUP1 ISZERO PUSH2 0x229F JUMPI POP DUP4 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2309 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x22C8 DUP2 DUP4 PUSH1 0x1 PUSH2 0x2D53 JUMP JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH31 0x58A56EA94653CDF4F152D227ACE22D4C00AD99E2A43F58CB7D9E3FEB295F2 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3A SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x2320 PUSH2 0x255A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP1 MLOAD PUSH4 0xECA322B PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xECA322B SWAP1 PUSH2 0x2372 SWAP1 DUP5 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x546D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x238A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x239E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x4 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x23B9 DUP3 PUSH2 0x27E9 JUMP JUMPDEST PUSH2 0x23C7 DUP3 DUP8 DUP4 DUP9 PUSH1 0x0 PUSH2 0x28B6 JUMP JUMPDEST PUSH2 0x23DC PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND CALLER DUP4 DUP9 PUSH2 0x2CF5 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xAB714FB PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x156E29F6 SWAP2 PUSH2 0x241E SWAP2 DUP10 SWAP2 DUP12 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0x4E41 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x244C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2470 SWAP2 SWAP1 PUSH2 0x4BB8 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x24EA JUMPI PUSH1 0x7 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x24AA SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x1 PUSH2 0x2D53 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH31 0x58A56EA94653CDF4F152D227ACE22D4C00AD99E2A43F58CB7D9E3FEB295F2 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST DUP4 PUSH2 0xFFFF AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDE6857219544BB5B7746F48ED30BE6386FEFC61B2F864CACF559893BF50FD951 CALLER DUP11 PUSH1 0x40 MLOAD PUSH2 0x2534 SWAP3 SWAP2 SWAP1 PUSH2 0x4E28 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3C SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x39 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0xD8D PUSH1 0xF2 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x1BB3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x85C858B1 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x85C858B1 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x25DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x25F0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2614 SWAP2 SWAP1 PUSH2 0x47B1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3237 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1BB3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x0 SWAP1 PUSH5 0xFFFFFFFFFF PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 TIMESTAMP AND DUP2 EQ ISZERO PUSH2 0x2695 JUMPI POP POP PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x6EC JUMP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x2 DUP5 ADD SLOAD PUSH1 0x0 SWAP2 PUSH2 0x26CC SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL SWAP3 DUP4 SWAP1 DIV DUP2 AND SWAP3 PUSH2 0x26C6 SWAP3 DIV AND DUP6 PUSH2 0x3B50 JUMP JUMPDEST SWAP1 PUSH2 0x3B5D JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x5 DUP2 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x270B SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x4DE3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2723 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2737 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x275B SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST PUSH1 0x6 DUP5 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x278D SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x4DE3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x27B9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x27DD SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x6 DUP2 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xB1BF962D PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xB1BF962D SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2830 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2844 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2868 SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND SWAP4 SWAP3 AND SWAP2 DIV PUSH5 0xFFFFFFFFFF AND PUSH1 0x0 DUP1 PUSH2 0x28A4 DUP8 DUP8 DUP7 DUP9 DUP8 PUSH2 0x3BF0 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2309 DUP8 DUP8 DUP8 DUP6 DUP6 DUP9 PUSH2 0x3D4D JUMP JUMPDEST PUSH2 0x28BE PUSH2 0x45AD JUMP JUMPDEST PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 DUP3 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x7B98F4DF PUSH1 0xE1 SHL DUP2 MSTORE DUP2 MLOAD PUSH4 0xF731E9BE SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2902 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2916 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x293A SWAP2 SWAP1 PUSH2 0x4C93 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP8 ADD SLOAD PUSH1 0x6 DUP9 ADD SLOAD DUP3 MLOAD PUSH4 0xB1BF962D PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 MLOAD PUSH2 0x29DF SWAP4 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB1BF962D SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x26C6 SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0x29DB497D SWAP3 DUP10 SWAP3 DUP10 SWAP3 DUP10 SWAP3 DUP10 SWAP3 SWAP2 SWAP1 PUSH2 0x2A1A DUP16 PUSH2 0x3F10 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3D SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4EEC JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A69 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A8D SWAP2 SWAP1 PUSH2 0x4CB6 JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3533 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB LT ISZERO PUSH2 0x2ADF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3535 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB LT ISZERO PUSH2 0x2B26 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0xD4D PUSH1 0xF2 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB LT ISZERO PUSH2 0x2B6D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x2 DUP8 ADD DUP1 SLOAD PUSH1 0x80 DUP5 ADD MLOAD PUSH1 0x3 DUP11 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP6 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP3 SSTORE PUSH1 0xA0 DUP8 ADD MLOAD SWAP4 AND DUP2 DUP7 AND OR DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL DUP5 DUP4 AND DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP5 SSTORE PUSH1 0x1 DUP12 ADD SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP7 PUSH32 0x804C9B842B2748A22BB64B345453A3DE7CA54A6CA45CE00D415894979E22897A SWAP7 PUSH2 0x2C0E SWAP7 SWAP2 SWAP6 SWAP5 SWAP2 SWAP4 DUP1 DUP4 AND SWAP4 SWAP2 SWAP1 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x54E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xF68 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP1 PUSH2 0x514F JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF68 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x3F1B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3737 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x80 DUP4 LT PUSH2 0x2CBF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP DUP2 PUSH1 0x2 MUL DUP2 PUSH2 0x2CD0 JUMPI PUSH1 0x0 PUSH2 0x2CD3 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 SHL DUP3 PUSH1 0x2 MUL PUSH1 0x1 SWAP1 SHL NOT DUP5 PUSH1 0x0 ADD SLOAD AND OR DUP4 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH2 0x2D4D DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2D16 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4E9F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x3F47 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3737 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x80 DUP4 LT PUSH2 0x2D8D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP DUP2 PUSH1 0x2 MUL PUSH1 0x1 ADD DUP2 PUSH2 0x2DA1 JUMPI PUSH1 0x0 PUSH2 0x2DA4 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 SHL DUP3 PUSH1 0x2 MUL PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SHL NOT DUP5 PUSH1 0x0 ADD SLOAD AND OR DUP4 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x26CC JUMPI POP POP ISZERO ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3635 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 DUP3 LT PUSH2 0x2E41 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x7 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO DUP1 PUSH2 0x2EAA JUMPI POP PUSH1 0x0 DUP1 MSTORE PUSH1 0x37 PUSH1 0x20 MSTORE PUSH32 0xA0A618D80EDA9243166BE83CB7421D97E9DAB6DDDDD3C70AC7A6B4440256E8E7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ JUMPDEST SWAP1 POP DUP1 PUSH2 0xC37 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x7 ADD DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH1 0xFF DUP9 AND MUL OR SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0x37 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x1 ADD PUSH1 0x38 SSTORE JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 DUP7 ADD MLOAD DUP6 AND DUP5 MSTORE PUSH1 0x36 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x34 SLOAD DUP4 MLOAD PUSH4 0x1F94A275 PUSH1 0xE3 SHL DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP7 SWAP2 SWAP6 SWAP5 SWAP2 AND SWAP3 PUSH4 0xFCA513A8 SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F86 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2FAA SWAP2 SWAP1 PUSH2 0x47B1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x304B PUSH2 0x2FBA DUP6 PUSH2 0x402C JUMP JUMPDEST PUSH1 0xA EXP PUSH2 0x162D DUP8 PUSH1 0x60 ADD MLOAD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB3596F07 DUP11 PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FF5 SWAP2 SWAP1 PUSH2 0x4DE3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x300D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3021 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3045 SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST SWAP1 PUSH2 0x3442 JUMP JUMPDEST SWAP1 POP PUSH20 0x0 PUSH4 0x721A92F9 DUP7 PUSH1 0x0 ADD MLOAD DUP7 DUP9 PUSH1 0x40 ADD MLOAD DUP10 PUSH1 0x60 ADD MLOAD DUP7 DUP12 PUSH1 0x80 ADD MLOAD PUSH1 0x3A SLOAD PUSH1 0x35 DUP13 PUSH1 0x37 PUSH1 0x38 SLOAD DUP15 PUSH1 0x40 MLOAD DUP14 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30B0 SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4F30 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x30C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x30DC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x30E9 DUP5 PUSH2 0x27E9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 DUP8 PUSH1 0x80 ADD MLOAD PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x30FE JUMPI INVALID JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x3109 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x31BE JUMPI PUSH1 0x3 DUP7 ADD SLOAD PUSH1 0x5 DUP8 ADD SLOAD PUSH1 0x20 DUP10 ADD MLOAD PUSH1 0x40 DUP1 DUP12 ADD MLOAD PUSH1 0x60 DUP13 ADD MLOAD SWAP2 MLOAD PUSH4 0xB3F1C93D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP6 AND SWAP7 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP4 PUSH4 0xB3F1C93D SWAP4 PUSH2 0x3165 SWAP4 SWAP3 SWAP1 SWAP2 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x4EC3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x317F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3193 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x31B7 SWAP2 SWAP1 PUSH2 0x4BB8 JUMP JUMPDEST SWAP1 POP PUSH2 0x326D JUMP JUMPDEST PUSH1 0x6 DUP7 ADD SLOAD PUSH1 0x20 DUP9 ADD MLOAD PUSH1 0x40 DUP1 DUP11 ADD MLOAD PUSH1 0x60 DUP12 ADD MLOAD PUSH1 0x1 DUP12 ADD SLOAD SWAP3 MLOAD PUSH4 0xB3F1C93D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP6 AND SWAP5 PUSH4 0xB3F1C93D SWAP5 PUSH2 0x3218 SWAP5 SWAP1 SWAP4 SWAP3 SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH1 0x4 ADD PUSH2 0x4DF7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3246 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x326A SWAP2 SWAP1 PUSH2 0x4BB8 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x328F JUMPI PUSH1 0x7 DUP7 ADD SLOAD PUSH2 0x328F SWAP1 DUP7 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x1 PUSH2 0x2C85 JUMP JUMPDEST PUSH2 0x32BE DUP8 PUSH1 0x0 ADD MLOAD DUP9 PUSH1 0xA0 ADD MLOAD PUSH1 0x0 DUP11 PUSH1 0xE0 ADD MLOAD PUSH2 0x32AE JUMPI PUSH1 0x0 PUSH2 0x32B4 JUMP JUMPDEST DUP11 PUSH1 0x60 ADD MLOAD JUMPDEST DUP11 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x28B6 JUMP JUMPDEST DUP7 PUSH1 0xE0 ADD MLOAD ISZERO PUSH2 0x3356 JUMPI DUP7 PUSH1 0xA0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4EFECAA5 DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x60 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3302 SWAP3 SWAP2 SWAP1 PUSH2 0x4E28 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x331C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3330 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3354 SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST POP JUMPDEST DUP7 PUSH1 0xC0 ADD MLOAD PUSH2 0xFFFF AND DUP8 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC6A898309E823EE50BAC64E45CA8ADBA6690E99E7841C45D754E2A38E9019D9B DUP11 PUSH1 0x20 ADD MLOAD DUP12 PUSH1 0x60 ADD MLOAD DUP13 PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x33B8 JUMPI INVALID JUMPDEST DUP15 PUSH1 0x80 ADD MLOAD PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x33C8 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x33D3 JUMPI INVALID JUMPDEST EQ PUSH2 0x33F2 JUMPI PUSH1 0x2 DUP14 ADD SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x33F4 JUMP JUMPDEST DUP9 JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2534 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4FDA JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3733 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xC37 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3451 JUMPI POP PUSH1 0x0 PUSH2 0x712 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x345E JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xF68 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP1 PUSH2 0x51BB JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF68 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x4036 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34DB PUSH2 0x34CC DUP5 PUSH2 0x406D JUMP JUMPDEST PUSH2 0x34D5 DUP5 PUSH2 0x406D JUMP JUMPDEST SWAP1 PUSH2 0x40BD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x34F1 PUSH2 0x34EA PUSH2 0x4168 JUMP JUMPDEST DUP4 SWAP1 PUSH2 0x2C1E JUMP JUMPDEST PUSH1 0x1 DUP7 ADD SLOAD SWAP1 SWAP2 POP PUSH2 0x350D SWAP1 DUP3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x3B5D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3531 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 GT ISZERO PUSH2 0x3551 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x358B PUSH2 0x45FB JUMP JUMPDEST PUSH2 0x3594 DUP11 PUSH2 0x4178 JUMP JUMPDEST ISZERO PUSH2 0x35B2 JUMPI PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 NOT SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP POP PUSH2 0x3A2E JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 ADD MSTORE JUMPDEST DUP8 DUP2 PUSH1 0xE0 ADD MLOAD LT ISZERO PUSH2 0x398D JUMPI PUSH1 0xE0 DUP2 ADD MLOAD PUSH2 0x35D6 SWAP1 DUP12 SWAP1 PUSH2 0x417D JUMP JUMPDEST PUSH2 0x35DF JUMPI PUSH2 0x397D JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP11 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E0 DUP6 ADD DUP2 SWAP1 MSTORE DUP4 MSTORE SWAP1 DUP14 SWAP1 MSTORE SWAP1 KECCAK256 PUSH2 0x3616 DUP2 PUSH2 0x41CE JUMP JUMPDEST POP PUSH1 0x80 DUP7 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP7 ADD SWAP3 SWAP1 SWAP3 MSTORE POP PUSH1 0xA0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA EXP PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1E0 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xB3596F07 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP2 PUSH4 0xB3596F07 SWAP2 PUSH2 0x3668 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x4DE3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3680 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3694 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x36B8 SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST DUP3 MSTORE PUSH1 0xC0 DUP3 ADD MLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0x36D8 JUMPI POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x36D8 SWAP1 DUP13 SWAP1 PUSH2 0x41F9 JUMP JUMPDEST ISZERO PUSH2 0x37F6 JUMPI DUP1 PUSH1 0x4 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3720 SWAP2 SWAP1 PUSH2 0x4DE3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3738 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x374C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3770 SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD MLOAD DUP4 MLOAD PUSH1 0x0 SWAP3 PUSH2 0x378F SWAP3 SWAP2 PUSH2 0x162D SWAP2 PUSH2 0x3442 JUMP JUMPDEST PUSH2 0x120 DUP5 ADD MLOAD SWAP1 SWAP2 POP PUSH2 0x37A2 SWAP1 DUP3 PUSH2 0x2C1E JUMP JUMPDEST PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH2 0x37C8 SWAP1 PUSH2 0x37BC SWAP1 DUP4 SWAP1 PUSH2 0x3442 JUMP JUMPDEST PUSH2 0x160 DUP6 ADD MLOAD SWAP1 PUSH2 0x2C1E JUMP JUMPDEST PUSH2 0x160 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD MLOAD PUSH2 0x37EE SWAP1 PUSH2 0x37E2 SWAP1 DUP4 SWAP1 PUSH2 0x3442 JUMP JUMPDEST PUSH2 0x180 DUP6 ADD MLOAD SWAP1 PUSH2 0x2C1E JUMP JUMPDEST PUSH2 0x180 DUP5 ADD MSTORE POP JUMPDEST PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x3806 SWAP1 DUP13 SWAP1 PUSH2 0x4251 JUMP JUMPDEST ISZERO PUSH2 0x397B JUMPI DUP1 PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x384E SWAP2 SWAP1 PUSH2 0x4DE3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3866 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x387A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x389E SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST DUP3 PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x3948 DUP2 PUSH1 0x6 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP16 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x38ED SWAP2 SWAP1 PUSH2 0x4DE3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3905 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3919 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x393D SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MLOAD SWAP1 PUSH2 0x2C1E JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD MLOAD DUP4 MLOAD PUSH2 0x3974 SWAP3 PUSH2 0x3968 SWAP3 SWAP2 PUSH2 0x162D SWAP2 PUSH2 0x3442 JUMP JUMPDEST PUSH2 0x140 DUP5 ADD MLOAD SWAP1 PUSH2 0x2C1E JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE JUMPDEST POP JUMPDEST PUSH1 0xE0 DUP2 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE PUSH2 0x35BA JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x120 ADD MLOAD GT PUSH2 0x39A1 JUMPI PUSH1 0x0 PUSH2 0x39B6 JUMP JUMPDEST PUSH2 0x120 DUP2 ADD MLOAD PUSH2 0x160 DUP3 ADD MLOAD PUSH2 0x39B6 SWAP2 PUSH2 0x347C JUMP JUMPDEST PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0x120 DUP2 ADD MLOAD PUSH2 0x39CD JUMPI PUSH1 0x0 PUSH2 0x39E2 JUMP JUMPDEST PUSH2 0x120 DUP2 ADD MLOAD PUSH2 0x180 DUP3 ADD MLOAD PUSH2 0x39E2 SWAP2 PUSH2 0x347C JUMP JUMPDEST PUSH2 0x180 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD MLOAD PUSH2 0x140 DUP4 ADD MLOAD PUSH2 0x39FF SWAP3 PUSH2 0x42A2 JUMP JUMPDEST PUSH2 0x100 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD MLOAD PUSH2 0x140 DUP4 ADD MLOAD PUSH2 0x160 DUP5 ADD MLOAD PUSH2 0x180 SWAP1 SWAP5 ADD MLOAD SWAP2 SWAP9 POP SWAP7 POP SWAP2 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3A49 DUP6 DUP5 PUSH2 0x42C6 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x3A5D JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xF68 JUMP JUMPDEST PUSH2 0x3A67 DUP2 DUP6 PUSH2 0x2C43 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SWAP1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x0 SWAP1 PUSH5 0xFFFFFFFFFF PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 TIMESTAMP AND DUP2 EQ ISZERO PUSH2 0x3AB2 JUMPI POP POP PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x6EC JUMP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x2 DUP5 ADD SLOAD PUSH1 0x0 SWAP2 PUSH2 0x26CC SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND SWAP2 PUSH2 0x26C6 SWAP2 AND DUP6 PUSH2 0x4335 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE DUP5 SLOAD DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x3AFC SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP8 DUP8 DUP8 PUSH2 0x357B JUMP JUMPDEST SWAP5 POP POP POP POP POP PUSH8 0xDE0B6B3A7640000 DUP2 LT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1B PUSH1 0xF9 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x3B46 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF68 DUP4 DUP4 TIMESTAMP PUSH2 0x4373 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x3B6A JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x3B77 JUMPI POP PUSH1 0x0 PUSH2 0x712 JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x3B8D JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x3BCA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH12 0x33B2E3C9FD0803CE8000000 PUSH1 0x2 DUP2 JUMPDEST DIV DUP4 DUP6 MUL ADD DUP2 PUSH2 0x3BE8 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP6 ADD SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP6 DUP6 DUP3 ISZERO PUSH2 0x3D1E JUMPI PUSH1 0x0 PUSH2 0x3C17 DUP5 DUP9 PUSH2 0x4335 JUMP JUMPDEST SWAP1 POP PUSH2 0x3C23 DUP2 DUP11 PUSH2 0x3B5D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3531 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 GT ISZERO PUSH2 0x3C67 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH1 0x1 DUP12 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND OR SWAP1 SSTORE DUP10 ISZERO PUSH2 0x3D1C JUMPI PUSH1 0x2 DUP12 ADD SLOAD PUSH1 0x0 SWAP1 PUSH2 0x3CAD SWAP1 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP10 PUSH2 0x3B50 JUMP JUMPDEST SWAP1 POP PUSH2 0x3CB9 DUP2 DUP11 PUSH2 0x3B5D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1A99 PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 GT ISZERO PUSH2 0x3CFD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP POP PUSH1 0x1 DUP12 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP6 AND PUSH1 0x1 PUSH1 0x80 SHL MUL SWAP2 AND OR SWAP1 SSTORE JUMPDEST POP JUMPDEST PUSH1 0x3 SWAP10 SWAP1 SWAP10 ADD DUP1 SLOAD PUSH5 0xFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL TIMESTAMP PUSH5 0xFFFFFFFFFF AND MUL OR SWAP1 SSTORE SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3D55 PUSH2 0x4695 JUMP JUMPDEST PUSH2 0x3D5E DUP8 PUSH2 0x3F10 JUMP JUMPDEST PUSH2 0x120 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x3D70 JUMPI POP PUSH2 0x143B JUMP JUMPDEST DUP7 PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x79774338 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3DC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3DD4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3DF8 SWAP2 SWAP1 PUSH2 0x4CE3 JUMP JUMPDEST PUSH5 0xFFFFFFFFFF AND PUSH2 0x140 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3E1B DUP7 DUP7 PUSH2 0x3B5D JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x3E2A DUP7 DUP5 PUSH2 0x3B5D JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH2 0x140 DUP3 ADD MLOAD PUSH2 0x3E4C SWAP2 SWAP1 PUSH5 0xFFFFFFFFFF DUP6 AND PUSH2 0x4373 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x3E61 SWAP2 PUSH2 0x3B5D JUMP JUMPDEST PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD DUP3 MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH2 0x3E86 SWAP4 SWAP3 PUSH2 0x961 SWAP3 SWAP1 SWAP2 DUP4 SWAP2 PUSH2 0x2C1E JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD MLOAD PUSH2 0x3E9D SWAP2 SWAP1 PUSH2 0x42C6 JUMP JUMPDEST PUSH2 0x100 DUP3 ADD DUP2 SWAP1 MSTORE ISZERO PUSH2 0x2309 JUMPI PUSH1 0x4 DUP1 DUP9 ADD SLOAD PUSH2 0x100 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x7DF5BD3B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0x7DF5BD3B SWAP3 PUSH2 0x3EE2 SWAP3 SWAP2 DUP10 SWAP2 ADD PUSH2 0x546D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3EFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST SLOAD PUSH1 0x40 SHR PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x3F3F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0x3F59 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2DC9 JUMP JUMPDEST PUSH2 0x3F75 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP1 PUSH2 0x5294 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x3F91 SWAP2 SWAP1 PUSH2 0x4DC7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3FCE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3FD3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x3FF5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP1 PUSH2 0x5186 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2D4D JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4010 SWAP2 SWAP1 PUSH2 0x4BB8 JUMP JUMPDEST PUSH2 0x2D4D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP1 PUSH2 0x524A JUMP JUMPDEST SLOAD PUSH1 0x30 SHR PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x4057 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x4063 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0x3B9ACA00 DUP3 DUP2 MUL SWAP1 DUP4 SWAP1 DUP3 DIV EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x40B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x40F7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x4145 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x415F JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 SWAP1 JUMP JUMPDEST MLOAD ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x41BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP POP SWAP1 MLOAD PUSH1 0x3 PUSH1 0x2 SWAP1 SWAP3 MUL SHR AND ISZERO ISZERO SWAP1 JUMP JUMPDEST SLOAD PUSH2 0xFFFF DUP1 DUP3 AND SWAP3 PUSH1 0x10 DUP4 SWAP1 SHR DUP3 AND SWAP3 PUSH1 0x20 DUP2 SWAP1 SHR DUP4 AND SWAP3 PUSH1 0x30 DUP3 SWAP1 SHR PUSH1 0xFF AND SWAP3 PUSH1 0x40 SWAP3 SWAP1 SWAP3 SHR AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x4238 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP POP DUP2 MLOAD PUSH1 0x1 PUSH1 0x2 DUP4 MUL DUP2 ADD SWAP2 SWAP1 SWAP2 SHR AND ISZERO ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x4290 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP POP SWAP1 MLOAD PUSH1 0x1 PUSH1 0x2 SWAP1 SWAP3 MUL SHR AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x42B2 JUMPI POP PUSH1 0x0 NOT PUSH2 0xF68 JUMP JUMPDEST PUSH2 0x26CC DUP4 PUSH2 0x42C0 DUP7 DUP6 PUSH2 0x42C6 JUMP JUMPDEST SWAP1 PUSH2 0x4449 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x42D3 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x42E0 JUMPI POP PUSH1 0x0 PUSH2 0x712 JUMP JUMPDEST DUP2 PUSH2 0x1388 NOT DUP2 PUSH2 0x42EC JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x4329 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH2 0x2710 PUSH1 0x2 DUP2 PUSH2 0x3BDC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4349 TIMESTAMP PUSH5 0xFFFFFFFFFF DUP6 AND PUSH2 0x2C43 JUMP JUMPDEST SWAP1 POP PUSH2 0x26CC PUSH2 0x4356 PUSH2 0x4168 JUMP JUMPDEST PUSH4 0x1E13380 PUSH2 0x4365 DUP8 DUP6 PUSH2 0x3442 JUMP JUMPDEST DUP2 PUSH2 0x436C JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x2C1E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4387 DUP4 PUSH5 0xFFFFFFFFFF DUP7 AND PUSH2 0x2C43 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x439E JUMPI PUSH2 0x4396 PUSH2 0x4168 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xF68 JUMP JUMPDEST PUSH1 0x0 NOT DUP2 ADD PUSH1 0x0 PUSH1 0x2 DUP4 GT PUSH2 0x43B4 JUMPI PUSH1 0x0 PUSH2 0x43B9 JUMP JUMPDEST PUSH1 0x2 DUP4 SUB JUMPDEST SWAP1 POP PUSH4 0x1E13380 DUP8 DIV PUSH1 0x0 PUSH2 0x43CE DUP3 DUP1 PUSH2 0x3B5D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x43DC DUP3 DUP5 PUSH2 0x3B5D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x2 PUSH2 0x43F0 DUP5 PUSH2 0x3045 DUP11 DUP11 PUSH2 0x3442 JUMP JUMPDEST DUP2 PUSH2 0x43F7 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x6 PUSH2 0x440E DUP5 PUSH2 0x3045 DUP10 DUP2 DUP14 DUP14 PUSH2 0x3442 JUMP JUMPDEST DUP2 PUSH2 0x4415 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x4439 DUP2 PUSH2 0x4433 DUP5 DUP2 PUSH2 0x442B DUP11 DUP15 PUSH2 0x3442 JUMP JUMPDEST PUSH2 0x4433 PUSH2 0x4168 JUMP JUMPDEST SWAP1 PUSH2 0x2C1E JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x4483 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH8 0xDE0B6B3A7640000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x44CD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP DUP3 DUP2 PUSH8 0xDE0B6B3A7640000 DUP7 MUL ADD DUP2 PUSH2 0x415F JUMPI INVALID JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x44F7 PUSH2 0x454E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x100 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x140 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x160 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x120 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xE0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x100 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x240 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x160 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH5 0xFFFFFFFFFF AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x712 DUP2 PUSH2 0x556E JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x4712 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4729 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x27E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x4754 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x476B JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x27E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x712 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x47A6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xF68 DUP2 PUSH2 0x556E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x47C2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xF68 DUP2 PUSH2 0x556E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x47DF JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x47EA DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x47FA DUP2 PUSH2 0x556E JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x481C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x4827 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x4837 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x4847 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x4857 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x4867 DUP2 PUSH2 0x556E JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x488C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x4897 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x48A7 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x48B7 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x4867 DUP2 PUSH2 0x5583 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x48E6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x48F1 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x4901 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x4911 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP5 SWAP6 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP6 POP PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP5 PUSH1 0xA0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP13 DUP15 SUB SLT ISZERO PUSH2 0x4952 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x495C DUP14 DUP14 PUSH2 0x46F6 JUMP JUMPDEST SWAP11 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP1 PUSH1 0x20 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x4977 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x4987 DUP15 PUSH1 0x20 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x4701 JUMP JUMPDEST SWAP1 SWAP12 POP SWAP10 POP PUSH1 0x40 DUP14 ADD CALLDATALOAD DUP2 LT ISZERO PUSH2 0x499C JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x49AC DUP15 PUSH1 0x40 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x4701 JUMP JUMPDEST SWAP1 SWAP10 POP SWAP8 POP PUSH1 0x60 DUP14 ADD CALLDATALOAD DUP2 LT ISZERO PUSH2 0x49C1 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x49D1 DUP15 PUSH1 0x60 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x4701 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH2 0x49E3 DUP15 PUSH1 0x80 DUP16 ADD PUSH2 0x46F6 JUMP JUMPDEST SWAP5 POP DUP1 PUSH1 0xA0 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x49F5 JUMPI DUP4 DUP5 REVERT JUMPDEST POP PUSH2 0x4A06 DUP14 PUSH1 0xA0 DUP15 ADD CALLDATALOAD DUP15 ADD PUSH2 0x4743 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x4A18 DUP14 PUSH1 0xC0 DUP15 ADD PUSH2 0x4783 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP1 SWAP4 SWAP7 SWAP10 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4A3C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4A47 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x47FA DUP2 PUSH2 0x5583 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4A69 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4A74 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4A96 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x4AA1 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x4AB8 DUP2 PUSH2 0x556E JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4AD8 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x4AE3 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x4AFA DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP2 POP PUSH2 0x4B09 DUP7 PUSH1 0x60 DUP8 ADD PUSH2 0x4783 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4B29 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x4B34 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x4B52 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4B74 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x4B7F DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH2 0x4857 DUP8 PUSH1 0x60 DUP9 ADD PUSH2 0x4783 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4BAD JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xF68 DUP2 PUSH2 0x5583 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4BC9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xF68 DUP2 PUSH2 0x5583 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4BE5 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4BFE JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD SWAP2 POP PUSH1 0x20 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4C1C JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4C2F JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x4C3D JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4C5D JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP9 LT ISZERO PUSH2 0x4C74 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x4C85 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x5542 JUMP JUMPDEST DUP1 SWAP5 POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4CA5 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4CCA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4CF8 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 MLOAD SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4B52 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4D6E JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4D52 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE DUP3 DUP3 PUSH1 0x20 DUP7 ADD CALLDATACOPY DUP1 PUSH1 0x20 DUP5 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP6 ADD ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST MLOAD SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0xFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x4DD9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x5542 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP2 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP2 MSTORE SWAP4 DUP6 AND PUSH1 0x20 DUP6 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 ISZERO ISZERO PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 DUP10 AND DUP2 MSTORE SWAP7 SWAP1 SWAP8 AND PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP13 DUP14 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP12 SWAP1 SWAP12 MSTORE SWAP9 DUP12 AND PUSH1 0x40 DUP12 ADD MSTORE PUSH1 0x60 DUP11 ADD SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x80 DUP10 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP9 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP8 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP7 ADD MSTORE PUSH2 0x100 DUP6 ADD MSTORE PUSH2 0x120 DUP5 ADD MSTORE PUSH2 0x140 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0x180 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 DUP10 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x40 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x60 DUP7 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x80 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD PUSH1 0xA0 DUP4 MSTORE DUP1 PUSH2 0x5015 DUP12 DUP4 PUSH2 0x54BD JUMP JUMPDEST SWAP1 POP DUP12 SWAP2 POP DUP3 JUMPDEST DUP12 DUP2 LT ISZERO PUSH2 0x5048 JUMPI PUSH1 0x20 DUP4 ADD PUSH2 0x503B DUP4 PUSH2 0x5036 DUP4 DUP8 PUSH2 0x46F6 JUMP JUMPDEST PUSH2 0x4D21 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH1 0x1 ADD PUSH2 0x501C JUMP JUMPDEST POP DUP4 DUP2 SUB PUSH1 0x20 DUP6 ADD MSTORE DUP9 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xFB SHL SUB DUP10 GT ISZERO PUSH2 0x5067 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 DUP10 MUL SWAP2 POP DUP2 DUP11 PUSH1 0x20 DUP4 ADD CALLDATACOPY ADD PUSH1 0x20 DUP2 DUP2 ADD DUP4 DUP2 MSTORE DUP5 DUP4 SUB SWAP1 SWAP2 ADD PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x5092 DUP2 DUP10 PUSH2 0x4D3F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x50A2 PUSH1 0x60 DUP5 ADD DUP8 PUSH2 0x4D32 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x50B5 DUP2 DUP6 DUP8 PUSH2 0x4D79 JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5105 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x50E0 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x513B DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x5542 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x436F6E747261637420696E7374616E63652068617320616C7265616479206265 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x195B881A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x40 DUP3 ADD MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP3 ADD SWAP1 POP PUSH2 0x52E9 DUP3 DUP5 MLOAD PUSH2 0x4DA3 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x52FB PUSH1 0x20 DUP5 ADD DUP3 PUSH2 0x4DA8 JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x530E PUSH1 0x40 DUP5 ADD DUP3 PUSH2 0x4DA8 JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x5321 PUSH1 0x60 DUP5 ADD DUP3 PUSH2 0x4DA8 JUMP JUMPDEST POP PUSH1 0x80 DUP4 ADD MLOAD PUSH2 0x5334 PUSH1 0x80 DUP5 ADD DUP3 PUSH2 0x4DA8 JUMP JUMPDEST POP PUSH1 0xA0 DUP4 ADD MLOAD PUSH2 0x5347 PUSH1 0xA0 DUP5 ADD DUP3 PUSH2 0x4DA8 JUMP JUMPDEST POP PUSH1 0xC0 DUP4 ADD MLOAD PUSH2 0x535A PUSH1 0xC0 DUP5 ADD DUP3 PUSH2 0x4DB5 JUMP JUMPDEST POP PUSH1 0xE0 DUP4 ADD MLOAD PUSH2 0x536D PUSH1 0xE0 DUP5 ADD DUP3 PUSH2 0x4D32 JUMP JUMPDEST POP PUSH2 0x100 DUP1 DUP5 ADD MLOAD PUSH2 0x5381 DUP3 DUP6 ADD DUP3 PUSH2 0x4D32 JUMP JUMPDEST POP POP PUSH2 0x120 DUP1 DUP5 ADD MLOAD PUSH2 0x5396 DUP3 DUP6 ADD DUP3 PUSH2 0x4D32 JUMP JUMPDEST POP POP PUSH2 0x140 DUP1 DUP5 ADD MLOAD PUSH2 0x53AB DUP3 DUP6 ADD DUP3 PUSH2 0x4D32 JUMP JUMPDEST POP POP PUSH2 0x160 DUP1 DUP5 ADD MLOAD PUSH2 0x53C0 DUP3 DUP6 ADD DUP3 PUSH2 0x4DC0 JUMP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x20 DUP7 ADD MSTORE SWAP2 DUP4 AND PUSH1 0x40 DUP6 ADD MSTORE DUP3 AND PUSH1 0x60 DUP5 ADD MSTORE AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST SWAP8 DUP9 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND PUSH1 0x20 DUP10 ADD MSTORE SWAP5 ISZERO ISZERO PUSH1 0x40 DUP9 ADD MSTORE PUSH1 0x60 DUP8 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x80 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0xC0 DUP5 ADD MSTORE AND PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP DUP7 DUP3 MSTORE DUP6 PUSH1 0x20 DUP4 ADD MSTORE DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x545E DUP4 PUSH2 0x5537 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD PUSH2 0x5492 DUP7 PUSH2 0x5537 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xA0 SWAP1 SWAP2 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0xFFFF AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND PUSH1 0x60 DUP5 ADD MSTORE AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x40 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST DUP1 PUSH1 0x3 DUP2 LT PUSH2 0x6EC JUMPI INVALID JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x555D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5545 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2D4D JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1BB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1BB3 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x25 SDIV PUSH20 0x9DAB21150E478C1736417A175691C65C6A55ED7B 0x49 0x2D 0xE0 0x1E PUSH19 0x70751DB164736F6C634300060C003300000000 ",
              "sourceMap": "2419:30037:68:-:0;;;926:1:74;884:43;;2419:30037:68;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {
                "contracts/protocol/libraries/logic/ReserveLogic.sol": {
                  "ReserveLogic": [
                    {
                      "length": 20,
                      "start": 4066
                    }
                  ]
                },
                "contracts/protocol/libraries/logic/ValidationLogic.sol": {
                  "ValidationLogic": [
                    {
                      "length": 20,
                      "start": 1949
                    },
                    {
                      "length": 20,
                      "start": 2750
                    },
                    {
                      "length": 20,
                      "start": 3321
                    },
                    {
                      "length": 20,
                      "start": 4278
                    },
                    {
                      "length": 20,
                      "start": 7761
                    },
                    {
                      "length": 20,
                      "start": 9032
                    },
                    {
                      "length": 20,
                      "start": 12367
                    }
                  ]
                }
              },
              "object": "608060405234801561001057600080fd5b50600436106101c35760003560e01c8063ab9c4b5d116100f9578063d15e005311610097578063e82fec2f11610071578063e82fec2f146103c2578063e8eda9df146103ca578063f8119d51146103dd578063fe65acfe146103e5576101c3565b8063d15e005314610387578063d1946dbc1461039a578063d5ed3933146103af576101c3565b8063bf92857c116100d3578063bf92857c14610329578063c44b11f71461034e578063c4d66de814610361578063cd11238214610374576101c3565b8063ab9c4b5d146102f0578063b8d2927614610303578063bedb86fb14610316576101c3565b80635a3b74b9116101665780637a708e92116101405780637a708e92146102af5780638afaff02146102c257806394ba89a2146102ca578063a415bcad146102dd576101c3565b80635a3b74b9146102745780635c975abb1461028757806369328dec1461029c576101c3565b806335ea6a75116101a257806335ea6a751461020e578063386497fd1461022e5780634417a58314610241578063573ade8114610261576101c3565b8062a718a9146101c8578063074b2e43146101dd5780631d2118f9146101fb575b600080fd5b6101db6101d6366004614875565b6103fa565b005b6101e56105d0565b6040516101f291906154bd565b60405180910390f35b6101db6102093660046147cd565b6105d6565b61022161021c366004614795565b61060f565b6040516101f291906152d5565b6101e561023c366004614795565b6106f1565b61025461024f366004614795565b610718565b6040516101f291906152cb565b6101e561026f366004614b14565b61074b565b6101db610282366004614a2a565b610a77565b61028f610c3c565b6040516101f29190615111565b6101e56102aa366004614a82565b610c45565b6101db6102bd366004614805565b610f6f565b6101e5611051565b6101db6102d8366004614a57565b611056565b6101db6102eb366004614b5d565b6113c3565b6101db6102fe366004614932565b611443565b6101db610311366004614a57565b611b17565b6101db610324366004614b9c565b611b3b565b61033c610337366004614795565b611bb6565b6040516101f29695949392919061550f565b61025461035c366004614795565b611cb2565b6101db61036f366004614795565b611ce5565b6101db6103823660046147cd565b611d8d565b6101e5610395366004614795565b612003565b6103a2612024565b6040516101f291906150c4565b6101db6103bd3660046148ce565b6120c9565b6101e5612312565b6101db6103d8366004614ac3565b612318565b6101e5612545565b6103ed61254b565b6040516101f29190614de3565b61040261255a565b6034546040805163712d917160e01b815290516000926001600160a01b03169163712d9171916004808301926020929190829003018186803b15801561044757600080fd5b505afa15801561045b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047f91906147b1565b905060006060826001600160a01b031688888888886040516024016104a8959493929190614e6b565b60408051601f198184030181529181526020820180516001600160e01b031662a718a960e01b179052516104dc9190614dc7565b600060405180830381855af49150503d8060008114610517576040519150601f19603f3d011682016040523d82523d6000602084013e61051c565b606091505b50915091508160405180604001604052806002815260200161323360f01b815250906105645760405162461bcd60e51b815260040161055b919061511c565b60405180910390fd5b50600060608280602001905181019061057d9190614bec565b9150915081600014816040516020016105969190614dc7565b604051602081830303815290604052906105c35760405162461bcd60e51b815260040161055b919061511c565b5050505050505050505050565b603b5490565b6105de612598565b6001600160a01b03918216600090815260356020526040902060070180546001600160a01b03191691909216179055565b6106176144e3565b506001600160a01b0381811660009081526035602090815260409182902082516101a08101845281546101808201908152815260018201546001600160801b0380821694830194909452600160801b908190048416948201949094526002820154808416606083015284900483166080820152600382015492831660a08201529290910464ffffffffff1660c08301526004810154831660e0830152600581015483166101008301526006810154831661012083015260070154918216610140820152600160a01b90910460ff166101608201525b919050565b6001600160a01b038116600090815260356020526040812061071290612657565b92915050565b61072061454e565b506001600160a01b031660009081526036602090815260409182902082519182019092529054815290565b600061075561255a565b6001600160a01b0385166000908152603560205260408120908061077985846126d4565b91509150600086600281111561078b57fe5b60405163fa0c214960e01b815290915073__$de8c0cf1a7d7c36c802af9a64fb9d86036$__9063fa0c2149906107cf9087908c9086908c908a908a9060040161547b565b60006040518083038186803b1580156107e757600080fd5b505af41580156107fb573d6000803e3d6000fd5b50600092506001915061080b9050565b82600281111561081757fe5b146108225782610824565b835b9050808910156108315750875b61083a856127e9565b600182600281111561084857fe5b14156108b9576005850154604051632770a7eb60e21b81526001600160a01b0390911690639dc29fac90610882908a908590600401614e28565b600060405180830381600087803b15801561089c57600080fd5b505af11580156108b0573d6000803e3d6000fd5b50505050610937565b60068501546001860154604051637a94c56560e11b81526001600160a01b039092169163f5298aca91610904918b918691600160801b9091046001600160801b031690600401614e41565b600060405180830381600087803b15801561091e57600080fd5b505af1158015610932573d6000803e3d6000fd5b505050505b60048501546001600160a01b0316610953868c838560006128b6565b610967826109618787612c1e565b90612c43565b61099f5760078601546001600160a01b038916600090815260366020526040812061099f929091600160a01b90910460ff1690612c85565b6109b46001600160a01b038c16338385612cf5565b6040516388dd91a160e01b81526001600160a01b038216906388dd91a1906109e29033908690600401614e28565b600060405180830381600087803b1580156109fc57600080fd5b505af1158015610a10573d6000803e3d6000fd5b50505050336001600160a01b0316886001600160a01b03168c6001600160a01b03167f4cdde6e09bb755c9a5589ebaec640bbfedff1362d4b255ebf8339782b9942faa85604051610a6191906154bd565b60405180910390a4509998505050505050505050565b610a7f61255a565b6001600160a01b03808316600090815260356020818152604080842033855260368352938190206038546034548351631f94a27560e31b81529351969773__$de8c0cf1a7d7c36c802af9a64fb9d86036$__97635fa297e5978a978d978d9792969295603795939493169263fca513a892600480840193919291829003018186803b158015610b0d57600080fd5b505afa158015610b21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4591906147b1565b6040518963ffffffff1660e01b8152600401610b689897969594939291906153f6565b60006040518083038186803b158015610b8057600080fd5b505af4158015610b94573d6000803e3d6000fd5b505050506007810154336000908152603660205260409020610bc091600160a01b900460ff1684612d53565b8115610c005760405133906001600160a01b038516907e058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f290600090a3610c37565b60405133906001600160a01b038516907f44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd90600090a35b505050565b60395460ff1690565b6000610c4f61255a565b6001600160a01b0380851660009081526035602052604080822060048082015492516370a0823160e01b8152919492909216929183916370a0823191610c9791339101614de3565b60206040518083038186803b158015610caf57600080fd5b505afa158015610cc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce79190614bd4565b905085600019811415610cf75750805b73__$de8c0cf1a7d7c36c802af9a64fb9d86036$__63d09db04a898385603560366000336001600160a01b03166001600160a01b031681526020019081526020016000206037603854603460009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8e57600080fd5b505afa158015610da2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc691906147b1565b6040518963ffffffff1660e01b8152600401610de9989796959493929190614f94565b60006040518083038186803b158015610e0157600080fd5b505af4158015610e15573d6000803e3d6000fd5b50505050610e22846127e9565b610e308489856000856128b6565b81811415610e9a576007840154336000908152603660205260408120610e63929091600160a01b90910460ff1690612d53565b60405133906001600160a01b038a16907f44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd90600090a35b6001840154604051636b81068560e11b81526001600160a01b0385169163d7020d0a91610edb9133918b9187916001600160801b0390911690600401614df7565b600060405180830381600087803b158015610ef557600080fd5b505af1158015610f09573d6000803e3d6000fd5b50505050856001600160a01b0316336001600160a01b0316896001600160a01b03167f3115d1449a7b732c986cba18244e897a450f61e1bb8d589cd2e69e6c8924f9f784604051610f5a91906154bd565b60405180910390a493505050505b9392505050565b610f77612598565b610f8085612dc9565b6040518060400160405280600281526020016106e760f31b81525090610fb95760405162461bcd60e51b815260040161055b919061511c565b506001600160a01b038516600090815260356020526040908190209051630acce25f60e21b815273__$22cd43a9dda9ce44e9b92ba393b88fb9ac$__91632b33897c91611011919088908890889088906004016153c8565b60006040518083038186803b15801561102957600080fd5b505af415801561103d573d6000803e3d6000fd5b5050505061104a85612e02565b5050505050565b600281565b61105e61255a565b6001600160a01b0382166000908152603560205260408120908061108233846126d4565b91509150600084600281111561109457fe5b3360009081526036602052604090819020905163a8695b1d60e01b815291925073__$de8c0cf1a7d7c36c802af9a64fb9d86036$__9163a8695b1d916110e591889190889088908890600401615438565b60006040518083038186803b1580156110fd57600080fd5b505af4158015611111573d6000803e3d6000fd5b5050505061111e846127e9565b600181600281111561112c57fe5b141561123c576005840154604051632770a7eb60e21b81526001600160a01b0390911690639dc29fac906111669033908790600401614e28565b600060405180830381600087803b15801561118057600080fd5b505af1158015611194573d6000803e3d6000fd5b505050506006840154600185015460405163b3f1c93d60e01b81526001600160a01b039092169163b3f1c93d916111e491339182918991600160801b90046001600160801b031690600401614df7565b602060405180830381600087803b1580156111fe57600080fd5b505af1158015611212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112369190614bb8565b50611352565b60068401546001850154604051637a94c56560e11b81526001600160a01b039092169163f5298aca916112879133918791600160801b9091046001600160801b031690600401614e41565b600060405180830381600087803b1580156112a157600080fd5b505af11580156112b5573d6000803e3d6000fd5b505050506005840154600385015460405163b3f1c93d60e01b81526001600160a01b039092169163b3f1c93d916112fe913391829188916001600160801b031690600401614df7565b602060405180830381600087803b15801561131857600080fd5b505af115801561132c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113509190614bb8565b505b600484015461137090859088906001600160a01b03166000806128b6565b336001600160a01b0316866001600160a01b03167fea368a40e9570069bb8e6511d668293ad2e1f03b0d982431fd223de9f3b70ca6876040516113b391906154bd565b60405180910390a3505050505050565b6113cb61255a565b6001600160a01b038086166000818152603560209081526040918290208251610100810184529384523391840191909152848416918301919091526060820187905260808201869052600481015490921660a082015261ffff841660c0820152600160e082015261143b90612f0b565b505050505050565b61144b61255a565b611453614561565b6114c08b8b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808f0282810182019093528e82529093508e92508d91829185019084908082843760009201919091525061340492505050565b60608a67ffffffffffffffff811180156114d957600080fd5b50604051908082528060200260200182016040528015611503578160200160208202803683370190505b50905060608b67ffffffffffffffff8111801561151f57600080fd5b50604051908082528060200260200182016040528015611549578160200160208202803683370190505b506001600160a01b038f1684526000604085015290505b60408301518c111561170d57603560008e8e866040015181811061158057fe5b90506020020160208101906115959190614795565b6001600160a01b03166001600160a01b0316815260200190815260200160002060040160009054906101000a90046001600160a01b0316828460400151815181106115dc57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505061163361271061162d603b548e8e886040015181811061161857fe5b9050602002013561344290919063ffffffff16565b9061347c565b8184604001518151811061164357fe5b6020026020010181815250508183604001518151811061165f57fe5b60200260200101516001600160a01b0316634efecaa58f8d8d876040015181811061168657fe5b905060200201356040518363ffffffff1660e01b81526004016116aa929190614e28565b602060405180830381600087803b1580156116c457600080fd5b505af11580156116d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fc9190614bd4565b506040830180516001019052611560565b82600001516001600160a01b031663920f5c848e8e8e8e86338d8d6040518963ffffffff1660e01b815260040161174b989796959493929190615000565b602060405180830381600087803b15801561176557600080fd5b505af1158015611779573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179d9190614bb8565b604051806040016040528060028152602001611b1b60f11b815250906117d65760405162461bcd60e51b815260040161055b919061511c565b50600060408401525b60408301518c1115611b07578c8c84604001518181106117fb57fe5b90506020020160208101906118109190614795565b6001600160a01b0316606084015260408301518b908b9081811061183057fe5b905060200201358360a00181815250508083604001518151811061185057fe5b60200260200101518360c00181815250508183604001518151811061187157fe5b60209081029190910101516001600160a01b0316608084015260c083015160a084015161189d91612c1e565b60e08401526000898985604001518181106118b457fe5b9050602002013560028111156118c657fe5b60028111156118d157fe5b1415611a035760608301516001600160a01b031660009081526035602052604090206118fc906127e9565b61199c83608001516001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561193c57600080fd5b505afa158015611950573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119749190614bd4565b60c085015160608601516001600160a01b0316600090815260356020526040902091906134be565b6060830151608084015160e08501516001600160a01b03831660009081526035602052604081206119d2949093909290916128b6565b6119fe8e84608001518560e0015186606001516001600160a01b0316612cf5909392919063ffffffff16565b611a92565b611a9260405180610100016040528085606001516001600160a01b03168152602001336001600160a01b03168152602001896001600160a01b031681526020018560a0015181526020018b8b8760400151818110611a5d57fe5b90506020020135815260200185608001516001600160a01b031681526020018661ffff16815260200160001515815250612f0b565b82606001516001600160a01b0316336001600160a01b03168f6001600160a01b03167f631042c832b07452973831137f2d73e395028b44b250dedc5abb0ee766e168ac8660a001518760c0015189604051611aef939291906154c6565b60405180910390a460408301805160010190526117df565b5050505050505050505050505050565b611b1f612598565b6001600160a01b03909116600090815260356020526040902055565b611b43612598565b6039805460ff1916821515179081905560ff1615611b89576040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1611bb3565b6040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a15b50565b600080600080600080611c8f876035603660008b6001600160a01b03166001600160a01b031681526020019081526020016000206040518060200160405290816000820154815250506037603854603460009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b158015611c5257600080fd5b505afa158015611c66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8a91906147b1565b61357b565b93995091975090945092509050611ca7868684613a3c565b935091939550919395565b611cba61454e565b506001600160a01b031660009081526035602090815260409182902082519182019092529054815290565b6000611cef613a70565b60015490915060ff1680611d065750611d06613a75565b80611d12575060005481115b611d2e5760405162461bcd60e51b815260040161055b906151fc565b60015460ff16158015611d4d576001805460ff19168117905560008290555b603480546001600160a01b0319166001600160a01b0385161790556109c4603a556009603b556080603c558015610c37576001805460ff19169055505050565b611d9561255a565b6001600160a01b038083166000908152603560205260408082206005810154600682015460048084015494516370a0823160e01b81529396928316959183169490921692909185916370a0823191611def918a9101614de3565b60206040518083038186803b158015611e0757600080fd5b505afa158015611e1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3f9190614bd4565b60405163548cad0960e01b815290915073__$de8c0cf1a7d7c36c802af9a64fb9d86036$__9063548cad0990611e819088908b908990899089906004016153c8565b60006040518083038186803b158015611e9957600080fd5b505af4158015611ead573d6000803e3d6000fd5b50505050611eba856127e9565b604051632770a7eb60e21b81526001600160a01b03851690639dc29fac90611ee89089908590600401614e28565b600060405180830381600087803b158015611f0257600080fd5b505af1158015611f16573d6000803e3d6000fd5b505050600386015460405163b3f1c93d60e01b81526001600160a01b038716925063b3f1c93d91611f59918a91829187916001600160801b031690600401614df7565b602060405180830381600087803b158015611f7357600080fd5b505af1158015611f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fab9190614bb8565b50611fba8588846000806128b6565b856001600160a01b0316876001600160a01b03167f9f439ae0c81e41a04d3fdfe07aed54e6a179fb0db15be7702eb66fa8ef6f530060405160405180910390a350505050505050565b6001600160a01b038116600090815260356020526040812061071290613a7b565b60608060385467ffffffffffffffff8111801561204057600080fd5b5060405190808252806020026020018201604052801561206a578160200160208202803683370190505b50905060005b6038548110156120c35760008181526037602052604090205482516001600160a01b03909116908390839081106120a357fe5b6001600160a01b0390921660209283029190910190910152600101612070565b50905090565b6120d161255a565b6001600160a01b038681166000908152603560209081526040918290206004015482518084019093526002835261363360f01b91830191909152909116331461212d5760405162461bcd60e51b815260040161055b919061511c565b506121e985603560366000896001600160a01b03166001600160a01b031681526020019081526020016000206037603854603460009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b1580156121ac57600080fd5b505afa1580156121c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e491906147b1565b613ada565b6001600160a01b03868116600090815260356020526040902060070154600160a01b900460ff169085811690871614612309576122268385612c43565b612292576001600160a01b0386166000908152603660205260408120906122509082908490612d53565b866001600160a01b0316886001600160a01b03167f44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd60405160405180910390a3505b8115801561229f57508315155b15612309576001600160a01b03851660009081526036602052604090206122c881836001612d53565b856001600160a01b0316886001600160a01b03167e058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f260405160405180910390a3505b50505050505050565b603a5490565b61232061255a565b6001600160a01b038416600090815260356020526040908190209051630eca322b60e01b815273__$de8c0cf1a7d7c36c802af9a64fb9d86036$__90630eca322b90612372908490889060040161546d565b60006040518083038186803b15801561238a57600080fd5b505af415801561239e573d6000803e3d6000fd5b5050505060048101546001600160a01b03166123b9826127e9565b6123c78287838860006128b6565b6123dc6001600160a01b038716338388612cf5565b6001820154604051630ab714fb60e11b81526000916001600160a01b0384169163156e29f69161241e9189918b916001600160801b0390911690600401614e41565b602060405180830381600087803b15801561243857600080fd5b505af115801561244c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124709190614bb8565b905080156124ea5760078301546001600160a01b03861660009081526036602052604090206124aa91600160a01b900460ff166001612d53565b846001600160a01b0316876001600160a01b03167e058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f260405160405180910390a35b8361ffff16856001600160a01b0316886001600160a01b03167fde6857219544bb5b7746f48ed30be6386fefc61b2f864cacf559893bf50fd951338a604051612534929190614e28565b60405180910390a450505050505050565b603c5490565b6034546001600160a01b031690565b6039546040805180820190915260028152610d8d60f21b60208201529060ff1615611bb35760405162461bcd60e51b815260040161055b919061511c565b603454604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b1580156125dc57600080fd5b505afa1580156125f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261491906147b1565b6001600160a01b03161460405180604001604052806002815260200161323760f01b81525090611bb35760405162461bcd60e51b815260040161055b919061511c565b600381015460009064ffffffffff600160801b90910481169042168114156126955750506001810154600160801b90046001600160801b03166106ec565b600183015460028401546000916126cc916001600160801b03600160801b928390048116926126c692041685613b50565b90613b5d565b949350505050565b60058101546040516370a0823160e01b815260009182916001600160a01b03909116906370a082319061270b908790600401614de3565b60206040518083038186803b15801561272357600080fd5b505afa158015612737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275b9190614bd4565b60068401546040516370a0823160e01b81526001600160a01b03909116906370a082319061278d908890600401614de3565b60206040518083038186803b1580156127a557600080fd5b505afa1580156127b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127dd9190614bd4565b915091505b9250929050565b60068101546040805163b1bf962d60e01b815290516000926001600160a01b03169163b1bf962d916004808301926020929190829003018186803b15801561283057600080fd5b505afa158015612844573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128689190614bd4565b60018301546003840154919250600160801b8082046001600160801b03908116939216910464ffffffffff166000806128a48787868887613bf0565b91509150612309878787858588613d4d565b6128be6145ad565b60058601546001600160a01b031680825260408051637b98f4df60e11b8152815163f731e9be92600480840193919291829003018186803b15801561290257600080fd5b505afa158015612916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293a9190614c93565b60c083015260408083019190915260018701546006880154825163b1bf962d60e01b815292516129df93600160801b9093046001600160801b0316926001600160a01b039092169163b1bf962d916004808301926020929190829003018186803b1580156129a757600080fd5b505afa1580156129bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c69190614bd4565b60e082018190526007870154604083015160c08401516001600160a01b03909216926329db497d9289928992899289929190612a1a8f613f10565b6040518963ffffffff1660e01b8152600401612a3d989796959493929190614eec565b60606040518083038186803b158015612a5557600080fd5b505afa158015612a69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8d9190614cb6565b60a0840152608083015260608201819052604080518082019091526002815261353360f01b6020820152906001600160801b031015612adf5760405162461bcd60e51b815260040161055b919061511c565b506080810151604080518082019091526002815261353560f01b6020820152906001600160801b031015612b265760405162461bcd60e51b815260040161055b919061511c565b5060a08101516040805180820190915260028152610d4d60f21b6020820152906001600160801b031015612b6d5760405162461bcd60e51b815260040161055b919061511c565b506060810151600287018054608084015160038a0180546001600160801b03199081166001600160801b038085169190911790925560a08701519316818616178116600160801b84831681029190911790945560018b01546040516001600160a01b038c16967f804c9b842b2748a22bb64b345453a3de7ca54a6ca45ce00d415894979e22897a96612c0e96919594919380831693919004909116906154e0565b60405180910390a2505050505050565b600082820183811015610f685760405162461bcd60e51b815260040161055b9061514f565b6000610f6883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613f1b565b604080518082019091526002815261373760f01b602082015260808310612cbf5760405162461bcd60e51b815260040161055b919061511c565b508160020281612cd0576000612cd3565b60015b60ff16901b826002026001901b19846000015416178360000181905550505050565b612d4d846323b872dd60e01b858585604051602401612d1693929190614e9f565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613f47565b50505050565b604080518082019091526002815261373760f01b602082015260808310612d8d5760405162461bcd60e51b815260040161055b919061511c565b508160020260010181612da1576000612da4565b60015b60ff16901b826002026001016001901b19846000015416178360000181905550505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906126cc575050151592915050565b603854603c54604080518082019091526002815261363560f01b6020820152908210612e415760405162461bcd60e51b815260040161055b919061511c565b506001600160a01b038216600090815260356020526040812060070154600160a01b900460ff16151580612eaa57506000805260376020527fa0a618d80eda9243166be83cb7421d97e9dab6ddddd3c70ac7a6b4440256e8e7546001600160a01b038481169116145b905080610c3757506001600160a01b03919091166000818152603560209081526040808320600701805460ff60a01b1916600160a01b60ff8816021790558483526037909152902080546001600160a01b0319169091179055600101603855565b80516001600160a01b0390811660009081526035602090815260408083208186015185168452603683528184206034548351631f94a27560e31b81529351929691959491169263fca513a89260048083019392829003018186803b158015612f7257600080fd5b505afa158015612f86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612faa91906147b1565b9050600061304b612fba8561402c565b600a0a61162d8760600151856001600160a01b031663b3596f078a600001516040518263ffffffff1660e01b8152600401612ff59190614de3565b60206040518083038186803b15801561300d57600080fd5b505afa158015613021573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130459190614bd4565b90613442565b905073__$de8c0cf1a7d7c36c802af9a64fb9d86036$__63721a92f986600001518688604001518960600151868b60800151603a5460358c60376038548e6040518d63ffffffff1660e01b81526004016130b09c9b9a99989796959493929190614f30565b60006040518083038186803b1580156130c857600080fd5b505af41580156130dc573d6000803e3d6000fd5b505050506130e9846127e9565b6000806001876080015160028111156130fe57fe5b600281111561310957fe5b14156131be576003860154600587015460208901516040808b015160608c0151915163b3f1c93d60e01b81526001600160801b0390951696506001600160a01b039093169363b3f1c93d93613165939290918890600401614ec3565b602060405180830381600087803b15801561317f57600080fd5b505af1158015613193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b79190614bb8565b905061326d565b600686015460208801516040808a015160608b015160018b0154925163b3f1c93d60e01b81526001600160a01b039095169463b3f1c93d946132189490939291600160801b9091046001600160801b031690600401614df7565b602060405180830381600087803b15801561323257600080fd5b505af1158015613246573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326a9190614bb8565b90505b801561328f57600786015461328f908690600160a01b900460ff166001612c85565b6132be87600001518860a0015160008a60e001516132ae5760006132b4565b8a606001515b8a939291906128b6565b8660e0015115613356578660a001516001600160a01b0316634efecaa5886020015189606001516040518363ffffffff1660e01b8152600401613302929190614e28565b602060405180830381600087803b15801561331c57600080fd5b505af1158015613330573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133549190614bd4565b505b8660c0015161ffff1687604001516001600160a01b031688600001516001600160a01b03167fc6a898309e823ee50bac64e45ca8adba6690e99e7841c45d754e2a38e9019d9b8a602001518b606001518c60800151600160028111156133b857fe5b8e6080015160028111156133c857fe5b60028111156133d357fe5b146133f25760028d0154600160801b90046001600160801b03166133f4565b885b6040516125349493929190614fda565b805182511460405180604001604052806002815260200161373360f01b81525090610c375760405162461bcd60e51b815260040161055b919061511c565b60008261345157506000610712565b8282028284828161345e57fe5b0414610f685760405162461bcd60e51b815260040161055b906151bb565b6000610f6883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614036565b60006134db6134cc8461406d565b6134d58461406d565b906140bd565b905060006134f16134ea614168565b8390612c1e565b600186015490915061350d9082906001600160801b0316613b5d565b604080518082019091526002815261353160f01b60208201529091506001600160801b038211156135515760405162461bcd60e51b815260040161055b919061511c565b5060019490940180546001600160801b0319166001600160801b0390951694909417909355505050565b600080600080600061358b6145fb565b6135948a614178565b156135b2576000806000806000199550955095509550955050613a2e565b600060e08201525b878160e00151101561398d5760e08101516135d6908b9061417d565b6135df5761397d565b60e0810151600090815260208a81526040808320546001600160a01b03166101e085018190528352908d90529020613616816141ce565b506080860181905260c08601929092525060a0840191909152600a0a60208301526101e082015160405163b3596f0760e01b81526001600160a01b038a169163b3596f07916136689190600401614de3565b60206040518083038186803b15801561368057600080fd5b505afa158015613694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136b89190614bd4565b825260c0820151158015906136d8575060e08201516136d8908c906141f9565b156137f6578060040160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b81526004016137209190614de3565b60206040518083038186803b15801561373857600080fd5b505afa15801561374c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137709190614bd4565b604083018190526020830151835160009261378f929161162d91613442565b6101208401519091506137a29082612c1e565b61012084015260a08301516137c8906137bc908390613442565b61016085015190612c1e565b61016084015260c08301516137ee906137e2908390613442565b61018085015190612c1e565b610180840152505b60e0820151613806908c90614251565b1561397b578060050160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b815260040161384e9190614de3565b60206040518083038186803b15801561386657600080fd5b505afa15801561387a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061389e9190614bd4565b8260600181815250506139488160060160009054906101000a90046001600160a01b03166001600160a01b03166370a082318f6040518263ffffffff1660e01b81526004016138ed9190614de3565b60206040518083038186803b15801561390557600080fd5b505afa158015613919573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061393d9190614bd4565b606084015190612c1e565b606083018190526020830151835161397492613968929161162d91613442565b61014084015190612c1e565b6101408301525b505b60e08101805160010190526135ba565b6000816101200151116139a15760006139b6565b6101208101516101608201516139b69161347c565b6101608201526101208101516139cd5760006139e2565b6101208101516101808201516139e29161347c565b61018082018190526101208201516101408301516139ff926142a2565b610100820181905261012082015161014083015161016084015161018090940151919850965091945090925090505b965096509650965096915050565b600080613a4985846142c6565b905083811015613a5d576000915050610f68565b613a678185612c43565b95945050505050565b600290565b303b1590565b600381015460009064ffffffffff600160801b9091048116904216811415613ab257505060018101546001600160801b03166106ec565b600183015460028401546000916126cc916001600160801b03918216916126c6911685614335565b604080516020810190915284548152600090613afc908890889087878761357b565b945050505050670de0b6b3a7640000811015604051806040016040528060018152602001601b60f91b81525090613b465760405162461bcd60e51b815260040161055b919061511c565b5050505050505050565b6000610f68838342614373565b6000821580613b6a575081155b15613b7757506000610712565b816b019d971e4fe8401e740000001981613b8d57fe5b0483111560405180604001604052806002815260200161068760f31b81525090613bca5760405162461bcd60e51b815260040161055b919061511c565b506b033b2e3c9fd0803ce80000006002815b048385020181613be857fe5b049392505050565b600285015460009081906001600160801b031685858215613d1e576000613c178488614335565b9050613c23818a613b5d565b604080518082019091526002815261353160f01b60208201529093506001600160801b03841115613c675760405162461bcd60e51b815260040161055b919061511c565b5060018b0180546001600160801b0319166001600160801b0385161790558915613d1c5760028b0154600090613cad90600160801b90046001600160801b031689613b50565b9050613cb9818a613b5d565b6040805180820190915260028152611a9960f11b60208201529093506001600160801b03841115613cfd5760405162461bcd60e51b815260040161055b919061511c565b505060018b0180546001600160801b03808516600160801b0291161790555b505b600399909901805464ffffffffff60801b1916600160801b4264ffffffffff1602179055989650505050505050565b613d55614695565b613d5e87613f10565b6101208201819052613d70575061143b565b8660050160009054906101000a90046001600160a01b03166001600160a01b031663797743386040518163ffffffff1660e01b815260040160806040518083038186803b158015613dc057600080fd5b505afa158015613dd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df89190614ce3565b64ffffffffff1661014085015260a084015282526020820152613e1b8686613b5d565b6080820152613e2a8684613b5d565b606082015260a0810151610140820151613e4c919064ffffffffff8516614373565b60c082018190526020820151613e6191613b5d565b60408201819052608082015182516060840151613e8693926109619290918391612c1e565b60e08201819052610120820151613e9d91906142c6565b61010082018190521561230957600480880154610100830151604051637df5bd3b60e01b81526001600160a01b0390921692637df5bd3b92613ee2929189910161546d565b600060405180830381600087803b158015613efc57600080fd5b505af11580156105c3573d6000803e3d6000fd5b5460401c61ffff1690565b60008184841115613f3f5760405162461bcd60e51b815260040161055b919061511c565b505050900390565b613f59826001600160a01b0316612dc9565b613f755760405162461bcd60e51b815260040161055b90615294565b60006060836001600160a01b031683604051613f919190614dc7565b6000604051808303816000865af19150503d8060008114613fce576040519150601f19603f3d011682016040523d82523d6000602084013e613fd3565b606091505b509150915081613ff55760405162461bcd60e51b815260040161055b90615186565b805115612d4d57808060200190518101906140109190614bb8565b612d4d5760405162461bcd60e51b815260040161055b9061524a565b5460301c60ff1690565b600081836140575760405162461bcd60e51b815260040161055b919061511c565b50600083858161406357fe5b0495945050505050565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b815250906140b65760405162461bcd60e51b815260040161055b919061511c565b5092915050565b604080518082019091526002815261035360f41b6020820152600090826140f75760405162461bcd60e51b815260040161055b919061511c565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156141455760405162461bcd60e51b815260040161055b919061511c565b5082816b033b2e3c9fd0803ce80000008602018161415f57fe5b04949350505050565b6b033b2e3c9fd0803ce800000090565b511590565b60006080821060405180604001604052806002815260200161373760f01b815250906141bc5760405162461bcd60e51b815260040161055b919061511c565b50509051600360029092021c16151590565b5461ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b60006080821060405180604001604052806002815260200161373760f01b815250906142385760405162461bcd60e51b815260040161055b919061511c565b5050815160016002830281019190911c16151592915050565b60006080821060405180604001604052806002815260200161373760f01b815250906142905760405162461bcd60e51b815260040161055b919061511c565b50509051600160029092021c16151590565b6000826142b25750600019610f68565b6126cc836142c086856142c6565b90614449565b60008215806142d3575081155b156142e057506000610712565b8161138819816142ec57fe5b0483111560405180604001604052806002815260200161068760f31b815250906143295760405162461bcd60e51b815260040161055b919061511c565b50612710600281613bdc565b6000806143494264ffffffffff8516612c43565b90506126cc614356614168565b6301e133806143658785613442565b8161436c57fe5b0490612c1e565b6000806143878364ffffffffff8616612c43565b90508061439e57614396614168565b915050610f68565b60001981016000600283116143b45760006143b9565b600283035b90506301e13380870460006143ce8280613b5d565b905060006143dc8284613b5d565b9050600060026143f0846130458a8a613442565b816143f757fe5b0490506000600661440e8461304589818d8d613442565b8161441557fe5b04905061443981614433848161442b8a8e613442565b614433614168565b90612c1e565b9c9b505050505050505050505050565b604080518082019091526002815261035360f41b6020820152600090826144835760405162461bcd60e51b815260040161055b919061511c565b5060408051808201909152600280825261068760f31b6020830152830490670de0b6b3a76400008219048511156144cd5760405162461bcd60e51b815260040161055b919061511c565b508281670de0b6b3a76400008602018161415f57fe5b6040518061018001604052806144f761454e565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040518060200160405280600081525090565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60405180610100016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806102400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b031681526020016000151581526020016000151581525090565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600064ffffffffff1681525090565b80356107128161556e565b60008083601f840112614712578182fd5b50813567ffffffffffffffff811115614729578182fd5b60208301915083602080830285010111156127e257600080fd5b60008083601f840112614754578182fd5b50813567ffffffffffffffff81111561476b578182fd5b6020830191508360208285010111156127e257600080fd5b803561ffff8116811461071257600080fd5b6000602082840312156147a6578081fd5b8135610f688161556e565b6000602082840312156147c2578081fd5b8151610f688161556e565b600080604083850312156147df578081fd5b82356147ea8161556e565b915060208301356147fa8161556e565b809150509250929050565b600080600080600060a0868803121561481c578081fd5b85356148278161556e565b945060208601356148378161556e565b935060408601356148478161556e565b925060608601356148578161556e565b915060808601356148678161556e565b809150509295509295909350565b600080600080600060a0868803121561488c578081fd5b85356148978161556e565b945060208601356148a78161556e565b935060408601356148b78161556e565b925060608601359150608086013561486781615583565b60008060008060008060c087890312156148e6578081fd5b86356148f18161556e565b955060208701356149018161556e565b945060408701356149118161556e565b959894975094956060810135955060808101359460a0909101359350915050565b600080600080600080600080600080600060e08c8e031215614952578485fd5b61495c8d8d6146f6565b9a5067ffffffffffffffff8060208e01351115614977578586fd5b6149878e60208f01358f01614701565b909b50995060408d013581101561499c578586fd5b6149ac8e60408f01358f01614701565b909950975060608d01358110156149c1578586fd5b6149d18e60608f01358f01614701565b90975095506149e38e60808f016146f6565b94508060a08e013511156149f5578384fd5b50614a068d60a08e01358e01614743565b9093509150614a188d60c08e01614783565b90509295989b509295989b9093969950565b60008060408385031215614a3c578081fd5b8235614a478161556e565b915060208301356147fa81615583565b60008060408385031215614a69578182fd5b8235614a748161556e565b946020939093013593505050565b600080600060608486031215614a96578081fd5b8335614aa18161556e565b9250602084013591506040840135614ab88161556e565b809150509250925092565b60008060008060808587031215614ad8578182fd5b8435614ae38161556e565b9350602085013592506040850135614afa8161556e565b9150614b098660608701614783565b905092959194509250565b60008060008060808587031215614b29578182fd5b8435614b348161556e565b935060208501359250604085013591506060850135614b528161556e565b939692955090935050565b600080600080600060a08688031215614b74578283fd5b8535614b7f8161556e565b945060208601359350604086013592506148578760608801614783565b600060208284031215614bad578081fd5b8135610f6881615583565b600060208284031215614bc9578081fd5b8151610f6881615583565b600060208284031215614be5578081fd5b5051919050565b60008060408385031215614bfe578182fd5b82519150602083015167ffffffffffffffff80821115614c1c578283fd5b818501915085601f830112614c2f578283fd5b815181811115614c3d578384fd5b604051601f8201601f191681016020018381118282101715614c5d578586fd5b604052818152838201602001881015614c74578485fd5b614c85826020830160208701615542565b809450505050509250929050565b60008060408385031215614ca5578182fd5b505080516020909101519092909150565b600080600060608486031215614cca578081fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215614cf8578182fd5b845193506020850151925060408501519150606085015164ffffffffff81168114614b52578182fd5b6001600160a01b0316815260200190565b6001600160a01b03169052565b6000815180845260208085019450808401835b83811015614d6e57815187529582019590820190600101614d52565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b519052565b6001600160801b03169052565b64ffffffffff169052565b60ff169052565b60008251614dd9818460208701615542565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03948516815292909316602083015260408201526001600160801b03909116606082015260800190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393909316835260208301919091526001600160801b0316604082015260600190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252901515608082015260a00190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b03988916815296909716602087015260408601949094526060850192909252608084015260a083015260c082015260e08101919091526101000190565b6001600160a01b039c8d168152602081019b909b52988b1660408b015260608a0197909752608089019590955260a088019390935260c087019190915260e08601526101008501526101208401526101408301529091166101608201526101800190565b6001600160a01b039889168152602081019790975260408701959095526060860193909352608085019190915260a084015260c083015290911660e08201526101000190565b6001600160a01b0394909416845260208401929092526040830152606082015260800190565b600060a0820160a08352806150158b836154bd565b90508b9150825b8b811015615048576020830161503b8361503683876146f6565b614d21565b909350915060010161501c565b5083810360208501528881526001600160fb1b03891115615067578283fd5b602089029150818a602083013701602081810183815284830390910160408501526150928189614d3f565b9150506150a26060840187614d32565b82810360808401526150b5818587614d79565b9b9a5050505050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156151055783516001600160a01b0316835292840192918401916001016150e0565b50909695505050505050565b901515815260200190565b600060208252825180602084015261513b816040850160208701615542565b601f01601f19169190910160400192915050565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b9051815260200190565b6000610180820190506152e9828451614da3565b60208301516152fb6020840182614da8565b50604083015161530e6040840182614da8565b5060608301516153216060840182614da8565b5060808301516153346080840182614da8565b5060a083015161534760a0840182614da8565b5060c083015161535a60c0840182614db5565b5060e083015161536d60e0840182614d32565b506101008084015161538182850182614d32565b50506101208084015161539682850182614d32565b5050610140808401516153ab82850182614d32565b5050610160808401516153c082850182614dc0565b505092915050565b9485526001600160a01b03938416602086015291831660408501528216606084015216608082015260a00190565b9788526001600160a01b03968716602089015294151560408801526060870193909352608086019190915260a085015260c08401521660e08201526101000190565b600060a08201905086825285602083015284604083015283606083015261545e83615537565b60808301529695505050505050565b918252602082015260400190565b8681526020810186905260c0810161549286615537565b60408301526001600160a01b03949094166060820152608081019290925260a0909101529392505050565b90815260200190565b928352602083019190915261ffff16604082015260600190565b948552602085019390935260408401919091526001600160801b03908116606084015216608082015260a00190565b958652602086019490945260408501929092526060840152608083015260a082015260c00190565b80600381106106ec57fe5b60005b8381101561555d578181015183820152602001615545565b83811115612d4d5750506000910152565b6001600160a01b0381168114611bb357600080fd5b8015158114611bb357600080fdfea26469706673582212202505739dab21150e478c1736417a175691c65c6a55ed7b492de01e7270751db164736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1C3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAB9C4B5D GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xD15E0053 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xE82FEC2F GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xE82FEC2F EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0xE8EDA9DF EQ PUSH2 0x3CA JUMPI DUP1 PUSH4 0xF8119D51 EQ PUSH2 0x3DD JUMPI DUP1 PUSH4 0xFE65ACFE EQ PUSH2 0x3E5 JUMPI PUSH2 0x1C3 JUMP JUMPDEST DUP1 PUSH4 0xD15E0053 EQ PUSH2 0x387 JUMPI DUP1 PUSH4 0xD1946DBC EQ PUSH2 0x39A JUMPI DUP1 PUSH4 0xD5ED3933 EQ PUSH2 0x3AF JUMPI PUSH2 0x1C3 JUMP JUMPDEST DUP1 PUSH4 0xBF92857C GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0xBF92857C EQ PUSH2 0x329 JUMPI DUP1 PUSH4 0xC44B11F7 EQ PUSH2 0x34E JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x361 JUMPI DUP1 PUSH4 0xCD112382 EQ PUSH2 0x374 JUMPI PUSH2 0x1C3 JUMP JUMPDEST DUP1 PUSH4 0xAB9C4B5D EQ PUSH2 0x2F0 JUMPI DUP1 PUSH4 0xB8D29276 EQ PUSH2 0x303 JUMPI DUP1 PUSH4 0xBEDB86FB EQ PUSH2 0x316 JUMPI PUSH2 0x1C3 JUMP JUMPDEST DUP1 PUSH4 0x5A3B74B9 GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x7A708E92 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x7A708E92 EQ PUSH2 0x2AF JUMPI DUP1 PUSH4 0x8AFAFF02 EQ PUSH2 0x2C2 JUMPI DUP1 PUSH4 0x94BA89A2 EQ PUSH2 0x2CA JUMPI DUP1 PUSH4 0xA415BCAD EQ PUSH2 0x2DD JUMPI PUSH2 0x1C3 JUMP JUMPDEST DUP1 PUSH4 0x5A3B74B9 EQ PUSH2 0x274 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0x69328DEC EQ PUSH2 0x29C JUMPI PUSH2 0x1C3 JUMP JUMPDEST DUP1 PUSH4 0x35EA6A75 GT PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x35EA6A75 EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0x386497FD EQ PUSH2 0x22E JUMPI DUP1 PUSH4 0x4417A583 EQ PUSH2 0x241 JUMPI DUP1 PUSH4 0x573ADE81 EQ PUSH2 0x261 JUMPI PUSH2 0x1C3 JUMP JUMPDEST DUP1 PUSH3 0xA718A9 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x74B2E43 EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x1D2118F9 EQ PUSH2 0x1FB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1DB PUSH2 0x1D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4875 JUMP JUMPDEST PUSH2 0x3FA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1E5 PUSH2 0x5D0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F2 SWAP2 SWAP1 PUSH2 0x54BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1DB PUSH2 0x209 CALLDATASIZE PUSH1 0x4 PUSH2 0x47CD JUMP JUMPDEST PUSH2 0x5D6 JUMP JUMPDEST PUSH2 0x221 PUSH2 0x21C CALLDATASIZE PUSH1 0x4 PUSH2 0x4795 JUMP JUMPDEST PUSH2 0x60F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F2 SWAP2 SWAP1 PUSH2 0x52D5 JUMP JUMPDEST PUSH2 0x1E5 PUSH2 0x23C CALLDATASIZE PUSH1 0x4 PUSH2 0x4795 JUMP JUMPDEST PUSH2 0x6F1 JUMP JUMPDEST PUSH2 0x254 PUSH2 0x24F CALLDATASIZE PUSH1 0x4 PUSH2 0x4795 JUMP JUMPDEST PUSH2 0x718 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F2 SWAP2 SWAP1 PUSH2 0x52CB JUMP JUMPDEST PUSH2 0x1E5 PUSH2 0x26F CALLDATASIZE PUSH1 0x4 PUSH2 0x4B14 JUMP JUMPDEST PUSH2 0x74B JUMP JUMPDEST PUSH2 0x1DB PUSH2 0x282 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A2A JUMP JUMPDEST PUSH2 0xA77 JUMP JUMPDEST PUSH2 0x28F PUSH2 0xC3C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F2 SWAP2 SWAP1 PUSH2 0x5111 JUMP JUMPDEST PUSH2 0x1E5 PUSH2 0x2AA CALLDATASIZE PUSH1 0x4 PUSH2 0x4A82 JUMP JUMPDEST PUSH2 0xC45 JUMP JUMPDEST PUSH2 0x1DB PUSH2 0x2BD CALLDATASIZE PUSH1 0x4 PUSH2 0x4805 JUMP JUMPDEST PUSH2 0xF6F JUMP JUMPDEST PUSH2 0x1E5 PUSH2 0x1051 JUMP JUMPDEST PUSH2 0x1DB PUSH2 0x2D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A57 JUMP JUMPDEST PUSH2 0x1056 JUMP JUMPDEST PUSH2 0x1DB PUSH2 0x2EB CALLDATASIZE PUSH1 0x4 PUSH2 0x4B5D JUMP JUMPDEST PUSH2 0x13C3 JUMP JUMPDEST PUSH2 0x1DB PUSH2 0x2FE CALLDATASIZE PUSH1 0x4 PUSH2 0x4932 JUMP JUMPDEST PUSH2 0x1443 JUMP JUMPDEST PUSH2 0x1DB PUSH2 0x311 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A57 JUMP JUMPDEST PUSH2 0x1B17 JUMP JUMPDEST PUSH2 0x1DB PUSH2 0x324 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B9C JUMP JUMPDEST PUSH2 0x1B3B JUMP JUMPDEST PUSH2 0x33C PUSH2 0x337 CALLDATASIZE PUSH1 0x4 PUSH2 0x4795 JUMP JUMPDEST PUSH2 0x1BB6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F2 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x550F JUMP JUMPDEST PUSH2 0x254 PUSH2 0x35C CALLDATASIZE PUSH1 0x4 PUSH2 0x4795 JUMP JUMPDEST PUSH2 0x1CB2 JUMP JUMPDEST PUSH2 0x1DB PUSH2 0x36F CALLDATASIZE PUSH1 0x4 PUSH2 0x4795 JUMP JUMPDEST PUSH2 0x1CE5 JUMP JUMPDEST PUSH2 0x1DB PUSH2 0x382 CALLDATASIZE PUSH1 0x4 PUSH2 0x47CD JUMP JUMPDEST PUSH2 0x1D8D JUMP JUMPDEST PUSH2 0x1E5 PUSH2 0x395 CALLDATASIZE PUSH1 0x4 PUSH2 0x4795 JUMP JUMPDEST PUSH2 0x2003 JUMP JUMPDEST PUSH2 0x3A2 PUSH2 0x2024 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F2 SWAP2 SWAP1 PUSH2 0x50C4 JUMP JUMPDEST PUSH2 0x1DB PUSH2 0x3BD CALLDATASIZE PUSH1 0x4 PUSH2 0x48CE JUMP JUMPDEST PUSH2 0x20C9 JUMP JUMPDEST PUSH2 0x1E5 PUSH2 0x2312 JUMP JUMPDEST PUSH2 0x1DB PUSH2 0x3D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x4AC3 JUMP JUMPDEST PUSH2 0x2318 JUMP JUMPDEST PUSH2 0x1E5 PUSH2 0x2545 JUMP JUMPDEST PUSH2 0x3ED PUSH2 0x254B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F2 SWAP2 SWAP1 PUSH2 0x4DE3 JUMP JUMPDEST PUSH2 0x402 PUSH2 0x255A JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x712D9171 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x712D9171 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x447 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x45B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x47F SWAP2 SWAP1 PUSH2 0x47B1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x4A8 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4E6B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH3 0xA718A9 PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x4DC SWAP2 SWAP1 PUSH2 0x4DC7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x517 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x51C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3233 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x564 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH1 0x60 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x57D SWAP2 SWAP1 PUSH2 0x4BEC JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x596 SWAP2 SWAP1 PUSH2 0x4DC7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH2 0x5C3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3B SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x5DE PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x7 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x617 PUSH2 0x44E3 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH2 0x1A0 DUP2 ADD DUP5 MSTORE DUP2 SLOAD PUSH2 0x180 DUP3 ADD SWAP1 DUP2 MSTORE DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND SWAP5 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DUP2 SWAP1 DIV DUP5 AND SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x2 DUP3 ADD SLOAD DUP1 DUP5 AND PUSH1 0x60 DUP4 ADD MSTORE DUP5 SWAP1 DIV DUP4 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x3 DUP3 ADD SLOAD SWAP3 DUP4 AND PUSH1 0xA0 DUP3 ADD MSTORE SWAP3 SWAP1 SWAP2 DIV PUSH5 0xFFFFFFFFFF AND PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0x4 DUP2 ADD SLOAD DUP4 AND PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0x5 DUP2 ADD SLOAD DUP4 AND PUSH2 0x100 DUP4 ADD MSTORE PUSH1 0x6 DUP2 ADD SLOAD DUP4 AND PUSH2 0x120 DUP4 ADD MSTORE PUSH1 0x7 ADD SLOAD SWAP2 DUP3 AND PUSH2 0x140 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND PUSH2 0x160 DUP3 ADD MSTORE JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x712 SWAP1 PUSH2 0x2657 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x720 PUSH2 0x454E JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD SWAP2 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 SLOAD DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x755 PUSH2 0x255A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 DUP1 PUSH2 0x779 DUP6 DUP5 PUSH2 0x26D4 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP7 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x78B JUMPI INVALID JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFA0C2149 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0x0 SWAP1 PUSH4 0xFA0C2149 SWAP1 PUSH2 0x7CF SWAP1 DUP8 SWAP1 DUP13 SWAP1 DUP7 SWAP1 DUP13 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x547B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x7FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 SWAP2 POP PUSH2 0x80B SWAP1 POP JUMP JUMPDEST DUP3 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x817 JUMPI INVALID JUMPDEST EQ PUSH2 0x822 JUMPI DUP3 PUSH2 0x824 JUMP JUMPDEST DUP4 JUMPDEST SWAP1 POP DUP1 DUP10 LT ISZERO PUSH2 0x831 JUMPI POP DUP8 JUMPDEST PUSH2 0x83A DUP6 PUSH2 0x27E9 JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x848 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x8B9 JUMPI PUSH1 0x5 DUP6 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x2770A7EB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x9DC29FAC SWAP1 PUSH2 0x882 SWAP1 DUP11 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E28 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x937 JUMP JUMPDEST PUSH1 0x6 DUP6 ADD SLOAD PUSH1 0x1 DUP7 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x7A94C565 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xF5298ACA SWAP2 PUSH2 0x904 SWAP2 DUP12 SWAP2 DUP7 SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH1 0x4 ADD PUSH2 0x4E41 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x91E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x932 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x953 DUP7 DUP13 DUP4 DUP6 PUSH1 0x0 PUSH2 0x28B6 JUMP JUMPDEST PUSH2 0x967 DUP3 PUSH2 0x961 DUP8 DUP8 PUSH2 0x2C1E JUMP JUMPDEST SWAP1 PUSH2 0x2C43 JUMP JUMPDEST PUSH2 0x99F JUMPI PUSH1 0x7 DUP7 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x99F SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH2 0x2C85 JUMP JUMPDEST PUSH2 0x9B4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND CALLER DUP4 DUP6 PUSH2 0x2CF5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x88DD91A1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x88DD91A1 SWAP1 PUSH2 0x9E2 SWAP1 CALLER SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E28 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA10 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4CDDE6E09BB755C9A5589EBAEC640BBFEDFF1362D4B255EBF8339782B9942FAA DUP6 PUSH1 0x40 MLOAD PUSH2 0xA61 SWAP2 SWAP1 PUSH2 0x54BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xA7F PUSH2 0x255A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 CALLER DUP6 MSTORE PUSH1 0x36 DUP4 MSTORE SWAP4 DUP2 SWAP1 KECCAK256 PUSH1 0x38 SLOAD PUSH1 0x34 SLOAD DUP4 MLOAD PUSH4 0x1F94A275 PUSH1 0xE3 SHL DUP2 MSTORE SWAP4 MLOAD SWAP7 SWAP8 PUSH20 0x0 SWAP8 PUSH4 0x5FA297E5 SWAP8 DUP11 SWAP8 DUP14 SWAP8 DUP14 SWAP8 SWAP3 SWAP7 SWAP3 SWAP6 PUSH1 0x37 SWAP6 SWAP4 SWAP5 SWAP4 AND SWAP3 PUSH4 0xFCA513A8 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB21 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB45 SWAP2 SWAP1 PUSH2 0x47B1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB68 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x53F6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xB94 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x7 DUP2 ADD SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xBC0 SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND DUP5 PUSH2 0x2D53 JUMP JUMPDEST DUP2 ISZERO PUSH2 0xC00 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH31 0x58A56EA94653CDF4F152D227ACE22D4C00AD99E2A43F58CB7D9E3FEB295F2 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH2 0xC37 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH32 0x44C58D81365B66DD4B1A7F36C25AA97B8C71C361EE4937ADC1A00000227DB5DD SWAP1 PUSH1 0x0 SWAP1 LOG3 JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x39 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC4F PUSH2 0x255A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x4 DUP1 DUP3 ADD SLOAD SWAP3 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP5 SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP2 DUP4 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH2 0xC97 SWAP2 CALLER SWAP2 ADD PUSH2 0x4DE3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCC3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCE7 SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST SWAP1 POP DUP6 PUSH1 0x0 NOT DUP2 EQ ISZERO PUSH2 0xCF7 JUMPI POP DUP1 JUMPDEST PUSH20 0x0 PUSH4 0xD09DB04A DUP10 DUP4 DUP6 PUSH1 0x35 PUSH1 0x36 PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x37 PUSH1 0x38 SLOAD PUSH1 0x34 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFCA513A8 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDA2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDC6 SWAP2 SWAP1 PUSH2 0x47B1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDE9 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4F94 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xE15 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xE22 DUP5 PUSH2 0x27E9 JUMP JUMPDEST PUSH2 0xE30 DUP5 DUP10 DUP6 PUSH1 0x0 DUP6 PUSH2 0x28B6 JUMP JUMPDEST DUP2 DUP2 EQ ISZERO PUSH2 0xE9A JUMPI PUSH1 0x7 DUP5 ADD SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0xE63 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND SWAP1 PUSH2 0x2D53 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP1 PUSH32 0x44C58D81365B66DD4B1A7F36C25AA97B8C71C361EE4937ADC1A00000227DB5DD SWAP1 PUSH1 0x0 SWAP1 LOG3 JUMPDEST PUSH1 0x1 DUP5 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x6B810685 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xD7020D0A SWAP2 PUSH2 0xEDB SWAP2 CALLER SWAP2 DUP12 SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0x4DF7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF09 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x3115D1449A7B732C986CBA18244E897A450F61E1BB8D589CD2E69E6C8924F9F7 DUP5 PUSH1 0x40 MLOAD PUSH2 0xF5A SWAP2 SWAP1 PUSH2 0x54BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xF77 PUSH2 0x2598 JUMP JUMPDEST PUSH2 0xF80 DUP6 PUSH2 0x2DC9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6E7 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xFB9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP1 MLOAD PUSH4 0xACCE25F PUSH1 0xE2 SHL DUP2 MSTORE PUSH20 0x0 SWAP2 PUSH4 0x2B33897C SWAP2 PUSH2 0x1011 SWAP2 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x53C8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1029 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x103D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x104A DUP6 PUSH2 0x2E02 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 JUMP JUMPDEST PUSH2 0x105E PUSH2 0x255A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 DUP1 PUSH2 0x1082 CALLER DUP5 PUSH2 0x26D4 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1094 JUMPI INVALID JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP1 MLOAD PUSH4 0xA8695B1D PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP3 POP PUSH20 0x0 SWAP2 PUSH4 0xA8695B1D SWAP2 PUSH2 0x10E5 SWAP2 DUP9 SWAP2 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x5438 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1111 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x111E DUP5 PUSH2 0x27E9 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x112C JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x123C JUMPI PUSH1 0x5 DUP5 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x2770A7EB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x9DC29FAC SWAP1 PUSH2 0x1166 SWAP1 CALLER SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E28 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1180 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1194 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x6 DUP5 ADD SLOAD PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xB3F1C93D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB3F1C93D SWAP2 PUSH2 0x11E4 SWAP2 CALLER SWAP2 DUP3 SWAP2 DUP10 SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH1 0x4 ADD PUSH2 0x4DF7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1212 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1236 SWAP2 SWAP1 PUSH2 0x4BB8 JUMP JUMPDEST POP PUSH2 0x1352 JUMP JUMPDEST PUSH1 0x6 DUP5 ADD SLOAD PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x7A94C565 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xF5298ACA SWAP2 PUSH2 0x1287 SWAP2 CALLER SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH1 0x4 ADD PUSH2 0x4E41 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x12B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x5 DUP5 ADD SLOAD PUSH1 0x3 DUP6 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xB3F1C93D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB3F1C93D SWAP2 PUSH2 0x12FE SWAP2 CALLER SWAP2 DUP3 SWAP2 DUP9 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH1 0x4 ADD PUSH2 0x4DF7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1318 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x132C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1350 SWAP2 SWAP1 PUSH2 0x4BB8 JUMP JUMPDEST POP JUMPDEST PUSH1 0x4 DUP5 ADD SLOAD PUSH2 0x1370 SWAP1 DUP6 SWAP1 DUP9 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 PUSH2 0x28B6 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xEA368A40E9570069BB8E6511D668293AD2E1F03B0D982431FD223DE9F3B70CA6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x13B3 SWAP2 SWAP1 PUSH2 0x54BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x13CB PUSH2 0x255A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH2 0x100 DUP2 ADD DUP5 MSTORE SWAP4 DUP5 MSTORE CALLER SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 DUP5 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP3 ADD DUP8 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x4 DUP2 ADD SLOAD SWAP1 SWAP3 AND PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0xFFFF DUP5 AND PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x143B SWAP1 PUSH2 0x2F0B JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x144B PUSH2 0x255A JUMP JUMPDEST PUSH2 0x1453 PUSH2 0x4561 JUMP JUMPDEST PUSH2 0x14C0 DUP12 DUP12 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP16 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP15 DUP3 MSTORE SWAP1 SWAP4 POP DUP15 SWAP3 POP DUP14 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3404 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP11 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x14D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1503 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP12 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x151F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1549 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 AND DUP5 MSTORE PUSH1 0x0 PUSH1 0x40 DUP6 ADD MSTORE SWAP1 POP JUMPDEST PUSH1 0x40 DUP4 ADD MLOAD DUP13 GT ISZERO PUSH2 0x170D JUMPI PUSH1 0x35 PUSH1 0x0 DUP15 DUP15 DUP7 PUSH1 0x40 ADD MLOAD DUP2 DUP2 LT PUSH2 0x1580 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1595 SWAP2 SWAP1 PUSH2 0x4795 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP5 PUSH1 0x40 ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x15DC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH2 0x1633 PUSH2 0x2710 PUSH2 0x162D PUSH1 0x3B SLOAD DUP15 DUP15 DUP9 PUSH1 0x40 ADD MLOAD DUP2 DUP2 LT PUSH2 0x1618 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x3442 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x347C JUMP JUMPDEST DUP2 DUP5 PUSH1 0x40 ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1643 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP2 DUP4 PUSH1 0x40 ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x165F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4EFECAA5 DUP16 DUP14 DUP14 DUP8 PUSH1 0x40 ADD MLOAD DUP2 DUP2 LT PUSH2 0x1686 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16AA SWAP3 SWAP2 SWAP1 PUSH2 0x4E28 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16D8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x16FC SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE PUSH2 0x1560 JUMP JUMPDEST DUP3 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x920F5C84 DUP15 DUP15 DUP15 DUP15 DUP7 CALLER DUP14 DUP14 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x174B SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5000 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1765 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1779 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x179D SWAP2 SWAP1 PUSH2 0x4BB8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B1B PUSH1 0xF1 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x17D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP5 ADD MSTORE JUMPDEST PUSH1 0x40 DUP4 ADD MLOAD DUP13 GT ISZERO PUSH2 0x1B07 JUMPI DUP13 DUP13 DUP5 PUSH1 0x40 ADD MLOAD DUP2 DUP2 LT PUSH2 0x17FB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1810 SWAP2 SWAP1 PUSH2 0x4795 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD DUP12 SWAP1 DUP12 SWAP1 DUP2 DUP2 LT PUSH2 0x1830 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP4 PUSH1 0xA0 ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP4 PUSH1 0x40 ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1850 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH1 0xC0 ADD DUP2 DUP2 MSTORE POP POP DUP2 DUP4 PUSH1 0x40 ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x1871 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD MLOAD PUSH1 0xA0 DUP5 ADD MLOAD PUSH2 0x189D SWAP2 PUSH2 0x2C1E JUMP JUMPDEST PUSH1 0xE0 DUP5 ADD MSTORE PUSH1 0x0 DUP10 DUP10 DUP6 PUSH1 0x40 ADD MLOAD DUP2 DUP2 LT PUSH2 0x18B4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x18C6 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x18D1 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1A03 JUMPI PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x18FC SWAP1 PUSH2 0x27E9 JUMP JUMPDEST PUSH2 0x199C DUP4 PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x193C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1950 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1974 SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST PUSH1 0xC0 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 PUSH2 0x34BE JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x80 DUP5 ADD MLOAD PUSH1 0xE0 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x19D2 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH2 0x28B6 JUMP JUMPDEST PUSH2 0x19FE DUP15 DUP5 PUSH1 0x80 ADD MLOAD DUP6 PUSH1 0xE0 ADD MLOAD DUP7 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2CF5 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x1A92 JUMP JUMPDEST PUSH2 0x1A92 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE DUP1 DUP6 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0xA0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP12 DUP8 PUSH1 0x40 ADD MLOAD DUP2 DUP2 LT PUSH2 0x1A5D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP PUSH2 0x2F0B JUMP JUMPDEST DUP3 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP16 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x631042C832B07452973831137F2D73E395028B44B250DEDC5ABB0EE766E168AC DUP7 PUSH1 0xA0 ADD MLOAD DUP8 PUSH1 0xC0 ADD MLOAD DUP10 PUSH1 0x40 MLOAD PUSH2 0x1AEF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x54C6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x40 DUP4 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE PUSH2 0x17DF JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1B1F PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH2 0x1B43 PUSH2 0x2598 JUMP JUMPDEST PUSH1 0x39 DUP1 SLOAD PUSH1 0xFF NOT AND DUP3 ISZERO ISZERO OR SWAP1 DUP2 SWAP1 SSTORE PUSH1 0xFF AND ISZERO PUSH2 0x1B89 JUMPI PUSH1 0x40 MLOAD PUSH32 0x9E87FAC88FF661F02D44F95383C817FECE4BCE600A3DAB7A54406878B965E752 SWAP1 PUSH1 0x0 SWAP1 LOG1 PUSH2 0x1BB3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA45F47FDEA8A1EFDD9029A5691C7F759C32B7C698632B563573E155625D16933 SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1C8F DUP8 PUSH1 0x35 PUSH1 0x36 PUSH1 0x0 DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE POP POP PUSH1 0x37 PUSH1 0x38 SLOAD PUSH1 0x34 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFCA513A8 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C66 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C8A SWAP2 SWAP1 PUSH2 0x47B1 JUMP JUMPDEST PUSH2 0x357B JUMP JUMPDEST SWAP4 SWAP10 POP SWAP2 SWAP8 POP SWAP1 SWAP5 POP SWAP3 POP SWAP1 POP PUSH2 0x1CA7 DUP7 DUP7 DUP5 PUSH2 0x3A3C JUMP JUMPDEST SWAP4 POP SWAP2 SWAP4 SWAP6 POP SWAP2 SWAP4 SWAP6 JUMP JUMPDEST PUSH2 0x1CBA PUSH2 0x454E JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD SWAP2 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 SLOAD DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CEF PUSH2 0x3A70 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 PUSH2 0x1D06 JUMPI POP PUSH2 0x1D06 PUSH2 0x3A75 JUMP JUMPDEST DUP1 PUSH2 0x1D12 JUMPI POP PUSH1 0x0 SLOAD DUP2 GT JUMPDEST PUSH2 0x1D2E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP1 PUSH2 0x51FC JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x1D4D JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 OR SWAP1 SSTORE PUSH1 0x0 DUP3 SWAP1 SSTORE JUMPDEST PUSH1 0x34 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE PUSH2 0x9C4 PUSH1 0x3A SSTORE PUSH1 0x9 PUSH1 0x3B SSTORE PUSH1 0x80 PUSH1 0x3C SSTORE DUP1 ISZERO PUSH2 0xC37 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH2 0x1D95 PUSH2 0x255A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x5 DUP2 ADD SLOAD PUSH1 0x6 DUP3 ADD SLOAD PUSH1 0x4 DUP1 DUP5 ADD SLOAD SWAP5 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP7 SWAP3 DUP4 AND SWAP6 SWAP2 DUP4 AND SWAP5 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP2 DUP6 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH2 0x1DEF SWAP2 DUP11 SWAP2 ADD PUSH2 0x4DE3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E1B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1E3F SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x548CAD09 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0x0 SWAP1 PUSH4 0x548CAD09 SWAP1 PUSH2 0x1E81 SWAP1 DUP9 SWAP1 DUP12 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x53C8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1EAD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1EBA DUP6 PUSH2 0x27E9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2770A7EB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x9DC29FAC SWAP1 PUSH2 0x1EE8 SWAP1 DUP10 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E28 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F16 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x3 DUP7 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xB3F1C93D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP3 POP PUSH4 0xB3F1C93D SWAP2 PUSH2 0x1F59 SWAP2 DUP11 SWAP2 DUP3 SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH1 0x4 ADD PUSH2 0x4DF7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F87 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1FAB SWAP2 SWAP1 PUSH2 0x4BB8 JUMP JUMPDEST POP PUSH2 0x1FBA DUP6 DUP9 DUP5 PUSH1 0x0 DUP1 PUSH2 0x28B6 JUMP JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x9F439AE0C81E41A04D3FDFE07AED54E6A179FB0DB15BE7702EB66FA8EF6F5300 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x712 SWAP1 PUSH2 0x3A7B JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x38 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2040 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x206A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x38 SLOAD DUP2 LT ISZERO PUSH2 0x20C3 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x37 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP4 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x20A3 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x2070 JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x20D1 PUSH2 0x255A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x4 ADD SLOAD DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x2 DUP4 MSTORE PUSH2 0x3633 PUSH1 0xF0 SHL SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP2 AND CALLER EQ PUSH2 0x212D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH2 0x21E9 DUP6 PUSH1 0x35 PUSH1 0x36 PUSH1 0x0 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x37 PUSH1 0x38 SLOAD PUSH1 0x34 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFCA513A8 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x21AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x21C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x21E4 SWAP2 SWAP1 PUSH2 0x47B1 JUMP JUMPDEST PUSH2 0x3ADA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x7 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP6 DUP2 AND SWAP1 DUP8 AND EQ PUSH2 0x2309 JUMPI PUSH2 0x2226 DUP4 DUP6 PUSH2 0x2C43 JUMP JUMPDEST PUSH2 0x2292 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x2250 SWAP1 DUP3 SWAP1 DUP5 SWAP1 PUSH2 0x2D53 JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x44C58D81365B66DD4B1A7F36C25AA97B8C71C361EE4937ADC1A00000227DB5DD PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMPDEST DUP2 ISZERO DUP1 ISZERO PUSH2 0x229F JUMPI POP DUP4 ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2309 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x22C8 DUP2 DUP4 PUSH1 0x1 PUSH2 0x2D53 JUMP JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH31 0x58A56EA94653CDF4F152D227ACE22D4C00AD99E2A43F58CB7D9E3FEB295F2 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3A SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x2320 PUSH2 0x255A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP1 MLOAD PUSH4 0xECA322B PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xECA322B SWAP1 PUSH2 0x2372 SWAP1 DUP5 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x546D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x238A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x239E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x4 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x23B9 DUP3 PUSH2 0x27E9 JUMP JUMPDEST PUSH2 0x23C7 DUP3 DUP8 DUP4 DUP9 PUSH1 0x0 PUSH2 0x28B6 JUMP JUMPDEST PUSH2 0x23DC PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND CALLER DUP4 DUP9 PUSH2 0x2CF5 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0xAB714FB PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x156E29F6 SWAP2 PUSH2 0x241E SWAP2 DUP10 SWAP2 DUP12 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0x4E41 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x244C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2470 SWAP2 SWAP1 PUSH2 0x4BB8 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x24EA JUMPI PUSH1 0x7 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x24AA SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x1 PUSH2 0x2D53 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH31 0x58A56EA94653CDF4F152D227ACE22D4C00AD99E2A43F58CB7D9E3FEB295F2 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST DUP4 PUSH2 0xFFFF AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDE6857219544BB5B7746F48ED30BE6386FEFC61B2F864CACF559893BF50FD951 CALLER DUP11 PUSH1 0x40 MLOAD PUSH2 0x2534 SWAP3 SWAP2 SWAP1 PUSH2 0x4E28 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3C SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x39 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0xD8D PUSH1 0xF2 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0x1BB3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x85C858B1 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x85C858B1 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x25DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x25F0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2614 SWAP2 SWAP1 PUSH2 0x47B1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3237 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1BB3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x0 SWAP1 PUSH5 0xFFFFFFFFFF PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 TIMESTAMP AND DUP2 EQ ISZERO PUSH2 0x2695 JUMPI POP POP PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x6EC JUMP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x2 DUP5 ADD SLOAD PUSH1 0x0 SWAP2 PUSH2 0x26CC SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL SWAP3 DUP4 SWAP1 DIV DUP2 AND SWAP3 PUSH2 0x26C6 SWAP3 DIV AND DUP6 PUSH2 0x3B50 JUMP JUMPDEST SWAP1 PUSH2 0x3B5D JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x5 DUP2 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x270B SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x4DE3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2723 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2737 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x275B SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST PUSH1 0x6 DUP5 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x278D SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x4DE3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x27B9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x27DD SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x6 DUP2 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xB1BF962D PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xB1BF962D SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2830 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2844 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2868 SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND SWAP4 SWAP3 AND SWAP2 DIV PUSH5 0xFFFFFFFFFF AND PUSH1 0x0 DUP1 PUSH2 0x28A4 DUP8 DUP8 DUP7 DUP9 DUP8 PUSH2 0x3BF0 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2309 DUP8 DUP8 DUP8 DUP6 DUP6 DUP9 PUSH2 0x3D4D JUMP JUMPDEST PUSH2 0x28BE PUSH2 0x45AD JUMP JUMPDEST PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 DUP3 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x7B98F4DF PUSH1 0xE1 SHL DUP2 MSTORE DUP2 MLOAD PUSH4 0xF731E9BE SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2902 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2916 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x293A SWAP2 SWAP1 PUSH2 0x4C93 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP8 ADD SLOAD PUSH1 0x6 DUP9 ADD SLOAD DUP3 MLOAD PUSH4 0xB1BF962D PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 MLOAD PUSH2 0x29DF SWAP4 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB1BF962D SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x26C6 SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0x29DB497D SWAP3 DUP10 SWAP3 DUP10 SWAP3 DUP10 SWAP3 DUP10 SWAP3 SWAP2 SWAP1 PUSH2 0x2A1A DUP16 PUSH2 0x3F10 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A3D SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4EEC JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A69 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A8D SWAP2 SWAP1 PUSH2 0x4CB6 JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3533 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB LT ISZERO PUSH2 0x2ADF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3535 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB LT ISZERO PUSH2 0x2B26 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0xD4D PUSH1 0xF2 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB LT ISZERO PUSH2 0x2B6D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x2 DUP8 ADD DUP1 SLOAD PUSH1 0x80 DUP5 ADD MLOAD PUSH1 0x3 DUP11 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP6 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP3 SSTORE PUSH1 0xA0 DUP8 ADD MLOAD SWAP4 AND DUP2 DUP7 AND OR DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL DUP5 DUP4 AND DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP5 SSTORE PUSH1 0x1 DUP12 ADD SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP7 PUSH32 0x804C9B842B2748A22BB64B345453A3DE7CA54A6CA45CE00D415894979E22897A SWAP7 PUSH2 0x2C0E SWAP7 SWAP2 SWAP6 SWAP5 SWAP2 SWAP4 DUP1 DUP4 AND SWAP4 SWAP2 SWAP1 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x54E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xF68 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP1 PUSH2 0x514F JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF68 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x3F1B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3737 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x80 DUP4 LT PUSH2 0x2CBF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP DUP2 PUSH1 0x2 MUL DUP2 PUSH2 0x2CD0 JUMPI PUSH1 0x0 PUSH2 0x2CD3 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 SHL DUP3 PUSH1 0x2 MUL PUSH1 0x1 SWAP1 SHL NOT DUP5 PUSH1 0x0 ADD SLOAD AND OR DUP4 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH2 0x2D4D DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2D16 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4E9F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x3F47 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3737 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x80 DUP4 LT PUSH2 0x2D8D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP DUP2 PUSH1 0x2 MUL PUSH1 0x1 ADD DUP2 PUSH2 0x2DA1 JUMPI PUSH1 0x0 PUSH2 0x2DA4 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 SHL DUP3 PUSH1 0x2 MUL PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SHL NOT DUP5 PUSH1 0x0 ADD SLOAD AND OR DUP4 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x26CC JUMPI POP POP ISZERO ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x38 SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3635 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 DUP3 LT PUSH2 0x2E41 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x7 ADD SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO DUP1 PUSH2 0x2EAA JUMPI POP PUSH1 0x0 DUP1 MSTORE PUSH1 0x37 PUSH1 0x20 MSTORE PUSH32 0xA0A618D80EDA9243166BE83CB7421D97E9DAB6DDDDD3C70AC7A6B4440256E8E7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 AND EQ JUMPDEST SWAP1 POP DUP1 PUSH2 0xC37 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x7 ADD DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH1 0xFF DUP9 AND MUL OR SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0x37 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x1 ADD PUSH1 0x38 SSTORE JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 DUP7 ADD MLOAD DUP6 AND DUP5 MSTORE PUSH1 0x36 DUP4 MSTORE DUP2 DUP5 KECCAK256 PUSH1 0x34 SLOAD DUP4 MLOAD PUSH4 0x1F94A275 PUSH1 0xE3 SHL DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP7 SWAP2 SWAP6 SWAP5 SWAP2 AND SWAP3 PUSH4 0xFCA513A8 SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F86 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2FAA SWAP2 SWAP1 PUSH2 0x47B1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x304B PUSH2 0x2FBA DUP6 PUSH2 0x402C JUMP JUMPDEST PUSH1 0xA EXP PUSH2 0x162D DUP8 PUSH1 0x60 ADD MLOAD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB3596F07 DUP11 PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FF5 SWAP2 SWAP1 PUSH2 0x4DE3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x300D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3021 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3045 SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST SWAP1 PUSH2 0x3442 JUMP JUMPDEST SWAP1 POP PUSH20 0x0 PUSH4 0x721A92F9 DUP7 PUSH1 0x0 ADD MLOAD DUP7 DUP9 PUSH1 0x40 ADD MLOAD DUP10 PUSH1 0x60 ADD MLOAD DUP7 DUP12 PUSH1 0x80 ADD MLOAD PUSH1 0x3A SLOAD PUSH1 0x35 DUP13 PUSH1 0x37 PUSH1 0x38 SLOAD DUP15 PUSH1 0x40 MLOAD DUP14 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x30B0 SWAP13 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4F30 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x30C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x30DC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x30E9 DUP5 PUSH2 0x27E9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 DUP8 PUSH1 0x80 ADD MLOAD PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x30FE JUMPI INVALID JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x3109 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x31BE JUMPI PUSH1 0x3 DUP7 ADD SLOAD PUSH1 0x5 DUP8 ADD SLOAD PUSH1 0x20 DUP10 ADD MLOAD PUSH1 0x40 DUP1 DUP12 ADD MLOAD PUSH1 0x60 DUP13 ADD MLOAD SWAP2 MLOAD PUSH4 0xB3F1C93D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP6 AND SWAP7 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP4 PUSH4 0xB3F1C93D SWAP4 PUSH2 0x3165 SWAP4 SWAP3 SWAP1 SWAP2 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x4EC3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x317F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3193 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x31B7 SWAP2 SWAP1 PUSH2 0x4BB8 JUMP JUMPDEST SWAP1 POP PUSH2 0x326D JUMP JUMPDEST PUSH1 0x6 DUP7 ADD SLOAD PUSH1 0x20 DUP9 ADD MLOAD PUSH1 0x40 DUP1 DUP11 ADD MLOAD PUSH1 0x60 DUP12 ADD MLOAD PUSH1 0x1 DUP12 ADD SLOAD SWAP3 MLOAD PUSH4 0xB3F1C93D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP6 AND SWAP5 PUSH4 0xB3F1C93D SWAP5 PUSH2 0x3218 SWAP5 SWAP1 SWAP4 SWAP3 SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH1 0x4 ADD PUSH2 0x4DF7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3246 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x326A SWAP2 SWAP1 PUSH2 0x4BB8 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x328F JUMPI PUSH1 0x7 DUP7 ADD SLOAD PUSH2 0x328F SWAP1 DUP7 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x1 PUSH2 0x2C85 JUMP JUMPDEST PUSH2 0x32BE DUP8 PUSH1 0x0 ADD MLOAD DUP9 PUSH1 0xA0 ADD MLOAD PUSH1 0x0 DUP11 PUSH1 0xE0 ADD MLOAD PUSH2 0x32AE JUMPI PUSH1 0x0 PUSH2 0x32B4 JUMP JUMPDEST DUP11 PUSH1 0x60 ADD MLOAD JUMPDEST DUP11 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x28B6 JUMP JUMPDEST DUP7 PUSH1 0xE0 ADD MLOAD ISZERO PUSH2 0x3356 JUMPI DUP7 PUSH1 0xA0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4EFECAA5 DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x60 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3302 SWAP3 SWAP2 SWAP1 PUSH2 0x4E28 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x331C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3330 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3354 SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST POP JUMPDEST DUP7 PUSH1 0xC0 ADD MLOAD PUSH2 0xFFFF AND DUP8 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC6A898309E823EE50BAC64E45CA8ADBA6690E99E7841C45D754E2A38E9019D9B DUP11 PUSH1 0x20 ADD MLOAD DUP12 PUSH1 0x60 ADD MLOAD DUP13 PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x33B8 JUMPI INVALID JUMPDEST DUP15 PUSH1 0x80 ADD MLOAD PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x33C8 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x33D3 JUMPI INVALID JUMPDEST EQ PUSH2 0x33F2 JUMPI PUSH1 0x2 DUP14 ADD SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x33F4 JUMP JUMPDEST DUP9 JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2534 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4FDA JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3733 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xC37 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3451 JUMPI POP PUSH1 0x0 PUSH2 0x712 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x345E JUMPI INVALID JUMPDEST DIV EQ PUSH2 0xF68 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP1 PUSH2 0x51BB JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF68 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x4036 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34DB PUSH2 0x34CC DUP5 PUSH2 0x406D JUMP JUMPDEST PUSH2 0x34D5 DUP5 PUSH2 0x406D JUMP JUMPDEST SWAP1 PUSH2 0x40BD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x34F1 PUSH2 0x34EA PUSH2 0x4168 JUMP JUMPDEST DUP4 SWAP1 PUSH2 0x2C1E JUMP JUMPDEST PUSH1 0x1 DUP7 ADD SLOAD SWAP1 SWAP2 POP PUSH2 0x350D SWAP1 DUP3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x3B5D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3531 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 GT ISZERO PUSH2 0x3551 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x358B PUSH2 0x45FB JUMP JUMPDEST PUSH2 0x3594 DUP11 PUSH2 0x4178 JUMP JUMPDEST ISZERO PUSH2 0x35B2 JUMPI PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 NOT SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP POP PUSH2 0x3A2E JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 ADD MSTORE JUMPDEST DUP8 DUP2 PUSH1 0xE0 ADD MLOAD LT ISZERO PUSH2 0x398D JUMPI PUSH1 0xE0 DUP2 ADD MLOAD PUSH2 0x35D6 SWAP1 DUP12 SWAP1 PUSH2 0x417D JUMP JUMPDEST PUSH2 0x35DF JUMPI PUSH2 0x397D JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP11 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E0 DUP6 ADD DUP2 SWAP1 MSTORE DUP4 MSTORE SWAP1 DUP14 SWAP1 MSTORE SWAP1 KECCAK256 PUSH2 0x3616 DUP2 PUSH2 0x41CE JUMP JUMPDEST POP PUSH1 0x80 DUP7 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP7 ADD SWAP3 SWAP1 SWAP3 MSTORE POP PUSH1 0xA0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA EXP PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1E0 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xB3596F07 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP2 PUSH4 0xB3596F07 SWAP2 PUSH2 0x3668 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x4DE3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3680 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3694 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x36B8 SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST DUP3 MSTORE PUSH1 0xC0 DUP3 ADD MLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0x36D8 JUMPI POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x36D8 SWAP1 DUP13 SWAP1 PUSH2 0x41F9 JUMP JUMPDEST ISZERO PUSH2 0x37F6 JUMPI DUP1 PUSH1 0x4 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3720 SWAP2 SWAP1 PUSH2 0x4DE3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3738 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x374C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3770 SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD MLOAD DUP4 MLOAD PUSH1 0x0 SWAP3 PUSH2 0x378F SWAP3 SWAP2 PUSH2 0x162D SWAP2 PUSH2 0x3442 JUMP JUMPDEST PUSH2 0x120 DUP5 ADD MLOAD SWAP1 SWAP2 POP PUSH2 0x37A2 SWAP1 DUP3 PUSH2 0x2C1E JUMP JUMPDEST PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH2 0x37C8 SWAP1 PUSH2 0x37BC SWAP1 DUP4 SWAP1 PUSH2 0x3442 JUMP JUMPDEST PUSH2 0x160 DUP6 ADD MLOAD SWAP1 PUSH2 0x2C1E JUMP JUMPDEST PUSH2 0x160 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD MLOAD PUSH2 0x37EE SWAP1 PUSH2 0x37E2 SWAP1 DUP4 SWAP1 PUSH2 0x3442 JUMP JUMPDEST PUSH2 0x180 DUP6 ADD MLOAD SWAP1 PUSH2 0x2C1E JUMP JUMPDEST PUSH2 0x180 DUP5 ADD MSTORE POP JUMPDEST PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x3806 SWAP1 DUP13 SWAP1 PUSH2 0x4251 JUMP JUMPDEST ISZERO PUSH2 0x397B JUMPI DUP1 PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x384E SWAP2 SWAP1 PUSH2 0x4DE3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3866 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x387A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x389E SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST DUP3 PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x3948 DUP2 PUSH1 0x6 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP16 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x38ED SWAP2 SWAP1 PUSH2 0x4DE3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3905 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3919 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x393D SWAP2 SWAP1 PUSH2 0x4BD4 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MLOAD SWAP1 PUSH2 0x2C1E JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD MLOAD DUP4 MLOAD PUSH2 0x3974 SWAP3 PUSH2 0x3968 SWAP3 SWAP2 PUSH2 0x162D SWAP2 PUSH2 0x3442 JUMP JUMPDEST PUSH2 0x140 DUP5 ADD MLOAD SWAP1 PUSH2 0x2C1E JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE JUMPDEST POP JUMPDEST PUSH1 0xE0 DUP2 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE PUSH2 0x35BA JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x120 ADD MLOAD GT PUSH2 0x39A1 JUMPI PUSH1 0x0 PUSH2 0x39B6 JUMP JUMPDEST PUSH2 0x120 DUP2 ADD MLOAD PUSH2 0x160 DUP3 ADD MLOAD PUSH2 0x39B6 SWAP2 PUSH2 0x347C JUMP JUMPDEST PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0x120 DUP2 ADD MLOAD PUSH2 0x39CD JUMPI PUSH1 0x0 PUSH2 0x39E2 JUMP JUMPDEST PUSH2 0x120 DUP2 ADD MLOAD PUSH2 0x180 DUP3 ADD MLOAD PUSH2 0x39E2 SWAP2 PUSH2 0x347C JUMP JUMPDEST PUSH2 0x180 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD MLOAD PUSH2 0x140 DUP4 ADD MLOAD PUSH2 0x39FF SWAP3 PUSH2 0x42A2 JUMP JUMPDEST PUSH2 0x100 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD MLOAD PUSH2 0x140 DUP4 ADD MLOAD PUSH2 0x160 DUP5 ADD MLOAD PUSH2 0x180 SWAP1 SWAP5 ADD MLOAD SWAP2 SWAP9 POP SWAP7 POP SWAP2 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3A49 DUP6 DUP5 PUSH2 0x42C6 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x3A5D JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xF68 JUMP JUMPDEST PUSH2 0x3A67 DUP2 DUP6 PUSH2 0x2C43 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SWAP1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x0 SWAP1 PUSH5 0xFFFFFFFFFF PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 TIMESTAMP AND DUP2 EQ ISZERO PUSH2 0x3AB2 JUMPI POP POP PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x6EC JUMP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x2 DUP5 ADD SLOAD PUSH1 0x0 SWAP2 PUSH2 0x26CC SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND SWAP2 PUSH2 0x26C6 SWAP2 AND DUP6 PUSH2 0x4335 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE DUP5 SLOAD DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x3AFC SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP8 DUP8 DUP8 PUSH2 0x357B JUMP JUMPDEST SWAP5 POP POP POP POP POP PUSH8 0xDE0B6B3A7640000 DUP2 LT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1B PUSH1 0xF9 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x3B46 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF68 DUP4 DUP4 TIMESTAMP PUSH2 0x4373 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x3B6A JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x3B77 JUMPI POP PUSH1 0x0 PUSH2 0x712 JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x3B8D JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x3BCA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH12 0x33B2E3C9FD0803CE8000000 PUSH1 0x2 DUP2 JUMPDEST DIV DUP4 DUP6 MUL ADD DUP2 PUSH2 0x3BE8 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP6 ADD SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP6 DUP6 DUP3 ISZERO PUSH2 0x3D1E JUMPI PUSH1 0x0 PUSH2 0x3C17 DUP5 DUP9 PUSH2 0x4335 JUMP JUMPDEST SWAP1 POP PUSH2 0x3C23 DUP2 DUP11 PUSH2 0x3B5D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3531 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 GT ISZERO PUSH2 0x3C67 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH1 0x1 DUP12 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND OR SWAP1 SSTORE DUP10 ISZERO PUSH2 0x3D1C JUMPI PUSH1 0x2 DUP12 ADD SLOAD PUSH1 0x0 SWAP1 PUSH2 0x3CAD SWAP1 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP10 PUSH2 0x3B50 JUMP JUMPDEST SWAP1 POP PUSH2 0x3CB9 DUP2 DUP11 PUSH2 0x3B5D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1A99 PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 GT ISZERO PUSH2 0x3CFD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP POP PUSH1 0x1 DUP12 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP6 AND PUSH1 0x1 PUSH1 0x80 SHL MUL SWAP2 AND OR SWAP1 SSTORE JUMPDEST POP JUMPDEST PUSH1 0x3 SWAP10 SWAP1 SWAP10 ADD DUP1 SLOAD PUSH5 0xFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL TIMESTAMP PUSH5 0xFFFFFFFFFF AND MUL OR SWAP1 SSTORE SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3D55 PUSH2 0x4695 JUMP JUMPDEST PUSH2 0x3D5E DUP8 PUSH2 0x3F10 JUMP JUMPDEST PUSH2 0x120 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x3D70 JUMPI POP PUSH2 0x143B JUMP JUMPDEST DUP7 PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x79774338 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3DC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3DD4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3DF8 SWAP2 SWAP1 PUSH2 0x4CE3 JUMP JUMPDEST PUSH5 0xFFFFFFFFFF AND PUSH2 0x140 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3E1B DUP7 DUP7 PUSH2 0x3B5D JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x3E2A DUP7 DUP5 PUSH2 0x3B5D JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH2 0x140 DUP3 ADD MLOAD PUSH2 0x3E4C SWAP2 SWAP1 PUSH5 0xFFFFFFFFFF DUP6 AND PUSH2 0x4373 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x3E61 SWAP2 PUSH2 0x3B5D JUMP JUMPDEST PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD DUP3 MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH2 0x3E86 SWAP4 SWAP3 PUSH2 0x961 SWAP3 SWAP1 SWAP2 DUP4 SWAP2 PUSH2 0x2C1E JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD MLOAD PUSH2 0x3E9D SWAP2 SWAP1 PUSH2 0x42C6 JUMP JUMPDEST PUSH2 0x100 DUP3 ADD DUP2 SWAP1 MSTORE ISZERO PUSH2 0x2309 JUMPI PUSH1 0x4 DUP1 DUP9 ADD SLOAD PUSH2 0x100 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x7DF5BD3B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0x7DF5BD3B SWAP3 PUSH2 0x3EE2 SWAP3 SWAP2 DUP10 SWAP2 ADD PUSH2 0x546D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3EFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST SLOAD PUSH1 0x40 SHR PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x3F3F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH2 0x3F59 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2DC9 JUMP JUMPDEST PUSH2 0x3F75 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP1 PUSH2 0x5294 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x3F91 SWAP2 SWAP1 PUSH2 0x4DC7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3FCE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3FD3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x3FF5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP1 PUSH2 0x5186 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2D4D JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4010 SWAP2 SWAP1 PUSH2 0x4BB8 JUMP JUMPDEST PUSH2 0x2D4D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP1 PUSH2 0x524A JUMP JUMPDEST SLOAD PUSH1 0x30 SHR PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x4057 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x4063 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0x3B9ACA00 DUP3 DUP2 MUL SWAP1 DUP4 SWAP1 DUP3 DIV EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x40B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x40F7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x4145 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x415F JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 SWAP1 JUMP JUMPDEST MLOAD ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x41BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP POP SWAP1 MLOAD PUSH1 0x3 PUSH1 0x2 SWAP1 SWAP3 MUL SHR AND ISZERO ISZERO SWAP1 JUMP JUMPDEST SLOAD PUSH2 0xFFFF DUP1 DUP3 AND SWAP3 PUSH1 0x10 DUP4 SWAP1 SHR DUP3 AND SWAP3 PUSH1 0x20 DUP2 SWAP1 SHR DUP4 AND SWAP3 PUSH1 0x30 DUP3 SWAP1 SHR PUSH1 0xFF AND SWAP3 PUSH1 0x40 SWAP3 SWAP1 SWAP3 SHR AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x4238 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP POP DUP2 MLOAD PUSH1 0x1 PUSH1 0x2 DUP4 MUL DUP2 ADD SWAP2 SWAP1 SWAP2 SHR AND ISZERO ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x4290 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP POP SWAP1 MLOAD PUSH1 0x1 PUSH1 0x2 SWAP1 SWAP3 MUL SHR AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x42B2 JUMPI POP PUSH1 0x0 NOT PUSH2 0xF68 JUMP JUMPDEST PUSH2 0x26CC DUP4 PUSH2 0x42C0 DUP7 DUP6 PUSH2 0x42C6 JUMP JUMPDEST SWAP1 PUSH2 0x4449 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x42D3 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x42E0 JUMPI POP PUSH1 0x0 PUSH2 0x712 JUMP JUMPDEST DUP2 PUSH2 0x1388 NOT DUP2 PUSH2 0x42EC JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x4329 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH2 0x2710 PUSH1 0x2 DUP2 PUSH2 0x3BDC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4349 TIMESTAMP PUSH5 0xFFFFFFFFFF DUP6 AND PUSH2 0x2C43 JUMP JUMPDEST SWAP1 POP PUSH2 0x26CC PUSH2 0x4356 PUSH2 0x4168 JUMP JUMPDEST PUSH4 0x1E13380 PUSH2 0x4365 DUP8 DUP6 PUSH2 0x3442 JUMP JUMPDEST DUP2 PUSH2 0x436C JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x2C1E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4387 DUP4 PUSH5 0xFFFFFFFFFF DUP7 AND PUSH2 0x2C43 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x439E JUMPI PUSH2 0x4396 PUSH2 0x4168 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xF68 JUMP JUMPDEST PUSH1 0x0 NOT DUP2 ADD PUSH1 0x0 PUSH1 0x2 DUP4 GT PUSH2 0x43B4 JUMPI PUSH1 0x0 PUSH2 0x43B9 JUMP JUMPDEST PUSH1 0x2 DUP4 SUB JUMPDEST SWAP1 POP PUSH4 0x1E13380 DUP8 DIV PUSH1 0x0 PUSH2 0x43CE DUP3 DUP1 PUSH2 0x3B5D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x43DC DUP3 DUP5 PUSH2 0x3B5D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x2 PUSH2 0x43F0 DUP5 PUSH2 0x3045 DUP11 DUP11 PUSH2 0x3442 JUMP JUMPDEST DUP2 PUSH2 0x43F7 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x6 PUSH2 0x440E DUP5 PUSH2 0x3045 DUP10 DUP2 DUP14 DUP14 PUSH2 0x3442 JUMP JUMPDEST DUP2 PUSH2 0x4415 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x4439 DUP2 PUSH2 0x4433 DUP5 DUP2 PUSH2 0x442B DUP11 DUP15 PUSH2 0x3442 JUMP JUMPDEST PUSH2 0x4433 PUSH2 0x4168 JUMP JUMPDEST SWAP1 PUSH2 0x2C1E JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x4483 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH8 0xDE0B6B3A7640000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x44CD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x511C JUMP JUMPDEST POP DUP3 DUP2 PUSH8 0xDE0B6B3A7640000 DUP7 MUL ADD DUP2 PUSH2 0x415F JUMPI INVALID JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x44F7 PUSH2 0x454E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x100 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x140 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x160 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x120 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xE0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x100 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x240 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x160 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH5 0xFFFFFFFFFF AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x712 DUP2 PUSH2 0x556E JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x4712 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4729 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x27E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x4754 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x476B JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x27E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x712 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x47A6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xF68 DUP2 PUSH2 0x556E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x47C2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xF68 DUP2 PUSH2 0x556E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x47DF JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x47EA DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x47FA DUP2 PUSH2 0x556E JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x481C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x4827 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x4837 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x4847 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x4857 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x4867 DUP2 PUSH2 0x556E JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x488C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x4897 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x48A7 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x48B7 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x4867 DUP2 PUSH2 0x5583 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x48E6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x48F1 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x4901 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x4911 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP5 SWAP6 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP6 POP PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP5 PUSH1 0xA0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP13 DUP15 SUB SLT ISZERO PUSH2 0x4952 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x495C DUP14 DUP14 PUSH2 0x46F6 JUMP JUMPDEST SWAP11 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP1 PUSH1 0x20 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x4977 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x4987 DUP15 PUSH1 0x20 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x4701 JUMP JUMPDEST SWAP1 SWAP12 POP SWAP10 POP PUSH1 0x40 DUP14 ADD CALLDATALOAD DUP2 LT ISZERO PUSH2 0x499C JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x49AC DUP15 PUSH1 0x40 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x4701 JUMP JUMPDEST SWAP1 SWAP10 POP SWAP8 POP PUSH1 0x60 DUP14 ADD CALLDATALOAD DUP2 LT ISZERO PUSH2 0x49C1 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x49D1 DUP15 PUSH1 0x60 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x4701 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH2 0x49E3 DUP15 PUSH1 0x80 DUP16 ADD PUSH2 0x46F6 JUMP JUMPDEST SWAP5 POP DUP1 PUSH1 0xA0 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x49F5 JUMPI DUP4 DUP5 REVERT JUMPDEST POP PUSH2 0x4A06 DUP14 PUSH1 0xA0 DUP15 ADD CALLDATALOAD DUP15 ADD PUSH2 0x4743 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x4A18 DUP14 PUSH1 0xC0 DUP15 ADD PUSH2 0x4783 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP1 SWAP4 SWAP7 SWAP10 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4A3C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4A47 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x47FA DUP2 PUSH2 0x5583 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4A69 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4A74 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4A96 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x4AA1 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x4AB8 DUP2 PUSH2 0x556E JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4AD8 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x4AE3 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x4AFA DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP2 POP PUSH2 0x4B09 DUP7 PUSH1 0x60 DUP8 ADD PUSH2 0x4783 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4B29 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x4B34 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x4B52 DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4B74 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x4B7F DUP2 PUSH2 0x556E JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH2 0x4857 DUP8 PUSH1 0x60 DUP9 ADD PUSH2 0x4783 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4BAD JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xF68 DUP2 PUSH2 0x5583 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4BC9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xF68 DUP2 PUSH2 0x5583 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4BE5 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4BFE JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD SWAP2 POP PUSH1 0x20 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4C1C JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4C2F JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x4C3D JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4C5D JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP9 LT ISZERO PUSH2 0x4C74 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x4C85 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x5542 JUMP JUMPDEST DUP1 SWAP5 POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4CA5 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4CCA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4CF8 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 MLOAD SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4B52 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4D6E JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4D52 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE DUP3 DUP3 PUSH1 0x20 DUP7 ADD CALLDATACOPY DUP1 PUSH1 0x20 DUP5 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP6 ADD ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST MLOAD SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0xFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x4DD9 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x5542 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP2 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP2 MSTORE SWAP4 DUP6 AND PUSH1 0x20 DUP6 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 ISZERO ISZERO PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 DUP10 AND DUP2 MSTORE SWAP7 SWAP1 SWAP8 AND PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP13 DUP14 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP12 SWAP1 SWAP12 MSTORE SWAP9 DUP12 AND PUSH1 0x40 DUP12 ADD MSTORE PUSH1 0x60 DUP11 ADD SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x80 DUP10 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xA0 DUP9 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 DUP8 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP7 ADD MSTORE PUSH2 0x100 DUP6 ADD MSTORE PUSH2 0x120 DUP5 ADD MSTORE PUSH2 0x140 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0x180 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 DUP10 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x40 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x60 DUP7 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x80 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD PUSH1 0xA0 DUP4 MSTORE DUP1 PUSH2 0x5015 DUP12 DUP4 PUSH2 0x54BD JUMP JUMPDEST SWAP1 POP DUP12 SWAP2 POP DUP3 JUMPDEST DUP12 DUP2 LT ISZERO PUSH2 0x5048 JUMPI PUSH1 0x20 DUP4 ADD PUSH2 0x503B DUP4 PUSH2 0x5036 DUP4 DUP8 PUSH2 0x46F6 JUMP JUMPDEST PUSH2 0x4D21 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH1 0x1 ADD PUSH2 0x501C JUMP JUMPDEST POP DUP4 DUP2 SUB PUSH1 0x20 DUP6 ADD MSTORE DUP9 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xFB SHL SUB DUP10 GT ISZERO PUSH2 0x5067 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 DUP10 MUL SWAP2 POP DUP2 DUP11 PUSH1 0x20 DUP4 ADD CALLDATACOPY ADD PUSH1 0x20 DUP2 DUP2 ADD DUP4 DUP2 MSTORE DUP5 DUP4 SUB SWAP1 SWAP2 ADD PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x5092 DUP2 DUP10 PUSH2 0x4D3F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x50A2 PUSH1 0x60 DUP5 ADD DUP8 PUSH2 0x4D32 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x50B5 DUP2 DUP6 DUP8 PUSH2 0x4D79 JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5105 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x50E0 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x513B DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x5542 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x436F6E747261637420696E7374616E63652068617320616C7265616479206265 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x195B881A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x40 DUP3 ADD MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP3 ADD SWAP1 POP PUSH2 0x52E9 DUP3 DUP5 MLOAD PUSH2 0x4DA3 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x52FB PUSH1 0x20 DUP5 ADD DUP3 PUSH2 0x4DA8 JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x530E PUSH1 0x40 DUP5 ADD DUP3 PUSH2 0x4DA8 JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x5321 PUSH1 0x60 DUP5 ADD DUP3 PUSH2 0x4DA8 JUMP JUMPDEST POP PUSH1 0x80 DUP4 ADD MLOAD PUSH2 0x5334 PUSH1 0x80 DUP5 ADD DUP3 PUSH2 0x4DA8 JUMP JUMPDEST POP PUSH1 0xA0 DUP4 ADD MLOAD PUSH2 0x5347 PUSH1 0xA0 DUP5 ADD DUP3 PUSH2 0x4DA8 JUMP JUMPDEST POP PUSH1 0xC0 DUP4 ADD MLOAD PUSH2 0x535A PUSH1 0xC0 DUP5 ADD DUP3 PUSH2 0x4DB5 JUMP JUMPDEST POP PUSH1 0xE0 DUP4 ADD MLOAD PUSH2 0x536D PUSH1 0xE0 DUP5 ADD DUP3 PUSH2 0x4D32 JUMP JUMPDEST POP PUSH2 0x100 DUP1 DUP5 ADD MLOAD PUSH2 0x5381 DUP3 DUP6 ADD DUP3 PUSH2 0x4D32 JUMP JUMPDEST POP POP PUSH2 0x120 DUP1 DUP5 ADD MLOAD PUSH2 0x5396 DUP3 DUP6 ADD DUP3 PUSH2 0x4D32 JUMP JUMPDEST POP POP PUSH2 0x140 DUP1 DUP5 ADD MLOAD PUSH2 0x53AB DUP3 DUP6 ADD DUP3 PUSH2 0x4D32 JUMP JUMPDEST POP POP PUSH2 0x160 DUP1 DUP5 ADD MLOAD PUSH2 0x53C0 DUP3 DUP6 ADD DUP3 PUSH2 0x4DC0 JUMP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x20 DUP7 ADD MSTORE SWAP2 DUP4 AND PUSH1 0x40 DUP6 ADD MSTORE DUP3 AND PUSH1 0x60 DUP5 ADD MSTORE AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST SWAP8 DUP9 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND PUSH1 0x20 DUP10 ADD MSTORE SWAP5 ISZERO ISZERO PUSH1 0x40 DUP9 ADD MSTORE PUSH1 0x60 DUP8 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x80 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0xC0 DUP5 ADD MSTORE AND PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP DUP7 DUP3 MSTORE DUP6 PUSH1 0x20 DUP4 ADD MSTORE DUP5 PUSH1 0x40 DUP4 ADD MSTORE DUP4 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x545E DUP4 PUSH2 0x5537 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD PUSH2 0x5492 DUP7 PUSH2 0x5537 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xA0 SWAP1 SWAP2 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0xFFFF AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND PUSH1 0x60 DUP5 ADD MSTORE AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x40 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST DUP1 PUSH1 0x3 DUP2 LT PUSH2 0x6EC JUMPI INVALID JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x555D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5545 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2D4D JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1BB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1BB3 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x25 SDIV PUSH20 0x9DAB21150E478C1736417A175691C65C6A55ED7B 0x49 0x2D 0xE0 0x1E PUSH19 0x70751DB164736F6C634300060C003300000000 ",
              "sourceMap": "2419:30037:68:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16118:839;;;;;;:::i;:::-;;:::i;:::-;;25338:105;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28653:228;;;;;;:::i;:::-;;:::i;21470:153::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;24136:170::-;;;;;;:::i;:::-;;:::i;23401:169::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9666:1576::-;;;;;;:::i;:::-;;:::i;14561:690::-;;;;;;:::i;:::-;;:::i;24369:81::-;;;:::i;:::-;;;;;;;:::i;6014:1124::-;;;;;;:::i;:::-;;:::i;27892:462::-;;;;;;:::i;:::-;;:::i;2633:50::-;;;:::i;11480:1313::-;;;;;;:::i;:::-;;:::i;8334:463::-;;;;;;:::i;:::-;;:::i;18619:2666::-;;;;;;:::i;:::-;;:::i;29149:186::-;;;;;;:::i;:::-;;:::i;29524:180::-;;;;;;:::i;:::-;;:::i;22137:734::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;23054:181::-;;;;;;:::i;:::-;;:::i;3605:227::-;;;;;;:::i;:::-;;:::i;13353:935::-;;;;;;:::i;:::-;;:::i;23758:178::-;;;;;;:::i;:::-;;:::i;24522:283::-;;;:::i;:::-;;;;;;;:::i;26188:1056::-;;;;;;:::i;:::-;;:::i;25154:126::-;;;:::i;4551:791::-;;;;;;:::i;:::-;;:::i;25551:99::-;;;:::i;24907:131::-;;;:::i;:::-;;;;;;;:::i;16118:839::-;2719:16;:14;:16::i;:::-;16332:18:::1;::::0;:52:::1;::::0;;-1:-1:-1;;;16332:52:68;;;;16304:25:::1;::::0;-1:-1:-1;;;;;16332:18:68::1;::::0;:50:::1;::::0;:52:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:18;:52;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16304:80;;16423:12;16437:19;16466:17;-1:-1:-1::0;;;;;16466:30:68::1;16608:15;16635:9;16656:4;16672:11;16695:13;16506:212;;;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;16506:212:68;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;16506:212:68::1;-1:-1:-1::0;;;16506:212:68::1;::::0;;16466:260;::::1;::::0;16506:212;16466:260:::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16422:304;;;;16741:7;16750:33;;;;;;;;;;;;;-1:-1:-1::0;;;16750:33:68::1;;::::0;16733:51:::1;;;;;-1:-1:-1::0;;;16733:51:68::1;;;;;;;;:::i;:::-;;;;;;;;;;16792:18;16812:27;16854:6;16843:37;;;;;;;;;;;;:::i;:::-;16791:89;;;;16895:10;16909:1;16895:15;16936:13;16919:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;16887:65;;;;;-1:-1:-1::0;;;16887:65:68::1;;;;;;;;:::i;:::-;;2741:1;;;;;16118:839:::0;;;;;:::o;25338:105::-;25416:22;;25338:105;:::o;28653:228::-;2796:30;:28;:30::i;:::-;-1:-1:-1;;;;;28810:16:68;;::::1;;::::0;;;:9:::1;:16;::::0;;;;:44:::1;;:66:::0;;-1:-1:-1;;;;;;28810:66:68::1;::::0;;;::::1;;::::0;;28653:228::o;21470:153::-;21557:28;;:::i;:::-;-1:-1:-1;;;;;;21602:16:68;;;;;;;:9;:16;;;;;;;;;21595:23;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21595:23:68;;;;;;;;;;-1:-1:-1;;;21595:23:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21595:23:68;;;;;;;;;-1:-1:-1;21595:23:68;;;;;;;;;-1:-1:-1;21595:23:68;;;;;;;;;-1:-1:-1;21595:23:68;;;-1:-1:-1;;;21595:23:68;;;;;-1:-1:-1;21595:23:68;;;21470:153;;;;:::o;24136:170::-;-1:-1:-1;;;;;24265:16:68;;24241:7;24265:16;;;:9;:16;;;;;:36;;:34;:36::i;:::-;24258:43;24136:170;-1:-1:-1;;24136:170:68:o;23401:169::-;23493:37;;:::i;:::-;-1:-1:-1;;;;;;23547:18:68;;;;;:12;:18;;;;;;;;;23540:25;;;;;;;;;;;;;23401:169::o;9666:1576::-;9811:7;2719:16;:14;:16::i;:::-;-1:-1:-1;;;;;9866:16:68;::::1;9826:37;9866:16:::0;;;:9:::1;:16;::::0;;;;;9826:37;9934:47:::1;9961:10:::0;9866:16;9934:26:::1;:47::i;:::-;9889:92;;;;9988:43;10061:8;10034:36;;;;;;;;10077:144;::::0;-1:-1:-1;;;10077:144:68;;9988:82;;-1:-1:-1;10077:15:68::1;::::0;:29:::1;::::0;:144:::1;::::0;10114:7;;10129:6;;9988:82;;10167:10;;10185;;10203:12;;10077:144:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;10228:21:68::1;::::0;-1:-1:-1;10278:33:68::1;::::0;-1:-1:-1;10258:53:68::1;::::0;-1:-1:-1;10258:53:68;::::1;:16;:53;;;;;;;;;:81;;10327:12;10258:81;;;10314:10;10258:81;10228:111;;10359:13;10350:6;:22;10346:65;;;-1:-1:-1::0;10398:6:68;10346:65:::1;10417:21;:7;:19;:21::i;:::-;10469:33;10449:16;:53;;;;;;;;;10445:320;;;10529:30;::::0;::::1;::::0;10512:80:::1;::::0;-1:-1:-1;;;10512:80:68;;-1:-1:-1;;;;;10529:30:68;;::::1;::::0;10512:53:::1;::::0;:80:::1;::::0;10566:10;;10578:13;;10512:80:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10445:320;;;10632:32;::::0;::::1;::::0;;10723:27;::::1;::::0;10613:145:::1;::::0;-1:-1:-1;;;10613:145:68;;-1:-1:-1;;;;;10632:32:68;;::::1;::::0;10613:57:::1;::::0;:145:::1;::::0;10680:10;;10700:13;;-1:-1:-1;;;10723:27:68;;::::1;-1:-1:-1::0;;;;;10723:27:68::1;::::0;10613:145:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10445:320;10788:21;::::0;::::1;::::0;-1:-1:-1;;;;;10788:21:68::1;10815:60;10788:7:::0;10843:5;10788:21;10858:13;10771:14:::1;10815:27;:60::i;:::-;10886:47;10919:13:::0;10886:28:::1;:10:::0;10901:12;10886:14:::1;:28::i;:::-;:32:::0;::::1;:47::i;:::-;10882:129;;10986:10;::::0;::::1;::::0;-1:-1:-1;;;;;10948:24:68;::::1;10998:5;10948:24:::0;;;:12:::1;:24;::::0;;;;:56:::1;::::0;:24;;-1:-1:-1;;;10986:10:68;;::::1;;;::::0;10948:37:::1;:56::i;:::-;11017:65;-1:-1:-1::0;;;;;11017:30:68;::::1;11048:10;11060:6:::0;11068:13;11017:30:::1;:65::i;:::-;11089:58;::::0;-1:-1:-1;;;11089:58:68;;-1:-1:-1;;;;;11089:31:68;::::1;::::0;::::1;::::0;:58:::1;::::0;11121:10:::1;::::0;11133:13;;11089:58:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11184:10;-1:-1:-1::0;;;;;11159:51:68::1;11172:10;-1:-1:-1::0;;;;;11159:51:68::1;11165:5;-1:-1:-1::0;;;;;11159:51:68::1;;11196:13;11159:51;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;11224:13:68;9666:1576;-1:-1:-1;;;;;;;;;9666:1576:68:o;14561:690::-;2719:16;:14;:16::i;:::-;-1:-1:-1;;;;;14729:16:68;;::::1;14689:37;14729:16:::0;;;:9:::1;:16;::::0;;;;;;;14890:10:::1;14877:24:::0;;:12:::1;:24:::0;;;;;;14930:14:::1;::::0;14952:18:::1;::::0;:35;;-1:-1:-1;;;14952:35:68;;;;14729:16;;14752:15:::1;::::0;:49:::1;::::0;14729:16;;14739:5;;14837:15;;14729:9;;14877:24;;14909:13:::1;::::0;14930:14;;14952:18;::::1;::::0;:33:::1;::::0;:35:::1;::::0;;::::1;::::0;14729:16;;14952:35;;;;;;:18;:35;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14752:241;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;;15046:10:68::1;::::0;::::1;::::0;15013::::1;15000:24;::::0;;;:12:::1;:24;::::0;;;;:74:::1;::::0;-1:-1:-1;;;15046:10:68;::::1;;;15058:15:::0;15000:45:::1;:74::i;:::-;15085:15;15081:166;;;15115:49;::::0;15153:10:::1;::::0;-1:-1:-1;;;;;15115:49:68;::::1;::::0;::::1;::::0;;;::::1;15081:166;;;15190:50;::::0;15229:10:::1;::::0;-1:-1:-1;;;;;15190:50:68;::::1;::::0;::::1;::::0;;;::::1;15081:166;2741:1;14561:690:::0;;:::o;24369:81::-;24438:7;;;;24369:81;:::o;6014:1124::-;6132:7;2719:16;:14;:16::i;:::-;-1:-1:-1;;;;;6187:16:68;;::::1;6147:37;6187:16:::0;;;:9:::1;:16;::::0;;;;;6227:21:::1;::::0;;::::1;::::0;6277:37;;-1:-1:-1;;;6277:37:68;;6187:16;;6227:21;;;::::1;::::0;6147:37;6227:21;;6277:25:::1;::::0;:37:::1;::::0;6303:10:::1;::::0;6277:37:::1;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6255:59:::0;-1:-1:-1;6348:6:68;-1:-1:-1;;6365:27:68;::::1;6361:78;;;-1:-1:-1::0;6421:11:68;6361:78:::1;6445:15;:32;6485:5;6498:16;6522:11;6541:9;6558:12;:24;6571:10;-1:-1:-1::0;;;;;6558:24:68::1;-1:-1:-1::0;;;;;6558:24:68::1;;;;;;;;;;;;6590:13;6611:14;;6633:18;;;;;;;;;-1:-1:-1::0;;;;;6633:18:68::1;-1:-1:-1::0;;;;;6633:33:68::1;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6445:229;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6681:21;:7;:19;:21::i;:::-;6709:63;:7:::0;6737:5;6744:6;6752:1:::1;6755:16:::0;6709:27:::1;:63::i;:::-;6803:11;6783:16;:31;6779:179;;;6870:10;::::0;::::1;::::0;6837::::1;6882:5;6824:24:::0;;;:12:::1;:24;::::0;;;;:64:::1;::::0;:24;;-1:-1:-1;;;6870:10:68;;::::1;;;::::0;6824:45:::1;:64::i;:::-;6901:50;::::0;6940:10:::1;::::0;-1:-1:-1;;;;;6901:50:68;::::1;::::0;::::1;::::0;;;::::1;6779:179;7019:22;::::0;::::1;::::0;6964:78:::1;::::0;-1:-1:-1;;;6964:78:68;;-1:-1:-1;;;;;6964:20:68;::::1;::::0;::::1;::::0;:78:::1;::::0;6985:10:::1;::::0;6997:2;;7001:16;;-1:-1:-1;;;;;7019:22:68;;::::1;::::0;6964:78:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;7082:2;-1:-1:-1::0;;;;;7054:49:68::1;7070:10;-1:-1:-1::0;;;;;7054:49:68::1;7063:5;-1:-1:-1::0;;;;;7054:49:68::1;;7086:16;7054:49;;;;;;:::i;:::-;;;;;;;;7117:16:::0;-1:-1:-1;;;;2741:1:68::1;6014:1124:::0;;;;;:::o;27892:462::-;2796:30;:28;:30::i;:::-;28128:25:::1;28147:5;28128:18;:25::i;:::-;28155:22;;;;;;;;;;;;;-1:-1:-1::0;;;28155:22:68::1;;::::0;28120:58:::1;;;;;-1:-1:-1::0;;;28120:58:68::1;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;28184:16:68;::::1;;::::0;;;:9:::1;:16;::::0;;;;;;:135;;-1:-1:-1;;;28184:135:68;;:21:::1;::::0;::::1;::::0;:135:::1;::::0;:16;28213:13;;28234:17;;28259:19;;28286:27;;28184:135:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28325:24;28343:5;28325:17;:24::i;:::-;27892:462:::0;;;;;:::o;2633:50::-;2680:3;2633:50;:::o;11480:1313::-;2719:16;:14;:16::i;:::-;-1:-1:-1;;;;;11619:16:68;::::1;11579:37;11619:16:::0;;;:9:::1;:16;::::0;;;;;11579:37;11687:47:::1;11714:10;11619:16:::0;11687:26:::1;:47::i;:::-;11642:92;;;;11741:43;11814:8;11787:36;;;;;;;;11902:10;11889:24;::::0;;;:12:::1;:24;::::0;;;;;;11830:151;;-1:-1:-1;;;11830:151:68;;11741:82;;-1:-1:-1;11830:15:68::1;::::0;:36:::1;::::0;:151:::1;::::0;11874:7;;11889:24;11921:10;;11939:12;;11741:82;;11830:151:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11988:21;:7;:19;:21::i;:::-;12040:33;12020:16;:53;;;;;;;;;12016:658;;;12100:30;::::0;::::1;::::0;12083:77:::1;::::0;-1:-1:-1;;;12083:77:68;;-1:-1:-1;;;;;12100:30:68;;::::1;::::0;12083:53:::1;::::0;:77:::1;::::0;12137:10:::1;::::0;12149;;12083:77:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;;12187:32:68::1;::::0;::::1;::::0;;12295:27;::::1;::::0;12168:162:::1;::::0;-1:-1:-1;;;12168:162:68;;-1:-1:-1;;;;;12187:32:68;;::::1;::::0;12168:57:::1;::::0;:162:::1;::::0;12235:10:::1;::::0;;;12275;;-1:-1:-1;;;12295:27:68;::::1;-1:-1:-1::0;;;;;12295:27:68::1;::::0;12168:162:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12016:658;;;12370:32;::::0;::::1;::::0;;12460:27;::::1;::::0;12351:144:::1;::::0;-1:-1:-1;;;12351:144:68;;-1:-1:-1;;;;;12370:32:68;;::::1;::::0;12351:57:::1;::::0;:144:::1;::::0;12418:10:::1;::::0;12438:12;;-1:-1:-1;;;12460:27:68;;::::1;-1:-1:-1::0;;;;;12460:27:68::1;::::0;12351:144:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;;12520:30:68::1;::::0;::::1;::::0;12628:31:::1;::::0;::::1;::::0;12503:164:::1;::::0;-1:-1:-1;;;12503:164:68;;-1:-1:-1;;;;;12520:30:68;;::::1;::::0;12503:53:::1;::::0;:164:::1;::::0;12566:10:::1;::::0;;;12606:12;;-1:-1:-1;;;;;12628:31:68::1;::::0;12503:164:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12016:658;12715:21;::::0;::::1;::::0;12680:63:::1;::::0;12715:7;;12708:5;;-1:-1:-1;;;;;12715:21:68::1;;::::0;12680:27:::1;:63::i;:::-;12767:10;-1:-1:-1::0;;;;;12755:33:68::1;12760:5;-1:-1:-1::0;;;;;12755:33:68::1;;12779:8;12755:33;;;;;;:::i;:::-;;;;;;;;2741:1;;;;11480:1313:::0;;:::o;8334:463::-;2719:16;:14;:16::i;:::-;-1:-1:-1;;;;;8550:16:68;;::::1;8510:37;8550:16:::0;;;:9:::1;:16;::::0;;;;;;;;8595:191;;::::1;::::0;::::1;::::0;;;;;8639:10:::1;8595:191:::0;;::::1;::::0;;;;;;::::1;::::0;;;;;;;;;;;;;;;;;;;8721:21:::1;::::0;::::1;::::0;;;::::1;8595:191:::0;;;;::::1;::::0;::::1;::::0;;;;8721:21;8595:191;;;;8573:219:::1;::::0;:14:::1;:219::i;:::-;2741:1;8334:463:::0;;;;;:::o;18619:2666::-;2719:16;:14;:16::i;:::-;18878:30:::1;;:::i;:::-;18915:50;18949:6;;18915:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;18915:50:68::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;;;;;;-1:-1:-1;18957:7:68;;-1:-1:-1;18957:7:68;;;;18915:50;::::1;::::0;18957:7;;18915:50;18957:7;18915:50;::::1;;::::0;::::1;::::0;;;;-1:-1:-1;18915:33:68::1;::::0;-1:-1:-1;;;18915:50:68:i:1;:::-;18972:32;19021:6:::0;19007:28:::1;::::0;::::1;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;19007:28:68::1;-1:-1:-1::0;18972:63:68;-1:-1:-1;19041:25:68::1;19083:6:::0;19069:28:::1;::::0;::::1;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;19069:28:68::1;-1:-1:-1::0;;;;;;19104:51:68;::::1;::::0;;:13:::1;19167:6;::::0;::::1;:10:::0;19041:56;-1:-1:-1;19162:309:68::1;19179:6;::::0;::::1;::::0;:22;-1:-1:-1;19162:309:68::1;;;19247:9;:25;19257:6;;19264:4;:6;;;19257:14;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19247:25:68::1;-1:-1:-1::0;;;;;19247:25:68::1;;;;;;;;;;;;:39;;;;;;;;;;-1:-1:-1::0;;;;;19247:39:68::1;19221:15;19237:4;:6;;;19221:23;;;;;;;;;;;;;:65;-1:-1:-1::0;;;;;19221:65:68::1;;;-1:-1:-1::0;;;;;19221:65:68::1;;;::::0;::::1;19314:54;19362:5;19314:43;19334:22;;19314:7;;19322:4;:6;;;19314:15;;;;;;;;;;;;;:19;;:43;;;;:::i;:::-;:47:::0;::::1;:54::i;:::-;19295:8;19304:4;:6;;;19295:16;;;;;;;;;;;;;:73;;;::::0;::::1;19385:15;19401:4;:6;;;19385:23;;;;;;;;;;;;;;-1:-1:-1::0;;;;;19377:53:68::1;;19431:15;19448:7;;19456:4;:6;;;19448:15;;;;;;;;;;;;;19377:87;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;19203:6:68::1;::::0;::::1;:8:::0;;::::1;;::::0;;19162:309:::1;;;19492:4;:13;;;-1:-1:-1::0;;;;;19492:30:68::1;;19523:6;;19531:7;;19540:8;19550:10;19562:6;;19492:77;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19577:44;;;;;;;;;;;;;-1:-1:-1::0;;;19577:44:68::1;;::::0;19477:150:::1;;;;;-1:-1:-1::0;;;19477:150:68::1;;;;;;;;:::i;:::-;-1:-1:-1::0;19648:1:68::1;19639:6;::::0;::::1;:10:::0;19634:1647:::1;19651:6;::::0;::::1;::::0;:22;-1:-1:-1;19634:1647:68::1;;;19713:6;;19720:4;:6;;;19713:14;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19693:34:68::1;:17;::::0;::::1;:34:::0;19764:6:::1;::::0;::::1;::::0;19756:7;;;;:15;;::::1;;;;;;;;;;;19735:4;:18;;:36;;;::::0;::::1;19801:8;19810:4;:6;;;19801:16;;;;;;;;;;;;;;19779:4;:19;;:38;;;::::0;::::1;19853:15;19869:4;:6;;;19853:23;;;;;;;;;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;19825:51:68::1;:25;::::0;::::1;:51:::0;19939:19:::1;::::0;::::1;::::0;19916:18:::1;::::0;::::1;::::0;:43:::1;::::0;:22:::1;:43::i;:::-;19884:29;::::0;::::1;:75:::0;20017:31:::1;19999:5;;20005:4;:6;;;19999:13;;;;;;;;;;;;;19972:41;;;;;;;;:76;;;;;;;;;19968:1126;;;20070:17;::::0;::::1;::::0;-1:-1:-1;;;;;20060:28:68::1;;::::0;;;:9:::1;:28;::::0;;;;:42:::1;::::0;:40:::1;:42::i;:::-;20112:153;20184:4;:25;;;-1:-1:-1::0;;;;;20177:45:68::1;;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20236:19;::::0;::::1;::::0;20122:17:::1;::::0;::::1;::::0;-1:-1:-1;;;;;20112:28:68::1;;::::0;;;:9:::1;:28;::::0;;;;;:153;:53:::1;:153::i;:::-;20335:17;::::0;::::1;::::0;20364:25:::1;::::0;::::1;::::0;20401:29:::1;::::0;::::1;::::0;-1:-1:-1;;;;;20275:28:68;::::1;20442:1;20275:28:::0;;;:9:::1;:28;::::0;;;;:178:::1;::::0;:28;;20335:17;;20364:25;;20275:48:::1;:178::i;:::-;20464:157;20518:15;20545:4;:25;;;20582:4;:29;;;20471:4;:17;;;-1:-1:-1::0;;;;;20464:42:68::1;;;:157;;;;;;:::i;:::-;19968:1126;;;20796:289;20822:253;;;;;;;;20855:4;:17;;;-1:-1:-1::0;;;;;20822:253:68::1;;;;;20886:10;-1:-1:-1::0;;;;;20822:253:68::1;;;;;20910:10;-1:-1:-1::0;;;;;20822:253:68::1;;;;;20934:4;:18;;;20822:253;;;;20966:5;;20972:4;:6;;;20966:13;;;;;;;;;;;;;20822:253;;;;20993:4;:25;;;-1:-1:-1::0;;;;;20822:253:68::1;;;;;21032:12;20822:253;;;;;;21058:5;20822:253;;;;::::0;20796:14:::1;:289::i;:::-;21170:4;:17;;;-1:-1:-1::0;;;;;21106:168:68::1;21150:10;-1:-1:-1::0;;;;;21106:168:68::1;21125:15;-1:-1:-1::0;;;;;21106:168:68::1;;21197:4;:18;;;21225:4;:19;;;21254:12;21106:168;;;;;;;;:::i;:::-;;;;;;;;19675:6;::::0;::::1;:8:::0;;::::1;;::::0;;19634:1647:::1;;;2741:1;;;18619:2666:::0;;;;;;;;;;;:::o;29149:186::-;2796:30;:28;:30::i;:::-;-1:-1:-1;;;;;29279:16:68;;::::1;;::::0;;;:9:::1;:16;::::0;;;;:51;29149:186::o;29524:180::-;2796:30;:28;:30::i;:::-;29604:7:::1;:13:::0;;-1:-1:-1;;29604:13:68::1;::::0;::::1;;;::::0;;;;::::1;29627:7;29623:77;;;29649:8;::::0;::::1;::::0;;;::::1;29623:77;;;29683:10;::::0;::::1;::::0;;;::::1;29623:77;29524:180:::0;:::o;22137:734::-;22234:26;22268:20;22296:27;22331:35;22374:11;22393:20;22549:184;22594:4;22606:9;22623:12;:18;22636:4;-1:-1:-1;;;;;22623:18:68;-1:-1:-1;;;;;22623:18:68;;;;;;;;;;;;22549:184;;;;;;;;;;;;;;;;;22649:13;22670:14;;22692:18;;;;;;;;;-1:-1:-1;;;;;22692:18:68;-1:-1:-1;;;;;22692:33:68;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22549:37;:184::i;:::-;22428:305;;-1:-1:-1;22428:305:68;;-1:-1:-1;22428:305:68;;-1:-1:-1;22428:305:68;-1:-1:-1;22428:305:68;-1:-1:-1;22762:104:68;22428:305;;;22762:41;:104::i;:::-;22740:126;;22137:734;;;;;;;:::o;23054:181::-;23143:40;;:::i;:::-;-1:-1:-1;;;;;;23200:16:68;;;;;:9;:16;;;;;;;;;23193:37;;;;;;;;;;;;;23054:181::o;3605:227::-;1162:16:74;1181:13;:11;:13::i;:::-;1215:12;;1162:32;;-1:-1:-1;1215:12:74;;;:31;;;1231:15;:13;:15::i;:::-;1215:69;;;;1261:23;;1250:8;:34;1215:69;1200:146;;;;-1:-1:-1;;;1200:146:74;;;;;;;:::i;:::-;1376:12;;;;1375:13;1394:96;;;;1437:4;1422:19;;-1:-1:-1;;1422:19:74;;;;;:12;1449:34;;;1394:96;3690:18:68::1;:29:::0;;-1:-1:-1;;;;;;3690:29:68::1;-1:-1:-1::0;;;;;3690:29:68;::::1;;::::0;;3759:4:::1;3725:31;:38:::0;3794:1:::1;3769:22;:26:::0;3824:3:::1;3801:20;:26:::0;1504:55:74;;;;1532:12;:20;;-1:-1:-1;;1532:20:74;;;3605:227:68;;;:::o;13353:935::-;2719:16;:14;:16::i;:::-;-1:-1:-1;;;;;13495:16:68;;::::1;13455:37;13495:16:::0;;;:9:::1;:16;::::0;;;;;13550:30:::1;::::0;::::1;::::0;13621:32:::1;::::0;::::1;::::0;13684:21:::1;::::0;;::::1;::::0;13733:39;;-1:-1:-1;;;13733:39:68;;13495:16;;13550:30;;::::1;::::0;13621:32;;::::1;::::0;13684:21;;::::1;::::0;13455:37;;13550:30;;13733:33:::1;::::0;:39:::1;::::0;13767:4;;13733:39:::1;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13779:152;::::0;-1:-1:-1;;;13779:152:68;;13712:60;;-1:-1:-1;13779:15:68::1;::::0;:49:::1;::::0;:152:::1;::::0;13836:7;;13851:5;;13864:15;;13887:17;;13912:13;;13779:152:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13938:21;:7;:19;:21::i;:::-;13966:65;::::0;-1:-1:-1;;;13966:65:68;;-1:-1:-1;;;;;13966:47:68;::::1;::::0;::::1;::::0;:65:::1;::::0;14014:4;;14020:10;;13966:65:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;14134:31:68::1;::::0;::::1;::::0;14037:134:::1;::::0;-1:-1:-1;;;14037:134:68;;-1:-1:-1;;;;;14037:47:68;::::1;::::0;-1:-1:-1;14037:47:68::1;::::0;:134:::1;::::0;14092:4;;;;14116:10;;-1:-1:-1;;;;;14134:31:68::1;::::0;14037:134:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;14178:55:68::1;:7:::0;14206:5;14213:13;14228:1:::1;::::0;14178:27:::1;:55::i;:::-;14278:4;-1:-1:-1::0;;;;;14245:38:68::1;14271:5;-1:-1:-1::0;;;;;14245:38:68::1;;;;;;;;;;;2741:1;;;;;13353:935:::0;;:::o;23758:178::-;-1:-1:-1;;;;;23893:16:68;;23869:7;23893:16;;;:9;:16;;;;;:38;;:36;:38::i;24522:283::-;24581:16;24605:32;24654:14;;24640:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24640:29:68;;24605:64;;24681:9;24676:97;24700:14;;24696:1;:18;24676:97;;;24750:16;;;;:13;:16;;;;;;24729:18;;-1:-1:-1;;;;;24750:16:68;;;;24729:15;;24764:1;;24729:18;;;;;;-1:-1:-1;;;;;24729:37:68;;;:18;;;;;;;;;;;:37;24716:3;;24676:97;;;-1:-1:-1;24785:15:68;-1:-1:-1;24522:283:68;:::o;26188:1056::-;2719:16;:14;:16::i;:::-;-1:-1:-1;;;;;26411:16:68;;::::1;;::::0;;;:9:::1;:16;::::0;;;;;;;;:30:::1;;::::0;26443:34;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;26443:34:68;;::::1;::::0;;;;;;26411:30:::1;26397:10;:44;26389:89;;;;-1:-1:-1::0;;;26389:89:68::1;;;;;;;;:::i;:::-;;26485:179;26525:4;26537:9;26554:12;:18;26567:4;-1:-1:-1::0;;;;;26554:18:68::1;-1:-1:-1::0;;;;;26554:18:68::1;;;;;;;;;;;;26580:13;26601:14;;26623:18;;;;;;;;;-1:-1:-1::0;;;;;26623:18:68::1;-1:-1:-1::0;;;;;26623:33:68::1;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26485:32;:179::i;:::-;-1:-1:-1::0;;;;;26691:16:68;;::::1;26671:17;26691:16:::0;;;:9:::1;:16;::::0;;;;:19:::1;;::::0;-1:-1:-1;;;26691:19:68;::::1;;;::::0;26721:10;;::::1;::::0;;::::1;;26717:523;;26745:29;:17:::0;26767:6;26745:21:::1;:29::i;:::-;26741:247;;-1:-1:-1::0;;;;;26843:18:68;::::1;26791:49;26843:18:::0;;;:12:::1;:18;::::0;;;;;26871:49:::1;::::0;26843:18;;26903:9;;26871:31:::1;:49::i;:::-;26974:4;-1:-1:-1::0;;;;;26935:44:68::1;26967:5;-1:-1:-1::0;;;;;26935:44:68::1;;;;;;;;;;;26741:247;;27000:20:::0;;:35;::::1;;;-1:-1:-1::0;27024:11:68;;::::1;27000:35;26996:238;;;-1:-1:-1::0;;;;;27097:16:68;::::1;27047:47;27097:16:::0;;;:12:::1;:16;::::0;;;;27123:46:::1;27097:16:::0;27153:9;27164:4:::1;27123:29;:46::i;:::-;27222:2;-1:-1:-1::0;;;;;27184:41:68::1;27215:5;-1:-1:-1::0;;;;;27184:41:68::1;;;;;;;;;;;26996:238;;2741:1;26188:1056:::0;;;;;;:::o;25154:126::-;25244:31;;25154:126;:::o;4551:791::-;2719:16;:14;:16::i;:::-;-1:-1:-1;;;;;4738:16:68;::::1;4698:37;4738:16:::0;;;:9:::1;:16;::::0;;;;;;4761:48;;-1:-1:-1;;;4761:48:68;;:15:::1;::::0;:31:::1;::::0;:48:::1;::::0;4738:16;;4802:6;;4761:48:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;;4833:21:68::1;::::0;::::1;::::0;-1:-1:-1;;;;;4833:21:68::1;4861;4833::::0;4861:19:::1;:21::i;:::-;4888:53;:7:::0;4916:5;4923:6;4931;4939:1:::1;4888:27;:53::i;:::-;4948:58;-1:-1:-1::0;;;;;4948:30:68;::::1;4979:10;4991:6:::0;4999;4948:30:::1;:58::i;:::-;5076:22;::::0;::::1;::::0;5035:64:::1;::::0;-1:-1:-1;;;5035:64:68;;5013:19:::1;::::0;-1:-1:-1;;;;;5035:20:68;::::1;::::0;::::1;::::0;:64:::1;::::0;5056:10;;5068:6;;-1:-1:-1;;;;;5076:22:68;;::::1;::::0;5035:64:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5013:86;;5110:14;5106:160;;;5180:10;::::0;::::1;::::0;-1:-1:-1;;;;;5134:24:68;::::1;;::::0;;;:12:::1;:24;::::0;;;;:63:::1;::::0;-1:-1:-1;;;5180:10:68;::::1;;;5192:4;5134:45;:63::i;:::-;5248:10;-1:-1:-1::0;;;;;5210:49:68::1;5241:5;-1:-1:-1::0;;;;;5210:49:68::1;;;;;;;;;;;5106:160;5324:12;5277:60;;5304:10;-1:-1:-1::0;;;;;5277:60:68::1;5285:5;-1:-1:-1::0;;;;;5277:60:68::1;;5292:10;5316:6;5277:60;;;;;;;:::i;:::-;;;;;;;;2741:1;;;4551:791:::0;;;;:::o;25551:99::-;25625:20;;25551:99;:::o;24907:131::-;25015:18;;-1:-1:-1;;;;;25015:18:68;24907:131;:::o;2842:89::-;2897:7;;2906:19;;;;;;;;;;;;-1:-1:-1;;;2906:19:68;;;;;2897:7;;2896:8;2888:38;;;;-1:-1:-1;;;2888:38:68;;;;;;;;:::i;2935:201::-;3010:18;;:47;;;-1:-1:-1;;;3010:47:68;;;;3061:10;;-1:-1:-1;;;;;3010:18:68;;:45;;:47;;;;;;;;;;;;;;:18;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3010:61:68;;3079:46;;;;;;;;;;;;;-1:-1:-1;;;3079:46:68;;;2995:136;;;;;-1:-1:-1;;;2995:136:68;;;;;;;;:::i;3247:575:81:-;3384:27;;;;3348:7;;3384:27;-1:-1:-1;;;3384:27:81;;;;;;3473:15;3453:36;;;3449:178;;;-1:-1:-1;;3593:27:81;;;;-1:-1:-1;;;3593:27:81;;-1:-1:-1;;;;;3593:27:81;3586:34;;3449:178;3759:27;;;;3697:33;;;;3633:17;;3659:135;;-1:-1:-1;;;;;;;;3759:27:81;;;;;;;3659:83;;3697:33;;3732:9;3659:37;:83::i;:::-;:90;;:135::i;:::-;3633:161;3247:575;-1:-1:-1;;;;3247:575:81:o;473:286:78:-;637:30;;;;630:54;;-1:-1:-1;;;630:54:78;;589:7;;;;-1:-1:-1;;;;;637:30:78;;;;630:48;;:54;;679:4;;630:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;699:32;;;;692:56;;-1:-1:-1;;;692:56:78;;-1:-1:-1;;;;;699:32:78;;;;692:50;;:56;;743:4;;692:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;615:139;;;;473:286;;;;;;:::o;3958:810:81:-;4087:32;;;;4068:72;;;-1:-1:-1;;;4068:72:81;;;;4033:26;;-1:-1:-1;;;;;4087:32:81;;4068:70;;:72;;;;;;;;;;;;;;4087:32;4068:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4184:27;;;;4308;;;;4033:107;;-1:-1:-1;;;;4184:27:81;;;-1:-1:-1;;;;;4184:27:81;;;;4250:22;;;4308:27;;;4146:35;;4410:166;4184:27;4033:107;4250:22;4184:27;4308;4410:14;:166::i;:::-;4342:234;;;;4583:180;4606:7;4621:18;4647:27;4682:17;4707:22;4737:20;4583:15;:180::i;7239:1918::-;7441:40;;:::i;:::-;7518:30;;;;-1:-1:-1;;;;;7518:30:81;7488:60;;;7600:79;;;-1:-1:-1;;;7600:79:81;;;;:77;;:79;;;;;;;;;;;;;7518:30;7600:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7578:18;;;7555:124;7556:20;;;;7555:124;;;;8018:27;;;;7943:32;;;;7924:79;;-1:-1:-1;;;7924:79:81;;;;:122;;-1:-1:-1;;;8018:27:81;;;-1:-1:-1;;;;;8018:27:81;;-1:-1:-1;;;;;7943:32:81;;;;7924:77;;:79;;;;;;;;;;;;;;7943:32;7924:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:122::-;7899:22;;;:147;;;8174:35;;;;8328:20;;;;8386:18;;;;-1:-1:-1;;;;;8174:35:81;;;;8145:88;;8241:14;;8263:13;;8284:14;;8306;;8328:20;7899:147;8412:40;8174:7;8412:38;:40::i;:::-;8145:313;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8116:20;;;8053:405;8090:18;;;8053:405;8061:21;;;8053:405;;;-1:-1:-1;8516:33:81;;;;;;;;;;;-1:-1:-1;;;;8516:33:81;;;;-1:-1:-1;;;;;;8472:42:81;8464:86;;;;-1:-1:-1;;;8464:86:81;;;;;;;;:::i;:::-;-1:-1:-1;8564:18:81;;;;8605:37;;;;;;;;;;;;-1:-1:-1;;;8605:37:81;;;;;-1:-1:-1;;;;;;8564:39:81;8556:87;;;;-1:-1:-1;;;8556:87:81;;;;;;;;:::i;:::-;-1:-1:-1;8657:20:81;;;;8700:39;;;;;;;;;;;;-1:-1:-1;;;8700:39:81;;;;;-1:-1:-1;;;;;;8657:41:81;8649:91;;;;-1:-1:-1;;;8649:91:81;;;;;;;;:::i;:::-;-1:-1:-1;8786:21:81;;;;8747:28;;;:61;;8856:18;;;;8814:31;;;:61;;-1:-1:-1;;;;;;8814:61:81;;;-1:-1:-1;;;;;8814:61:81;;;;;;;;;;8925:20;;;;8747:61;;;;;;8881:65;;-1:-1:-1;;;8881:65:81;;;;;;;;;;;;-1:-1:-1;9089:22:81;;;8958:194;;-1:-1:-1;;;;;8958:194:81;;;;;;;8786:21;;8856:18;8925:20;;9089:22;;;;9119:27;;;;;;;8958:194;:::i;:::-;;;;;;;;7239:1918;;;;;;:::o;851:162:13:-;909:7;936:5;;;955:6;;;;947:46;;;;-1:-1:-1;;;947:46:13;;;;;;;:::i;1257:128::-;1315:7;1337:43;1341:1;1344;1337:43;;;;;;;;;;;;;;;;;:3;:43::i;718:316:76:-;882:23;;;;;;;;;;;;-1:-1:-1;;;882:23:76;;;;877:3;862:18;;854:52;;;;-1:-1:-1;;;854:52:76;;;;;;;;:::i;:::-;;1011:12;1026:1;1011:16;988:9;:17;;1004:1;988:17;;;1000:1;988:17;980:26;;:48;;951:12;966:1;951:16;945:1;:23;;943:26;931:4;:9;;;:38;930:99;912:4;:9;;:117;;;;718:316;;;:::o;904:216:12:-;1020:95;1039:5;1069:27;;;1098:4;1104:2;1108:5;1046:68;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1046:68:12;;;;;;;;;;;;;;-1:-1:-1;;;;;1046:68:12;-1:-1:-1;;;;;;1046:68:12;;;;;;;;;;1020:18;:95::i;:::-;904:216;;;;:::o;1344:348:76:-;1524:23;;;;;;;;;;;;-1:-1:-1;;;1524:23:76;;;;1519:3;1504:18;;1496:52;;;;-1:-1:-1;;;1496:52:76;;;;;;;;:::i;:::-;;1665:12;1680:1;1665:16;1684:1;1665:20;1634:17;:25;;1658:1;1634:25;;;1654:1;1634:25;1626:34;;:60;;1593:12;1608:1;1593:16;1612:1;1593:20;1587:1;:27;;1585:30;1573:4;:9;;;:42;1572:115;1554:4;:9;;:133;;;;1344:348;;;:::o;686:586:6:-;746:4;1185:20;;1032:66;1224:23;;;;;;:42;;-1:-1:-1;;1251:15:6;;;1216:51;-1:-1:-1;;686:586:6:o;32003:451:68:-;32084:14;;32129:20;;32151:34;;;;;;;;;;;;-1:-1:-1;;;32151:34:68;;;;;32113:36;;32105:81;;;;-1:-1:-1;;;32105:81:68;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;32220:16:68;;32193:24;32220:16;;;:9;:16;;;;;:19;;;-1:-1:-1;;;32220:19:68;;;;:24;;;:53;;-1:-1:-1;32248:16:68;;;:13;:16;;;;-1:-1:-1;;;;;32248:25:68;;;:16;;:25;32220:53;32193:80;;32285:19;32280:170;;-1:-1:-1;;;;;;32314:16:68;;;;;;;;:9;:16;;;;;;;;:19;;:42;;-1:-1:-1;;;;32314:42:68;-1:-1:-1;;;32314:42:68;;;;;;;32364:28;;;:13;:28;;;;;:36;;-1:-1:-1;;;;;;32364:36:68;;;;;;-1:-1:-1;32426:17:68;32409:14;:34;32003:451::o;29935:2064::-;30057:10;;-1:-1:-1;;;;;30047:21:68;;;30007:37;30047:21;;;:9;:21;;;;;;;;30139:15;;;;30126:29;;;;:12;:29;;;;;30179:18;;:35;;-1:-1:-1;;;30179:35:68;;;;30047:21;;30126:29;;30007:37;30179:18;;;:33;;:35;;;;;30047:21;30179:35;;;;;:18;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30162:52;-1:-1:-1;30221:19:68;30249:130;30336:35;:7;:33;:35::i;:::-;30332:2;:39;30249:69;30306:4;:11;;;30268:6;-1:-1:-1;;;;;30249:40:68;;30290:4;:10;;;30249:52;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;;:69::i;:130::-;30221:158;;30386:15;:30;30424:4;:10;;;30442:7;30457:4;:15;;;30480:4;:11;;;30499;30518:4;:21;;;30547:31;;30586:9;30603:10;30621:13;30642:14;;30664:6;30386:290;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30683:21;:7;:19;:21::i;:::-;30711:25;;30839:33;30813:4;:21;;;30786:49;;;;;;;;:86;;;;;;;;;30782:546;;;30902:31;;;;30978:30;;;;31024:9;;;;31043:15;;;;;31068:11;;;;30961:153;;-1:-1:-1;;;30961:153:68;;-1:-1:-1;;;;;30902:31:68;;;;-1:-1:-1;;;;;;30978:30:68;;;;30961:53;;:153;;31024:9;31043:15;;30902:31;;30961:153;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30942:172;;30782:546;;;31173:32;;;;31221:9;;;;31240:15;;;;;31265:11;;;;31173:32;31286:27;;;31154:167;;-1:-1:-1;;;31154:167:68;;-1:-1:-1;;;;;31173:32:68;;;;31154:57;;:167;;31221:9;;31240:15;31265:11;-1:-1:-1;;;31286:27:68;;;-1:-1:-1;;;;;31286:27:68;;31154:167;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31135:186;;30782:546;31338:16;31334:78;;;31388:10;;;;31364:41;;:10;;-1:-1:-1;;;31388:10:68;;;;31400:4;31364:23;:41::i;:::-;31418:134;31453:4;:10;;;31471:4;:18;;;31497:1;31506:4;:22;;;:40;;31545:1;31506:40;;;31531:4;:11;;;31506:40;31418:7;;:134;;;:27;:134::i;:::-;31563:4;:22;;;31559:115;;;31603:4;:18;;;-1:-1:-1;;;;;31595:48:68;;31644:4;:9;;;31655:4;:11;;;31595:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31559:115;31971:4;:17;;;31685:309;;31734:4;:15;;;-1:-1:-1;;;;;31685:309:68;31699:4;:10;;;-1:-1:-1;;;;;31685:309:68;;31717:4;:9;;;31757:4;:11;;;31776:4;:21;;;31858:33;31805:86;;;;;;;;31832:4;:21;;;31805:49;;;;;;;;:86;;;;;;;;;:158;;31930:33;;;;-1:-1:-1;;;31930:33:68;;-1:-1:-1;;;;;31930:33:68;31805:158;;;31902:17;31805:158;31685:309;;;;;;;;;:::i;14272:184:82:-;14395:7;:14;14378:6;:13;:31;14411:39;;;;;;;;;;;;;-1:-1:-1;;;14411:39:82;;;14370:81;;;;;-1:-1:-1;;;14370:81:82;;;;;;;;:::i;2058:419:13:-;2116:7;2341:6;2337:35;;-1:-1:-1;2364:1:13;2357:8;;2337:35;2390:5;;;2394:1;2390;:5;:1;2409:5;;;;;:10;2401:56;;;;-1:-1:-1;;;2401:56:13;;;;;;;:::i;2908:124::-;2966:7;2988:39;2992:1;2995;2988:39;;;;;;;;;;;;;;;;;:3;:39::i;5151:479:81:-;5295:30;5328:51;5353:25;:14;:23;:25::i;:::-;5328:17;:6;:15;:17::i;:::-;:24;;:51::i;:::-;5295:84;;5386:14;5403:44;5430:16;:14;:16::i;:::-;5403:22;;:26;:44::i;:::-;5477:22;;;;5386:61;;-1:-1:-1;5463:37:81;;5386:61;;-1:-1:-1;;;;;5477:22:81;5463:13;:37::i;:::-;5543:34;;;;;;;;;;;;-1:-1:-1;;;5543:34:81;;;;5454:46;;-1:-1:-1;;;;;;5514:27:81;;;5506:72;;;;-1:-1:-1;;;5506:72:81;;;;;;;;:::i;:::-;-1:-1:-1;5585:22:81;;;;;:40;;-1:-1:-1;;;;;;5585:40:81;-1:-1:-1;;;;;5585:40:81;;;;;;;;;;-1:-1:-1;;;5151:479:81:o;5296:2773:80:-;5613:7;5628;5643;5658;5673;5695:40;;:::i;:::-;5746:20;:10;:18;:20::i;:::-;5742:73;;;5784:1;5787;5790;5793;-1:-1:-1;;5776:32:80;;;;;;;;;;;;;5742:73;5834:1;5825:6;;;:10;5820:1681;5846:13;5837:4;:6;;;:22;5820:1681;;;5926:6;;;;5884:49;;:10;;:41;:49::i;:::-;5879:83;;5945:8;;5879:83;6008:6;;;;5999:16;;;;;;;;;;;;;-1:-1:-1;;;;;5999:16:80;5970:26;;;:45;;;6070:40;;;;;;;;6178:58;6070:40;6178:56;:58::i;:::-;-1:-1:-1;6159:13:80;;;6119:117;;;6130:25;;;6119:117;;;;-1:-1:-1;6120:8:80;;;6119:117;;;;6262:2;:17;-1:-1:-1;6245:14:80;;:34;6352:26;;;;6311:68;;-1:-1:-1;;;6311:68:80;;-1:-1:-1;;;;;6311:40:80;;;;;:68;;6352:26;6311:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6287:92;;6392:25;;;;:30;;;;:72;;-1:-1:-1;6457:6:80;;;;6426:38;;:10;;:30;:38::i;:::-;6388:621;;;6517:14;:28;;;;;;;;;;-1:-1:-1;;;;;6517:28:80;-1:-1:-1;;;;;6510:46:80;;6557:4;6510:52;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6476:31;;;:86;;;6676:14;;;;6613:21;;6573:27;;6613:78;;6676:14;6613:58;;:25;:58::i;:78::-;6730:25;;;;6573:118;;-1:-1:-1;6730:50:80;;6573:118;6730:29;:50::i;:::-;6702:25;;;:78;6845:8;;;;6805:50;;6821:33;;:19;;:23;:33::i;:::-;6805:11;;;;;:15;:50::i;:::-;6791:11;;;:64;6964:25;;;;6896:104;;6940:50;;:19;;:23;:50::i;:::-;6896:28;;;;;:32;:104::i;:::-;6865:28;;;:135;-1:-1:-1;6388:621:80;7044:6;;;;7021:30;;:10;;:22;:30::i;:::-;7017:478;;;7101:14;:37;;;;;;;;;;-1:-1:-1;;;;;7101:37:80;-1:-1:-1;;;;;7094:55:80;;7161:4;7094:81;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7063:4;:28;;:112;;;;;7216:117;7267:14;:39;;;;;;;;;;-1:-1:-1;;;;;7267:39:80;-1:-1:-1;;;;;7260:57:80;;7318:4;7260:63;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7216:28;;;;;:32;:117::i;:::-;7185:28;;;:148;;;7461:14;;;;7401:21;;7366:120;;7401:75;;7461:14;7401:55;;:25;:55::i;:75::-;7366:19;;;;;:23;:120::i;:::-;7344:19;;;:142;7017:478;5820:1681;;5861:6;;;:8;;;;;;5820:1681;;;7549:1;7521:4;:25;;;:29;:78;;7598:1;7521:78;;;7569:25;;;;7553:11;;;;:42;;:15;:42::i;:::-;7507:11;;;:92;7636:25;;;;:107;;7742:1;7636:107;;;7707:25;;;;7674:28;;;;:59;;:32;:59::i;:::-;7605:28;;;:138;;;7811:25;;;;7844:19;;;;7770:135;;:33;:135::i;:::-;7750:17;;;:155;;;7926:25;;;;7959:19;;;;7986:11;;;;8005:28;;;;;7926:25;;-1:-1:-1;7959:19:80;-1:-1:-1;7986:11:80;;-1:-1:-1;8005:28:80;;-1:-1:-1;7750:155:80;-1:-1:-1;5296:2773:80;;;;;;;;;;;;;:::o;9105:401::-;9249:7;;9294:36;:20;9326:3;9294:31;:36::i;:::-;9264:66;;9363:14;9341:19;:36;9337:65;;;9394:1;9387:8;;;;;9337:65;9430:39;:19;9454:14;9430:23;:39::i;:::-;9408:61;9105:401;-1:-1:-1;;;;;9105:401:80:o;3140:102:68:-;2680:3;3140:102;:::o;1858:510:74:-;2328:9;2316:22;2356:7;1858:510;:::o;2314:558:81:-;2453:27;;;;2417:7;;2453:27;-1:-1:-1;;;2453:27:81;;;;;;2542:15;2522:36;;;2518:173;;;-1:-1:-1;;2662:22:81;;;;-1:-1:-1;;;;;2662:22:81;2655:29;;2518:173;2814:22;;;;2757:28;;;;2697:17;;2723:121;;-1:-1:-1;;;;;2814:22:81;;;;2723:74;;2757:28;2787:9;2723:33;:74::i;16804:620:82:-;17131:158;;;;;;;;;;;;;17101:20;;17131:158;;17178:4;;17192:12;;17234:8;17252:13;17275:6;17131:37;:158::i;:::-;17092:197;;;;;;1210:7:80;17311:12:82;:64;;17383:30;;;;;;;;;;;;;-1:-1:-1;;;17383:30:82;;;17296:123;;;;;-1:-1:-1;;;17296:123:82;;;;;;;;:::i;:::-;;16804:620;;;;;;;:::o;2856:214:83:-;2970:7;2994:71;3022:4;3028:19;3049:15;2994:27;:71::i;2008:253:86:-;2069:7;2088:6;;;:16;;-1:-1:-1;2098:6:86;;2088:16;2084:45;;;-1:-1:-1;2121:1:86;2114:8;;2084:45;2180:1;-1:-1:-1;;2180:1:86;2148:33;;;;;2143:1;:38;;2183:35;;;;;;;;;;;;;-1:-1:-1;;;2183:35:86;;;2135:84;;;;;-1:-1:-1;;;2135:84:86;;;;;;;;:::i;:::-;-1:-1:-1;432:4:86;482:1;432:4;476:7;;2238:1;2234;:5;:15;2233:23;;;;;;;2008:253;-1:-1:-1;;;2008:253:86:o;12201:1637:81:-;12460:28;;;;12405:7;;;;-1:-1:-1;;;;;12460:28:81;12523:14;12576:19;12666:24;;12662:1025;;12700:34;12745:66;12779:20;12801:9;12745:33;:66::i;:::-;12700:111;-1:-1:-1;12839:49:81;12700:111;12873:14;12839:33;:49::i;:::-;12944:34;;;;;;;;;;;;-1:-1:-1;;;12944:34:81;;;;12819:69;;-1:-1:-1;;;;;;12904:38:81;;;12896:83;;;;-1:-1:-1;;;12896:83:81;;;;;;;;:::i;:::-;-1:-1:-1;12988:22:81;;;:51;;-1:-1:-1;;;;;;12988:51:81;-1:-1:-1;;;;;12988:51:81;;;;;13203:23;;13199:482;;13328:33;;;;13238:39;;13290:83;;-1:-1:-1;;;13328:33:81;;-1:-1:-1;;;;;13328:33:81;13363:9;13290:37;:83::i;:::-;13238:135;-1:-1:-1;13408:59:81;13238:135;13447:19;13408:38;:59::i;:::-;13551:40;;;;;;;;;;;;-1:-1:-1;;;13551:40:81;;;;13383:84;;-1:-1:-1;;;;;;13496:43:81;;;13477:124;;;;-1:-1:-1;;;13477:124:81;;;;;;;;:::i;:::-;-1:-1:-1;;13611:27:81;;;:61;;-1:-1:-1;;;;;13611:61:81;;;-1:-1:-1;;;13611:61:81;;;;;;13199:482;12662:1025;;13724:27;;;;;:53;;-1:-1:-1;;;;13724:53:81;-1:-1:-1;;;13761:15:81;13724:53;;;;;;13791:17;12201:1637;-1:-1:-1;;;;;;;12201:1637:81:o;10091:1784::-;10340:35;;:::i;:::-;10403:40;:7;:38;:40::i;:::-;10382:18;;;:61;;;10450:50;;10487:7;;;10450:50;10733:7;:30;;;;;;;;;;-1:-1:-1;;;;;10733:30:81;-1:-1:-1;;;;;10716:62:81;;:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10578:202;;10674:33;;;10578:202;10648:18;;;10578:202;;;10586:24;;;10578:202;10864:54;:18;10890:27;10864:25;:54::i;:::-;10836:25;;;:82;11021:49;:18;11047:22;11021:25;:49::i;:::-;10994:24;;;:76;11217:18;;;;11243:33;;;;11172:127;;11217:18;11172:127;;;:37;:127::i;:::-;11141:28;;;:158;;;11332:24;;;;:61;;:31;:61::i;:::-;11306:23;;;:87;;;11597:25;;;;11562:22;;11519:31;;;;:140;;11306:87;11519:104;;11597:25;;11519:104;;:42;:66::i;:140::-;11495:21;;;:164;;;11719:18;;;;11686:52;;11495:164;11686:32;:52::i;:::-;11666:17;;;:72;;;11749:22;11745:126;;11789:21;;;;;;11827:17;;;11781:83;;-1:-1:-1;;;11781:83:81;;-1:-1:-1;;;;;11789:21:81;;;;11781:45;;:83;;11827:17;11846;;11781:83;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9042:209:75;9176:9;2113:2;9175:71;;;;9042:209::o;1649:189:13:-;1751:7;1782:12;1774:6;;;;1766:29;;;;-1:-1:-1;;;1766:29:13;;;;;;;;:::i;:::-;-1:-1:-1;;;1813:5:13;;;1649:189::o;1473:555:12:-;1556:27;1564:5;-1:-1:-1;;;;;1556:25:12;;:27::i;:::-;1548:71;;;;-1:-1:-1;;;1548:71:12;;;;;;;:::i;:::-;1682:12;1696:23;1731:5;-1:-1:-1;;;;;1723:19:12;1743:4;1723:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1681:67;;;;1762:7;1754:52;;;;-1:-1:-1;;;1754:52:12;;;;;;;:::i;:::-;1817:17;;:21;1813:211;;1951:10;1940:30;;;;;;;;;;;;:::i;:::-;1932:85;;;;-1:-1:-1;;;1932:85:12;;;;;;;:::i;5336:200:75:-;5465:9;1815:2;5464:67;;;;5336:200::o;3483:332:13:-;3585:7;3677:12;3670:5;3662:28;;;;-1:-1:-1;;;3662:28:13;;;;;;;;:::i;:::-;;3696:9;3712:1;3708;:5;;;;;;;3483:332;-1:-1:-1;;;;;3483:332:13:o;3173:204:86:-;3225:7;530:3;3257:17;;;;:1;;:17;3288:22;:27;3317:35;;;;;;;;;;;;;-1:-1:-1;;;3317:35:86;;;3280:73;;;;;-1:-1:-1;;;3280:73:86;;;;;;;;:::i;:::-;-1:-1:-1;3366:6:86;3173:204;-1:-1:-1;;3173:204:86:o;2416:279::-;2508:28;;;;;;;;;;;;-1:-1:-1;;;2508:28:86;;;;2477:7;;2500:6;2492:45;;;;-1:-1:-1;;;2492:45:86;;;;;;;;:::i;:::-;-1:-1:-1;2619:35:86;;;;;;;;;2563:1;2619:35;;;-1:-1:-1;;;2619:35:86;;;;2559:5;;;432:4;2585:25;;2584:33;2579:38;;;2571:84;;;;-1:-1:-1;;;2571:84:86;;;;;;;;:::i;:::-;;2689:1;2680:5;432:4;2670:1;:7;:15;2669:21;;;;;;;2416:279;-1:-1:-1;;;;2416:279:86:o;578:68::-;432:4;578:68;:::o;3921:122:76:-;4024:9;:14;;3921:122::o;2013:265::-;2154:4;2189:3;2174:12;:18;2194:23;;;;;;;;;;;;;-1:-1:-1;;;2194:23:76;;;2166:52;;;;;-1:-1:-1;;;2166:52:76;;;;;;;;:::i;:::-;-1:-1:-1;;2232:9:76;;2267:1;2261;2246:16;;;2232:31;2231:37;:42;;;2013:265::o;10085:606:75:-;10296:9;10339;10327:21;;;;1692:2;10356:85;;;;;;1754:2;10449:77;;;;;;1815:2;10534:67;;;;;;2113:2;10609:71;;;;;;10085:606::o;3100:260:76:-;3230:4;3267:3;3252:12;:18;3272:23;;;;;;;;;;;;;-1:-1:-1;;;3272:23:76;;;3244:52;;;;;-1:-1:-1;;;3244:52:76;;;;;;;;:::i;:::-;-1:-1:-1;;3310:9:76;;3343:1;3339;3324:16;;:20;;3310:35;;;;3309:41;:46;;3100:260;;;;:::o;2565:248::-;2687:4;2724:3;2709:12;:18;2729:23;;;;;;;;;;;;;-1:-1:-1;;;2729:23:76;;;2701:52;;;;;-1:-1:-1;;;2701:52:76;;;;;;;;:::i;:::-;-1:-1:-1;;2767:9:76;;2802:1;2796;2781:16;;;2767:31;2766:37;:42;;;2565:248::o;8399:321:80:-;8565:7;8584:19;8580:43;;-1:-1:-1;;;8605:18:80;;8580:43;8637:78;8700:14;8638:53;:20;8670;8638:31;:53::i;:::-;8637:62;;:78::i;802:351:84:-;880:7;899:10;;;:29;;-1:-1:-1;913:15:84;;899:29;895:58;;;-1:-1:-1;945:1:84;938:8;;895:58;1020:10;-1:-1:-1;;1020:10:84;983:47;;;;;974:5;:56;;1038:35;;;;;;;;;;;;;-1:-1:-1;;;1038:35:84;;;959:120;;;;;-1:-1:-1;;;959:120:84;;;;;;;;:::i;:::-;-1:-1:-1;466:3:84;556:1;466:3;536:21;;679:318:83;789:7;;862:49;:15;882:28;;;862:19;:49::i;:::-;837:74;;925:67;975:16;:14;:16::i;:::-;353:8;926:24;:4;935:14;926:8;:24::i;:::-;:43;;;;;;;925:49;:67::i;1738:833::-;1882:7;;1942:50;:16;1963:28;;;1942:20;:50::i;:::-;1928:64;-1:-1:-1;2003:8:83;1999:52;;2028:16;:14;:16::i;:::-;2021:23;;;;;1999:52;-1:-1:-1;;2079:7:83;;2057:19;2121:1;2115:7;;:21;;2135:1;2115:21;;;2131:1;2125:3;:7;2115:21;2093:43;-1:-1:-1;353:8:83;2167:23;;2143:21;2220:35;2167:23;;2220:20;:35::i;:::-;2197:58;-1:-1:-1;2261:22:83;2286:34;2197:58;2306:13;2286:19;:34::i;:::-;2261:59;-1:-1:-1;2327:18:83;2389:1;2348:38;2373:12;2348:20;:3;2356:11;2348:7;:20::i;:38::-;:42;;;;;;;-1:-1:-1;2396:17:83;2476:1;2416:57;2458:14;2416:37;2441:11;2416:37;:3;2424:11;2416:7;:20::i;:57::-;:61;;;;;;;-1:-1:-1;2491:75:83;2416:61;2491:60;2540:10;2491:60;2512:22;:13;2530:3;2512:17;:22::i;:::-;2491:16;:14;:16::i;:::-;:20;;:44::i;:75::-;2484:82;1738:833;-1:-1:-1;;;;;;;;;;;;1738:833:83:o;1571:279:86:-;1663:28;;;;;;;;;;;;-1:-1:-1;;;1663:28:86;;;;1632:7;;1655:6;1647:45;;;;-1:-1:-1;;;1647:45:86;;;;;;;;:::i;:::-;-1:-1:-1;1774:35:86;;;;;;;;;1718:1;1774:35;;;-1:-1:-1;;;1774:35:86;;;;1714:5;;;344:4;1740:25;;1739:33;1734:38;;;1726:84;;;;-1:-1:-1;;;1726:84:86;;;;;;;;:::i;:::-;;1844:1;1835:5;344:4;1825:1;:7;:15;1824:21;;;;-1:-1:-1;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;72:20;;97:33;72:20;97:33;:::i;301:352::-;;;431:3;424:4;416:6;412:17;408:27;398:2;;-1:-1;;439:12;398:2;-1:-1;469:20;;509:18;498:30;;495:2;;;-1:-1;;531:12;495:2;575:4;567:6;563:17;551:29;;626:3;575:4;;610:6;606:17;567:6;592:32;;589:41;586:2;;;643:1;;633:12;1319:336;;;1433:3;1426:4;1418:6;1414:17;1410:27;1400:2;;-1:-1;;1441:12;1400:2;-1:-1;1471:20;;1511:18;1500:30;;1497:2;;;-1:-1;;1533:12;1497:2;1577:4;1569:6;1565:17;1553:29;;1628:3;1577:4;1608:17;1569:6;1594:32;;1591:41;1588:2;;;1645:1;;1635:12;2329:128;2395:20;;55943:6;55932:18;;58806:34;;58796:2;;58854:1;;58844:12;2881:241;;2985:2;2973:9;2964:7;2960:23;2956:32;2953:2;;;-1:-1;;2991:12;2953:2;85:6;72:20;97:33;124:5;97:33;:::i;3129:263::-;;3244:2;3232:9;3223:7;3219:23;3215:32;3212:2;;;-1:-1;;3250:12;3212:2;226:6;220:13;238:33;265:5;238:33;:::i;3399:366::-;;;3520:2;3508:9;3499:7;3495:23;3491:32;3488:2;;;-1:-1;;3526:12;3488:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3578:63;-1:-1;3678:2;3717:22;;72:20;97:33;72:20;97:33;:::i;:::-;3686:63;;;;3482:283;;;;;:::o;3772:743::-;;;;;;3944:3;3932:9;3923:7;3919:23;3915:33;3912:2;;;-1:-1;;3951:12;3912:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;4003:63;-1:-1;4103:2;4142:22;;72:20;97:33;72:20;97:33;:::i;:::-;4111:63;-1:-1;4211:2;4250:22;;72:20;97:33;72:20;97:33;:::i;:::-;4219:63;-1:-1;4319:2;4358:22;;72:20;97:33;72:20;97:33;:::i;:::-;4327:63;-1:-1;4427:3;4467:22;;72:20;97:33;72:20;97:33;:::i;:::-;4436:63;;;;3906:609;;;;;;;;:::o;4522:737::-;;;;;;4691:3;4679:9;4670:7;4666:23;4662:33;4659:2;;;-1:-1;;4698:12;4659:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;4750:63;-1:-1;4850:2;4889:22;;72:20;97:33;72:20;97:33;:::i;:::-;4858:63;-1:-1;4958:2;4997:22;;72:20;97:33;72:20;97:33;:::i;:::-;4966:63;-1:-1;5066:2;5105:22;;2531:20;;-1:-1;5174:3;5211:22;;1103:20;1128:30;1103:20;1128:30;:::i;5266:869::-;;;;;;;5455:3;5443:9;5434:7;5430:23;5426:33;5423:2;;;-1:-1;;5462:12;5423:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;5514:63;-1:-1;5614:2;5653:22;;72:20;97:33;72:20;97:33;:::i;:::-;5622:63;-1:-1;5722:2;5761:22;;72:20;97:33;72:20;97:33;:::i;:::-;5417:718;;;;-1:-1;5730:63;;5830:2;5869:22;;2531:20;;-1:-1;5938:3;5978:22;;2531:20;;6047:3;6087:22;;;2531:20;;-1:-1;5417:718;-1:-1;;5417:718::o;6142:1587::-;;;;;;;;;;;;6472:3;6460:9;6451:7;6447:23;6443:33;6440:2;;;-1:-1;;6479:12;6440:2;6541:53;6586:7;6562:22;6541:53;:::i;:::-;6531:63;;6683:18;;6659:2;6648:9;6644:18;6631:32;6672:30;6669:2;;;-1:-1;;6705:12;6669:2;6743:80;6815:7;6659:2;6648:9;6644:18;6631:32;6795:9;6791:22;6743:80;:::i;:::-;6725:98;;-1:-1;6725:98;-1:-1;6888:2;6873:18;;6860:32;6901:30;-1:-1;6898:2;;;-1:-1;;6934:12;6898:2;6972:80;7044:7;6888:2;6877:9;6873:18;6860:32;7024:9;7020:22;6972:80;:::i;:::-;6954:98;;-1:-1;6954:98;-1:-1;7117:2;7102:18;;7089:32;7130:30;-1:-1;7127:2;;;-1:-1;;7163:12;7127:2;7201:80;7273:7;7117:2;7106:9;7102:18;7089:32;7253:9;7249:22;7201:80;:::i;:::-;7183:98;;-1:-1;7183:98;-1:-1;7337:53;7382:7;7318:3;7358:22;;7337:53;:::i;:::-;7327:63;;6683:18;7455:3;7444:9;7440:19;7427:33;7469:30;7466:2;;;-1:-1;;7502:12;7466:2;;7540:64;7596:7;7455:3;7444:9;7440:19;7427:33;7576:9;7572:22;7540:64;:::i;:::-;7522:82;;-1:-1;7522:82;-1:-1;7661:52;7705:7;7641:3;7681:22;;7661:52;:::i;:::-;7650:63;;6434:1295;;;;;;;;;;;;;;:::o;7736:360::-;;;7854:2;7842:9;7833:7;7829:23;7825:32;7822:2;;;-1:-1;;7860:12;7822:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;7912:63;-1:-1;8012:2;8048:22;;1103:20;1128:30;1103:20;1128:30;:::i;8103:366::-;;;8224:2;8212:9;8203:7;8199:23;8195:32;8192:2;;;-1:-1;;8230:12;8192:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;8282:63;8382:2;8421:22;;;;2531:20;;-1:-1;;;8186:283::o;8476:491::-;;;;8614:2;8602:9;8593:7;8589:23;8585:32;8582:2;;;-1:-1;;8620:12;8582:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;8672:63;-1:-1;8772:2;8811:22;;2531:20;;-1:-1;8880:2;8919:22;;72:20;97:33;72:20;97:33;:::i;:::-;8888:63;;;;8576:391;;;;;:::o;8974:615::-;;;;;9128:3;9116:9;9107:7;9103:23;9099:33;9096:2;;;-1:-1;;9135:12;9096:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;9187:63;-1:-1;9287:2;9326:22;;2531:20;;-1:-1;9395:2;9434:22;;72:20;97:33;72:20;97:33;:::i;:::-;9403:63;-1:-1;9521:52;9565:7;9503:2;9541:22;;9521:52;:::i;:::-;9511:62;;9090:499;;;;;;;:::o;9596:617::-;;;;;9751:3;9739:9;9730:7;9726:23;9722:33;9719:2;;;-1:-1;;9758:12;9719:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;9810:63;-1:-1;9910:2;9949:22;;2531:20;;-1:-1;10018:2;10057:22;;2531:20;;-1:-1;10126:2;10165:22;;72:20;97:33;72:20;97:33;:::i;:::-;9713:500;;;;-1:-1;9713:500;;-1:-1;;9713:500::o;10220:741::-;;;;;;10391:3;10379:9;10370:7;10366:23;10362:33;10359:2;;;-1:-1;;10398:12;10359:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;10450:63;-1:-1;10550:2;10589:22;;2531:20;;-1:-1;10658:2;10697:22;;2531:20;;-1:-1;10784:52;10828:7;10766:2;10804:22;;10784:52;:::i;10968:235::-;;11069:2;11057:9;11048:7;11044:23;11040:32;11037:2;;;-1:-1;;11075:12;11037:2;1116:6;1103:20;1128:30;1152:5;1128:30;:::i;11210:257::-;;11322:2;11310:9;11301:7;11297:23;11293:32;11290:2;;;-1:-1;;11328:12;11290:2;1251:6;1245:13;1263:30;1287:5;1263:30;:::i;11798:263::-;;11913:2;11901:9;11892:7;11888:23;11884:32;11881:2;;;-1:-1;;11919:12;11881:2;-1:-1;2679:13;;11875:186;-1:-1;11875:186::o;12068:498::-;;;12210:2;12198:9;12189:7;12185:23;12181:32;12178:2;;;-1:-1;;12216:12;12178:2;2685:6;2679:13;12268:74;;12400:2;12389:9;12385:18;12379:25;12424:18;;12416:6;12413:30;12410:2;;;-1:-1;;12446:12;12410:2;12533:6;12522:9;12518:22;;;1990:3;1983:4;1975:6;1971:17;1967:27;1957:2;;-1:-1;;1998:12;1957:2;2038:6;2032:13;12424:18;52590:6;52587:30;52584:2;;;-1:-1;;52620:12;52584:2;12210;52247:9;52693;52674:17;;-1:-1;;52670:33;52279:17;;12400:2;52279:17;52339:34;;;52375:22;;;52336:62;52333:2;;;-1:-1;;52401:12;52333:2;12210;52420:22;2131:21;;;2231:16;;;12400:2;2231:16;2228:25;-1:-1;2225:2;;;-1:-1;;2256:12;2225:2;2276:39;2308:6;12400:2;2207:5;2203:16;12400:2;2173:6;2169:17;2276:39;:::i;:::-;12466:84;;;;;;;12172:394;;;;;:::o;12573:399::-;;;12705:2;12693:9;12684:7;12680:23;12676:32;12673:2;;;-1:-1;;12711:12;12673:2;-1:-1;;2679:13;;12874:2;12924:22;;;2679:13;;;;;-1:-1;12667:305::o;12979:535::-;;;;13128:2;13116:9;13107:7;13103:23;13099:32;13096:2;;;-1:-1;;13134:12;13096:2;2685:6;2679:13;13186:74;;13297:2;13351:9;13347:22;2679:13;13305:74;;13416:2;13470:9;13466:22;2679:13;13424:74;;13090:424;;;;;:::o;13521:670::-;;;;;13686:3;13674:9;13665:7;13661:23;13657:33;13654:2;;;-1:-1;;13693:12;13654:2;2685:6;2679:13;13745:74;;13856:2;13910:9;13906:22;2679:13;13864:74;;13975:2;14029:9;14025:22;2679:13;13983:74;;14094:2;14147:9;14143:22;2819:13;56241:12;59079:5;56230:24;59055:5;59052:34;59042:2;;-1:-1;;59090:12;14199:173;-1:-1;;;;;56024:54;14772:37;;14361:4;14352:14;;14279:93::o;14562:142::-;-1:-1;;;;;56024:54;14641:58;;14635:69::o;17039:690::-;;17232:5;53327:12;54247:6;54242:3;54235:19;54284:4;;54279:3;54275:14;17244:93;;54284:4;17408:5;53023:14;-1:-1;17447:260;17472:6;17469:1;17466:13;17447:260;;;17533:13;;19350:18;;14534:14;;;;53860;;;;17494:1;17487:9;17447:260;;;-1:-1;17713:10;;17163:566;-1:-1;;;;;17163:566::o;17990:297::-;;54247:6;54242:3;54235:19;57732:6;57727:3;54284:4;54279:3;54275:14;57709:30;-1:-1;54284:4;57779:6;54279:3;57770:16;;57763:27;54284:4;52693:9;;58169:2;18273:6;58149:14;58145:28;54279:3;18242:39;;18235:46;;18090:197;;;;;:::o;22502:346::-;22735:23;19350:18;;22642:206::o;26554:103::-;-1:-1;;;;;55813:46;26615:37;;26609:48::o;27272:100::-;56241:12;56230:24;27331:36;;27325:47::o;27379:97::-;56337:4;56326:16;27436:35;;27430:46::o;27483:271::-;;18455:5;53327:12;18566:52;18611:6;18606:3;18599:4;18592:5;18588:16;18566:52;:::i;:::-;18630:16;;;;;27617:137;-1:-1;;27617:137::o;28043:222::-;-1:-1;;;;;56024:54;;;;14772:37;;28170:2;28155:18;;28141:124::o;28517:588::-;-1:-1;;;;;56024:54;;;14641:58;;56024:54;;;;28925:2;28910:18;;14641:58;29008:2;28993:18;;19350;-1:-1;;;;;55813:46;;;29091:2;29076:18;;26735:50;28744:3;28729:19;;28715:390::o;29691:349::-;-1:-1;;;;;56024:54;;;;14641:58;;30026:2;30011:18;;19350;29854:2;29839:18;;29825:215::o;30047:460::-;-1:-1;;;;;56024:54;;;;14641:58;;30410:2;30395:18;;19350;;;;-1:-1;;;;;55813:46;30493:2;30478:18;;26735:50;30238:2;30223:18;;30209:298::o;30514:656::-;-1:-1;;;;;56024:54;;;14772:37;;56024:54;;;30912:2;30897:18;;14772:37;56024:54;;;;30995:2;30980:18;;14772:37;31078:2;31063:18;;19350;;;;55432:13;;55425:21;31155:3;31140:19;;17802:34;30747:3;30732:19;;30718:452::o;31177:444::-;-1:-1;;;;;56024:54;;;14772:37;;56024:54;;;;31524:2;31509:18;;14772:37;31607:2;31592:18;;19350;;;;31360:2;31345:18;;31331:290::o;32191:556::-;-1:-1;;;;;56024:54;;;14772:37;;56024:54;;;;32567:2;32552:18;;14772:37;32650:2;32635:18;;19350;32733:2;32718:18;;19350;;;;32402:3;32387:19;;32373:374::o;32754:1004::-;-1:-1;;;;;56024:54;;;14772:37;;56024:54;;;;33242:2;33227:18;;14772:37;33325:2;33310:18;;19350;;;;33408:2;33393:18;;19350;;;;33491:3;33476:19;;19350:18;56035:42;33560:19;;19350:18;33659:3;33644:19;;19350:18;33743:3;33728:19;;19350:18;;;;33077:3;33062:19;;33048:710::o;33765:1856::-;-1:-1;;;;;56024:54;;;14772:37;;34570:2;34555:18;;19350;;;;56024:54;;;34661:2;34646:18;;14772:37;34752:2;34737:18;;19350;;;;34843:3;34828:19;;19350:18;;;;56035:42;34920:19;;19350:18;;;;35027:3;35012:19;;19350:18;;;;35171:3;35156:19;;19350:18;35303:3;35288:19;;19350:18;35420:3;35405:19;;19350:18;35513:3;35498:19;;19350:18;56024:54;;;35606:3;35591:19;;14641:58;34358:3;34343:19;;34329:1292::o;36419:1302::-;-1:-1;;;;;56024:54;;;14772:37;;37044:2;37029:18;;19350;;;;37135:2;37120:18;;19350;;;;37278:2;37263:18;;19350;;;;37405:3;37390:19;;19350:18;;;;56035:42;37507:19;;19350:18;37614:3;37599:19;;19350:18;56024:54;;;37706:3;37691:19;;14772:37;36863:3;36848:19;;36834:887::o;37728:556::-;-1:-1;;;;;56024:54;;;;14772:37;;38104:2;38089:18;;19350;;;;38187:2;38172:18;;19350;38270:2;38255:18;;19350;37939:3;37924:19;;37910:374::o;38291:1272::-;;38736:3;38725:9;38721:19;38736:3;38758:17;38751:47;38812:118;15254:86;15333:6;15328:3;15254:86;:::i;:::-;15247:93;;15425:21;;;-1:-1;15452:291;15477:6;15474:1;15471:13;15452:291;;;55250:2;15573:6;55241:12;15594:63;15653:3;55215:39;55241:12;15573:6;55215:39;:::i;:::-;15594:63;:::i;:::-;15664:72;;-1:-1;15587:70;-1:-1;15499:1;15492:9;15452:291;;;-1:-1;38968:20;;;55250:2;38948:18;;38941:48;54235:19;;;-1:-1;;;;;16781:78;;16778:2;;;-1:-1;;16862:12;16778:2;55250;16897:6;16893:17;16883:27;;57732:6;57727:3;55250:2;54279:3;54275:14;57709:30;57770:16;55250:2;57770:16;;;57763:27;;;39159:20;;;;;;39154:2;39139:18;;39132:48;39194:108;57770:16;39288:6;39194:108;:::i;:::-;39186:116;;;39313:80;39389:2;39378:9;39374:18;39365:6;39313:80;:::i;:::-;39442:9;39436:4;39432:20;39426:3;39415:9;39411:19;39404:49;39467:86;39548:4;39539:6;39531;39467:86;:::i;:::-;39459:94;38707:856;-1:-1;;;;;;;;;;;38707:856::o;39570:370::-;39747:2;39761:47;;;53327:12;;39732:18;;;54235:19;;;39570:370;;39747:2;53023:14;;;;54275;;;;39570:370;16212:260;16237:6;16234:1;16231:13;16212:260;;;16298:13;;-1:-1;;;;;56024:54;14641:58;;53860:14;;;;14352;;;;509:18;16252:9;16212:260;;;-1:-1;39814:116;;39718:222;-1:-1;;;;;;39718:222::o;39947:210::-;55432:13;;55425:21;17802:34;;40068:2;40053:18;;40039:118::o;40469:310::-;;40616:2;40637:17;40630:47;19659:5;53327:12;54247:6;40616:2;40605:9;40601:18;54235:19;19753:52;19798:6;54275:14;40605:9;54275:14;40616:2;19779:5;19775:16;19753:52;:::i;:::-;52693:9;58149:14;-1:-1;;58145:28;19817:39;;;;54275:14;19817:39;;40587:192;-1:-1;;40587:192::o;40786:416::-;40986:2;41000:47;;;20460:2;40971:18;;;54235:19;20496:29;54275:14;;;20476:50;20545:12;;;40957:245::o;41209:416::-;41409:2;41423:47;;;41394:18;;;54235:19;20832:34;54275:14;;;20812:55;20886:12;;;41380:245::o;41632:416::-;41832:2;41846:47;;;21137:2;41817:18;;;54235:19;21173:34;54275:14;;;21153:55;-1:-1;;;21228:12;;;21221:25;21265:12;;;41803:245::o;42055:416::-;42255:2;42269:47;;;21516:2;42240:18;;;54235:19;21552:34;54275:14;;;21532:55;-1:-1;;;21607:12;;;21600:38;21657:12;;;42226:245::o;42478:416::-;42678:2;42692:47;;;21908:2;42663:18;;;54235:19;21944:34;54275:14;;;21924:55;-1:-1;;;21999:12;;;21992:34;22045:12;;;42649:245::o;42901:416::-;43101:2;43115:47;;;22296:2;43086:18;;;54235:19;22332:33;54275:14;;;22312:54;22385:12;;;43072:245::o;43324:390::-;22735:23;;19350:18;;43535:2;43520:18;;43506:208::o;43721:343::-;;43908:3;43897:9;43893:19;43885:27;;23635:147;23767:14;23612:16;23606:23;23635:147;:::i;:::-;23871:4;23864:5;23860:16;23854:23;23883:63;23871:4;23935:3;23931:14;23917:12;23883:63;:::i;:::-;;24040:4;24033:5;24029:16;24023:23;24052:63;24040:4;24104:3;24100:14;24086:12;24052:63;:::i;:::-;;24210:4;24203:5;24199:16;24193:23;24222:63;24210:4;24274:3;24270:14;24256:12;24222:63;:::i;:::-;;24385:4;24378:5;24374:16;24368:23;24397:63;24385:4;24449:3;24445:14;24431:12;24397:63;:::i;:::-;;24558:4;24551:5;24547:16;24541:23;24570:63;24558:4;24622:3;24618:14;24604:12;24570:63;:::i;:::-;;24727:4;24720:5;24716:16;24710:23;24739:61;24727:4;24789:3;24785:14;24771:12;24739:61;:::i;:::-;;24888:4;24881:5;24877:16;24871:23;24900:63;24888:4;24952:3;24948:14;24934:12;24900:63;:::i;:::-;;25060:6;;25053:5;25049:18;25043:25;25074:65;25060:6;25126:3;25122:16;25108:12;25074:65;:::i;:::-;;;25238:6;;25231:5;25227:18;25221:25;25252:65;25238:6;25304:3;25300:16;25286:12;25252:65;:::i;:::-;;;25419:6;;25412:5;25408:18;25402:25;25433:65;25419:6;25485:3;25481:16;25467:12;25433:65;:::i;:::-;;;25575:6;;25568:5;25564:18;25558:25;25589:61;25575:6;25637:3;25633:16;25619:12;25589:61;:::i;:::-;;;43879:185;;;;:::o;44071:778::-;19350:18;;;-1:-1;;;;;56024:54;;;44561:2;44546:18;;14772:37;56024:54;;;44652:2;44637:18;;14772:37;56024:54;;44743:2;44728:18;;14772:37;56024:54;44834:3;44819:19;;14772:37;44349:3;44334:19;;44320:529::o;44856:1352::-;19350:18;;;-1:-1;;;;;56024:54;;;45537:2;45522:18;;14772:37;55432:13;;55425:21;45622:2;45607:18;;17802:34;45765:2;45750:18;;19350;;;;45892:3;45877:19;;19350:18;;;;56035:42;45994:19;;19350:18;46101:3;46086:19;;19350:18;56024:54;46193:3;46178:19;;14772:37;45325:3;45310:19;;45296:912::o;47060:890::-;;47394:3;47383:9;47379:19;47371:27;;19362:5;19357:3;19350:18;19362:5;47642:2;47631:9;47627:18;19350;19362:5;47733:2;47722:9;47718:18;19350;19362:5;47824:2;47813:9;47809:18;19350;57234:46;19200:5;57234:46;:::i;:::-;47935:3;47924:9;47920:19;19137:70;47365:585;;;;;;;;:::o;47957:419::-;19350:18;;;48362:2;48347:18;;19350;48151:2;48136:18;;48122:254::o;48383:938::-;19350:18;;;48921:2;48906:18;;19350;;;48709:3;48694:19;;57234:46;19200:5;57234:46;:::i;:::-;49032:2;49017:18;;19137:70;-1:-1;;;;;56024:54;;;;49123:2;49108:18;;14772:37;49214:3;49199:19;;19350:18;;;;56035:42;49291:19;;;19350:18;48680:641;;-1:-1;;;48680:641::o;49713:222::-;19350:18;;;49840:2;49825:18;;49811:124::o;50282:440::-;19350:18;;;50627:2;50612:18;;19350;;;;55943:6;55932:18;50708:2;50693:18;;26866:36;50463:2;50448:18;;50434:288::o;50729:668::-;19350:18;;;51133:2;51118:18;;19350;;;;51216:2;51201:18;;19350;;;;-1:-1;;;;;55813:46;;;51299:2;51284:18;;26735:50;55813:46;51382:3;51367:19;;26735:50;50968:3;50953:19;;50939:458::o;51404:780::-;19350:18;;;51836:2;51821:18;;19350;;;;51919:2;51904:18;;19350;;;;52002:2;51987:18;;19350;52085:3;52070:19;;19350:18;52169:3;52154:19;;19350:18;51671:3;51656:19;;51642:542::o;55594:150::-;55667:16;58277:1;58267:12;;58257:2;;58283:9;57805:268;57870:1;57877:101;57891:6;57888:1;57885:13;57877:101;;;57958:11;;;57952:18;57939:11;;;57932:39;57913:2;57906:10;57877:101;;;57993:6;57990:1;57987:13;57984:2;;;-1:-1;;57870:1;58040:16;;58033:27;57854:219::o;58306:117::-;-1:-1;;;;;56024:54;;58365:35;;58355:2;;58414:1;;58404:12;58430:111;58511:5;55432:13;55425:21;58489:5;58486:32;58476:2;;58532:1;;58522:12"
            },
            "methodIdentifiers": {
              "FLASHLOAN_PREMIUM_TOTAL()": "074b2e43",
              "LENDINGPOOL_REVISION()": "8afaff02",
              "MAX_NUMBER_RESERVES()": "f8119d51",
              "MAX_STABLE_RATE_BORROW_SIZE_PERCENT()": "e82fec2f",
              "borrow(address,uint256,uint256,uint16,address)": "a415bcad",
              "deposit(address,uint256,address,uint16)": "e8eda9df",
              "finalizeTransfer(address,address,address,uint256,uint256,uint256)": "d5ed3933",
              "flashLoan(address,address[],uint256[],uint256[],address,bytes,uint16)": "ab9c4b5d",
              "getAddressesProvider()": "fe65acfe",
              "getConfiguration(address)": "c44b11f7",
              "getReserveData(address)": "35ea6a75",
              "getReserveNormalizedIncome(address)": "d15e0053",
              "getReserveNormalizedVariableDebt(address)": "386497fd",
              "getReservesList()": "d1946dbc",
              "getUserAccountData(address)": "bf92857c",
              "getUserConfiguration(address)": "4417a583",
              "initReserve(address,address,address,address,address)": "7a708e92",
              "initialize(address)": "c4d66de8",
              "liquidationCall(address,address,address,uint256,bool)": "00a718a9",
              "paused()": "5c975abb",
              "rebalanceStableBorrowRate(address,address)": "cd112382",
              "repay(address,uint256,uint256,address)": "573ade81",
              "setConfiguration(address,uint256)": "b8d29276",
              "setPause(bool)": "bedb86fb",
              "setReserveInterestRateStrategyAddress(address,address)": "1d2118f9",
              "setUserUseReserveAsCollateral(address,bool)": "5a3b74b9",
              "swapBorrowRateMode(address,uint256)": "94ba89a2",
              "withdraw(address,uint256,address)": "69328dec"
            }
          }
        }
      },
      "contracts/protocol/lendingpool/LendingPoolCollateralManager.sol": {
        "LendingPoolCollateralManager": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "collateral",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "principal",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "debtToCover",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "liquidatedCollateralAmount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "liquidator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "receiveAToken",
                  "type": "bool"
                }
              ],
              "name": "LiquidationCall",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "ReserveUsedAsCollateralDisabled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "reserve",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "ReserveUsedAsCollateralEnabled",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "collateralAsset",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "debtAsset",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "debtToCover",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "receiveAToken",
                  "type": "bool"
                }
              ],
              "name": "liquidationCall",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526000805534801561001457600080fd5b506129ef806100246000396000f3fe608060405234801561001057600080fd5b506004361061002a5760003560e01c8062a718a91461002f575b600080fd5b610073600480360360a081101561004557600080fd5b506001600160a01b0381358116916020810135821691604082013516906060810135906080013515156100f2565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156100b657818101518382015260200161009e565b50505050905090810190601f1680156100e35780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b6001600160a01b0380861660009081526035602090815260408083208885168452818420948816845260369092528220919260609261012f61274e565b6040805160208082018352845482526038546034548451631f94a27560e31b815294516101c1958f95603595909460379490936001600160a01b039091169263fca513a8926004808301939192829003018186803b15801561019057600080fd5b505afa1580156101a4573d6000803e3d6000fd5b505050506040513d60208110156101ba57600080fd5b5051610971565b610140860152506101d892508b9150859050610e37565b60408301819052602083018290526101408301516101fd928792879287929091610f3a565b6102008301526101e08201819052600090600981111561021957fe5b600981111561022457fe5b1461024257806101e001518161020001519550955050505050610967565b6004808501546001600160a01b039081166101808401819052604080516370a0823160e01b8152928d169383019390935291516370a0823191602480820192602092909190829003018186803b15801561029b57600080fd5b505afa1580156102af573d6000803e3d6000fd5b505050506040513d60208110156102c557600080fd5b50518152604081015160208201516102ea91611388916102e491611077565b906110da565b6060820181905288116102fd5787610303565b80606001515b60808201819052815161031e91869186918f918f91906111c4565b6101208301819052610100830191909152608082015111156103465761012081015160808201525b866104085760008b6001600160a01b03166370a082318361018001516040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561039f57600080fd5b505afa1580156103b3573d6000803e3d6000fd5b505050506040513d60208110156103c957600080fd5b505161010083015190915081101561040657600560405180604001604052806002815260200161343560f01b815250965096505050505050610967565b505b6104118361143d565b80608001518160400151106104b45760068301546080820151600185015460408051637a94c56560e11b81526001600160a01b038e811660048301526024820194909452600160801b9092046001600160801b0316604483015251919092169163f5298aca91606480830192600092919082900301818387803b15801561049757600080fd5b505af11580156104ab573d6000803e3d6000fd5b505050506105d8565b60408101511561054d57600683015460408281015160018601548251637a94c56560e11b81526001600160a01b038e811660048301526024820193909352600160801b9091046001600160801b03166044820152915192169163f5298aca9160648082019260009290919082900301818387803b15801561053457600080fd5b505af1158015610548573d6000803e3d6000fd5b505050505b6005830154604082015160808301516001600160a01b0390921691639dc29fac918c9161057991611507565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156105bf57600080fd5b505af11580156105d3573d6000803e3d6000fd5b505050505b600483015460808201516105fb9185918d916001600160a01b0316906000611549565b8615610777578061018001516001600160a01b03166370a08231336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561065357600080fd5b505afa158015610667573d6000803e3d6000fd5b505050506040513d602081101561067d57600080fd5b50516101608201526101808101516101008201516040805163f866c31960e01b81526001600160a01b038d8116600483015233602483015260448201939093529051919092169163f866c31991606480830192600092919082900301818387803b1580156106ea57600080fd5b505af11580156106fe573d6000803e3d6000fd5b505050508061016001516000141561077257336000908152603660205260409020600785015461073b908290600160a01b900460ff16600161197c565b60405133906001600160a01b038e16907e058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f290600090a3505b61082f565b6107808461143d565b61018081015161010082015161079d9186918e9190600090611549565b610180810151610100820151600186015460408051636b81068560e11b81526001600160a01b038e8116600483015233602483015260448201949094526001600160801b03909216606483015251919092169163d7020d0a91608480830192600092919082900301818387803b15801561081657600080fd5b505af115801561082a573d6000803e3d6000fd5b505050505b8051610100820151141561089a576007840154610859908390600160a01b900460ff16600061197c565b886001600160a01b03168b6001600160a01b03167f44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd60405160405180910390a35b600483015460808201516108c0916001600160a01b038d81169233929190911690611a20565b886001600160a01b03168a6001600160a01b03168c6001600160a01b03167fe413a321e8681d831f4dbccbca790d2952b56f977908e45be37335533e0052868460800151856101000151338d60405180858152602001848152602001836001600160a01b03168152602001821515815260200194505050505060405180910390a46000604051806040016040528060028152602001611a1b60f11b81525095509550505050505b9550959350505050565b60008060008060006109816127e8565b61098a8a611a80565b156109a8576000806000806000199550955095509550955050610e29565b600060e08201525b878160e001511015610d885760e08101516109cc908b90611a85565b6109d557610d78565b60e0810151600090815260208a81526040808320546001600160a01b03166101e085018190528352908d90529020610a0c81611b04565b506080860181905260c08601929092525060a0840191909152600a0a6020808401919091526101e08301516040805163b3596f0760e01b81526001600160a01b0392831660048201529051918b169263b3596f0792602480840193829003018186803b158015610a7b57600080fd5b505afa158015610a8f573d6000803e3d6000fd5b505050506040513d6020811015610aa557600080fd5b5051825260c082015115801590610ac7575060e0820151610ac7908c90611b2f565b15610be8578060040160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610b3057600080fd5b505afa158015610b44573d6000803e3d6000fd5b505050506040513d6020811015610b5a57600080fd5b50516040830181905260208301518351600092610b819291610b7b91611bb5565b90611c0e565b610120840151909150610b949082611077565b61012084015260a0830151610bba90610bae908390611bb5565b61016085015190611077565b61016084015260c0830151610be090610bd4908390611bb5565b61018085015190611077565b610180840152505b60e0820151610bf8908c90611c50565b15610d76578060050160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610c6157600080fd5b505afa158015610c75573d6000803e3d6000fd5b505050506040513d6020811015610c8b57600080fd5b8101908080519060200190929190505050826060018181525050610d438160060160009054906101000a90046001600160a01b03166001600160a01b03166370a082318f6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610d0c57600080fd5b505afa158015610d20573d6000803e3d6000fd5b505050506040513d6020811015610d3657600080fd5b5051606084015190611077565b6060830181905260208301518351610d6f92610d639291610b7b91611bb5565b61014084015190611077565b6101408301525b505b60e08101805160010190526109b0565b600081610120015111610d9c576000610db1565b610120810151610160820151610db191611c0e565b610160820152610120810151610dc8576000610ddd565b610120810151610180820151610ddd91611c0e565b6101808201819052610120820151610140830151610dfa92611ccf565b610100820181905261012082015161014083015161016084015161018090940151919850965091945090925090505b965096509650965096915050565b6005810154604080516370a0823160e01b81526001600160a01b0385811660048301529151600093849316916370a08231916024808301926020929190829003018186803b158015610e8857600080fd5b505afa158015610e9c573d6000803e3d6000fd5b505050506040513d6020811015610eb257600080fd5b50516006840154604080516370a0823160e01b81526001600160a01b038881166004830152915191909216916370a08231916024808301926020929190829003018186803b158015610f0357600080fd5b505afa158015610f17573d6000803e3d6000fd5b505050506040513d6020811015610f2d57600080fd5b5051909590945092505050565b60006060610f4788611cfd565b1580610f595750610f5787611cfd565b155b15610f805750506040805180820190915260018152601960f91b602082015260069061106c565b670de0b6b3a76400008510610fb25750506040805180820190915260028152611a1960f11b602082015260049061106c565b600080610fbe8a611d0d565b118015610fed57506007890154604080516020810190915288548152610fed91600160a01b900460ff16611b2f565b90508061101757505060408051808201909152600280825261343360f01b6020830152915061106c565b84158015611023575083155b1561104c5750506040805180820190915260028152610d0d60f21b60208201526003915061106c565b50506040805180820190915260028152611a1b60f11b6020820152600091505b965096945050505050565b6000828201838110156110d1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b60008215806110e7575081155b156110f4575060006110d4565b81611388198161110057fe5b0483111560405180604001604052806002815260200161068760f31b815250906111a85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561116d578181015183820152602001611155565b50505050905090810190601f16801561119a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506127106002815b0483850201816111bc57fe5b049392505050565b6000806000806000603460009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561121a57600080fd5b505afa15801561122e573d6000803e3d6000fd5b505050506040513d602081101561124457600080fd5b50519050611250612882565b816001600160a01b031663b3596f078b6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561129d57600080fd5b505afa1580156112b1573d6000803e3d6000fd5b505050506040513d60208110156112c757600080fd5b5051604080830191909152805163b3596f0760e01b81526001600160a01b038b8116600483015291519184169163b3596f0791602480820192602092909190829003018186803b15801561131a57600080fd5b505afa15801561132e573d6000803e3d6000fd5b505050506040513d602081101561134457600080fd5b505160608201526113548c611b04565b5060c085015260208401525061136b90508b611d18565b60a0820181905260408201516113b8916113889190600a0a611bb5565b610b7b83602001516102e48560c00151600a0a6113b28e8860600151611bb590919063ffffffff16565b90611bb5565b608082018190528710156114215786935061141a81602001516114146113f28460c00151600a0a8560600151611bb590919063ffffffff16565b610b7b8560a00151600a0a6113b28a8860400151611bb590919063ffffffff16565b90611d22565b925061142c565b806080015193508792505b50919a909950975050505050505050565b60068101546040805163b1bf962d60e01b815290516000926001600160a01b03169163b1bf962d916004808301926020929190829003018186803b15801561148457600080fd5b505afa158015611498573d6000803e3d6000fd5b505050506040513d60208110156114ae57600080fd5b505160018301546003840154919250600160801b8082046001600160801b03908116939216910464ffffffffff166000806114ec8787868887611e15565b915091506114fe878787858588611fce565b50505050505050565b60006110d183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121b7565b6115516128bf565b60058601546001600160a01b031680825260408051637b98f4df60e11b8152815163f731e9be92600480840193919291829003018186803b15801561159557600080fd5b505afa1580156115a9573d6000803e3d6000fd5b505050506040513d60408110156115bf57600080fd5b50805160209182015160c084015260408084019190915260018801546006890154825163b1bf962d60e01b8152925161166394600160801b9093046001600160801b0316936001600160a01b039092169263b1bf962d9260048082019391829003018186803b15801561163157600080fd5b505afa158015611645573d6000803e3d6000fd5b505050506040513d602081101561165b57600080fd5b505190612211565b60e082018190526007870154604083015160c08401516001600160a01b03909216926329db497d928992899289928992919061169e8f6122c2565b6040518963ffffffff1660e01b815260040180896001600160a01b03168152602001886001600160a01b031681526020018781526020018681526020018581526020018481526020018381526020018281526020019850505050505050505060606040518083038186803b15801561171557600080fd5b505afa158015611729573d6000803e3d6000fd5b505050506040513d606081101561173f57600080fd5b50805160208083015160409384015160a086015260808501526060840182905282518084019093526002835261353360f01b908301526001600160801b0310156117ca5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b506080810151604080518082019091526002815261353560f01b6020820152906001600160801b03101561183f5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5060a08101516040805180820190915260028152610d4d60f21b6020820152906001600160801b0310156118b45760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5060608181015160028801805460808086015160038c0180546001600160801b03199081166001600160801b038085169190911790925560a0808a015191909516828816178216600160801b82841681029190911790965560018e01546040805198895260208901949094528784019190915280821697870197909752939095049092169183019190915291516001600160a01b038816927f804c9b842b2748a22bb64b345453a3de7ca54a6ca45ce00d415894979e22897a928290030190a2505050505050565b604080518082019091526002815261373760f01b6020820152608083106119e45760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5081600202600101816119f85760006119fb565b60015b60ff16901b826002026001016001901b19846000015416178360000181905550505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611a7a9085906122cd565b50505050565b511590565b60006080821060405180604001604052806002815260200161373760f01b81525090611af25760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b50509051600360029092021c16151590565b5461ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b60006080821060405180604001604052806002815260200161373760f01b81525090611b9c5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5050815160016002830281019190911c16151592915050565b600082611bc4575060006110d4565b82820282848281611bd157fe5b04146110d15760405162461bcd60e51b815260040180806020018281038252602181526020018061296f6021913960400191505060405180910390fd5b60006110d183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612485565b60006080821060405180604001604052806002815260200161373760f01b81525090611cbd5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b50509051600160029092021c16151590565b600082611cdf5750600019611cf6565b611cf383611ced86856110da565b906124ea565b90505b9392505050565b5467010000000000000016151590565b5460101c61ffff1690565b5460301c60ff1690565b604080518082019091526002815261035360f41b602082015260009082611d8a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5060408051808201909152600280825261068760f31b6020830152830490612710821904851115611dfc5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b50828161271086020181611e0c57fe5b04949350505050565b600285015460009081906001600160801b031685858215611f9f576000611e3c84886125e0565b9050611e48818a612211565b604080518082019091526002815261353160f01b60208201529093506001600160801b03841115611eba5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5060018b0180546001600160801b0319166001600160801b0385161790558915611f9d5760028b0154600090611f0090600160801b90046001600160801b031689612626565b9050611f0c818a612211565b6040805180820190915260028152611a9960f11b60208201529093506001600160801b03841115611f7e5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b505060018b0180546001600160801b03808516600160801b0291161790555b505b600399909901805464ffffffffff60801b1916600160801b4264ffffffffff1602179055989650505050505050565b611fd661290d565b611fdf876122c2565b6101208201819052611ff157506121af565b8660050160009054906101000a90046001600160a01b03166001600160a01b031663797743386040518163ffffffff1660e01b815260040160806040518083038186803b15801561204157600080fd5b505afa158015612055573d6000803e3d6000fd5b505050506040513d608081101561206b57600080fd5b508051602080830151604084015160609094015164ffffffffff1661014086015260a0850193909352918352908201526120a58686612211565b60808201526120b48684612211565b606082015260a08101516101408201516120d6919064ffffffffff851661262f565b60c0820181905260208201516120eb91612211565b6040820181905260808201518251606084015161211693926121109290918391611077565b90611507565b60e0820181905261012082015161212d91906110da565b6101008201819052156114fe5760048088015461010083015160408051637df5bd3b60e01b81529384019190915260248301879052516001600160a01b0390911691637df5bd3b91604480830192600092919082900301818387803b15801561219557600080fd5b505af11580156121a9573d6000803e3d6000fd5b50505050505b505050505050565b600081848411156122095760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b505050900390565b600082158061221e575081155b1561222b575060006110d4565b816b019d971e4fe8401e74000000198161224157fe5b0483111560405180604001604052806002815260200161068760f31b815250906122ac5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b506b033b2e3c9fd0803ce80000006002816111b0565b5460401c61ffff1690565b6122df826001600160a01b0316612705565b612330576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b6020831061236e5780518252601f19909201916020918201910161234f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146123d0576040519150601f19603f3d011682016040523d82523d6000602084013e6123d5565b606091505b50915091508161242c576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611a7a5780806020019051602081101561244857600080fd5b5051611a7a5760405162461bcd60e51b815260040180806020018281038252602a815260200180612990602a913960400191505060405180910390fd5b600081836124d45760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5060008385816124e057fe5b0495945050505050565b604080518082019091526002815261035360f41b6020820152600090826125525760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5060408051808201909152600280825261068760f31b6020830152830490670de0b6b3a76400008219048511156125ca5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b508281670de0b6b3a764000086020181611e0c57fe5b6000806125f44264ffffffffff8516611507565b905061261e61260161273e565b6301e133806126108785611bb5565b8161261757fe5b0490611077565b949350505050565b60006110d18383425b6000806126438364ffffffffff8616611507565b90508061265a5761265261273e565b915050611cf6565b6000198101600060028311612670576000612675565b600283035b90506301e133808704600061268a8280612211565b905060006126988284612211565b9050600060026126ac846113b28a8a611bb5565b816126b357fe5b049050600060066126ca846113b289818d8d611bb5565b816126d157fe5b0490506126f5816126ef84816126e78a8e611bb5565b6126ef61273e565b90611077565b9c9b505050505050505050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061261e575050151592915050565b6b033b2e3c9fd0803ce800000090565b60405180610220016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b03168152602001600015158152602001600060028111156127d457fe5b815260200160008152602001606081525090565b604051806102400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b031681526020016000151581526020016000151581525090565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180610100016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600064ffffffffff168152509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212200b16e2a679479d533d21a835ebfad524b7ba3c127e8b3c592ab424145dc4966664736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x29EF DUP1 PUSH2 0x24 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0xA718A9 EQ PUSH2 0x2F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x73 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xF2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x9E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE3 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP6 AND DUP5 MSTORE DUP2 DUP5 KECCAK256 SWAP5 DUP9 AND DUP5 MSTORE PUSH1 0x36 SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SWAP2 SWAP3 PUSH1 0x60 SWAP3 PUSH2 0x12F PUSH2 0x274E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP4 MSTORE DUP5 SLOAD DUP3 MSTORE PUSH1 0x38 SLOAD PUSH1 0x34 SLOAD DUP5 MLOAD PUSH4 0x1F94A275 PUSH1 0xE3 SHL DUP2 MSTORE SWAP5 MLOAD PUSH2 0x1C1 SWAP6 DUP16 SWAP6 PUSH1 0x35 SWAP6 SWAP1 SWAP5 PUSH1 0x37 SWAP5 SWAP1 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP3 PUSH4 0xFCA513A8 SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x971 JUMP JUMPDEST PUSH2 0x140 DUP7 ADD MSTORE POP PUSH2 0x1D8 SWAP3 POP DUP12 SWAP2 POP DUP6 SWAP1 POP PUSH2 0xE37 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 SWAP1 MSTORE PUSH2 0x140 DUP4 ADD MLOAD PUSH2 0x1FD SWAP3 DUP8 SWAP3 DUP8 SWAP3 DUP8 SWAP3 SWAP1 SWAP2 PUSH2 0xF3A JUMP JUMPDEST PUSH2 0x200 DUP4 ADD MSTORE PUSH2 0x1E0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x9 DUP2 GT ISZERO PUSH2 0x219 JUMPI INVALID JUMPDEST PUSH1 0x9 DUP2 GT ISZERO PUSH2 0x224 JUMPI INVALID JUMPDEST EQ PUSH2 0x242 JUMPI DUP1 PUSH2 0x1E0 ADD MLOAD DUP2 PUSH2 0x200 ADD MLOAD SWAP6 POP SWAP6 POP POP POP POP POP PUSH2 0x967 JUMP JUMPDEST PUSH1 0x4 DUP1 DUP6 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x180 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 DUP14 AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 MLOAD PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2AF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP2 MSTORE PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2EA SWAP2 PUSH2 0x1388 SWAP2 PUSH2 0x2E4 SWAP2 PUSH2 0x1077 JUMP JUMPDEST SWAP1 PUSH2 0x10DA JUMP JUMPDEST PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE DUP9 GT PUSH2 0x2FD JUMPI DUP8 PUSH2 0x303 JUMP JUMPDEST DUP1 PUSH1 0x60 ADD MLOAD JUMPDEST PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE DUP2 MLOAD PUSH2 0x31E SWAP2 DUP7 SWAP2 DUP7 SWAP2 DUP16 SWAP2 DUP16 SWAP2 SWAP1 PUSH2 0x11C4 JUMP JUMPDEST PUSH2 0x120 DUP4 ADD DUP2 SWAP1 MSTORE PUSH2 0x100 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP3 ADD MLOAD GT ISZERO PUSH2 0x346 JUMPI PUSH2 0x120 DUP2 ADD MLOAD PUSH1 0x80 DUP3 ADD MSTORE JUMPDEST DUP7 PUSH2 0x408 JUMPI PUSH1 0x0 DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP4 PUSH2 0x180 ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x100 DUP4 ADD MLOAD SWAP1 SWAP2 POP DUP2 LT ISZERO PUSH2 0x406 JUMPI PUSH1 0x5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3435 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP7 POP SWAP7 POP POP POP POP POP POP PUSH2 0x967 JUMP JUMPDEST POP JUMPDEST PUSH2 0x411 DUP4 PUSH2 0x143D JUMP JUMPDEST DUP1 PUSH1 0x80 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD LT PUSH2 0x4B4 JUMPI PUSH1 0x6 DUP4 ADD SLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x7A94C565 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x44 DUP4 ADD MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xF5298ACA SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x497 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4AB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x5D8 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD ISZERO PUSH2 0x54D JUMPI PUSH1 0x6 DUP4 ADD SLOAD PUSH1 0x40 DUP3 DUP2 ADD MLOAD PUSH1 0x1 DUP7 ADD SLOAD DUP3 MLOAD PUSH4 0x7A94C565 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x44 DUP3 ADD MSTORE SWAP2 MLOAD SWAP3 AND SWAP2 PUSH4 0xF5298ACA SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x534 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x548 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x9DC29FAC SWAP2 DUP13 SWAP2 PUSH2 0x579 SWAP2 PUSH2 0x1507 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5D3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x4 DUP4 ADD SLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x5FB SWAP2 DUP6 SWAP2 DUP14 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x0 PUSH2 0x1549 JUMP JUMPDEST DUP7 ISZERO PUSH2 0x777 JUMPI DUP1 PUSH2 0x180 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x653 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x667 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x67D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0x180 DUP2 ADD MLOAD PUSH2 0x100 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xF866C319 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xF866C319 SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6FE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH2 0x160 ADD MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x772 JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x7 DUP6 ADD SLOAD PUSH2 0x73B SWAP1 DUP3 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x1 PUSH2 0x197C JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND SWAP1 PUSH31 0x58A56EA94653CDF4F152D227ACE22D4C00AD99E2A43F58CB7D9E3FEB295F2 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP JUMPDEST PUSH2 0x82F JUMP JUMPDEST PUSH2 0x780 DUP5 PUSH2 0x143D JUMP JUMPDEST PUSH2 0x180 DUP2 ADD MLOAD PUSH2 0x100 DUP3 ADD MLOAD PUSH2 0x79D SWAP2 DUP7 SWAP2 DUP15 SWAP2 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x1549 JUMP JUMPDEST PUSH2 0x180 DUP2 ADD MLOAD PUSH2 0x100 DUP3 ADD MLOAD PUSH1 0x1 DUP7 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x6B810685 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND PUSH1 0x64 DUP4 ADD MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xD7020D0A SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x816 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x82A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP1 MLOAD PUSH2 0x100 DUP3 ADD MLOAD EQ ISZERO PUSH2 0x89A JUMPI PUSH1 0x7 DUP5 ADD SLOAD PUSH2 0x859 SWAP1 DUP4 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x0 PUSH2 0x197C JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x44C58D81365B66DD4B1A7F36C25AA97B8C71C361EE4937ADC1A00000227DB5DD PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST PUSH1 0x4 DUP4 ADD SLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x8C0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND SWAP3 CALLER SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH2 0x1A20 JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xE413A321E8681D831F4DBCCBCA790D2952B56F977908E45BE37335533E005286 DUP5 PUSH1 0x80 ADD MLOAD DUP6 PUSH2 0x100 ADD MLOAD CALLER DUP14 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A1B PUSH1 0xF1 SHL DUP2 MSTORE POP SWAP6 POP SWAP6 POP POP POP POP POP JUMPDEST SWAP6 POP SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x981 PUSH2 0x27E8 JUMP JUMPDEST PUSH2 0x98A DUP11 PUSH2 0x1A80 JUMP JUMPDEST ISZERO PUSH2 0x9A8 JUMPI PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 NOT SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP POP PUSH2 0xE29 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 ADD MSTORE JUMPDEST DUP8 DUP2 PUSH1 0xE0 ADD MLOAD LT ISZERO PUSH2 0xD88 JUMPI PUSH1 0xE0 DUP2 ADD MLOAD PUSH2 0x9CC SWAP1 DUP12 SWAP1 PUSH2 0x1A85 JUMP JUMPDEST PUSH2 0x9D5 JUMPI PUSH2 0xD78 JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP11 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E0 DUP6 ADD DUP2 SWAP1 MSTORE DUP4 MSTORE SWAP1 DUP14 SWAP1 MSTORE SWAP1 KECCAK256 PUSH2 0xA0C DUP2 PUSH2 0x1B04 JUMP JUMPDEST POP PUSH1 0x80 DUP7 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP7 ADD SWAP3 SWAP1 SWAP3 MSTORE POP PUSH1 0xA0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA EXP PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x1E0 DUP4 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xB3596F07 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 DUP12 AND SWAP3 PUSH4 0xB3596F07 SWAP3 PUSH1 0x24 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA8F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 MSTORE PUSH1 0xC0 DUP3 ADD MLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0xAC7 JUMPI POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0xAC7 SWAP1 DUP13 SWAP1 PUSH2 0x1B2F JUMP JUMPDEST ISZERO PUSH2 0xBE8 JUMPI DUP1 PUSH1 0x4 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB44 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD MLOAD DUP4 MLOAD PUSH1 0x0 SWAP3 PUSH2 0xB81 SWAP3 SWAP2 PUSH2 0xB7B SWAP2 PUSH2 0x1BB5 JUMP JUMPDEST SWAP1 PUSH2 0x1C0E JUMP JUMPDEST PUSH2 0x120 DUP5 ADD MLOAD SWAP1 SWAP2 POP PUSH2 0xB94 SWAP1 DUP3 PUSH2 0x1077 JUMP JUMPDEST PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH2 0xBBA SWAP1 PUSH2 0xBAE SWAP1 DUP4 SWAP1 PUSH2 0x1BB5 JUMP JUMPDEST PUSH2 0x160 DUP6 ADD MLOAD SWAP1 PUSH2 0x1077 JUMP JUMPDEST PUSH2 0x160 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD MLOAD PUSH2 0xBE0 SWAP1 PUSH2 0xBD4 SWAP1 DUP4 SWAP1 PUSH2 0x1BB5 JUMP JUMPDEST PUSH2 0x180 DUP6 ADD MLOAD SWAP1 PUSH2 0x1077 JUMP JUMPDEST PUSH2 0x180 DUP5 ADD MSTORE POP JUMPDEST PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0xBF8 SWAP1 DUP13 SWAP1 PUSH2 0x1C50 JUMP JUMPDEST ISZERO PUSH2 0xD76 JUMPI DUP1 PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC75 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP3 PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP PUSH2 0xD43 DUP2 PUSH1 0x6 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP16 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD20 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 DUP5 ADD MLOAD SWAP1 PUSH2 0x1077 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD MLOAD DUP4 MLOAD PUSH2 0xD6F SWAP3 PUSH2 0xD63 SWAP3 SWAP2 PUSH2 0xB7B SWAP2 PUSH2 0x1BB5 JUMP JUMPDEST PUSH2 0x140 DUP5 ADD MLOAD SWAP1 PUSH2 0x1077 JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE JUMPDEST POP JUMPDEST PUSH1 0xE0 DUP2 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE PUSH2 0x9B0 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x120 ADD MLOAD GT PUSH2 0xD9C JUMPI PUSH1 0x0 PUSH2 0xDB1 JUMP JUMPDEST PUSH2 0x120 DUP2 ADD MLOAD PUSH2 0x160 DUP3 ADD MLOAD PUSH2 0xDB1 SWAP2 PUSH2 0x1C0E JUMP JUMPDEST PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0x120 DUP2 ADD MLOAD PUSH2 0xDC8 JUMPI PUSH1 0x0 PUSH2 0xDDD JUMP JUMPDEST PUSH2 0x120 DUP2 ADD MLOAD PUSH2 0x180 DUP3 ADD MLOAD PUSH2 0xDDD SWAP2 PUSH2 0x1C0E JUMP JUMPDEST PUSH2 0x180 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD MLOAD PUSH2 0x140 DUP4 ADD MLOAD PUSH2 0xDFA SWAP3 PUSH2 0x1CCF JUMP JUMPDEST PUSH2 0x100 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD MLOAD PUSH2 0x140 DUP4 ADD MLOAD PUSH2 0x160 DUP5 ADD MLOAD PUSH2 0x180 SWAP1 SWAP5 ADD MLOAD SWAP2 SWAP9 POP SWAP7 POP SWAP2 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 DUP2 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE9C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 DUP5 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF17 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0xF47 DUP9 PUSH2 0x1CFD JUMP JUMPDEST ISZERO DUP1 PUSH2 0xF59 JUMPI POP PUSH2 0xF57 DUP8 PUSH2 0x1CFD JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0xF80 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x19 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x6 SWAP1 PUSH2 0x106C JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP6 LT PUSH2 0xFB2 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1A19 PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x4 SWAP1 PUSH2 0x106C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xFBE DUP11 PUSH2 0x1D0D JUMP JUMPDEST GT DUP1 ISZERO PUSH2 0xFED JUMPI POP PUSH1 0x7 DUP10 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE DUP9 SLOAD DUP2 MSTORE PUSH2 0xFED SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1B2F JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1017 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x3433 PUSH1 0xF0 SHL PUSH1 0x20 DUP4 ADD MSTORE SWAP2 POP PUSH2 0x106C JUMP JUMPDEST DUP5 ISZERO DUP1 ISZERO PUSH2 0x1023 JUMPI POP DUP4 ISZERO JUMPDEST ISZERO PUSH2 0x104C JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0xD0D PUSH1 0xF2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x3 SWAP2 POP PUSH2 0x106C JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1A1B PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 POP JUMPDEST SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x10D1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x10E7 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x10F4 JUMPI POP PUSH1 0x0 PUSH2 0x10D4 JUMP JUMPDEST DUP2 PUSH2 0x1388 NOT DUP2 PUSH2 0x1100 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x11A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x119A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x2710 PUSH1 0x2 DUP2 JUMPDEST DIV DUP4 DUP6 MUL ADD DUP2 PUSH2 0x11BC JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x34 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFCA513A8 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x121A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x122E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x1250 PUSH2 0x2882 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB3596F07 DUP12 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x129D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH4 0xB3596F07 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP5 AND SWAP2 PUSH4 0xB3596F07 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x131A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x132E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x1354 DUP13 PUSH2 0x1B04 JUMP JUMPDEST POP PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0x20 DUP5 ADD MSTORE POP PUSH2 0x136B SWAP1 POP DUP12 PUSH2 0x1D18 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x13B8 SWAP2 PUSH2 0x1388 SWAP2 SWAP1 PUSH1 0xA EXP PUSH2 0x1BB5 JUMP JUMPDEST PUSH2 0xB7B DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x2E4 DUP6 PUSH1 0xC0 ADD MLOAD PUSH1 0xA EXP PUSH2 0x13B2 DUP15 DUP9 PUSH1 0x60 ADD MLOAD PUSH2 0x1BB5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x1BB5 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE DUP8 LT ISZERO PUSH2 0x1421 JUMPI DUP7 SWAP4 POP PUSH2 0x141A DUP2 PUSH1 0x20 ADD MLOAD PUSH2 0x1414 PUSH2 0x13F2 DUP5 PUSH1 0xC0 ADD MLOAD PUSH1 0xA EXP DUP6 PUSH1 0x60 ADD MLOAD PUSH2 0x1BB5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0xB7B DUP6 PUSH1 0xA0 ADD MLOAD PUSH1 0xA EXP PUSH2 0x13B2 DUP11 DUP9 PUSH1 0x40 ADD MLOAD PUSH2 0x1BB5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x1D22 JUMP JUMPDEST SWAP3 POP PUSH2 0x142C JUMP JUMPDEST DUP1 PUSH1 0x80 ADD MLOAD SWAP4 POP DUP8 SWAP3 POP JUMPDEST POP SWAP2 SWAP11 SWAP1 SWAP10 POP SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x6 DUP2 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xB1BF962D PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xB1BF962D SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1498 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND SWAP4 SWAP3 AND SWAP2 DIV PUSH5 0xFFFFFFFFFF AND PUSH1 0x0 DUP1 PUSH2 0x14EC DUP8 DUP8 DUP7 DUP9 DUP8 PUSH2 0x1E15 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x14FE DUP8 DUP8 DUP8 DUP6 DUP6 DUP9 PUSH2 0x1FCE JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10D1 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x21B7 JUMP JUMPDEST PUSH2 0x1551 PUSH2 0x28BF JUMP JUMPDEST PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 DUP3 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x7B98F4DF PUSH1 0xE1 SHL DUP2 MSTORE DUP2 MLOAD PUSH4 0xF731E9BE SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1595 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x15BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0x40 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP9 ADD SLOAD PUSH1 0x6 DUP10 ADD SLOAD DUP3 MLOAD PUSH4 0xB1BF962D PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 MLOAD PUSH2 0x1663 SWAP5 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0xB1BF962D SWAP3 PUSH1 0x4 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1645 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x165B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH2 0x2211 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0x29DB497D SWAP3 DUP10 SWAP3 DUP10 SWAP3 DUP10 SWAP3 DUP10 SWAP3 SWAP2 SWAP1 PUSH2 0x169E DUP16 PUSH2 0x22C2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1715 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1729 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x173F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD PUSH1 0xA0 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD DUP3 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x2 DUP4 MSTORE PUSH2 0x3533 PUSH1 0xF0 SHL SWAP1 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB LT ISZERO PUSH2 0x17CA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3535 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB LT ISZERO PUSH2 0x183F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0xD4D PUSH1 0xF2 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB LT ISZERO PUSH2 0x18B4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP PUSH1 0x60 DUP2 DUP2 ADD MLOAD PUSH1 0x2 DUP9 ADD DUP1 SLOAD PUSH1 0x80 DUP1 DUP7 ADD MLOAD PUSH1 0x3 DUP13 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP6 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP3 SSTORE PUSH1 0xA0 DUP1 DUP11 ADD MLOAD SWAP2 SWAP1 SWAP6 AND DUP3 DUP9 AND OR DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL DUP3 DUP5 AND DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP7 SSTORE PUSH1 0x1 DUP15 ADD SLOAD PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE PUSH1 0x20 DUP10 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP8 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 DUP3 AND SWAP8 DUP8 ADD SWAP8 SWAP1 SWAP8 MSTORE SWAP4 SWAP1 SWAP6 DIV SWAP1 SWAP3 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP3 PUSH32 0x804C9B842B2748A22BB64B345453A3DE7CA54A6CA45CE00D415894979E22897A SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3737 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x80 DUP4 LT PUSH2 0x19E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP DUP2 PUSH1 0x2 MUL PUSH1 0x1 ADD DUP2 PUSH2 0x19F8 JUMPI PUSH1 0x0 PUSH2 0x19FB JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 SHL DUP3 PUSH1 0x2 MUL PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SHL NOT DUP5 PUSH1 0x0 ADD SLOAD AND OR DUP4 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x1A7A SWAP1 DUP6 SWAP1 PUSH2 0x22CD JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST MLOAD ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1AF2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP POP SWAP1 MLOAD PUSH1 0x3 PUSH1 0x2 SWAP1 SWAP3 MUL SHR AND ISZERO ISZERO SWAP1 JUMP JUMPDEST SLOAD PUSH2 0xFFFF DUP1 DUP3 AND SWAP3 PUSH1 0x10 DUP4 SWAP1 SHR DUP3 AND SWAP3 PUSH1 0x20 DUP2 SWAP1 SHR DUP4 AND SWAP3 PUSH1 0x30 DUP3 SWAP1 SHR PUSH1 0xFF AND SWAP3 PUSH1 0x40 SWAP3 SWAP1 SWAP3 SHR AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1B9C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP POP DUP2 MLOAD PUSH1 0x1 PUSH1 0x2 DUP4 MUL DUP2 ADD SWAP2 SWAP1 SWAP2 SHR AND ISZERO ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1BC4 JUMPI POP PUSH1 0x0 PUSH2 0x10D4 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1BD1 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x10D1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x296F PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10D1 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x2485 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1CBD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP POP SWAP1 MLOAD PUSH1 0x1 PUSH1 0x2 SWAP1 SWAP3 MUL SHR AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1CDF JUMPI POP PUSH1 0x0 NOT PUSH2 0x1CF6 JUMP JUMPDEST PUSH2 0x1CF3 DUP4 PUSH2 0x1CED DUP7 DUP6 PUSH2 0x10DA JUMP JUMPDEST SWAP1 PUSH2 0x24EA JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SLOAD PUSH8 0x100000000000000 AND ISZERO ISZERO SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x10 SHR PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x30 SHR PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x1D8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH2 0x2710 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x1DFC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP DUP3 DUP2 PUSH2 0x2710 DUP7 MUL ADD DUP2 PUSH2 0x1E0C JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP6 ADD SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP6 DUP6 DUP3 ISZERO PUSH2 0x1F9F JUMPI PUSH1 0x0 PUSH2 0x1E3C DUP5 DUP9 PUSH2 0x25E0 JUMP JUMPDEST SWAP1 POP PUSH2 0x1E48 DUP2 DUP11 PUSH2 0x2211 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3531 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 GT ISZERO PUSH2 0x1EBA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP PUSH1 0x1 DUP12 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND OR SWAP1 SSTORE DUP10 ISZERO PUSH2 0x1F9D JUMPI PUSH1 0x2 DUP12 ADD SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1F00 SWAP1 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP10 PUSH2 0x2626 JUMP JUMPDEST SWAP1 POP PUSH2 0x1F0C DUP2 DUP11 PUSH2 0x2211 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1A99 PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 GT ISZERO PUSH2 0x1F7E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP POP PUSH1 0x1 DUP12 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP6 AND PUSH1 0x1 PUSH1 0x80 SHL MUL SWAP2 AND OR SWAP1 SSTORE JUMPDEST POP JUMPDEST PUSH1 0x3 SWAP10 SWAP1 SWAP10 ADD DUP1 SLOAD PUSH5 0xFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL TIMESTAMP PUSH5 0xFFFFFFFFFF AND MUL OR SWAP1 SSTORE SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1FD6 PUSH2 0x290D JUMP JUMPDEST PUSH2 0x1FDF DUP8 PUSH2 0x22C2 JUMP JUMPDEST PUSH2 0x120 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x1FF1 JUMPI POP PUSH2 0x21AF JUMP JUMPDEST DUP7 PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x79774338 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2041 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2055 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x206B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 SWAP1 SWAP5 ADD MLOAD PUSH5 0xFFFFFFFFFF AND PUSH2 0x140 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 DUP4 MSTORE SWAP1 DUP3 ADD MSTORE PUSH2 0x20A5 DUP7 DUP7 PUSH2 0x2211 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x20B4 DUP7 DUP5 PUSH2 0x2211 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH2 0x140 DUP3 ADD MLOAD PUSH2 0x20D6 SWAP2 SWAP1 PUSH5 0xFFFFFFFFFF DUP6 AND PUSH2 0x262F JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x20EB SWAP2 PUSH2 0x2211 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD DUP3 MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH2 0x2116 SWAP4 SWAP3 PUSH2 0x2110 SWAP3 SWAP1 SWAP2 DUP4 SWAP2 PUSH2 0x1077 JUMP JUMPDEST SWAP1 PUSH2 0x1507 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD MLOAD PUSH2 0x212D SWAP2 SWAP1 PUSH2 0x10DA JUMP JUMPDEST PUSH2 0x100 DUP3 ADD DUP2 SWAP1 MSTORE ISZERO PUSH2 0x14FE JUMPI PUSH1 0x4 DUP1 DUP9 ADD SLOAD PUSH2 0x100 DUP4 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x7DF5BD3B PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x24 DUP4 ADD DUP8 SWAP1 MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x7DF5BD3B SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x21A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x2209 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x221E JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x222B JUMPI POP PUSH1 0x0 PUSH2 0x10D4 JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x2241 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x22AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP PUSH12 0x33B2E3C9FD0803CE8000000 PUSH1 0x2 DUP2 PUSH2 0x11B0 JUMP JUMPDEST SLOAD PUSH1 0x40 SHR PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x22DF DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2705 JUMP JUMPDEST PUSH2 0x2330 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x236E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x234F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x23D0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x23D5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x242C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1A7A JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1A7A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2990 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x24D4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x24E0 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x2552 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH8 0xDE0B6B3A7640000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x25CA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP DUP3 DUP2 PUSH8 0xDE0B6B3A7640000 DUP7 MUL ADD DUP2 PUSH2 0x1E0C JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x25F4 TIMESTAMP PUSH5 0xFFFFFFFFFF DUP6 AND PUSH2 0x1507 JUMP JUMPDEST SWAP1 POP PUSH2 0x261E PUSH2 0x2601 PUSH2 0x273E JUMP JUMPDEST PUSH4 0x1E13380 PUSH2 0x2610 DUP8 DUP6 PUSH2 0x1BB5 JUMP JUMPDEST DUP2 PUSH2 0x2617 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x1077 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10D1 DUP4 DUP4 TIMESTAMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2643 DUP4 PUSH5 0xFFFFFFFFFF DUP7 AND PUSH2 0x1507 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x265A JUMPI PUSH2 0x2652 PUSH2 0x273E JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1CF6 JUMP JUMPDEST PUSH1 0x0 NOT DUP2 ADD PUSH1 0x0 PUSH1 0x2 DUP4 GT PUSH2 0x2670 JUMPI PUSH1 0x0 PUSH2 0x2675 JUMP JUMPDEST PUSH1 0x2 DUP4 SUB JUMPDEST SWAP1 POP PUSH4 0x1E13380 DUP8 DIV PUSH1 0x0 PUSH2 0x268A DUP3 DUP1 PUSH2 0x2211 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2698 DUP3 DUP5 PUSH2 0x2211 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x2 PUSH2 0x26AC DUP5 PUSH2 0x13B2 DUP11 DUP11 PUSH2 0x1BB5 JUMP JUMPDEST DUP2 PUSH2 0x26B3 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x6 PUSH2 0x26CA DUP5 PUSH2 0x13B2 DUP10 DUP2 DUP14 DUP14 PUSH2 0x1BB5 JUMP JUMPDEST DUP2 PUSH2 0x26D1 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x26F5 DUP2 PUSH2 0x26EF DUP5 DUP2 PUSH2 0x26E7 DUP11 DUP15 PUSH2 0x1BB5 JUMP JUMPDEST PUSH2 0x26EF PUSH2 0x273E JUMP JUMPDEST SWAP1 PUSH2 0x1077 JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x261E JUMPI POP POP ISZERO ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x220 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x27D4 JUMPI INVALID JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x240 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x160 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH5 0xFFFFFFFFFF AND DUP2 MSTORE POP SWAP1 JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77536166654552433230 GASPRICE KECCAK256 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x756363656564A26469706673582212200B16E2A6 PUSH26 0x479D533D21A835EBFAD524B7BA3C127E8B3C592AB424145DC496 PUSH7 0x64736F6C634300 MOD 0xC STOP CALLER ",
              "sourceMap": "1657:10674:69:-:0;;;926:1:74;884:43;;1657:10674:69;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061002a5760003560e01c8062a718a91461002f575b600080fd5b610073600480360360a081101561004557600080fd5b506001600160a01b0381358116916020810135821691604082013516906060810135906080013515156100f2565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156100b657818101518382015260200161009e565b50505050905090810190601f1680156100e35780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b6001600160a01b0380861660009081526035602090815260408083208885168452818420948816845260369092528220919260609261012f61274e565b6040805160208082018352845482526038546034548451631f94a27560e31b815294516101c1958f95603595909460379490936001600160a01b039091169263fca513a8926004808301939192829003018186803b15801561019057600080fd5b505afa1580156101a4573d6000803e3d6000fd5b505050506040513d60208110156101ba57600080fd5b5051610971565b610140860152506101d892508b9150859050610e37565b60408301819052602083018290526101408301516101fd928792879287929091610f3a565b6102008301526101e08201819052600090600981111561021957fe5b600981111561022457fe5b1461024257806101e001518161020001519550955050505050610967565b6004808501546001600160a01b039081166101808401819052604080516370a0823160e01b8152928d169383019390935291516370a0823191602480820192602092909190829003018186803b15801561029b57600080fd5b505afa1580156102af573d6000803e3d6000fd5b505050506040513d60208110156102c557600080fd5b50518152604081015160208201516102ea91611388916102e491611077565b906110da565b6060820181905288116102fd5787610303565b80606001515b60808201819052815161031e91869186918f918f91906111c4565b6101208301819052610100830191909152608082015111156103465761012081015160808201525b866104085760008b6001600160a01b03166370a082318361018001516040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561039f57600080fd5b505afa1580156103b3573d6000803e3d6000fd5b505050506040513d60208110156103c957600080fd5b505161010083015190915081101561040657600560405180604001604052806002815260200161343560f01b815250965096505050505050610967565b505b6104118361143d565b80608001518160400151106104b45760068301546080820151600185015460408051637a94c56560e11b81526001600160a01b038e811660048301526024820194909452600160801b9092046001600160801b0316604483015251919092169163f5298aca91606480830192600092919082900301818387803b15801561049757600080fd5b505af11580156104ab573d6000803e3d6000fd5b505050506105d8565b60408101511561054d57600683015460408281015160018601548251637a94c56560e11b81526001600160a01b038e811660048301526024820193909352600160801b9091046001600160801b03166044820152915192169163f5298aca9160648082019260009290919082900301818387803b15801561053457600080fd5b505af1158015610548573d6000803e3d6000fd5b505050505b6005830154604082015160808301516001600160a01b0390921691639dc29fac918c9161057991611507565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156105bf57600080fd5b505af11580156105d3573d6000803e3d6000fd5b505050505b600483015460808201516105fb9185918d916001600160a01b0316906000611549565b8615610777578061018001516001600160a01b03166370a08231336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561065357600080fd5b505afa158015610667573d6000803e3d6000fd5b505050506040513d602081101561067d57600080fd5b50516101608201526101808101516101008201516040805163f866c31960e01b81526001600160a01b038d8116600483015233602483015260448201939093529051919092169163f866c31991606480830192600092919082900301818387803b1580156106ea57600080fd5b505af11580156106fe573d6000803e3d6000fd5b505050508061016001516000141561077257336000908152603660205260409020600785015461073b908290600160a01b900460ff16600161197c565b60405133906001600160a01b038e16907e058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f290600090a3505b61082f565b6107808461143d565b61018081015161010082015161079d9186918e9190600090611549565b610180810151610100820151600186015460408051636b81068560e11b81526001600160a01b038e8116600483015233602483015260448201949094526001600160801b03909216606483015251919092169163d7020d0a91608480830192600092919082900301818387803b15801561081657600080fd5b505af115801561082a573d6000803e3d6000fd5b505050505b8051610100820151141561089a576007840154610859908390600160a01b900460ff16600061197c565b886001600160a01b03168b6001600160a01b03167f44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd60405160405180910390a35b600483015460808201516108c0916001600160a01b038d81169233929190911690611a20565b886001600160a01b03168a6001600160a01b03168c6001600160a01b03167fe413a321e8681d831f4dbccbca790d2952b56f977908e45be37335533e0052868460800151856101000151338d60405180858152602001848152602001836001600160a01b03168152602001821515815260200194505050505060405180910390a46000604051806040016040528060028152602001611a1b60f11b81525095509550505050505b9550959350505050565b60008060008060006109816127e8565b61098a8a611a80565b156109a8576000806000806000199550955095509550955050610e29565b600060e08201525b878160e001511015610d885760e08101516109cc908b90611a85565b6109d557610d78565b60e0810151600090815260208a81526040808320546001600160a01b03166101e085018190528352908d90529020610a0c81611b04565b506080860181905260c08601929092525060a0840191909152600a0a6020808401919091526101e08301516040805163b3596f0760e01b81526001600160a01b0392831660048201529051918b169263b3596f0792602480840193829003018186803b158015610a7b57600080fd5b505afa158015610a8f573d6000803e3d6000fd5b505050506040513d6020811015610aa557600080fd5b5051825260c082015115801590610ac7575060e0820151610ac7908c90611b2f565b15610be8578060040160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610b3057600080fd5b505afa158015610b44573d6000803e3d6000fd5b505050506040513d6020811015610b5a57600080fd5b50516040830181905260208301518351600092610b819291610b7b91611bb5565b90611c0e565b610120840151909150610b949082611077565b61012084015260a0830151610bba90610bae908390611bb5565b61016085015190611077565b61016084015260c0830151610be090610bd4908390611bb5565b61018085015190611077565b610180840152505b60e0820151610bf8908c90611c50565b15610d76578060050160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610c6157600080fd5b505afa158015610c75573d6000803e3d6000fd5b505050506040513d6020811015610c8b57600080fd5b8101908080519060200190929190505050826060018181525050610d438160060160009054906101000a90046001600160a01b03166001600160a01b03166370a082318f6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610d0c57600080fd5b505afa158015610d20573d6000803e3d6000fd5b505050506040513d6020811015610d3657600080fd5b5051606084015190611077565b6060830181905260208301518351610d6f92610d639291610b7b91611bb5565b61014084015190611077565b6101408301525b505b60e08101805160010190526109b0565b600081610120015111610d9c576000610db1565b610120810151610160820151610db191611c0e565b610160820152610120810151610dc8576000610ddd565b610120810151610180820151610ddd91611c0e565b6101808201819052610120820151610140830151610dfa92611ccf565b610100820181905261012082015161014083015161016084015161018090940151919850965091945090925090505b965096509650965096915050565b6005810154604080516370a0823160e01b81526001600160a01b0385811660048301529151600093849316916370a08231916024808301926020929190829003018186803b158015610e8857600080fd5b505afa158015610e9c573d6000803e3d6000fd5b505050506040513d6020811015610eb257600080fd5b50516006840154604080516370a0823160e01b81526001600160a01b038881166004830152915191909216916370a08231916024808301926020929190829003018186803b158015610f0357600080fd5b505afa158015610f17573d6000803e3d6000fd5b505050506040513d6020811015610f2d57600080fd5b5051909590945092505050565b60006060610f4788611cfd565b1580610f595750610f5787611cfd565b155b15610f805750506040805180820190915260018152601960f91b602082015260069061106c565b670de0b6b3a76400008510610fb25750506040805180820190915260028152611a1960f11b602082015260049061106c565b600080610fbe8a611d0d565b118015610fed57506007890154604080516020810190915288548152610fed91600160a01b900460ff16611b2f565b90508061101757505060408051808201909152600280825261343360f01b6020830152915061106c565b84158015611023575083155b1561104c5750506040805180820190915260028152610d0d60f21b60208201526003915061106c565b50506040805180820190915260028152611a1b60f11b6020820152600091505b965096945050505050565b6000828201838110156110d1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b60008215806110e7575081155b156110f4575060006110d4565b81611388198161110057fe5b0483111560405180604001604052806002815260200161068760f31b815250906111a85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561116d578181015183820152602001611155565b50505050905090810190601f16801561119a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506127106002815b0483850201816111bc57fe5b049392505050565b6000806000806000603460009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561121a57600080fd5b505afa15801561122e573d6000803e3d6000fd5b505050506040513d602081101561124457600080fd5b50519050611250612882565b816001600160a01b031663b3596f078b6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561129d57600080fd5b505afa1580156112b1573d6000803e3d6000fd5b505050506040513d60208110156112c757600080fd5b5051604080830191909152805163b3596f0760e01b81526001600160a01b038b8116600483015291519184169163b3596f0791602480820192602092909190829003018186803b15801561131a57600080fd5b505afa15801561132e573d6000803e3d6000fd5b505050506040513d602081101561134457600080fd5b505160608201526113548c611b04565b5060c085015260208401525061136b90508b611d18565b60a0820181905260408201516113b8916113889190600a0a611bb5565b610b7b83602001516102e48560c00151600a0a6113b28e8860600151611bb590919063ffffffff16565b90611bb5565b608082018190528710156114215786935061141a81602001516114146113f28460c00151600a0a8560600151611bb590919063ffffffff16565b610b7b8560a00151600a0a6113b28a8860400151611bb590919063ffffffff16565b90611d22565b925061142c565b806080015193508792505b50919a909950975050505050505050565b60068101546040805163b1bf962d60e01b815290516000926001600160a01b03169163b1bf962d916004808301926020929190829003018186803b15801561148457600080fd5b505afa158015611498573d6000803e3d6000fd5b505050506040513d60208110156114ae57600080fd5b505160018301546003840154919250600160801b8082046001600160801b03908116939216910464ffffffffff166000806114ec8787868887611e15565b915091506114fe878787858588611fce565b50505050505050565b60006110d183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121b7565b6115516128bf565b60058601546001600160a01b031680825260408051637b98f4df60e11b8152815163f731e9be92600480840193919291829003018186803b15801561159557600080fd5b505afa1580156115a9573d6000803e3d6000fd5b505050506040513d60408110156115bf57600080fd5b50805160209182015160c084015260408084019190915260018801546006890154825163b1bf962d60e01b8152925161166394600160801b9093046001600160801b0316936001600160a01b039092169263b1bf962d9260048082019391829003018186803b15801561163157600080fd5b505afa158015611645573d6000803e3d6000fd5b505050506040513d602081101561165b57600080fd5b505190612211565b60e082018190526007870154604083015160c08401516001600160a01b03909216926329db497d928992899289928992919061169e8f6122c2565b6040518963ffffffff1660e01b815260040180896001600160a01b03168152602001886001600160a01b031681526020018781526020018681526020018581526020018481526020018381526020018281526020019850505050505050505060606040518083038186803b15801561171557600080fd5b505afa158015611729573d6000803e3d6000fd5b505050506040513d606081101561173f57600080fd5b50805160208083015160409384015160a086015260808501526060840182905282518084019093526002835261353360f01b908301526001600160801b0310156117ca5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b506080810151604080518082019091526002815261353560f01b6020820152906001600160801b03101561183f5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5060a08101516040805180820190915260028152610d4d60f21b6020820152906001600160801b0310156118b45760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5060608181015160028801805460808086015160038c0180546001600160801b03199081166001600160801b038085169190911790925560a0808a015191909516828816178216600160801b82841681029190911790965560018e01546040805198895260208901949094528784019190915280821697870197909752939095049092169183019190915291516001600160a01b038816927f804c9b842b2748a22bb64b345453a3de7ca54a6ca45ce00d415894979e22897a928290030190a2505050505050565b604080518082019091526002815261373760f01b6020820152608083106119e45760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5081600202600101816119f85760006119fb565b60015b60ff16901b826002026001016001901b19846000015416178360000181905550505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611a7a9085906122cd565b50505050565b511590565b60006080821060405180604001604052806002815260200161373760f01b81525090611af25760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b50509051600360029092021c16151590565b5461ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b60006080821060405180604001604052806002815260200161373760f01b81525090611b9c5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5050815160016002830281019190911c16151592915050565b600082611bc4575060006110d4565b82820282848281611bd157fe5b04146110d15760405162461bcd60e51b815260040180806020018281038252602181526020018061296f6021913960400191505060405180910390fd5b60006110d183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612485565b60006080821060405180604001604052806002815260200161373760f01b81525090611cbd5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b50509051600160029092021c16151590565b600082611cdf5750600019611cf6565b611cf383611ced86856110da565b906124ea565b90505b9392505050565b5467010000000000000016151590565b5460101c61ffff1690565b5460301c60ff1690565b604080518082019091526002815261035360f41b602082015260009082611d8a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5060408051808201909152600280825261068760f31b6020830152830490612710821904851115611dfc5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b50828161271086020181611e0c57fe5b04949350505050565b600285015460009081906001600160801b031685858215611f9f576000611e3c84886125e0565b9050611e48818a612211565b604080518082019091526002815261353160f01b60208201529093506001600160801b03841115611eba5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5060018b0180546001600160801b0319166001600160801b0385161790558915611f9d5760028b0154600090611f0090600160801b90046001600160801b031689612626565b9050611f0c818a612211565b6040805180820190915260028152611a9960f11b60208201529093506001600160801b03841115611f7e5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b505060018b0180546001600160801b03808516600160801b0291161790555b505b600399909901805464ffffffffff60801b1916600160801b4264ffffffffff1602179055989650505050505050565b611fd661290d565b611fdf876122c2565b6101208201819052611ff157506121af565b8660050160009054906101000a90046001600160a01b03166001600160a01b031663797743386040518163ffffffff1660e01b815260040160806040518083038186803b15801561204157600080fd5b505afa158015612055573d6000803e3d6000fd5b505050506040513d608081101561206b57600080fd5b508051602080830151604084015160609094015164ffffffffff1661014086015260a0850193909352918352908201526120a58686612211565b60808201526120b48684612211565b606082015260a08101516101408201516120d6919064ffffffffff851661262f565b60c0820181905260208201516120eb91612211565b6040820181905260808201518251606084015161211693926121109290918391611077565b90611507565b60e0820181905261012082015161212d91906110da565b6101008201819052156114fe5760048088015461010083015160408051637df5bd3b60e01b81529384019190915260248301879052516001600160a01b0390911691637df5bd3b91604480830192600092919082900301818387803b15801561219557600080fd5b505af11580156121a9573d6000803e3d6000fd5b50505050505b505050505050565b600081848411156122095760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b505050900390565b600082158061221e575081155b1561222b575060006110d4565b816b019d971e4fe8401e74000000198161224157fe5b0483111560405180604001604052806002815260200161068760f31b815250906122ac5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b506b033b2e3c9fd0803ce80000006002816111b0565b5460401c61ffff1690565b6122df826001600160a01b0316612705565b612330576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b6020831061236e5780518252601f19909201916020918201910161234f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146123d0576040519150601f19603f3d011682016040523d82523d6000602084013e6123d5565b606091505b50915091508161242c576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611a7a5780806020019051602081101561244857600080fd5b5051611a7a5760405162461bcd60e51b815260040180806020018281038252602a815260200180612990602a913960400191505060405180910390fd5b600081836124d45760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5060008385816124e057fe5b0495945050505050565b604080518082019091526002815261035360f41b6020820152600090826125525760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5060408051808201909152600280825261068760f31b6020830152830490670de0b6b3a76400008219048511156125ca5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b508281670de0b6b3a764000086020181611e0c57fe5b6000806125f44264ffffffffff8516611507565b905061261e61260161273e565b6301e133806126108785611bb5565b8161261757fe5b0490611077565b949350505050565b60006110d18383425b6000806126438364ffffffffff8616611507565b90508061265a5761265261273e565b915050611cf6565b6000198101600060028311612670576000612675565b600283035b90506301e133808704600061268a8280612211565b905060006126988284612211565b9050600060026126ac846113b28a8a611bb5565b816126b357fe5b049050600060066126ca846113b289818d8d611bb5565b816126d157fe5b0490506126f5816126ef84816126e78a8e611bb5565b6126ef61273e565b90611077565b9c9b505050505050505050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061261e575050151592915050565b6b033b2e3c9fd0803ce800000090565b60405180610220016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b03168152602001600015158152602001600060028111156127d457fe5b815260200160008152602001606081525090565b604051806102400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b031681526020016000151581526020016000151581525090565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180610100016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600064ffffffffff168152509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212200b16e2a679479d533d21a835ebfad524b7ba3c127e8b3c592ab424145dc4966664736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0xA718A9 EQ PUSH2 0x2F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x73 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xF2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x9E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE3 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP6 AND DUP5 MSTORE DUP2 DUP5 KECCAK256 SWAP5 DUP9 AND DUP5 MSTORE PUSH1 0x36 SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SWAP2 SWAP3 PUSH1 0x60 SWAP3 PUSH2 0x12F PUSH2 0x274E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD DUP4 MSTORE DUP5 SLOAD DUP3 MSTORE PUSH1 0x38 SLOAD PUSH1 0x34 SLOAD DUP5 MLOAD PUSH4 0x1F94A275 PUSH1 0xE3 SHL DUP2 MSTORE SWAP5 MLOAD PUSH2 0x1C1 SWAP6 DUP16 SWAP6 PUSH1 0x35 SWAP6 SWAP1 SWAP5 PUSH1 0x37 SWAP5 SWAP1 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP3 PUSH4 0xFCA513A8 SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP2 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x971 JUMP JUMPDEST PUSH2 0x140 DUP7 ADD MSTORE POP PUSH2 0x1D8 SWAP3 POP DUP12 SWAP2 POP DUP6 SWAP1 POP PUSH2 0xE37 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD DUP3 SWAP1 MSTORE PUSH2 0x140 DUP4 ADD MLOAD PUSH2 0x1FD SWAP3 DUP8 SWAP3 DUP8 SWAP3 DUP8 SWAP3 SWAP1 SWAP2 PUSH2 0xF3A JUMP JUMPDEST PUSH2 0x200 DUP4 ADD MSTORE PUSH2 0x1E0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x9 DUP2 GT ISZERO PUSH2 0x219 JUMPI INVALID JUMPDEST PUSH1 0x9 DUP2 GT ISZERO PUSH2 0x224 JUMPI INVALID JUMPDEST EQ PUSH2 0x242 JUMPI DUP1 PUSH2 0x1E0 ADD MLOAD DUP2 PUSH2 0x200 ADD MLOAD SWAP6 POP SWAP6 POP POP POP POP POP PUSH2 0x967 JUMP JUMPDEST PUSH1 0x4 DUP1 DUP6 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x180 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 DUP14 AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 MLOAD PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2AF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP2 MSTORE PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2EA SWAP2 PUSH2 0x1388 SWAP2 PUSH2 0x2E4 SWAP2 PUSH2 0x1077 JUMP JUMPDEST SWAP1 PUSH2 0x10DA JUMP JUMPDEST PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE DUP9 GT PUSH2 0x2FD JUMPI DUP8 PUSH2 0x303 JUMP JUMPDEST DUP1 PUSH1 0x60 ADD MLOAD JUMPDEST PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE DUP2 MLOAD PUSH2 0x31E SWAP2 DUP7 SWAP2 DUP7 SWAP2 DUP16 SWAP2 DUP16 SWAP2 SWAP1 PUSH2 0x11C4 JUMP JUMPDEST PUSH2 0x120 DUP4 ADD DUP2 SWAP1 MSTORE PUSH2 0x100 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP3 ADD MLOAD GT ISZERO PUSH2 0x346 JUMPI PUSH2 0x120 DUP2 ADD MLOAD PUSH1 0x80 DUP3 ADD MSTORE JUMPDEST DUP7 PUSH2 0x408 JUMPI PUSH1 0x0 DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP4 PUSH2 0x180 ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x100 DUP4 ADD MLOAD SWAP1 SWAP2 POP DUP2 LT ISZERO PUSH2 0x406 JUMPI PUSH1 0x5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3435 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP7 POP SWAP7 POP POP POP POP POP POP PUSH2 0x967 JUMP JUMPDEST POP JUMPDEST PUSH2 0x411 DUP4 PUSH2 0x143D JUMP JUMPDEST DUP1 PUSH1 0x80 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD LT PUSH2 0x4B4 JUMPI PUSH1 0x6 DUP4 ADD SLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x7A94C565 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x44 DUP4 ADD MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xF5298ACA SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x497 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4AB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x5D8 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD ISZERO PUSH2 0x54D JUMPI PUSH1 0x6 DUP4 ADD SLOAD PUSH1 0x40 DUP3 DUP2 ADD MLOAD PUSH1 0x1 DUP7 ADD SLOAD DUP3 MLOAD PUSH4 0x7A94C565 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x44 DUP3 ADD MSTORE SWAP2 MLOAD SWAP3 AND SWAP2 PUSH4 0xF5298ACA SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x534 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x548 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x9DC29FAC SWAP2 DUP13 SWAP2 PUSH2 0x579 SWAP2 PUSH2 0x1507 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5D3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x4 DUP4 ADD SLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x5FB SWAP2 DUP6 SWAP2 DUP14 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x0 PUSH2 0x1549 JUMP JUMPDEST DUP7 ISZERO PUSH2 0x777 JUMPI DUP1 PUSH2 0x180 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x653 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x667 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x67D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0x180 DUP2 ADD MLOAD PUSH2 0x100 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xF866C319 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xF866C319 SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6FE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH2 0x160 ADD MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x772 JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x7 DUP6 ADD SLOAD PUSH2 0x73B SWAP1 DUP3 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x1 PUSH2 0x197C JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 AND SWAP1 PUSH31 0x58A56EA94653CDF4F152D227ACE22D4C00AD99E2A43F58CB7D9E3FEB295F2 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP JUMPDEST PUSH2 0x82F JUMP JUMPDEST PUSH2 0x780 DUP5 PUSH2 0x143D JUMP JUMPDEST PUSH2 0x180 DUP2 ADD MLOAD PUSH2 0x100 DUP3 ADD MLOAD PUSH2 0x79D SWAP2 DUP7 SWAP2 DUP15 SWAP2 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x1549 JUMP JUMPDEST PUSH2 0x180 DUP2 ADD MLOAD PUSH2 0x100 DUP3 ADD MLOAD PUSH1 0x1 DUP7 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x6B810685 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND PUSH1 0x64 DUP4 ADD MSTORE MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0xD7020D0A SWAP2 PUSH1 0x84 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x816 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x82A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP1 MLOAD PUSH2 0x100 DUP3 ADD MLOAD EQ ISZERO PUSH2 0x89A JUMPI PUSH1 0x7 DUP5 ADD SLOAD PUSH2 0x859 SWAP1 DUP4 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x0 PUSH2 0x197C JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x44C58D81365B66DD4B1A7F36C25AA97B8C71C361EE4937ADC1A00000227DB5DD PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST PUSH1 0x4 DUP4 ADD SLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x8C0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND SWAP3 CALLER SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH2 0x1A20 JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xE413A321E8681D831F4DBCCBCA790D2952B56F977908E45BE37335533E005286 DUP5 PUSH1 0x80 ADD MLOAD DUP6 PUSH2 0x100 ADD MLOAD CALLER DUP14 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A1B PUSH1 0xF1 SHL DUP2 MSTORE POP SWAP6 POP SWAP6 POP POP POP POP POP JUMPDEST SWAP6 POP SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x981 PUSH2 0x27E8 JUMP JUMPDEST PUSH2 0x98A DUP11 PUSH2 0x1A80 JUMP JUMPDEST ISZERO PUSH2 0x9A8 JUMPI PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 NOT SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP POP PUSH2 0xE29 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 ADD MSTORE JUMPDEST DUP8 DUP2 PUSH1 0xE0 ADD MLOAD LT ISZERO PUSH2 0xD88 JUMPI PUSH1 0xE0 DUP2 ADD MLOAD PUSH2 0x9CC SWAP1 DUP12 SWAP1 PUSH2 0x1A85 JUMP JUMPDEST PUSH2 0x9D5 JUMPI PUSH2 0xD78 JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP11 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E0 DUP6 ADD DUP2 SWAP1 MSTORE DUP4 MSTORE SWAP1 DUP14 SWAP1 MSTORE SWAP1 KECCAK256 PUSH2 0xA0C DUP2 PUSH2 0x1B04 JUMP JUMPDEST POP PUSH1 0x80 DUP7 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP7 ADD SWAP3 SWAP1 SWAP3 MSTORE POP PUSH1 0xA0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA EXP PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x1E0 DUP4 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xB3596F07 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 DUP12 AND SWAP3 PUSH4 0xB3596F07 SWAP3 PUSH1 0x24 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA8F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 MSTORE PUSH1 0xC0 DUP3 ADD MLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0xAC7 JUMPI POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0xAC7 SWAP1 DUP13 SWAP1 PUSH2 0x1B2F JUMP JUMPDEST ISZERO PUSH2 0xBE8 JUMPI DUP1 PUSH1 0x4 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB44 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD MLOAD DUP4 MLOAD PUSH1 0x0 SWAP3 PUSH2 0xB81 SWAP3 SWAP2 PUSH2 0xB7B SWAP2 PUSH2 0x1BB5 JUMP JUMPDEST SWAP1 PUSH2 0x1C0E JUMP JUMPDEST PUSH2 0x120 DUP5 ADD MLOAD SWAP1 SWAP2 POP PUSH2 0xB94 SWAP1 DUP3 PUSH2 0x1077 JUMP JUMPDEST PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH2 0xBBA SWAP1 PUSH2 0xBAE SWAP1 DUP4 SWAP1 PUSH2 0x1BB5 JUMP JUMPDEST PUSH2 0x160 DUP6 ADD MLOAD SWAP1 PUSH2 0x1077 JUMP JUMPDEST PUSH2 0x160 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD MLOAD PUSH2 0xBE0 SWAP1 PUSH2 0xBD4 SWAP1 DUP4 SWAP1 PUSH2 0x1BB5 JUMP JUMPDEST PUSH2 0x180 DUP6 ADD MLOAD SWAP1 PUSH2 0x1077 JUMP JUMPDEST PUSH2 0x180 DUP5 ADD MSTORE POP JUMPDEST PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0xBF8 SWAP1 DUP13 SWAP1 PUSH2 0x1C50 JUMP JUMPDEST ISZERO PUSH2 0xD76 JUMPI DUP1 PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC75 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP3 PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP PUSH2 0xD43 DUP2 PUSH1 0x6 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP16 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD20 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 DUP5 ADD MLOAD SWAP1 PUSH2 0x1077 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD MLOAD DUP4 MLOAD PUSH2 0xD6F SWAP3 PUSH2 0xD63 SWAP3 SWAP2 PUSH2 0xB7B SWAP2 PUSH2 0x1BB5 JUMP JUMPDEST PUSH2 0x140 DUP5 ADD MLOAD SWAP1 PUSH2 0x1077 JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE JUMPDEST POP JUMPDEST PUSH1 0xE0 DUP2 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE PUSH2 0x9B0 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x120 ADD MLOAD GT PUSH2 0xD9C JUMPI PUSH1 0x0 PUSH2 0xDB1 JUMP JUMPDEST PUSH2 0x120 DUP2 ADD MLOAD PUSH2 0x160 DUP3 ADD MLOAD PUSH2 0xDB1 SWAP2 PUSH2 0x1C0E JUMP JUMPDEST PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0x120 DUP2 ADD MLOAD PUSH2 0xDC8 JUMPI PUSH1 0x0 PUSH2 0xDDD JUMP JUMPDEST PUSH2 0x120 DUP2 ADD MLOAD PUSH2 0x180 DUP3 ADD MLOAD PUSH2 0xDDD SWAP2 PUSH2 0x1C0E JUMP JUMPDEST PUSH2 0x180 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD MLOAD PUSH2 0x140 DUP4 ADD MLOAD PUSH2 0xDFA SWAP3 PUSH2 0x1CCF JUMP JUMPDEST PUSH2 0x100 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD MLOAD PUSH2 0x140 DUP4 ADD MLOAD PUSH2 0x160 DUP5 ADD MLOAD PUSH2 0x180 SWAP1 SWAP5 ADD MLOAD SWAP2 SWAP9 POP SWAP7 POP SWAP2 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 DUP2 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE9C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x6 DUP5 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF17 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0xF47 DUP9 PUSH2 0x1CFD JUMP JUMPDEST ISZERO DUP1 PUSH2 0xF59 JUMPI POP PUSH2 0xF57 DUP8 PUSH2 0x1CFD JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0xF80 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x19 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x6 SWAP1 PUSH2 0x106C JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP6 LT PUSH2 0xFB2 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1A19 PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x4 SWAP1 PUSH2 0x106C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xFBE DUP11 PUSH2 0x1D0D JUMP JUMPDEST GT DUP1 ISZERO PUSH2 0xFED JUMPI POP PUSH1 0x7 DUP10 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE DUP9 SLOAD DUP2 MSTORE PUSH2 0xFED SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1B2F JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1017 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x3433 PUSH1 0xF0 SHL PUSH1 0x20 DUP4 ADD MSTORE SWAP2 POP PUSH2 0x106C JUMP JUMPDEST DUP5 ISZERO DUP1 ISZERO PUSH2 0x1023 JUMPI POP DUP4 ISZERO JUMPDEST ISZERO PUSH2 0x104C JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0xD0D PUSH1 0xF2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x3 SWAP2 POP PUSH2 0x106C JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1A1B PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 POP JUMPDEST SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x10D1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x10E7 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x10F4 JUMPI POP PUSH1 0x0 PUSH2 0x10D4 JUMP JUMPDEST DUP2 PUSH2 0x1388 NOT DUP2 PUSH2 0x1100 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x11A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x119A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x2710 PUSH1 0x2 DUP2 JUMPDEST DIV DUP4 DUP6 MUL ADD DUP2 PUSH2 0x11BC JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x34 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFCA513A8 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x121A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x122E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x1250 PUSH2 0x2882 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB3596F07 DUP12 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x129D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD PUSH4 0xB3596F07 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP5 AND SWAP2 PUSH4 0xB3596F07 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x131A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x132E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x1354 DUP13 PUSH2 0x1B04 JUMP JUMPDEST POP PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0x20 DUP5 ADD MSTORE POP PUSH2 0x136B SWAP1 POP DUP12 PUSH2 0x1D18 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x13B8 SWAP2 PUSH2 0x1388 SWAP2 SWAP1 PUSH1 0xA EXP PUSH2 0x1BB5 JUMP JUMPDEST PUSH2 0xB7B DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x2E4 DUP6 PUSH1 0xC0 ADD MLOAD PUSH1 0xA EXP PUSH2 0x13B2 DUP15 DUP9 PUSH1 0x60 ADD MLOAD PUSH2 0x1BB5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x1BB5 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE DUP8 LT ISZERO PUSH2 0x1421 JUMPI DUP7 SWAP4 POP PUSH2 0x141A DUP2 PUSH1 0x20 ADD MLOAD PUSH2 0x1414 PUSH2 0x13F2 DUP5 PUSH1 0xC0 ADD MLOAD PUSH1 0xA EXP DUP6 PUSH1 0x60 ADD MLOAD PUSH2 0x1BB5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0xB7B DUP6 PUSH1 0xA0 ADD MLOAD PUSH1 0xA EXP PUSH2 0x13B2 DUP11 DUP9 PUSH1 0x40 ADD MLOAD PUSH2 0x1BB5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x1D22 JUMP JUMPDEST SWAP3 POP PUSH2 0x142C JUMP JUMPDEST DUP1 PUSH1 0x80 ADD MLOAD SWAP4 POP DUP8 SWAP3 POP JUMPDEST POP SWAP2 SWAP11 SWAP1 SWAP10 POP SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x6 DUP2 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xB1BF962D PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xB1BF962D SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1498 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND SWAP4 SWAP3 AND SWAP2 DIV PUSH5 0xFFFFFFFFFF AND PUSH1 0x0 DUP1 PUSH2 0x14EC DUP8 DUP8 DUP7 DUP9 DUP8 PUSH2 0x1E15 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x14FE DUP8 DUP8 DUP8 DUP6 DUP6 DUP9 PUSH2 0x1FCE JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10D1 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x21B7 JUMP JUMPDEST PUSH2 0x1551 PUSH2 0x28BF JUMP JUMPDEST PUSH1 0x5 DUP7 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 DUP3 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x7B98F4DF PUSH1 0xE1 SHL DUP2 MSTORE DUP2 MLOAD PUSH4 0xF731E9BE SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1595 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x15BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0x40 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP9 ADD SLOAD PUSH1 0x6 DUP10 ADD SLOAD DUP3 MLOAD PUSH4 0xB1BF962D PUSH1 0xE0 SHL DUP2 MSTORE SWAP3 MLOAD PUSH2 0x1663 SWAP5 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0xB1BF962D SWAP3 PUSH1 0x4 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1645 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x165B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH2 0x2211 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x7 DUP8 ADD SLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0x29DB497D SWAP3 DUP10 SWAP3 DUP10 SWAP3 DUP10 SWAP3 DUP10 SWAP3 SWAP2 SWAP1 PUSH2 0x169E DUP16 PUSH2 0x22C2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1715 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1729 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x173F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD PUSH1 0xA0 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD DUP3 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x2 DUP4 MSTORE PUSH2 0x3533 PUSH1 0xF0 SHL SWAP1 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB LT ISZERO PUSH2 0x17CA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3535 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB LT ISZERO PUSH2 0x183F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0xD4D PUSH1 0xF2 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB LT ISZERO PUSH2 0x18B4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP PUSH1 0x60 DUP2 DUP2 ADD MLOAD PUSH1 0x2 DUP9 ADD DUP1 SLOAD PUSH1 0x80 DUP1 DUP7 ADD MLOAD PUSH1 0x3 DUP13 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP6 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP3 SSTORE PUSH1 0xA0 DUP1 DUP11 ADD MLOAD SWAP2 SWAP1 SWAP6 AND DUP3 DUP9 AND OR DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL DUP3 DUP5 AND DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP7 SSTORE PUSH1 0x1 DUP15 ADD SLOAD PUSH1 0x40 DUP1 MLOAD SWAP9 DUP10 MSTORE PUSH1 0x20 DUP10 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP8 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 DUP3 AND SWAP8 DUP8 ADD SWAP8 SWAP1 SWAP8 MSTORE SWAP4 SWAP1 SWAP6 DIV SWAP1 SWAP3 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP3 PUSH32 0x804C9B842B2748A22BB64B345453A3DE7CA54A6CA45CE00D415894979E22897A SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3737 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x80 DUP4 LT PUSH2 0x19E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP DUP2 PUSH1 0x2 MUL PUSH1 0x1 ADD DUP2 PUSH2 0x19F8 JUMPI PUSH1 0x0 PUSH2 0x19FB JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 SHL DUP3 PUSH1 0x2 MUL PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SHL NOT DUP5 PUSH1 0x0 ADD SLOAD AND OR DUP4 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x1A7A SWAP1 DUP6 SWAP1 PUSH2 0x22CD JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST MLOAD ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1AF2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP POP SWAP1 MLOAD PUSH1 0x3 PUSH1 0x2 SWAP1 SWAP3 MUL SHR AND ISZERO ISZERO SWAP1 JUMP JUMPDEST SLOAD PUSH2 0xFFFF DUP1 DUP3 AND SWAP3 PUSH1 0x10 DUP4 SWAP1 SHR DUP3 AND SWAP3 PUSH1 0x20 DUP2 SWAP1 SHR DUP4 AND SWAP3 PUSH1 0x30 DUP3 SWAP1 SHR PUSH1 0xFF AND SWAP3 PUSH1 0x40 SWAP3 SWAP1 SWAP3 SHR AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1B9C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP POP DUP2 MLOAD PUSH1 0x1 PUSH1 0x2 DUP4 MUL DUP2 ADD SWAP2 SWAP1 SWAP2 SHR AND ISZERO ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1BC4 JUMPI POP PUSH1 0x0 PUSH2 0x10D4 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1BD1 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x10D1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x296F PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x10D1 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x2485 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1CBD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP POP SWAP1 MLOAD PUSH1 0x1 PUSH1 0x2 SWAP1 SWAP3 MUL SHR AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1CDF JUMPI POP PUSH1 0x0 NOT PUSH2 0x1CF6 JUMP JUMPDEST PUSH2 0x1CF3 DUP4 PUSH2 0x1CED DUP7 DUP6 PUSH2 0x10DA JUMP JUMPDEST SWAP1 PUSH2 0x24EA JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SLOAD PUSH8 0x100000000000000 AND ISZERO ISZERO SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x10 SHR PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x30 SHR PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x1D8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH2 0x2710 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x1DFC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP DUP3 DUP2 PUSH2 0x2710 DUP7 MUL ADD DUP2 PUSH2 0x1E0C JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP6 ADD SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP6 DUP6 DUP3 ISZERO PUSH2 0x1F9F JUMPI PUSH1 0x0 PUSH2 0x1E3C DUP5 DUP9 PUSH2 0x25E0 JUMP JUMPDEST SWAP1 POP PUSH2 0x1E48 DUP2 DUP11 PUSH2 0x2211 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3531 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 GT ISZERO PUSH2 0x1EBA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP PUSH1 0x1 DUP12 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND OR SWAP1 SSTORE DUP10 ISZERO PUSH2 0x1F9D JUMPI PUSH1 0x2 DUP12 ADD SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1F00 SWAP1 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP10 PUSH2 0x2626 JUMP JUMPDEST SWAP1 POP PUSH2 0x1F0C DUP2 DUP11 PUSH2 0x2211 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1A99 PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 GT ISZERO PUSH2 0x1F7E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP POP PUSH1 0x1 DUP12 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP6 AND PUSH1 0x1 PUSH1 0x80 SHL MUL SWAP2 AND OR SWAP1 SSTORE JUMPDEST POP JUMPDEST PUSH1 0x3 SWAP10 SWAP1 SWAP10 ADD DUP1 SLOAD PUSH5 0xFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL TIMESTAMP PUSH5 0xFFFFFFFFFF AND MUL OR SWAP1 SSTORE SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1FD6 PUSH2 0x290D JUMP JUMPDEST PUSH2 0x1FDF DUP8 PUSH2 0x22C2 JUMP JUMPDEST PUSH2 0x120 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x1FF1 JUMPI POP PUSH2 0x21AF JUMP JUMPDEST DUP7 PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x79774338 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2041 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2055 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x206B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 SWAP1 SWAP5 ADD MLOAD PUSH5 0xFFFFFFFFFF AND PUSH2 0x140 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 DUP4 MSTORE SWAP1 DUP3 ADD MSTORE PUSH2 0x20A5 DUP7 DUP7 PUSH2 0x2211 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x20B4 DUP7 DUP5 PUSH2 0x2211 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH2 0x140 DUP3 ADD MLOAD PUSH2 0x20D6 SWAP2 SWAP1 PUSH5 0xFFFFFFFFFF DUP6 AND PUSH2 0x262F JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x20EB SWAP2 PUSH2 0x2211 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MLOAD DUP3 MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH2 0x2116 SWAP4 SWAP3 PUSH2 0x2110 SWAP3 SWAP1 SWAP2 DUP4 SWAP2 PUSH2 0x1077 JUMP JUMPDEST SWAP1 PUSH2 0x1507 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD MLOAD PUSH2 0x212D SWAP2 SWAP1 PUSH2 0x10DA JUMP JUMPDEST PUSH2 0x100 DUP3 ADD DUP2 SWAP1 MSTORE ISZERO PUSH2 0x14FE JUMPI PUSH1 0x4 DUP1 DUP9 ADD SLOAD PUSH2 0x100 DUP4 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x7DF5BD3B PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x24 DUP4 ADD DUP8 SWAP1 MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x7DF5BD3B SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2195 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x21A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x2209 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x221E JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x222B JUMPI POP PUSH1 0x0 PUSH2 0x10D4 JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x2241 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x22AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP PUSH12 0x33B2E3C9FD0803CE8000000 PUSH1 0x2 DUP2 PUSH2 0x11B0 JUMP JUMPDEST SLOAD PUSH1 0x40 SHR PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x22DF DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2705 JUMP JUMPDEST PUSH2 0x2330 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x236E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x234F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x23D0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x23D5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x242C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1A7A JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1A7A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2990 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x24D4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x24E0 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x2552 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH8 0xDE0B6B3A7640000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x25CA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x116D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1155 JUMP JUMPDEST POP DUP3 DUP2 PUSH8 0xDE0B6B3A7640000 DUP7 MUL ADD DUP2 PUSH2 0x1E0C JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x25F4 TIMESTAMP PUSH5 0xFFFFFFFFFF DUP6 AND PUSH2 0x1507 JUMP JUMPDEST SWAP1 POP PUSH2 0x261E PUSH2 0x2601 PUSH2 0x273E JUMP JUMPDEST PUSH4 0x1E13380 PUSH2 0x2610 DUP8 DUP6 PUSH2 0x1BB5 JUMP JUMPDEST DUP2 PUSH2 0x2617 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x1077 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10D1 DUP4 DUP4 TIMESTAMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2643 DUP4 PUSH5 0xFFFFFFFFFF DUP7 AND PUSH2 0x1507 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x265A JUMPI PUSH2 0x2652 PUSH2 0x273E JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1CF6 JUMP JUMPDEST PUSH1 0x0 NOT DUP2 ADD PUSH1 0x0 PUSH1 0x2 DUP4 GT PUSH2 0x2670 JUMPI PUSH1 0x0 PUSH2 0x2675 JUMP JUMPDEST PUSH1 0x2 DUP4 SUB JUMPDEST SWAP1 POP PUSH4 0x1E13380 DUP8 DIV PUSH1 0x0 PUSH2 0x268A DUP3 DUP1 PUSH2 0x2211 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2698 DUP3 DUP5 PUSH2 0x2211 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x2 PUSH2 0x26AC DUP5 PUSH2 0x13B2 DUP11 DUP11 PUSH2 0x1BB5 JUMP JUMPDEST DUP2 PUSH2 0x26B3 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x6 PUSH2 0x26CA DUP5 PUSH2 0x13B2 DUP10 DUP2 DUP14 DUP14 PUSH2 0x1BB5 JUMP JUMPDEST DUP2 PUSH2 0x26D1 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x26F5 DUP2 PUSH2 0x26EF DUP5 DUP2 PUSH2 0x26E7 DUP11 DUP15 PUSH2 0x1BB5 JUMP JUMPDEST PUSH2 0x26EF PUSH2 0x273E JUMP JUMPDEST SWAP1 PUSH2 0x1077 JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x261E JUMPI POP POP ISZERO ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x220 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x27D4 JUMPI INVALID JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x240 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x160 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH5 0xFFFFFFFFFF AND DUP2 MSTORE POP SWAP1 JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77536166654552433230 GASPRICE KECCAK256 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x756363656564A26469706673582212200B16E2A6 PUSH26 0x479D533D21A835EBFAD524B7BA3C127E8B3C592AB424145DC496 PUSH7 0x64736F6C634300 MOD 0xC STOP CALLER ",
              "sourceMap": "1657:10674:69:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3770:5434;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3770:5434:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4025:26:69;;;3945:7;4025:26;;;:9;:26;;;;;;;;4101:20;;;;;;;;4179:18;;;;;:12;:18;;;;;3945:7;;3954:13;;4204:36;;:::i;:::-;4277:176;;;;;;;;;;;;;4390:14;;4412:18;;:35;;-1:-1:-1;;;4412:35:69;;;;4277:176;;4322:4;;4334:9;;4277:176;;4369:13;;4390:14;;-1:-1:-1;;;;;4412:18:69;;;;:33;;:35;;;;;4277:176;;4412:35;;;;;:18;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4412:35:69;4277:37;:176::i;:::-;4256:17;;;4247:206;-1:-1:-1;4507:45:69;;-1:-1:-1;4534:4:69;;-1:-1:-1;4540:11:69;;-1:-1:-1;4507:26:69;:45::i;:::-;4482:21;;;4460:92;;;4461:19;;;4460:92;;;4702:17;;;;4593:188;;4640:17;;4665:11;;4684:10;;4702:17;;4593:39;:188::i;:::-;4576:13;;;4559:222;4560:14;;;4559:222;;;-1:-1:-1;;4792:46:69;;;;;;;;:89;;;;;;;;;4788:148;;4899:4;:14;;;4915:4;:13;;;4891:38;;;;;;;;;;4788:148;4974:31;;;;;-1:-1:-1;;;;;4974:31:69;;;4942:21;;;:64;;;5042:37;;;-1:-1:-1;;;5042:37:69;;;;;;;;;;;;;;:31;;:37;;;;;;;;;;;;;;;4974:31;5042:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5042:37:69;5013:66;;5137:21;;;;5042:37;5113:19;;;:103;;1972:4;;5113:46;;:23;:46::i;:::-;:57;;:103::i;:::-;5086:24;;;:130;;;5252:38;;:91;;5332:11;5252:91;;;5299:4;:24;;;5252:91;5223:26;;;:120;;;5591:26;;5425:198;;5473:17;;5498:11;;5517:15;;5540:9;;5223:120;5425:40;:198::i;:::-;5395:21;;;5350:273;;;5358:29;;;5350:273;;;;5844:26;;;;-1:-1:-1;5816:121:69;;;5909:21;;;;5880:26;;;:50;5816:121;6086:13;6081:381;;6109:34;6161:15;-1:-1:-1;;;;;6154:33:69;;6196:4;:21;;;6154:65;;;;;;;;;;;;;-1:-1:-1;;;;;6154:65:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6154:65:69;6260:29;;;;6154:65;;-1:-1:-1;6231:58:69;;6227:229;;;6328:51;6392:45;;;;;;;;;;;;;-1:-1:-1;;;6392:45:69;;;6301:146;;;;;;;;;;;6227:229;6081:381;;6468:25;:11;:23;:25::i;:::-;6529:4;:26;;;6504:4;:21;;;:51;6500:708;;6584:36;;;;6650:26;;;;6584:36;6686:31;;;6565:160;;;-1:-1:-1;;;6565:160:69;;-1:-1:-1;;;;;6565:160:69;;;;;;;;;;;;;;-1:-1:-1;;;6686:31:69;;;-1:-1:-1;;;;;6686:31:69;6565:160;;;;;6584:36;;;;;6565:61;;:160;;;;;-1:-1:-1;;6565:160:69;;;;;;;-1:-1:-1;6584:36:69;6565:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6500:708;;;6843:21;;;;:25;6839:213;;6899:36;;;;6969:21;;;;;6899:36;7002:31;;;6880:163;;-1:-1:-1;;;6880:163:69;;-1:-1:-1;;;;;6880:163:69;;;;;;;;;;;;;;-1:-1:-1;;;7002:31:69;;;-1:-1:-1;;;;;7002:31:69;6880:163;;;;;;6899:36;;;6880:61;;:163;;;;;-1:-1:-1;;6880:163:69;;;;;;;;-1:-1:-1;6899:36:69;6880:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6839:213;7076:34;;;;7171:21;;;;7140:26;;;;-1:-1:-1;;;;;7076:34:69;;;;7059:57;;7126:4;;7140:53;;:30;:53::i;:::-;7059:142;;;;;;;;;;;;;-1:-1:-1;;;;;7059:142:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6500:708;7270:25;;;;7303:26;;;;7214:130;;7270:11;;7253:9;;-1:-1:-1;;;;;7270:25:69;;;7214:31;:130::i;:::-;7355:13;7351:995;;;7424:4;:21;;;-1:-1:-1;;;;;7417:39:69;;7457:10;7417:51;;;;;;;;;;;;;-1:-1:-1;;;;;7417:51:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7417:51:69;7378:36;;;:90;7476:21;;;;7538:29;;;;7476:92;;;-1:-1:-1;;;7476:92:69;;-1:-1:-1;;;;;7476:92:69;;;;;;;7526:10;7476:92;;;;;;;;;;;;;:43;;;;;;;:92;;;;;-1:-1:-1;;7476:92:69;;;;;;;-1:-1:-1;7476:43:69;:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7581:4;:36;;;7621:1;7581:41;7577:297;;;7705:10;7634:55;7692:24;;;:12;:24;;;;;7764:20;;;;7726:65;;7692:24;;-1:-1:-1;;;7764:20:69;;;;7786:4;7726:37;:65::i;:::-;7806:59;;7854:10;;-1:-1:-1;;;;;7806:59:69;;;;;;;;7577:297;;7351:995;;;7894:31;:17;:29;:31::i;:::-;8013:21;;;;8056:29;;;;7933:160;;:17;;7980:15;;8013:21;8045:1;;7933:37;:160::i;:::-;8190:21;;;;8260:29;;;;8299:32;;;;8190:149;;;-1:-1:-1;;;8190:149:69;;-1:-1:-1;;;;;8190:149:69;;;;;;;8240:10;8190:149;;;;;;;;;;;-1:-1:-1;;;;;8299:32:69;;;8190:149;;;;;:26;;;;;;;:149;;;;;8299:32;;8190:149;;;;;;;8299:32;8190:26;:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7351:995;8528:26;;8495:29;;;;:59;8491:207;;;8596:20;;;;8564:60;;:10;;-1:-1:-1;;;8596:20:69;;;;8618:5;8564:31;:60::i;:::-;8686:4;-1:-1:-1;;;;;8637:54:69;8669:15;-1:-1:-1;;;;;8637:54:69;;;;;;;;;;;8491:207;8852:25;;;;8885:26;;;;8792:125;;-1:-1:-1;;;;;8792:34:69;;;;8834:10;;8852:25;;;;;8792:34;:125::i;:::-;8992:4;-1:-1:-1;;;;;8929:183:69;8975:9;-1:-1:-1;;;;;8929:183:69;8952:15;-1:-1:-1;;;;;8929:183:69;;9004:4;:26;;;9038:4;:29;;;9075:10;9093:13;8929:183;;;;;;;;;;;;;;-1:-1:-1;;;;;8929:183:69;;;;;;;;;;;;;;;;;;;;;;;;;9135:39;9177:21;;;;;;;;;;;;;-1:-1:-1;;;9177:21:69;;;9119:80;;;;;;;;3770:5434;;;;;;;;;:::o;5296:2773:80:-;5613:7;5628;5643;5658;5673;5695:40;;:::i;:::-;5746:20;:10;:18;:20::i;:::-;5742:73;;;5784:1;5787;5790;5793;-1:-1:-1;;5776:32:80;;;;;;;;;;;;;5742:73;5834:1;5825:6;;;:10;5820:1681;5846:13;5837:4;:6;;;:22;5820:1681;;;5926:6;;;;5884:49;;:10;;:41;:49::i;:::-;5879:83;;5945:8;;5879:83;6008:6;;;;5999:16;;;;;;;;;;;;;-1:-1:-1;;;;;5999:16:80;5970:26;;;:45;;;6070:40;;;;;;;;6178:58;6070:40;6178:56;:58::i;:::-;-1:-1:-1;6159:13:80;;;6119:117;;;6130:25;;;6119:117;;;;-1:-1:-1;6120:8:80;;;6119:117;;;;6262:2;:17;-1:-1:-1;6245:14:80;;;:34;;;;6352:26;;;;6311:68;;;-1:-1:-1;;;6311:68:80;;-1:-1:-1;;;;;6311:68:80;;;;;;;;;:40;;;;;;:68;;;;;;;;;;:40;:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6311:68:80;6287:92;;6392:25;;;;:30;;;;:72;;-1:-1:-1;6457:6:80;;;;6426:38;;:10;;:30;:38::i;:::-;6388:621;;;6517:14;:28;;;;;;;;;;-1:-1:-1;;;;;6517:28:80;-1:-1:-1;;;;;6510:46:80;;6557:4;6510:52;;;;;;;;;;;;;-1:-1:-1;;;;;6510:52:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6510:52:80;6476:31;;;:86;;;6510:52;6676:14;;;6613:21;;6573:27;;6613:78;;6676:14;6613:58;;:25;:58::i;:::-;:62;;:78::i;:::-;6730:25;;;;6573:118;;-1:-1:-1;6730:50:80;;6573:118;6730:29;:50::i;:::-;6702:25;;;:78;6845:8;;;;6805:50;;6821:33;;:19;;:23;:33::i;:::-;6805:11;;;;;:15;:50::i;:::-;6791:11;;;:64;6964:25;;;;6896:104;;6940:50;;:19;;:23;:50::i;:::-;6896:28;;;;;:32;:104::i;:::-;6865:28;;;:135;-1:-1:-1;6388:621:80;7044:6;;;;7021:30;;:10;;:22;:30::i;:::-;7017:478;;;7101:14;:37;;;;;;;;;;-1:-1:-1;;;;;7101:37:80;-1:-1:-1;;;;;7094:55:80;;7161:4;7094:81;;;;;;;;;;;;;-1:-1:-1;;;;;7094:81:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7063:4;:28;;:112;;;;;7216:117;7267:14;:39;;;;;;;;;;-1:-1:-1;;;;;7267:39:80;-1:-1:-1;;;;;7260:57:80;;7318:4;7260:63;;;;;;;;;;;;;-1:-1:-1;;;;;7260:63:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7260:63:80;7216:28;;;;;:32;:117::i;:::-;7185:28;;;:148;;;7461:14;;;;7401:21;;7366:120;;7401:75;;7461:14;7401:55;;:25;:55::i;:75::-;7366:19;;;;;:23;:120::i;:::-;7344:19;;;:142;7017:478;5820:1681;;5861:6;;;:8;;;;;;5820:1681;;;7549:1;7521:4;:25;;;:29;:78;;7598:1;7521:78;;;7569:25;;;;7553:11;;;;:42;;:15;:42::i;:::-;7507:11;;;:92;7636:25;;;;:107;;7742:1;7636:107;;;7707:25;;;;7674:28;;;;:59;;:32;:59::i;:::-;7605:28;;;:138;;;7811:25;;;;7844:19;;;;7770:135;;:33;:135::i;:::-;7750:17;;;:155;;;7926:25;;;;7959:19;;;;7986:11;;;;8005:28;;;;;7926:25;;-1:-1:-1;7959:19:80;-1:-1:-1;7986:11:80;;-1:-1:-1;8005:28:80;;-1:-1:-1;7750:155:80;-1:-1:-1;5296:2773:80;;;;;;;;;;;;;:::o;473:286:78:-;637:30;;;;630:54;;;-1:-1:-1;;;630:54:78;;-1:-1:-1;;;;;630:54:78;;;;;;;;;589:7;;;;637:30;;630:48;;:54;;;;;;;;;;;;;;637:30;630:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;630:54:78;699:32;;;;692:56;;;-1:-1:-1;;;692:56:78;;-1:-1:-1;;;;;692:56:78;;;;;;;;;699:32;;;;;692:50;;:56;;;;;630:54;;692:56;;;;;;;699:32;692:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;692:56:78;615:139;;692:56;;-1:-1:-1;473:286:78;-1:-1:-1;;;473:286:78:o;14878:1577:82:-;15186:7;15195:13;15228:43;:17;:41;:43::i;:::-;15227:44;:91;;;-1:-1:-1;15276:42:82;:16;:40;:42::i;:::-;15275:43;15227:91;15216:243;;;-1:-1:-1;;15417:27:82;;;;;;;;;;;;-1:-1:-1;;;15417:27:82;;;;15358:48;;15333:119;;15216:243;1210:7:80;15469:16:82;:68;15465:238;;-1:-1:-1;;15643:45:82;;;;;;;;;;;;-1:-1:-1;;;15643:45:82;;;;15572:60;;15547:149;;15465:238;15709:24;;15742:57;:17;:55;:57::i;:::-;:61;:125;;;;-1:-1:-1;15846:20:82;;;;15815:30;;;;;;;;;;;;;:52;;-1:-1:-1;;;15846:20:82;;;;15815:30;:52::i;:::-;15709:158;;15960:19;15955:190;;-1:-1:-1;;16087:43:82;;;;;;;;;16014:62;16087:43;;;-1:-1:-1;;;16087:43:82;;;;16014:62;-1:-1:-1;15989:149:82;;15955:190;16155:19;;:44;;;;-1:-1:-1;16178:21:82;;16155:44;16151:213;;;-1:-1:-1;;16298:51:82;;;;;;;;;;;;-1:-1:-1;;;16298:51:82;;;;16234:53;;-1:-1:-1;16209:148:82;;16151:213;-1:-1:-1;;16428:21:82;;;;;;;;;;;;-1:-1:-1;;;16428:21:82;;;;16386:39;;-1:-1:-1;14878:1577:82;;;;;;;;;;:::o;851:162:13:-;909:7;936:5;;;955:6;;;;947:46;;;;;-1:-1:-1;;;947:46:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;1007:1;-1:-1:-1;851:162:13;;;;;:::o;802:351:84:-;880:7;899:10;;;:29;;-1:-1:-1;913:15:84;;899:29;895:58;;;-1:-1:-1;945:1:84;938:8;;895:58;1020:10;-1:-1:-1;;1020:10:84;983:47;;;;;974:5;:56;;1038:35;;;;;;;;;;;;;-1:-1:-1;;;1038:35:84;;;959:120;;;;;-1:-1:-1;;;959:120:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;466:3:84;556:1;466:3;536:21;;1102:10;1094:5;:18;:33;1093:55;;;;;;;802:351;-1:-1:-1;;;802:351:84:o;10575:1754:69:-;10864:7;10873;10888:24;10922;10956:25;11003:18;;;;;;;;;-1:-1:-1;;;;;11003:18:69;-1:-1:-1;;;;;11003:33:69;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11003:35:69;;-1:-1:-1;11046:51:69;;:::i;:::-;11127:6;-1:-1:-1;;;;;11127:20:69;;11148:15;11127:37;;;;;;;;;;;;;-1:-1:-1;;;;;11127:37:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11127:37:69;11104:20;;;;:60;;;;11192:31;;-1:-1:-1;;;11192:31:69;;-1:-1:-1;;;;;11192:31:69;;;;;;;;;:20;;;;;;:31;;;;;11127:37;;11192:31;;;;;;;;:20;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11192:31:69;11170:19;;;:53;11287:57;:17;:55;:57::i;:::-;-1:-1:-1;11258:23:69;;;11230:114;11235:21;;;11230:114;-1:-1:-1;11375:39:69;;-1:-1:-1;11375:11:69;:37;:39::i;:::-;11350:22;;;:64;;;11745:20;;;;11602:196;;11745:52;;:20;11770:2;:26;11745:24;:52::i;:::-;11602:131;11711:4;:21;;;11602:90;11668:4;:23;;;11664:2;:27;11602:50;11640:11;11602:4;:26;;;:37;;:50;;;;:::i;:::-;:61;;:90::i;:196::-;11564:35;;;:234;;;11809:59;-1:-1:-1;11805:471:69;;;11897:21;11878:40;;11945:211;12134:4;:21;;;11945:168;12060:52;12088:4;:23;;;12084:2;:27;12060:4;:19;;;:23;;:52;;;;:::i;:::-;11945:101;12023:4;:22;;;12019:2;:26;11945:60;11988:16;11945:4;:29;;;:42;;:60;;;;:::i;:168::-;:188;;:211::i;:::-;11926:230;;11805:471;;;12196:4;:35;;;12177:54;;12258:11;12239:30;;11805:471;-1:-1:-1;12289:16:69;;12307;;-1:-1:-1;10575:1754:69;-1:-1:-1;;;;;;;;10575:1754:69:o;3958:810:81:-;4087:32;;;;4068:72;;;-1:-1:-1;;;4068:72:81;;;;4033:26;;-1:-1:-1;;;;;4087:32:81;;4068:70;;:72;;;;;;;;;;;;;;4087:32;4068:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4068:72:81;4184:27;;;;4308;;;;4068:72;;-1:-1:-1;;;;4184:27:81;;;-1:-1:-1;;;;;4184:27:81;;;;4250:22;;;4308:27;;;4146:35;;4410:166;4184:27;4068:72;4250:22;4184:27;4308;4410:14;:166::i;:::-;4342:234;;;;4583:180;4606:7;4621:18;4647:27;4682:17;4707:22;4737:20;4583:15;:180::i;:::-;3958:810;;;;;;;:::o;1257:128:13:-;1315:7;1337:43;1341:1;1344;1337:43;;;;;;;;;;;;;;;;;:3;:43::i;7239:1918:81:-;7441:40;;:::i;:::-;7518:30;;;;-1:-1:-1;;;;;7518:30:81;7488:60;;;7600:79;;;-1:-1:-1;;;7600:79:81;;;;:77;;:79;;;;;;;;;;;;;7518:30;7600:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7600:79:81;;;;;;;7578:18;;;7555:124;7600:79;7556:20;;;7555:124;;;;8018:27;;;;7943:32;;;;7924:79;;-1:-1:-1;;;7924:79:81;;;;:122;;-1:-1:-1;;;8018:27:81;;;-1:-1:-1;;;;;8018:27:81;;-1:-1:-1;;;;;7943:32:81;;;;7924:77;;:79;;;;;;;;;;;7943:32;7924:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7924:79:81;;:93;:122::i;:::-;7899:22;;;:147;;;8174:35;;;;8328:20;;;;8386:18;;;;-1:-1:-1;;;;;8174:35:81;;;;8145:88;;8241:14;;8263:13;;8284:14;;8306;;8328:20;7899:147;8412:40;8174:7;8412:38;:40::i;:::-;8145:313;;;;;;;;;;;;;-1:-1:-1;;;;;8145:313:81;;;;;;-1:-1:-1;;;;;8145:313:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8145:313:81;;;;;;;;;;;;8116:20;;;8053:405;8090:18;;;8053:405;8145:313;8061:21;;8053:405;;;8516:33;;;;;;;;;;;-1:-1:-1;;;8516:33:81;;;;-1:-1:-1;;;;;;8472:42:81;8464:86;;;;-1:-1:-1;;;8464:86:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8564:18:81;;;;8605:37;;;;;;;;;;;;-1:-1:-1;;;8605:37:81;;;;;-1:-1:-1;;;;;;8564:39:81;8556:87;;;;-1:-1:-1;;;8556:87:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8657:20:81;;;;8700:39;;;;;;;;;;;;-1:-1:-1;;;8700:39:81;;;;;-1:-1:-1;;;;;;8657:41:81;8649:91;;;;-1:-1:-1;;;8649:91:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8786:21:81;;;;;8747:28;;;:61;;8856:18;;;;;8814:31;;;:61;;-1:-1:-1;;;;;;8814:61:81;;;-1:-1:-1;;;;;8814:61:81;;;;;;;;;;8925:20;;;;;8747:61;;;;;;;;8881:65;;-1:-1:-1;;;8881:65:81;;;;;;;;;;;;-1:-1:-1;9089:22:81;;;8958:194;;;;;;;;;;;;;;;;;;;;9089:22;;;8958:194;;;;;;;9119:27;;;;;;;8958:194;;;;;;;;;-1:-1:-1;;;;;8958:194:81;;;;;;;;;;;7239:1918;;;;;;:::o;1344:348:76:-;1524:23;;;;;;;;;;;;-1:-1:-1;;;1524:23:76;;;;1519:3;1504:18;;1496:52;;;;-1:-1:-1;;;1496:52:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1665:12;1680:1;1665:16;1684:1;1665:20;1634:17;:25;;1658:1;1634:25;;;1654:1;1634:25;1626:34;;:60;;1593:12;1608:1;1593:16;1612:1;1593:20;1587:1;:27;;1585:30;1573:4;:9;;;:42;1572:115;1554:4;:9;;:133;;;;1344:348;;;:::o;904:216:12:-;1046:68;;;-1:-1:-1;;;;;1046:68:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1046:68:12;-1:-1:-1;;;1046:68:12;;;1020:95;;1039:5;;1020:18;:95::i;:::-;904:216;;;;:::o;3921:122:76:-;4024:9;:14;;3921:122::o;2013:265::-;2154:4;2189:3;2174:12;:18;2194:23;;;;;;;;;;;;;-1:-1:-1;;;2194:23:76;;;2166:52;;;;;-1:-1:-1;;;2166:52:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2232:9:76;;2267:1;2261;2246:16;;;2232:31;2231:37;:42;;;2013:265::o;10085:606:75:-;10296:9;10339;10327:21;;;;1692:2;10356:85;;;;;;1754:2;10449:77;;;;;;1815:2;10534:67;;;;;;2113:2;10609:71;;;;;;10085:606::o;3100:260:76:-;3230:4;3267:3;3252:12;:18;3272:23;;;;;;;;;;;;;-1:-1:-1;;;3272:23:76;;;3244:52;;;;;-1:-1:-1;;;3244:52:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3310:9:76;;3343:1;3339;3324:16;;:20;;3310:35;;;;3309:41;:46;;3100:260;;;;:::o;2058:419:13:-;2116:7;2341:6;2337:35;;-1:-1:-1;2364:1:13;2357:8;;2337:35;2390:5;;;2394:1;2390;:5;:1;2409:5;;;;;:10;2401:56;;;;-1:-1:-1;;;2401:56:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2908:124;2966:7;2988:39;2992:1;2995;2988:39;;;;;;;;;;;;;;;;;:3;:39::i;2565:248:76:-;2687:4;2724:3;2709:12;:18;2729:23;;;;;;;;;;;;;-1:-1:-1;;;2729:23:76;;;2701:52;;;;;-1:-1:-1;;;2701:52:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2767:9:76;;2802:1;2796;2781:16;;;2767:31;2766:37;:42;;;2565:248::o;8399:321:80:-;8565:7;8584:19;8580:43;;-1:-1:-1;;;8605:18:80;;8580:43;8637:78;8700:14;8638:53;:20;8670;8638:31;:53::i;:::-;8637:62;;:78::i;:::-;8630:85;;8399:321;;;;;;:::o;6029:145:75:-;6139:9;6151:12;6139:24;6138:31;;;6029:145::o;3655:230::-;3796:9;1692:2;3795:85;;;;3655:230::o;5336:200::-;5465:9;1815:2;5464:67;;;;5336:200::o;1400:404:84:-;1518:28;;;;;;;;;;;;-1:-1:-1;;;1518:28:84;;;;1478:7;;1501:15;1493:54;;;;-1:-1:-1;;;1493:54:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1687:35:84;;;;;;;;;1591:1;1687:35;;;-1:-1:-1;;;1687:35:84;;;;1578:14;;;466:3;1624:34;;1623:56;1614:65;;;1599:129;;;;-1:-1:-1;;;1599:129:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1789:10;1771:14;466:3;1743:5;:25;:42;1742:57;;;;;;;1400:404;-1:-1:-1;;;;1400:404:84:o;12201:1637:81:-;12460:28;;;;12405:7;;;;-1:-1:-1;;;;;12460:28:81;12523:14;12576:19;12666:24;;12662:1025;;12700:34;12745:66;12779:20;12801:9;12745:33;:66::i;:::-;12700:111;-1:-1:-1;12839:49:81;12700:111;12873:14;12839:33;:49::i;:::-;12944:34;;;;;;;;;;;;-1:-1:-1;;;12944:34:81;;;;12819:69;;-1:-1:-1;;;;;;12904:38:81;;;12896:83;;;;-1:-1:-1;;;12896:83:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12988:22:81;;;:51;;-1:-1:-1;;;;;;12988:51:81;-1:-1:-1;;;;;12988:51:81;;;;;13203:23;;13199:482;;13328:33;;;;13238:39;;13290:83;;-1:-1:-1;;;13328:33:81;;-1:-1:-1;;;;;13328:33:81;13363:9;13290:37;:83::i;:::-;13238:135;-1:-1:-1;13408:59:81;13238:135;13447:19;13408:38;:59::i;:::-;13551:40;;;;;;;;;;;;-1:-1:-1;;;13551:40:81;;;;13383:84;;-1:-1:-1;;;;;;13496:43:81;;;13477:124;;;;-1:-1:-1;;;13477:124:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13611:27:81;;;:61;;-1:-1:-1;;;;;13611:61:81;;;-1:-1:-1;;;13611:61:81;;;;;;13199:482;12662:1025;;13724:27;;;;;:53;;-1:-1:-1;;;;13724:53:81;-1:-1:-1;;;13761:15:81;13724:53;;;;;;13791:17;12201:1637;-1:-1:-1;;;;;;;12201:1637:81:o;10091:1784::-;10340:35;;:::i;:::-;10403:40;:7;:38;:40::i;:::-;10382:18;;;:61;;;10450:50;;10487:7;;;10450:50;10733:7;:30;;;;;;;;;;-1:-1:-1;;;;;10733:30:81;-1:-1:-1;;;;;10716:62:81;;:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10716:64:81;;;;;;;;;;;;;;;;10578:202;;10674:33;;;10578:202;10648:18;;;10578:202;;;;;;;10586:24;;;10578:202;10864:54;:18;10890:27;10864:25;:54::i;:::-;10836:25;;;:82;11021:49;:18;11047:22;11021:25;:49::i;:::-;10994:24;;;:76;11217:18;;;;11243:33;;;;11172:127;;11217:18;11172:127;;;:37;:127::i;:::-;11141:28;;;:158;;;11332:24;;;;:61;;:31;:61::i;:::-;11306:23;;;:87;;;11597:25;;;;11562:22;;11519:31;;;;:140;;11306:87;11519:104;;11597:25;;11519:104;;:42;:66::i;:::-;:77;;:104::i;:140::-;11495:21;;;:164;;;11719:18;;;;11686:52;;11495:164;11686:32;:52::i;:::-;11666:17;;;:72;;;11749:22;11745:126;;11789:21;;;;;;11827:17;;;11781:83;;;-1:-1:-1;;;11781:83:81;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11789:21:81;;;;11781:45;;:83;;;;;11789:21;;11781:83;;;;;;;11789:21;;11781:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10091:1784;;;;;;;;:::o;1649:189:13:-;1751:7;1782:12;1774:6;;;;1766:29;;;;-1:-1:-1;;;1766:29:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1813:5:13;;;1649:189::o;2008:253:86:-;2069:7;2088:6;;;:16;;-1:-1:-1;2098:6:86;;2088:16;2084:45;;;-1:-1:-1;2121:1:86;2114:8;;2084:45;2180:1;-1:-1:-1;;2180:1:86;2148:33;;;;;2143:1;:38;;2183:35;;;;;;;;;;;;;-1:-1:-1;;;2183:35:86;;;2135:84;;;;;-1:-1:-1;;;2135:84:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;432:4:86;482:1;432:4;476:7;;9042:209:75;9176:9;2113:2;9175:71;;;;9042:209::o;1473:555:12:-;1556:27;1564:5;-1:-1:-1;;;;;1556:25:12;;:27::i;:::-;1548:71;;;;;-1:-1:-1;;;1548:71:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;1682:12;1696:23;1731:5;-1:-1:-1;;;;;1723:19:12;1743:4;1723:25;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1723:25:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1681:67;;;;1762:7;1754:52;;;;;-1:-1:-1;;;1754:52:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1817:17;;:21;1813:211;;1951:10;1940:30;;;;;;;;;;;;;;;-1:-1:-1;1940:30:12;1932:85;;;;-1:-1:-1;;;1932:85:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3483:332:13;3585:7;3677:12;3670:5;3662:28;;;;-1:-1:-1;;;3662:28:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3696:9;3712:1;3708;:5;;;;;;;3483:332;-1:-1:-1;;;;;3483:332:13:o;1571:279:86:-;1663:28;;;;;;;;;;;;-1:-1:-1;;;1663:28:86;;;;1632:7;;1655:6;1647:45;;;;-1:-1:-1;;;1647:45:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1774:35:86;;;;;;;;;1718:1;1774:35;;;-1:-1:-1;;;1774:35:86;;;;1714:5;;;344:4;1740:25;;1739:33;1734:38;;;1726:84;;;;-1:-1:-1;;;1726:84:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1844:1;1835:5;344:4;1825:1;:7;:15;1824:21;;;;679:318:83;789:7;;862:49;:15;882:28;;;862:19;:49::i;:::-;837:74;;925:67;975:16;:14;:16::i;:::-;353:8;926:24;:4;935:14;926:8;:24::i;:::-;:43;;;;;;;925:49;:67::i;:::-;918:74;679:318;-1:-1:-1;;;;679:318:83:o;2856:214::-;2970:7;2994:71;3022:4;3028:19;3049:15;1738:833;1882:7;;1942:50;:16;1963:28;;;1942:20;:50::i;:::-;1928:64;-1:-1:-1;2003:8:83;1999:52;;2028:16;:14;:16::i;:::-;2021:23;;;;;1999:52;-1:-1:-1;;2079:7:83;;2057:19;2121:1;2115:7;;:21;;2135:1;2115:21;;;2131:1;2125:3;:7;2115:21;2093:43;-1:-1:-1;353:8:83;2167:23;;2143:21;2220:35;2167:23;;2220:20;:35::i;:::-;2197:58;-1:-1:-1;2261:22:83;2286:34;2197:58;2306:13;2286:19;:34::i;:::-;2261:59;-1:-1:-1;2327:18:83;2389:1;2348:38;2373:12;2348:20;:3;2356:11;2348:7;:20::i;:38::-;:42;;;;;;;-1:-1:-1;2396:17:83;2476:1;2416:57;2458:14;2416:37;2441:11;2416:37;:3;2424:11;2416:7;:20::i;:57::-;:61;;;;;;;-1:-1:-1;2491:75:83;2416:61;2491:60;2540:10;2491:60;2512:22;:13;2530:3;2512:17;:22::i;:::-;2491:16;:14;:16::i;:::-;:20;;:44::i;:75::-;2484:82;1738:833;-1:-1:-1;;;;;;;;;;;;1738:833:83:o;686:586:6:-;746:4;1185:20;;1032:66;1224:23;;;;;;:42;;-1:-1:-1;;1251:15:6;;;1216:51;-1:-1:-1;;686:586:6:o;578:68:86:-;432:4;578:68;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o"
            },
            "methodIdentifiers": {
              "liquidationCall(address,address,address,uint256,bool)": "00a718a9"
            }
          }
        }
      },
      "contracts/protocol/lendingpool/LendingPoolConfigurator.sol": {
        "LendingPoolConfigurator": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "proxy",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "ATokenUpgraded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "BorrowingDisabledOnReserve",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "stableRateEnabled",
                  "type": "bool"
                }
              ],
              "name": "BorrowingEnabledOnReserve",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "ltv",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "liquidationThreshold",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "liquidationBonus",
                  "type": "uint256"
                }
              ],
              "name": "CollateralConfigurationChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "ReserveActivated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "ReserveDeactivated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "decimals",
                  "type": "uint256"
                }
              ],
              "name": "ReserveDecimalsChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "factor",
                  "type": "uint256"
                }
              ],
              "name": "ReserveFactorChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "ReserveFrozen",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "aToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "stableDebtToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "variableDebtToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "interestRateStrategyAddress",
                  "type": "address"
                }
              ],
              "name": "ReserveInitialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "strategy",
                  "type": "address"
                }
              ],
              "name": "ReserveInterestRateStrategyChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "ReserveUnfrozen",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "proxy",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "StableDebtTokenUpgraded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "StableRateDisabledOnReserve",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "StableRateEnabledOnReserve",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "proxy",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "VariableDebtTokenUpgraded",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "activateReserve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "aTokenImpl",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "stableDebtTokenImpl",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "variableDebtTokenImpl",
                      "type": "address"
                    },
                    {
                      "internalType": "uint8",
                      "name": "underlyingAssetDecimals",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "interestRateStrategyAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "underlyingAsset",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "treasury",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "incentivesController",
                      "type": "address"
                    },
                    {
                      "internalType": "string",
                      "name": "underlyingAssetName",
                      "type": "string"
                    },
                    {
                      "internalType": "string",
                      "name": "aTokenName",
                      "type": "string"
                    },
                    {
                      "internalType": "string",
                      "name": "aTokenSymbol",
                      "type": "string"
                    },
                    {
                      "internalType": "string",
                      "name": "variableDebtTokenName",
                      "type": "string"
                    },
                    {
                      "internalType": "string",
                      "name": "variableDebtTokenSymbol",
                      "type": "string"
                    },
                    {
                      "internalType": "string",
                      "name": "stableDebtTokenName",
                      "type": "string"
                    },
                    {
                      "internalType": "string",
                      "name": "stableDebtTokenSymbol",
                      "type": "string"
                    },
                    {
                      "internalType": "bytes",
                      "name": "params",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct ILendingPoolConfigurator.InitReserveInput[]",
                  "name": "input",
                  "type": "tuple[]"
                }
              ],
              "name": "batchInitReserve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "ltv",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidationThreshold",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidationBonus",
                  "type": "uint256"
                }
              ],
              "name": "configureReserveAsCollateral",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "deactivateReserve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "disableBorrowingOnReserve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "disableReserveStableRate",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "stableBorrowRateEnabled",
                  "type": "bool"
                }
              ],
              "name": "enableBorrowingOnReserve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "enableReserveStableRate",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "freezeReserve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPoolAddressesProvider",
                  "name": "provider",
                  "type": "address"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "val",
                  "type": "bool"
                }
              ],
              "name": "setPoolPause",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "reserveFactor",
                  "type": "uint256"
                }
              ],
              "name": "setReserveFactor",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "rateStrategyAddress",
                  "type": "address"
                }
              ],
              "name": "setReserveInterestRateStrategyAddress",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                }
              ],
              "name": "unfreezeReserve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "asset",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "treasury",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "incentivesController",
                      "type": "address"
                    },
                    {
                      "internalType": "string",
                      "name": "name",
                      "type": "string"
                    },
                    {
                      "internalType": "string",
                      "name": "symbol",
                      "type": "string"
                    },
                    {
                      "internalType": "address",
                      "name": "implementation",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes",
                      "name": "params",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct ILendingPoolConfigurator.UpdateATokenInput",
                  "name": "input",
                  "type": "tuple"
                }
              ],
              "name": "updateAToken",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "asset",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "incentivesController",
                      "type": "address"
                    },
                    {
                      "internalType": "string",
                      "name": "name",
                      "type": "string"
                    },
                    {
                      "internalType": "string",
                      "name": "symbol",
                      "type": "string"
                    },
                    {
                      "internalType": "address",
                      "name": "implementation",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes",
                      "name": "params",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct ILendingPoolConfigurator.UpdateDebtTokenInput",
                  "name": "input",
                  "type": "tuple"
                }
              ],
              "name": "updateStableDebtToken",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "asset",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "incentivesController",
                      "type": "address"
                    },
                    {
                      "internalType": "string",
                      "name": "name",
                      "type": "string"
                    },
                    {
                      "internalType": "string",
                      "name": "symbol",
                      "type": "string"
                    },
                    {
                      "internalType": "address",
                      "name": "implementation",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes",
                      "name": "params",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct ILendingPoolConfigurator.UpdateDebtTokenInput",
                  "name": "input",
                  "type": "tuple"
                }
              ],
              "name": "updateVariableDebtToken",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526000805534801561001457600080fd5b50613e13806100246000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063ad4e6432116100a2578063c4d66de811610071578063c4d66de8146101f6578063cef84c5114610209578063eede87c11461021c578063ef1f93731461022f578063f53a2515146102425761010b565b8063ad4e6432146101aa578063b75d6f34146101bd578063bb01c37c146101d0578063bf344183146101e35761010b565b80637641f3d9116100de5780637641f3d91461015e5780637aca76eb146101715780637c4e560b14610184578063a8dc0f45146101975761010b565b80631d2118f9146101105780633e72a454146101255780634b4e6753146101385780637626cde31461014b575b600080fd5b61012361011e366004612f40565b610255565b005b610123610133366004612f01565b6103c7565b610123610146366004612fa9565b6105c2565b6101236101593660046131eb565b6107c1565b61012361016c36600461307d565b610ae5565b61012361017f366004612f01565b610c0a565b610123610192366004612fd4565b610dfc565b6101236101a5366004612f01565b611125565b6101236101b83660046131eb565b611317565b6101236101cb366004612f01565b6115c4565b6101236101de3660046131b3565b6117b6565b6101236101f1366004612f01565b611a75565b610123610204366004612f01565b611c67565b61012361021736600461300e565b611d99565b61012361022a366004612f78565b611ea5565b61012361023d366004612f01565b6120a2565b610123610250366004612f01565b612294565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561029957600080fd5b505afa1580156102ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d19190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b8152509061031d5760405162461bcd60e51b8152600401610314919061351a565b60405180910390fd5b50603554604051631d2118f960e01b81526001600160a01b0390911690631d2118f99061035090859085906004016132e0565b600060405180830381600087803b15801561036a57600080fd5b505af115801561037e573d6000803e3d6000fd5b50505050816001600160a01b03167f5644b64ebb0ce18c4032248ca52f58355469092ff072866c3dcd8640e817d6a5826040516103bb91906132cc565b60405180910390a25050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561040b57600080fd5b505afa15801561041f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104439190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906104865760405162461bcd60e51b8152600401610314919061351a565b5061049081612486565b610498612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f7906104c89085906004016132cc565b60206040518083038186803b1580156104e057600080fd5b505afa1580156104f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610518919061309d565b90506105258160006125e7565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d29276916105589186919060040161337b565b600060405180830381600087803b15801561057257600080fd5b505af1158015610586573d6000803e3d6000fd5b50506040516001600160a01b03851692507f6f60cf8bd0f218cabe1ea3150bd07b0b758c35c4cfdf7138017a283e65564d5e9150600090a25050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561060657600080fd5b505afa15801561061a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063e9190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906106815760405162461bcd60e51b8152600401610314919061351a565b5061068a612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f7906106ba9086906004016132cc565b60206040518083038186803b1580156106d257600080fd5b505afa1580156106e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070a919061309d565b90506107168183612615565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d29276916107499187919060040161337b565b600060405180830381600087803b15801561076357600080fd5b505af1158015610777573d6000803e3d6000fd5b50505050826001600160a01b03167f2694ccb0b585b6a54b8d8b4a47aa874b05c257b43d34e98aee50838be00d3405836040516107b4919061357b565b60405180910390a2505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561080557600080fd5b505afa158015610819573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083d9190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906108805760405162461bcd60e51b8152600401610314919061351a565b506035546001600160a01b0316610895612e22565b6001600160a01b0382166335ea6a756108b16020860186612f01565b6040518263ffffffff1660e01b81526004016108cd91906132cc565b6101806040518083038186803b1580156108e657600080fd5b505afa1580156108fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091e91906130b8565b905060006109b26001600160a01b03841663c44b11f76109416020880188612f01565b6040518263ffffffff1660e01b815260040161095d91906132cc565b60206040518083038186803b15801561097557600080fd5b505afa158015610989573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ad919061309d565b61266c565b50935060609250636111764560e11b91508590506109d36020880188612f01565b6109e36040890160208a01612f01565b856109f160408b018b6135e6565b6109fe60608d018d6135e6565b610a0b60a08f018f61359a565b604051602401610a249a99989796959493929190613467565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610100840151909150610a7990610a7360a0880160808901612f01565b83612697565b610a8960a0860160808701612f01565b6101008401516001600160a01b039182169116610aa96020880188612f01565b6001600160a01b03167f7a943a5b6c214bf7726c069a878b1e2a8e7371981d516048b84e03743e67bc2860405160405180910390a45050505050565b60345460408051636ee554f560e11b8152905133926001600160a01b03169163ddcaa9ea916004808301926020929190829003018186803b158015610b2957600080fd5b505afa158015610b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b619190612f24565b6001600160a01b031614604051806040016040528060028152602001611b9b60f11b81525090610ba45760405162461bcd60e51b8152600401610314919061351a565b5060355460405163bedb86fb60e01b81526001600160a01b039091169063bedb86fb90610bd5908490600401613394565b600060405180830381600087803b158015610bef57600080fd5b505af1158015610c03573d6000803e3d6000fd5b5050505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b158015610c4e57600080fd5b505afa158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c869190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b81525090610cc95760405162461bcd60e51b8152600401610314919061351a565b50610cd2612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f790610d029085906004016132cc565b60206040518083038186803b158015610d1a57600080fd5b505afa158015610d2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d52919061309d565b9050610d5f8160016126ff565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d2927691610d929186919060040161337b565b600060405180830381600087803b158015610dac57600080fd5b505af1158015610dc0573d6000803e3d6000fd5b50506040516001600160a01b03851692507f85dc710add8a0914461a7dc5a63f6fc529a7700f8c6089a3faf5e93256ccf12a9150600090a25050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b158015610e4057600080fd5b505afa158015610e54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e789190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b81525090610ebb5760405162461bcd60e51b8152600401610314919061351a565b50610ec4612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f790610ef49088906004016132cc565b60206040518083038186803b158015610f0c57600080fd5b505afa158015610f20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f44919061309d565b90508284111560405180604001604052806002815260200161373560f01b81525090610f835760405162461bcd60e51b8152600401610314919061351a565b50821561101457604080518082019091526002815261373560f01b60208201526127108311610fc55760405162461bcd60e51b8152600401610314919061351a565b50612710610fd3848461272d565b111560405180604001604052806002815260200161373560f01b8152509061100e5760405162461bcd60e51b8152600401610314919061351a565b50611056565b604080518082019091526002815261373560f01b6020820152821561104c5760405162461bcd60e51b8152600401610314919061351a565b5061105685612486565b61106081856127a4565b61106a81846127ed565b611074818361283e565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d29276916110a79189919060040161337b565b600060405180830381600087803b1580156110c157600080fd5b505af11580156110d5573d6000803e3d6000fd5b50505050846001600160a01b03167f637febbda9275aea2e85c0ff690444c8d87eb2e8339bbede9715abcc89cb099585858560405161111693929190613584565b60405180910390a25050505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561116957600080fd5b505afa15801561117d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a19190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906111e45760405162461bcd60e51b8152600401610314919061351a565b506111ed612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f79061121d9085906004016132cc565b60206040518083038186803b15801561123557600080fd5b505afa158015611249573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126d919061309d565b905061127a816000612891565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d29276916112ad9186919060040161337b565b600060405180830381600087803b1580156112c757600080fd5b505af11580156112db573d6000803e3d6000fd5b50506040516001600160a01b03851692507fe9a7e5fd4fc8ea18e602350324bf48e8f05d12434af0ce0be05743e6a5fdcb9e9150600090a25050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561135b57600080fd5b505afa15801561136f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113939190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906113d65760405162461bcd60e51b8152600401610314919061351a565b506035546001600160a01b03166113eb612e22565b6001600160a01b0382166335ea6a756114076020860186612f01565b6040518263ffffffff1660e01b815260040161142391906132cc565b6101806040518083038186803b15801561143c57600080fd5b505afa158015611450573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147491906130b8565b905060006114976001600160a01b03841663c44b11f76109416020880188612f01565b50935060609250636111764560e11b91508590506114b86020880188612f01565b6114c86040890160208a01612f01565b856114d660408b018b6135e6565b6114e360608d018d6135e6565b6114f060a08f018f61359a565b6040516024016115099a99989796959493929190613467565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261012084015190915061155890610a7360a0880160808901612f01565b61156860a0860160808701612f01565b6101208401516001600160a01b0391821691166115886020880188612f01565b6001600160a01b03167f9439658a562a5c46b1173589df89cf001483d685bad28aedaff4a88656292d8160405160405180910390a45050505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561160857600080fd5b505afa15801561161c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116409190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906116835760405162461bcd60e51b8152600401610314919061351a565b5061168c612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f7906116bc9085906004016132cc565b60206040518083038186803b1580156116d457600080fd5b505afa1580156116e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170c919061309d565b90506117198160016125e7565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d292769161174c9186919060040161337b565b600060405180830381600087803b15801561176657600080fd5b505af115801561177a573d6000803e3d6000fd5b50506040516001600160a01b03851692507f35b80cd8ea3440e9a8454f116fa658b858da1b64c86c48451f4559cefcdfb56c9150600090a25050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b1580156117fa57600080fd5b505afa15801561180e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118329190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906118755760405162461bcd60e51b8152600401610314919061351a565b506035546001600160a01b031661188a612e22565b6001600160a01b0382166335ea6a756118a66020860186612f01565b6040518263ffffffff1660e01b81526004016118c291906132cc565b6101806040518083038186803b1580156118db57600080fd5b505afa1580156118ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191391906130b8565b905060006119366001600160a01b03841663c44b11f76109416020880188612f01565b5093506060925063183fb41360e01b915085905061195a6040880160208901612f01565b6119676020890189612f01565b61197760608a0160408b01612f01565b8661198560608c018c6135e6565b61199260808e018e6135e6565b8e8060c001906119a2919061359a565b6040516024016119bc9b9a9998979695949392919061339f565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260e0840151909150611a0a90610a7360c0880160a08901612f01565b611a1a60c0860160a08701612f01565b60e08401516001600160a01b039182169116611a396020880188612f01565b6001600160a01b03167fa76f65411ec66a7fb6bc467432eb14767900449ae4469fa295e4441fe5e1cb7360405160405180910390a45050505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b158015611ab957600080fd5b505afa158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af19190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b81525090611b345760405162461bcd60e51b8152600401610314919061351a565b50611b3d612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f790611b6d9085906004016132cc565b60206040518083038186803b158015611b8557600080fd5b505afa158015611b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbd919061309d565b9050611bca8160016128bf565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d2927691611bfd9186919060040161337b565b600060405180830381600087803b158015611c1757600080fd5b505af1158015611c2b573d6000803e3d6000fd5b50506040516001600160a01b03851692507f8dee2b2f3e98319ae6347eda521788f73f4086c9be9a594942b370b137fb8cb19150600090a25050565b6000611c716128ed565b60015490915060ff1680611c885750611c886128f2565b80611c94575060005481115b611cb05760405162461bcd60e51b81526004016103149061352d565b60015460ff16158015611ccf576001805460ff19168117905560008290555b603480546001600160a01b0319166001600160a01b03858116919091179182905560408051630261bf8b60e01b815290519290911691630261bf8b91600480820192602092909190829003018186803b158015611d2b57600080fd5b505afa158015611d3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d639190612f24565b603580546001600160a01b0319166001600160a01b03929092169190911790558015611d94576001805460ff191690555b505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b158015611ddd57600080fd5b505afa158015611df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e159190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b81525090611e585760405162461bcd60e51b8152600401610314919061351a565b506035546001600160a01b031660005b82811015611e9f57611e9782858584818110611e8057fe5b9050602002810190611e9291906135fc565b6128f8565b600101611e68565b50505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b158015611ee957600080fd5b505afa158015611efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f219190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b81525090611f645760405162461bcd60e51b8152600401610314919061351a565b50611f6d612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f790611f9d9086906004016132cc565b60206040518083038186803b158015611fb557600080fd5b505afa158015611fc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fed919061309d565b9050611ffa816001612891565b61200481836128bf565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d29276916120379187919060040161337b565b600060405180830381600087803b15801561205157600080fd5b505af1158015612065573d6000803e3d6000fd5b50505050826001600160a01b03167fab2f7f9e5ca2772fafa94f355c1842a80ae6b9e41f83083098d81f67d7a0b508836040516107b49190613394565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b1580156120e657600080fd5b505afa1580156120fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211e9190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906121615760405162461bcd60e51b8152600401610314919061351a565b5061216a612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f79061219a9085906004016132cc565b60206040518083038186803b1580156121b257600080fd5b505afa1580156121c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ea919061309d565b90506121f78160006126ff565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d292769161222a9186919060040161337b565b600060405180830381600087803b15801561224457600080fd5b505af1158015612258573d6000803e3d6000fd5b50506040516001600160a01b03851692507f838ecdc4709a31a26db48b0c853212cedde3f725f07030079d793fb0719647609150600090a25050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b1580156122d857600080fd5b505afa1580156122ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123109190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906123535760405162461bcd60e51b8152600401610314919061351a565b5061235c612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f79061238c9085906004016132cc565b60206040518083038186803b1580156123a457600080fd5b505afa1580156123b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123dc919061309d565b90506123e98160006128bf565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d292769161241c9186919060040161337b565b600060405180830381600087803b15801561243657600080fd5b505af115801561244a573d6000803e3d6000fd5b50506040516001600160a01b03851692507f8bbf35441ac2c607ddecadd3d8ee58636d32f217fad201fb2655581502dd84e39150600090a25050565b61248e612e22565b6035546040516335ea6a7560e01b81526001600160a01b03909116906335ea6a75906124be9085906004016132cc565b6101806040518083038186803b1580156124d757600080fd5b505afa1580156124eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250f91906130b8565b90506000826001600160a01b03166370a082318360e001516040518263ffffffff1660e01b815260040161254391906132cc565b60206040518083038186803b15801561255b57600080fd5b505afa15801561256f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125939190613223565b9050801580156125ae575060608201516001600160801b0316155b604051806040016040528060028152602001610ccd60f21b81525090611e9f5760405162461bcd60e51b8152600401610314919061351a565b6038816125f55760006125f8565b60015b8351670100000000000000191660ff9190911690911b1790915250565b604080518082019091526002815261373160f01b602082015261ffff8211156126515760405162461bcd60e51b8152600401610314919061351a565b50815169ffff0000000000000000191660409190911b179052565b5161ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b60405163278f794360e11b815283906001600160a01b03821690634f1ef286906126c7908690869060040161334f565b600060405180830381600087803b1580156126e157600080fd5b505af11580156126f5573d6000803e3d6000fd5b5050505050505050565b60398161270d576000612710565b60015b8351670200000000000000191660ff9190911690911b1790915250565b600082158061273a575081155b156127475750600061279e565b81611388198161275357fe5b0483111560405180604001604052806002815260200161068760f31b815250906127905760405162461bcd60e51b8152600401610314919061351a565b505061271061138882840201045b92915050565b604080518082019091526002815261363760f01b602082015261ffff8211156127e05760405162461bcd60e51b8152600401610314919061351a565b50815161ffff1916179052565b60408051808201909152600281526106c760f31b602082015261ffff8211156128295760405162461bcd60e51b8152600401610314919061351a565b50815163ffff0000191660109190911b179052565b604080518082019091526002815261363960f01b602082015261ffff82111561287a5760405162461bcd60e51b8152600401610314919061351a565b50815165ffff00000000191660209190911b179052565b603a8161289f5760006128a2565b60015b8351670400000000000000191660ff9190911690911b1790915250565b603b816128cd5760006128d0565b60015b8351670800000000000000191660ff9190911690911b1790915250565b600190565b303b1590565b60006129cf61290a6020840184612f01565b63183fb41360e01b8561292360e0870160c08801612f01565b61293360c0880160a08901612f01565b612944610100890160e08a01612f01565b61295460808a0160608b0161323b565b6129626101208b018b6135e6565b6129706101408d018d6135e6565b61297e6101e08f018f61359a565b6040516024016129989b9a99989796959493929190613420565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612d1a565b90506000612a636129e66040850160208601612f01565b636111764560e11b866129ff60c0880160a08901612f01565b612a10610100890160e08a01612f01565b612a2060808a0160608b0161323b565b612a2e6101a08b018b6135e6565b612a3c6101c08d018d6135e6565b612a4a6101e08f018f61359a565b6040516024016129989a999897969594939291906134dc565b90506000612ae1612a7a6060860160408701612f01565b636111764560e11b87612a9360c0890160a08a01612f01565b612aa46101008a0160e08b01612f01565b612ab460808b0160608c0161323b565b612ac26101608c018c6135e6565b612ad06101808e018e6135e6565b8e806101e00190612a4a919061359a565b90506001600160a01b038516637a708e92612b0260c0870160a08801612f01565b858585612b1560a08b0160808c01612f01565b6040518663ffffffff1660e01b8152600401612b3595949392919061331d565b600060405180830381600087803b158015612b4f57600080fd5b505af1158015612b63573d6000803e3d6000fd5b50505050612b6f612e0f565b6001600160a01b03861663c44b11f7612b8e60c0880160a08901612f01565b6040518263ffffffff1660e01b8152600401612baa91906132cc565b60206040518083038186803b158015612bc257600080fd5b505afa158015612bd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfa919061309d565b9050612c19612c0f608087016060880161323b565b829060ff16612dbc565b612c248160016125e7565b612c2f8160006126ff565b6001600160a01b03861663b8d29276612c4e60c0880160a08901612f01565b83516040516001600160e01b031960e085901b168152612c7292919060040161337b565b600060405180830381600087803b158015612c8c57600080fd5b505af1158015612ca0573d6000803e3d6000fd5b5050506001600160a01b0385169050612cbf60c0870160a08801612f01565b6001600160a01b03167f3a0ca721fc364424566385a1aa271ed508cc2c0949c2272575fb3013a163a45f8585612cfb60a08b0160808c01612f01565b604051612d0a939291906132fa565b60405180910390a3505050505050565b60008030604051612d2a90612e8d565b612d3491906132cc565b604051809103906000f080158015612d50573d6000803e3d6000fd5b5060405163347d5e2560e21b81529091506001600160a01b0382169063d1f5789490612d82908790879060040161334f565b600060405180830381600087803b158015612d9c57600080fd5b505af1158015612db0573d6000803e3d6000fd5b50929695505050505050565b604080518082019091526002815261037360f41b602082015260ff821115612df75760405162461bcd60e51b8152600401610314919061351a565b50815166ff000000000000191660309190911b179052565b6040518060200160405280600081525090565b604051806101800160405280612e36612e0f565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6107738061366b83390190565b805161279e81613643565b600060208284031215612eb6578081fd5b612ec0602061361c565b9151825250919050565b80516001600160801b038116811461279e57600080fd5b805164ffffffffff8116811461279e57600080fd5b805161279e8161365b565b600060208284031215612f12578081fd5b8135612f1d81613643565b9392505050565b600060208284031215612f35578081fd5b8151612f1d81613643565b60008060408385031215612f52578081fd5b8235612f5d81613643565b91506020830135612f6d81613643565b809150509250929050565b60008060408385031215612f8a578182fd5b8235612f9581613643565b915060208301358015158114612f6d578182fd5b60008060408385031215612fbb578182fd5b8235612fc681613643565b946020939093013593505050565b60008060008060808587031215612fe9578182fd5b8435612ff481613643565b966020860135965060408601359560600135945092505050565b60008060208385031215613020578182fd5b823567ffffffffffffffff80821115613037578384fd5b818501915085601f83011261304a578384fd5b813581811115613058578485fd5b866020808302850101111561306b578485fd5b60209290920196919550909350505050565b60006020828403121561308e578081fd5b81358015158114612f1d578182fd5b6000602082840312156130ae578081fd5b612f1d8383612ea5565b60006101808083850312156130cb578182fd5b6130d48161361c565b90506130e08484612ea5565b81526130ef8460208501612eca565b60208201526131018460408501612eca565b60408201526131138460608501612eca565b60608201526131258460808501612eca565b60808201526131378460a08501612eca565b60a08201526131498460c08501612ee1565b60c082015261315b8460e08501612e9a565b60e082015261010061316f85828601612e9a565b9082015261012061318285858301612e9a565b9082015261014061319585858301612e9a565b908201526101606131a885858301612ef6565b908201529392505050565b6000602082840312156131c4578081fd5b813567ffffffffffffffff8111156131da578182fd5b820160e08185031215612f1d578182fd5b6000602082840312156131fc578081fd5b813567ffffffffffffffff811115613212578182fd5b820160c08185031215612f1d578182fd5b600060208284031215613234578081fd5b5051919050565b60006020828403121561324c578081fd5b8135612f1d8161365b565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452815b818110156132a65760208185018101518683018201520161328a565b818111156132b75782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6001600160a01b0395861681529385166020850152918416604084015283166060830152909116608082015260a00190565b6001600160a01b038316815260406020820181905260009061337390830184613281565b949350505050565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6001600160a01b038c811682528b811660208301528a81166040830152891660608201526080810188905261010060a082018190526000906133e4838201898b613257565b905082810360c08401526133f9818789613257565b905082810360e084015261340e818587613257565b9e9d5050505050505050505050505050565b6001600160a01b038c811682528b811660208301528a811660408301528916606082015260ff8816608082015261010060a082018190526000906133e4838201898b613257565b6001600160a01b038b811682528a81166020830152891660408201526060810188905260e0608082018190526000906134a3908301888a613257565b82810360a08401526134b6818789613257565b905082810360c08401526134cb818587613257565b9d9c50505050505050505050505050565b6001600160a01b038b811682528a811660208301528916604082015260ff8816606082015260e0608082018190526000906134a3908301888a613257565b600060208252612f1d6020830184613281565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b90815260200190565b9283526020830191909152604082015260600190565b6000808335601e198436030181126135b0578283fd5b83018035915067ffffffffffffffff8211156135ca578283fd5b6020019150368190038213156135df57600080fd5b9250929050565b6000808335601e198436030181126135b0578182fd5b600082356101fe19833603018112613612578182fd5b9190910192915050565b60405181810167ffffffffffffffff8111828210171561363b57600080fd5b604052919050565b6001600160a01b038116811461365857600080fd5b50565b60ff8116811461365857600080fdfe60a060405234801561001057600080fd5b506040516107733803806107738339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b03166106f36100806000398061022852806102725280610331528061045e528061048752806105af52506106f36000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b14610107578063d1f5789414610138578063f851a440146101ee575b610052610203565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661021d565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b509092509050610267565b34801561011357600080fd5b5061011c610324565b604080516001600160a01b039092168252519081900360200190f35b6100526004803603604081101561014e57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561017957600080fd5b82018360208201111561018b57600080fd5b803590602001918460018302840111640100000000831117156101ad57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610371945050505050565b3480156101fa57600080fd5b5061011c610451565b61020b6104ab565b61021b6102166104b3565b6104d8565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561025c57610257816104fc565b610264565b610264610203565b50565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610317576102a1836104fc565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146102fe576040519150601f19603f3d011682016040523d82523d6000602084013e610303565b606091505b505090508061031157600080fd5b5061031f565b61031f610203565b505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156103665761035f6104b3565b905061036e565b61036e610203565b90565b600061037b6104b3565b6001600160a01b03161461038e57600080fd5b6103978261053c565b80511561044d576000826001600160a01b0316826040518082805190602001908083835b602083106103da5780518252601f1990920191602091820191016103bb565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461043a576040519150601f19603f3d011682016040523d82523d6000602084013e61043f565b606091505b505090508061031f57600080fd5b5050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561036657507f000000000000000000000000000000000000000000000000000000000000000061036e565b61021b6105a4565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156104f7573d6000f35b3d6000fd5b6105058161053c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b61054581610614565b6105805760405162461bcd60e51b815260040180806020018281038252603b815260200180610683603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561060c5760405162461bcd60e51b81526004018080602001828103825260328152602001806106516032913960400191505060405180910390fd5b61021b61021b565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061064857508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212203801682b75a74ce25ca5dbe58739c5b62298b707b9119c9413881c56f29bcfa864736f6c634300060c0033a26469706673582212202e1f690b5f489f98ac02478bc6f42c96c0f05abcef2854d8e77fc5d02a46d8d564736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E13 DUP1 PUSH2 0x24 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x10B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAD4E6432 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xC4D66DE8 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x1F6 JUMPI DUP1 PUSH4 0xCEF84C51 EQ PUSH2 0x209 JUMPI DUP1 PUSH4 0xEEDE87C1 EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0xEF1F9373 EQ PUSH2 0x22F JUMPI DUP1 PUSH4 0xF53A2515 EQ PUSH2 0x242 JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0xAD4E6432 EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0xB75D6F34 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0xBB01C37C EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0xBF344183 EQ PUSH2 0x1E3 JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x7641F3D9 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x7641F3D9 EQ PUSH2 0x15E JUMPI DUP1 PUSH4 0x7ACA76EB EQ PUSH2 0x171 JUMPI DUP1 PUSH4 0x7C4E560B EQ PUSH2 0x184 JUMPI DUP1 PUSH4 0xA8DC0F45 EQ PUSH2 0x197 JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x1D2118F9 EQ PUSH2 0x110 JUMPI DUP1 PUSH4 0x3E72A454 EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0x4B4E6753 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0x7626CDE3 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x123 PUSH2 0x11E CALLDATASIZE PUSH1 0x4 PUSH2 0x2F40 JUMP JUMPDEST PUSH2 0x255 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x123 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x3C7 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x146 CALLDATASIZE PUSH1 0x4 PUSH2 0x2FA9 JUMP JUMPDEST PUSH2 0x5C2 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x159 CALLDATASIZE PUSH1 0x4 PUSH2 0x31EB JUMP JUMPDEST PUSH2 0x7C1 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x16C CALLDATASIZE PUSH1 0x4 PUSH2 0x307D JUMP JUMPDEST PUSH2 0xAE5 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x17F CALLDATASIZE PUSH1 0x4 PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0xC0A JUMP JUMPDEST PUSH2 0x123 PUSH2 0x192 CALLDATASIZE PUSH1 0x4 PUSH2 0x2FD4 JUMP JUMPDEST PUSH2 0xDFC JUMP JUMPDEST PUSH2 0x123 PUSH2 0x1A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x1125 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x1B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x31EB JUMP JUMPDEST PUSH2 0x1317 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x1CB CALLDATASIZE PUSH1 0x4 PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x15C4 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x1DE CALLDATASIZE PUSH1 0x4 PUSH2 0x31B3 JUMP JUMPDEST PUSH2 0x17B6 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x1F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x1A75 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x204 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x1C67 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x217 CALLDATASIZE PUSH1 0x4 PUSH2 0x300E JUMP JUMPDEST PUSH2 0x1D99 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x22A CALLDATASIZE PUSH1 0x4 PUSH2 0x2F78 JUMP JUMPDEST PUSH2 0x1EA5 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x23D CALLDATASIZE PUSH1 0x4 PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x20A2 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x250 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x2294 JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2D1 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x31D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x35 SLOAD PUSH1 0x40 MLOAD PUSH4 0x1D2118F9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x1D2118F9 SWAP1 PUSH2 0x350 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x32E0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x36A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x37E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x5644B64EBB0CE18C4032248CA52F58355469092FF072866C3DCD8640E817D6A5 DUP3 PUSH1 0x40 MLOAD PUSH2 0x3BB SWAP2 SWAP1 PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x40B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x41F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x443 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x486 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH2 0x490 DUP2 PUSH2 0x2486 JUMP JUMPDEST PUSH2 0x498 PUSH2 0x2E0F JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 MLOAD PUSH4 0xC44B11F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC44B11F7 SWAP1 PUSH2 0x4C8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4F4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x518 SWAP2 SWAP1 PUSH2 0x309D JUMP JUMPDEST SWAP1 POP PUSH2 0x525 DUP2 PUSH1 0x0 PUSH2 0x25E7 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 MLOAD PUSH1 0x40 MLOAD PUSH4 0x5C69493B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB8D29276 SWAP2 PUSH2 0x558 SWAP2 DUP7 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x337B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x572 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x586 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 POP PUSH32 0x6F60CF8BD0F218CABE1EA3150BD07B0B758C35C4CFDF7138017A283E65564D5E SWAP2 POP PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x606 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x61A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x63E SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x681 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH2 0x68A PUSH2 0x2E0F JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 MLOAD PUSH4 0xC44B11F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC44B11F7 SWAP1 PUSH2 0x6BA SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x70A SWAP2 SWAP1 PUSH2 0x309D JUMP JUMPDEST SWAP1 POP PUSH2 0x716 DUP2 DUP4 PUSH2 0x2615 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 MLOAD PUSH1 0x40 MLOAD PUSH4 0x5C69493B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB8D29276 SWAP2 PUSH2 0x749 SWAP2 DUP8 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x337B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x763 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x777 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2694CCB0B585B6A54B8D8B4A47AA874B05C257B43D34E98AEE50838BE00D3405 DUP4 PUSH1 0x40 MLOAD PUSH2 0x7B4 SWAP2 SWAP1 PUSH2 0x357B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x805 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x819 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x83D SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x880 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x895 PUSH2 0x2E22 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH4 0x35EA6A75 PUSH2 0x8B1 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2F01 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8CD SWAP2 SWAP1 PUSH2 0x32CC JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x91E SWAP2 SWAP1 PUSH2 0x30B8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x9B2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH4 0xC44B11F7 PUSH2 0x941 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2F01 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x95D SWAP2 SWAP1 PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x975 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x989 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9AD SWAP2 SWAP1 PUSH2 0x309D JUMP JUMPDEST PUSH2 0x266C JUMP JUMPDEST POP SWAP4 POP PUSH1 0x60 SWAP3 POP PUSH4 0x61117645 PUSH1 0xE1 SHL SWAP2 POP DUP6 SWAP1 POP PUSH2 0x9D3 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x9E3 PUSH1 0x40 DUP10 ADD PUSH1 0x20 DUP11 ADD PUSH2 0x2F01 JUMP JUMPDEST DUP6 PUSH2 0x9F1 PUSH1 0x40 DUP12 ADD DUP12 PUSH2 0x35E6 JUMP JUMPDEST PUSH2 0x9FE PUSH1 0x60 DUP14 ADD DUP14 PUSH2 0x35E6 JUMP JUMPDEST PUSH2 0xA0B PUSH1 0xA0 DUP16 ADD DUP16 PUSH2 0x359A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0xA24 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3467 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x100 DUP5 ADD MLOAD SWAP1 SWAP2 POP PUSH2 0xA79 SWAP1 PUSH2 0xA73 PUSH1 0xA0 DUP9 ADD PUSH1 0x80 DUP10 ADD PUSH2 0x2F01 JUMP JUMPDEST DUP4 PUSH2 0x2697 JUMP JUMPDEST PUSH2 0xA89 PUSH1 0xA0 DUP7 ADD PUSH1 0x80 DUP8 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x100 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND PUSH2 0xAA9 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2F01 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x7A943A5B6C214BF7726C069A878B1E2A8E7371981D516048B84E03743E67BC28 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EE554F5 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xDDCAA9EA SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB3D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB61 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B9B PUSH1 0xF1 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xBA4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH1 0x35 SLOAD PUSH1 0x40 MLOAD PUSH4 0xBEDB86FB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xBEDB86FB SWAP1 PUSH2 0xBD5 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x3394 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC03 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC62 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC86 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xCC9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH2 0xCD2 PUSH2 0x2E0F JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 MLOAD PUSH4 0xC44B11F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC44B11F7 SWAP1 PUSH2 0xD02 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD2E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD52 SWAP2 SWAP1 PUSH2 0x309D JUMP JUMPDEST SWAP1 POP PUSH2 0xD5F DUP2 PUSH1 0x1 PUSH2 0x26FF JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 MLOAD PUSH1 0x40 MLOAD PUSH4 0x5C69493B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB8D29276 SWAP2 PUSH2 0xD92 SWAP2 DUP7 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x337B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDC0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 POP PUSH32 0x85DC710ADD8A0914461A7DC5A63F6FC529A7700F8C6089A3FAF5E93256CCF12A SWAP2 POP PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE54 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE78 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xEBB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH2 0xEC4 PUSH2 0x2E0F JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 MLOAD PUSH4 0xC44B11F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC44B11F7 SWAP1 PUSH2 0xEF4 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF20 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF44 SWAP2 SWAP1 PUSH2 0x309D JUMP JUMPDEST SWAP1 POP DUP3 DUP5 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3735 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xF83 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x1014 JUMPI PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3735 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x2710 DUP4 GT PUSH2 0xFC5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH2 0x2710 PUSH2 0xFD3 DUP5 DUP5 PUSH2 0x272D JUMP JUMPDEST GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3735 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x100E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH2 0x1056 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3735 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP3 ISZERO PUSH2 0x104C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH2 0x1056 DUP6 PUSH2 0x2486 JUMP JUMPDEST PUSH2 0x1060 DUP2 DUP6 PUSH2 0x27A4 JUMP JUMPDEST PUSH2 0x106A DUP2 DUP5 PUSH2 0x27ED JUMP JUMPDEST PUSH2 0x1074 DUP2 DUP4 PUSH2 0x283E JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 MLOAD PUSH1 0x40 MLOAD PUSH4 0x5C69493B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB8D29276 SWAP2 PUSH2 0x10A7 SWAP2 DUP10 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x337B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x637FEBBDA9275AEA2E85C0FF690444C8D87EB2E8339BBEDE9715ABCC89CB0995 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x1116 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3584 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x117D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11A1 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x11E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH2 0x11ED PUSH2 0x2E0F JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 MLOAD PUSH4 0xC44B11F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC44B11F7 SWAP1 PUSH2 0x121D SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1235 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1249 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x126D SWAP2 SWAP1 PUSH2 0x309D JUMP JUMPDEST SWAP1 POP PUSH2 0x127A DUP2 PUSH1 0x0 PUSH2 0x2891 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 MLOAD PUSH1 0x40 MLOAD PUSH4 0x5C69493B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB8D29276 SWAP2 PUSH2 0x12AD SWAP2 DUP7 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x337B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x12DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 POP PUSH32 0xE9A7E5FD4FC8EA18E602350324BF48E8F05D12434AF0CE0BE05743E6A5FDCB9E SWAP2 POP PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x135B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x136F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1393 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x13D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13EB PUSH2 0x2E22 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH4 0x35EA6A75 PUSH2 0x1407 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2F01 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1423 SWAP2 SWAP1 PUSH2 0x32CC JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x143C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1450 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1474 SWAP2 SWAP1 PUSH2 0x30B8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1497 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH4 0xC44B11F7 PUSH2 0x941 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2F01 JUMP JUMPDEST POP SWAP4 POP PUSH1 0x60 SWAP3 POP PUSH4 0x61117645 PUSH1 0xE1 SHL SWAP2 POP DUP6 SWAP1 POP PUSH2 0x14B8 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x14C8 PUSH1 0x40 DUP10 ADD PUSH1 0x20 DUP11 ADD PUSH2 0x2F01 JUMP JUMPDEST DUP6 PUSH2 0x14D6 PUSH1 0x40 DUP12 ADD DUP12 PUSH2 0x35E6 JUMP JUMPDEST PUSH2 0x14E3 PUSH1 0x60 DUP14 ADD DUP14 PUSH2 0x35E6 JUMP JUMPDEST PUSH2 0x14F0 PUSH1 0xA0 DUP16 ADD DUP16 PUSH2 0x359A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1509 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3467 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x120 DUP5 ADD MLOAD SWAP1 SWAP2 POP PUSH2 0x1558 SWAP1 PUSH2 0xA73 PUSH1 0xA0 DUP9 ADD PUSH1 0x80 DUP10 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x1568 PUSH1 0xA0 DUP7 ADD PUSH1 0x80 DUP8 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x120 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND PUSH2 0x1588 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2F01 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x9439658A562A5C46B1173589DF89CF001483D685BAD28AEDAFF4A88656292D81 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1608 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x161C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1640 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1683 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH2 0x168C PUSH2 0x2E0F JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 MLOAD PUSH4 0xC44B11F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC44B11F7 SWAP1 PUSH2 0x16BC SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x170C SWAP2 SWAP1 PUSH2 0x309D JUMP JUMPDEST SWAP1 POP PUSH2 0x1719 DUP2 PUSH1 0x1 PUSH2 0x25E7 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 MLOAD PUSH1 0x40 MLOAD PUSH4 0x5C69493B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB8D29276 SWAP2 PUSH2 0x174C SWAP2 DUP7 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x337B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1766 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x177A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 POP PUSH32 0x35B80CD8EA3440E9A8454F116FA658B858DA1B64C86C48451F4559CEFCDFB56C SWAP2 POP PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x180E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1832 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1875 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x188A PUSH2 0x2E22 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH4 0x35EA6A75 PUSH2 0x18A6 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2F01 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18C2 SWAP2 SWAP1 PUSH2 0x32CC JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18EF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1913 SWAP2 SWAP1 PUSH2 0x30B8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1936 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH4 0xC44B11F7 PUSH2 0x941 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2F01 JUMP JUMPDEST POP SWAP4 POP PUSH1 0x60 SWAP3 POP PUSH4 0x183FB413 PUSH1 0xE0 SHL SWAP2 POP DUP6 SWAP1 POP PUSH2 0x195A PUSH1 0x40 DUP9 ADD PUSH1 0x20 DUP10 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x1967 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x1977 PUSH1 0x60 DUP11 ADD PUSH1 0x40 DUP12 ADD PUSH2 0x2F01 JUMP JUMPDEST DUP7 PUSH2 0x1985 PUSH1 0x60 DUP13 ADD DUP13 PUSH2 0x35E6 JUMP JUMPDEST PUSH2 0x1992 PUSH1 0x80 DUP15 ADD DUP15 PUSH2 0x35E6 JUMP JUMPDEST DUP15 DUP1 PUSH1 0xC0 ADD SWAP1 PUSH2 0x19A2 SWAP2 SWAP1 PUSH2 0x359A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x19BC SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x339F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP5 ADD MLOAD SWAP1 SWAP2 POP PUSH2 0x1A0A SWAP1 PUSH2 0xA73 PUSH1 0xC0 DUP9 ADD PUSH1 0xA0 DUP10 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x1A1A PUSH1 0xC0 DUP7 ADD PUSH1 0xA0 DUP8 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH1 0xE0 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND PUSH2 0x1A39 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2F01 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xA76F65411EC66A7FB6BC467432EB14767900449AE4469FA295E4441FE5E1CB73 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1ACD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1AF1 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1B34 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH2 0x1B3D PUSH2 0x2E0F JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 MLOAD PUSH4 0xC44B11F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC44B11F7 SWAP1 PUSH2 0x1B6D SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B99 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BBD SWAP2 SWAP1 PUSH2 0x309D JUMP JUMPDEST SWAP1 POP PUSH2 0x1BCA DUP2 PUSH1 0x1 PUSH2 0x28BF JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 MLOAD PUSH1 0x40 MLOAD PUSH4 0x5C69493B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB8D29276 SWAP2 PUSH2 0x1BFD SWAP2 DUP7 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x337B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C2B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 POP PUSH32 0x8DEE2B2F3E98319AE6347EDA521788F73F4086C9BE9A594942B370B137FB8CB1 SWAP2 POP PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C71 PUSH2 0x28ED JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 PUSH2 0x1C88 JUMPI POP PUSH2 0x1C88 PUSH2 0x28F2 JUMP JUMPDEST DUP1 PUSH2 0x1C94 JUMPI POP PUSH1 0x0 SLOAD DUP2 GT JUMPDEST PUSH2 0x1CB0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP1 PUSH2 0x352D JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x1CCF JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 OR SWAP1 SSTORE PUSH1 0x0 DUP3 SWAP1 SSTORE JUMPDEST PUSH1 0x34 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x261BF8B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH4 0x261BF8B SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D3F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D63 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x1D94 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DF1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1E15 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1E58 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1E9F JUMPI PUSH2 0x1E97 DUP3 DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x1E80 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1E92 SWAP2 SWAP1 PUSH2 0x35FC JUMP JUMPDEST PUSH2 0x28F8 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1E68 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EFD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F21 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1F64 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH2 0x1F6D PUSH2 0x2E0F JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 MLOAD PUSH4 0xC44B11F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC44B11F7 SWAP1 PUSH2 0x1F9D SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FC9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1FED SWAP2 SWAP1 PUSH2 0x309D JUMP JUMPDEST SWAP1 POP PUSH2 0x1FFA DUP2 PUSH1 0x1 PUSH2 0x2891 JUMP JUMPDEST PUSH2 0x2004 DUP2 DUP4 PUSH2 0x28BF JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 MLOAD PUSH1 0x40 MLOAD PUSH4 0x5C69493B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB8D29276 SWAP2 PUSH2 0x2037 SWAP2 DUP8 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x337B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2051 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2065 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xAB2F7F9E5CA2772FAFA94F355C1842A80AE6B9E41F83083098D81F67D7A0B508 DUP4 PUSH1 0x40 MLOAD PUSH2 0x7B4 SWAP2 SWAP1 PUSH2 0x3394 JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x20FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x211E SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x2161 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH2 0x216A PUSH2 0x2E0F JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 MLOAD PUSH4 0xC44B11F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC44B11F7 SWAP1 PUSH2 0x219A SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x21B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x21C6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x21EA SWAP2 SWAP1 PUSH2 0x309D JUMP JUMPDEST SWAP1 POP PUSH2 0x21F7 DUP2 PUSH1 0x0 PUSH2 0x26FF JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 MLOAD PUSH1 0x40 MLOAD PUSH4 0x5C69493B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB8D29276 SWAP2 PUSH2 0x222A SWAP2 DUP7 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x337B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2258 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 POP PUSH32 0x838ECDC4709A31A26DB48B0C853212CEDDE3F725F07030079D793FB071964760 SWAP2 POP PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x22EC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2310 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x2353 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH2 0x235C PUSH2 0x2E0F JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 MLOAD PUSH4 0xC44B11F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC44B11F7 SWAP1 PUSH2 0x238C SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x23A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x23DC SWAP2 SWAP1 PUSH2 0x309D JUMP JUMPDEST SWAP1 POP PUSH2 0x23E9 DUP2 PUSH1 0x0 PUSH2 0x28BF JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 MLOAD PUSH1 0x40 MLOAD PUSH4 0x5C69493B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB8D29276 SWAP2 PUSH2 0x241C SWAP2 DUP7 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x337B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x244A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 POP PUSH32 0x8BBF35441AC2C607DDECADD3D8EE58636D32F217FAD201FB2655581502DD84E3 SWAP2 POP PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0x248E PUSH2 0x2E22 JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 MLOAD PUSH4 0x35EA6A75 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x35EA6A75 SWAP1 PUSH2 0x24BE SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x32CC JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x24EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x250F SWAP2 SWAP1 PUSH2 0x30B8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP4 PUSH1 0xE0 ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2543 SWAP2 SWAP1 PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x255B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x256F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2593 SWAP2 SWAP1 PUSH2 0x3223 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH2 0x25AE JUMPI POP PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xCCD PUSH1 0xF2 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1E9F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST PUSH1 0x38 DUP2 PUSH2 0x25F5 JUMPI PUSH1 0x0 PUSH2 0x25F8 JUMP JUMPDEST PUSH1 0x1 JUMPDEST DUP4 MLOAD PUSH8 0x100000000000000 NOT AND PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND SWAP1 SWAP2 SHL OR SWAP1 SWAP2 MSTORE POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3731 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xFFFF DUP3 GT ISZERO PUSH2 0x2651 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP DUP2 MLOAD PUSH10 0xFFFF0000000000000000 NOT AND PUSH1 0x40 SWAP2 SWAP1 SWAP2 SHL OR SWAP1 MSTORE JUMP JUMPDEST MLOAD PUSH2 0xFFFF DUP1 DUP3 AND SWAP3 PUSH1 0x10 DUP4 SWAP1 SHR DUP3 AND SWAP3 PUSH1 0x20 DUP2 SWAP1 SHR DUP4 AND SWAP3 PUSH1 0x30 DUP3 SWAP1 SHR PUSH1 0xFF AND SWAP3 PUSH1 0x40 SWAP3 SWAP1 SWAP3 SHR AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x278F7943 PUSH1 0xE1 SHL DUP2 MSTORE DUP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x4F1EF286 SWAP1 PUSH2 0x26C7 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x334F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26F5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x39 DUP2 PUSH2 0x270D JUMPI PUSH1 0x0 PUSH2 0x2710 JUMP JUMPDEST PUSH1 0x1 JUMPDEST DUP4 MLOAD PUSH8 0x200000000000000 NOT AND PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND SWAP1 SWAP2 SHL OR SWAP1 SWAP2 MSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x273A JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x2747 JUMPI POP PUSH1 0x0 PUSH2 0x279E JUMP JUMPDEST DUP2 PUSH2 0x1388 NOT DUP2 PUSH2 0x2753 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x2790 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP POP PUSH2 0x2710 PUSH2 0x1388 DUP3 DUP5 MUL ADD DIV JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3637 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xFFFF DUP3 GT ISZERO PUSH2 0x27E0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP DUP2 MLOAD PUSH2 0xFFFF NOT AND OR SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x6C7 PUSH1 0xF3 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xFFFF DUP3 GT ISZERO PUSH2 0x2829 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP DUP2 MLOAD PUSH4 0xFFFF0000 NOT AND PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHL OR SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3639 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xFFFF DUP3 GT ISZERO PUSH2 0x287A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP DUP2 MLOAD PUSH6 0xFFFF00000000 NOT AND PUSH1 0x20 SWAP2 SWAP1 SWAP2 SHL OR SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x3A DUP2 PUSH2 0x289F JUMPI PUSH1 0x0 PUSH2 0x28A2 JUMP JUMPDEST PUSH1 0x1 JUMPDEST DUP4 MLOAD PUSH8 0x400000000000000 NOT AND PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND SWAP1 SWAP2 SHL OR SWAP1 SWAP2 MSTORE POP JUMP JUMPDEST PUSH1 0x3B DUP2 PUSH2 0x28CD JUMPI PUSH1 0x0 PUSH2 0x28D0 JUMP JUMPDEST PUSH1 0x1 JUMPDEST DUP4 MLOAD PUSH8 0x800000000000000 NOT AND PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND SWAP1 SWAP2 SHL OR SWAP1 SWAP2 MSTORE POP JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29CF PUSH2 0x290A PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x2F01 JUMP JUMPDEST PUSH4 0x183FB413 PUSH1 0xE0 SHL DUP6 PUSH2 0x2923 PUSH1 0xE0 DUP8 ADD PUSH1 0xC0 DUP9 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x2933 PUSH1 0xC0 DUP9 ADD PUSH1 0xA0 DUP10 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x2944 PUSH2 0x100 DUP10 ADD PUSH1 0xE0 DUP11 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x2954 PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x323B JUMP JUMPDEST PUSH2 0x2962 PUSH2 0x120 DUP12 ADD DUP12 PUSH2 0x35E6 JUMP JUMPDEST PUSH2 0x2970 PUSH2 0x140 DUP14 ADD DUP14 PUSH2 0x35E6 JUMP JUMPDEST PUSH2 0x297E PUSH2 0x1E0 DUP16 ADD DUP16 PUSH2 0x359A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2998 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3420 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x2D1A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2A63 PUSH2 0x29E6 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH4 0x61117645 PUSH1 0xE1 SHL DUP7 PUSH2 0x29FF PUSH1 0xC0 DUP9 ADD PUSH1 0xA0 DUP10 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x2A10 PUSH2 0x100 DUP10 ADD PUSH1 0xE0 DUP11 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x2A20 PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x323B JUMP JUMPDEST PUSH2 0x2A2E PUSH2 0x1A0 DUP12 ADD DUP12 PUSH2 0x35E6 JUMP JUMPDEST PUSH2 0x2A3C PUSH2 0x1C0 DUP14 ADD DUP14 PUSH2 0x35E6 JUMP JUMPDEST PUSH2 0x2A4A PUSH2 0x1E0 DUP16 ADD DUP16 PUSH2 0x359A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2998 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x34DC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2AE1 PUSH2 0x2A7A PUSH1 0x60 DUP7 ADD PUSH1 0x40 DUP8 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH4 0x61117645 PUSH1 0xE1 SHL DUP8 PUSH2 0x2A93 PUSH1 0xC0 DUP10 ADD PUSH1 0xA0 DUP11 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x2AA4 PUSH2 0x100 DUP11 ADD PUSH1 0xE0 DUP12 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x2AB4 PUSH1 0x80 DUP12 ADD PUSH1 0x60 DUP13 ADD PUSH2 0x323B JUMP JUMPDEST PUSH2 0x2AC2 PUSH2 0x160 DUP13 ADD DUP13 PUSH2 0x35E6 JUMP JUMPDEST PUSH2 0x2AD0 PUSH2 0x180 DUP15 ADD DUP15 PUSH2 0x35E6 JUMP JUMPDEST DUP15 DUP1 PUSH2 0x1E0 ADD SWAP1 PUSH2 0x2A4A SWAP2 SWAP1 PUSH2 0x359A JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0x7A708E92 PUSH2 0x2B02 PUSH1 0xC0 DUP8 ADD PUSH1 0xA0 DUP9 ADD PUSH2 0x2F01 JUMP JUMPDEST DUP6 DUP6 DUP6 PUSH2 0x2B15 PUSH1 0xA0 DUP12 ADD PUSH1 0x80 DUP13 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2B35 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x331D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2B63 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x2B6F PUSH2 0x2E0F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH4 0xC44B11F7 PUSH2 0x2B8E PUSH1 0xC0 DUP9 ADD PUSH1 0xA0 DUP10 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BAA SWAP2 SWAP1 PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BD6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2BFA SWAP2 SWAP1 PUSH2 0x309D JUMP JUMPDEST SWAP1 POP PUSH2 0x2C19 PUSH2 0x2C0F PUSH1 0x80 DUP8 ADD PUSH1 0x60 DUP9 ADD PUSH2 0x323B JUMP JUMPDEST DUP3 SWAP1 PUSH1 0xFF AND PUSH2 0x2DBC JUMP JUMPDEST PUSH2 0x2C24 DUP2 PUSH1 0x1 PUSH2 0x25E7 JUMP JUMPDEST PUSH2 0x2C2F DUP2 PUSH1 0x0 PUSH2 0x26FF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH4 0xB8D29276 PUSH2 0x2C4E PUSH1 0xC0 DUP9 ADD PUSH1 0xA0 DUP10 ADD PUSH2 0x2F01 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH2 0x2C72 SWAP3 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x337B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 POP PUSH2 0x2CBF PUSH1 0xC0 DUP8 ADD PUSH1 0xA0 DUP9 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x3A0CA721FC364424566385A1AA271ED508CC2C0949C2272575FB3013A163A45F DUP6 DUP6 PUSH2 0x2CFB PUSH1 0xA0 DUP12 ADD PUSH1 0x80 DUP13 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2D0A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x32FA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 ADDRESS PUSH1 0x40 MLOAD PUSH2 0x2D2A SWAP1 PUSH2 0x2E8D JUMP JUMPDEST PUSH2 0x2D34 SWAP2 SWAP1 PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x2D50 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x347D5E25 PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xD1F57894 SWAP1 PUSH2 0x2D82 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x334F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2DB0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x373 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xFF DUP3 GT ISZERO PUSH2 0x2DF7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP DUP2 MLOAD PUSH7 0xFF000000000000 NOT AND PUSH1 0x30 SWAP2 SWAP1 SWAP2 SHL OR SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x2E36 PUSH2 0x2E0F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x100 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x140 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x160 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x773 DUP1 PUSH2 0x366B DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x279E DUP2 PUSH2 0x3643 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2EB6 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x2EC0 PUSH1 0x20 PUSH2 0x361C JUMP JUMPDEST SWAP2 MLOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x279E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x279E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x279E DUP2 PUSH2 0x365B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2F12 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2F1D DUP2 PUSH2 0x3643 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2F35 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2F1D DUP2 PUSH2 0x3643 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2F52 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2F5D DUP2 PUSH2 0x3643 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2F6D DUP2 PUSH2 0x3643 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2F8A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2F95 DUP2 PUSH2 0x3643 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2F6D JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2FBB JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2FC6 DUP2 PUSH2 0x3643 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2FE9 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2FF4 DUP2 PUSH2 0x3643 JUMP JUMPDEST SWAP7 PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP7 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP6 PUSH1 0x60 ADD CALLDATALOAD SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3020 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3037 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x304A JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3058 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x306B JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x308E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2F1D JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x30AE JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x2F1D DUP4 DUP4 PUSH2 0x2EA5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x30CB JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x30D4 DUP2 PUSH2 0x361C JUMP JUMPDEST SWAP1 POP PUSH2 0x30E0 DUP5 DUP5 PUSH2 0x2EA5 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x30EF DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x2ECA JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3101 DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x2ECA JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x3113 DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x2ECA JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3125 DUP5 PUSH1 0x80 DUP6 ADD PUSH2 0x2ECA JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x3137 DUP5 PUSH1 0xA0 DUP6 ADD PUSH2 0x2ECA JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x3149 DUP5 PUSH1 0xC0 DUP6 ADD PUSH2 0x2EE1 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x315B DUP5 PUSH1 0xE0 DUP6 ADD PUSH2 0x2E9A JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 PUSH2 0x316F DUP6 DUP3 DUP7 ADD PUSH2 0x2E9A JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x120 PUSH2 0x3182 DUP6 DUP6 DUP4 ADD PUSH2 0x2E9A JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x140 PUSH2 0x3195 DUP6 DUP6 DUP4 ADD PUSH2 0x2E9A JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x160 PUSH2 0x31A8 DUP6 DUP6 DUP4 ADD PUSH2 0x2EF6 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x31C4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x31DA JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0xE0 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x2F1D JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x31FC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3212 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0xC0 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x2F1D JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3234 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x324C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2F1D DUP2 PUSH2 0x365B JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE DUP3 DUP3 PUSH1 0x20 DUP7 ADD CALLDATACOPY DUP1 PUSH1 0x20 DUP5 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP6 ADD ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x32A6 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x328A JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x32B7 JUMPI DUP3 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP2 MSTORE SWAP4 DUP6 AND PUSH1 0x20 DUP6 ADD MSTORE SWAP2 DUP5 AND PUSH1 0x40 DUP5 ADD MSTORE DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x3373 SWAP1 DUP4 ADD DUP5 PUSH2 0x3281 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 DUP2 AND DUP3 MSTORE DUP12 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP11 DUP2 AND PUSH1 0x40 DUP4 ADD MSTORE DUP10 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP9 SWAP1 MSTORE PUSH2 0x100 PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x33E4 DUP4 DUP3 ADD DUP10 DUP12 PUSH2 0x3257 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0xC0 DUP5 ADD MSTORE PUSH2 0x33F9 DUP2 DUP8 DUP10 PUSH2 0x3257 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x340E DUP2 DUP6 DUP8 PUSH2 0x3257 JUMP JUMPDEST SWAP15 SWAP14 POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 DUP2 AND DUP3 MSTORE DUP12 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP11 DUP2 AND PUSH1 0x40 DUP4 ADD MSTORE DUP10 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xFF DUP9 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x100 PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x33E4 DUP4 DUP3 ADD DUP10 DUP12 PUSH2 0x3257 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP3 MSTORE DUP11 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP10 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0xE0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x34A3 SWAP1 DUP4 ADD DUP9 DUP11 PUSH2 0x3257 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0xA0 DUP5 ADD MSTORE PUSH2 0x34B6 DUP2 DUP8 DUP10 PUSH2 0x3257 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0xC0 DUP5 ADD MSTORE PUSH2 0x34CB DUP2 DUP6 DUP8 PUSH2 0x3257 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP3 MSTORE DUP11 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP10 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xFF DUP9 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xE0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x34A3 SWAP1 DUP4 ADD DUP9 DUP11 PUSH2 0x3257 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x2F1D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3281 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x436F6E747261637420696E7374616E63652068617320616C7265616479206265 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x195B881A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x35B0 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x35CA JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x35DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x35B0 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH2 0x1FE NOT DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x3612 JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x363B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3658 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x3658 JUMPI PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x773 CODESIZE SUB DUP1 PUSH2 0x773 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 DUP2 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6F3 PUSH2 0x80 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x228 MSTORE DUP1 PUSH2 0x272 MSTORE DUP1 PUSH2 0x331 MSTORE DUP1 PUSH2 0x45E MSTORE DUP1 PUSH2 0x487 MSTORE DUP1 PUSH2 0x5AF MSTORE POP PUSH2 0x6F3 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x54 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x87 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x107 JUMPI DUP1 PUSH4 0xD1F57894 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x1EE JUMPI JUMPDEST PUSH2 0x52 PUSH2 0x203 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x21D JUMP JUMPDEST PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x267 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11C PUSH2 0x324 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x14E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x371 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11C PUSH2 0x451 JUMP JUMPDEST PUSH2 0x20B PUSH2 0x4AB JUMP JUMPDEST PUSH2 0x21B PUSH2 0x216 PUSH2 0x4B3 JUMP JUMPDEST PUSH2 0x4D8 JUMP JUMPDEST JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x25C JUMPI PUSH2 0x257 DUP2 PUSH2 0x4FC JUMP JUMPDEST PUSH2 0x264 JUMP JUMPDEST PUSH2 0x264 PUSH2 0x203 JUMP JUMPDEST POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x317 JUMPI PUSH2 0x2A1 DUP4 PUSH2 0x4FC JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2FE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x303 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31F JUMP JUMPDEST PUSH2 0x31F PUSH2 0x203 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x366 JUMPI PUSH2 0x35F PUSH2 0x4B3 JUMP JUMPDEST SWAP1 POP PUSH2 0x36E JUMP JUMPDEST PUSH2 0x36E PUSH2 0x203 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37B PUSH2 0x4B3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x397 DUP3 PUSH2 0x53C JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x44D JUMPI PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3DA JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3BB JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x43A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x43F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x366 JUMPI POP PUSH32 0x0 PUSH2 0x36E JUMP JUMPDEST PUSH2 0x21B PUSH2 0x5A4 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x4F7 JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x505 DUP2 PUSH2 0x53C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x545 DUP2 PUSH2 0x614 JUMP JUMPDEST PUSH2 0x580 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x683 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SSTORE JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x60C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x651 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x21B PUSH2 0x21B JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x648 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID NUMBER PUSH2 0x6E6E PUSH16 0x742063616C6C2066616C6C6261636B20 PUSH7 0x756E6374696F6E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH17 0x726F78792061646D696E43616E6E6F7420 PUSH20 0x657420612070726F787920696D706C656D656E74 PUSH2 0x7469 PUSH16 0x6E20746F2061206E6F6E2D636F6E7472 PUSH2 0x6374 KECCAK256 PUSH2 0x6464 PUSH19 0x657373A26469706673582212203801682B75A7 0x4C 0xE2 0x5C 0xA5 0xDB 0xE5 DUP8 CODECOPY 0xC5 0xB6 0x22 SWAP9 0xB7 SMOD 0xB9 GT SWAP13 SWAP5 SGT DUP9 SHR JUMP CALLCODE SWAP12 0xCF 0xA8 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2E 0x1F PUSH10 0xB5F489F98AC02478BC6 DELEGATECALL 0x2C SWAP7 0xC0 CREATE GAS 0xBC 0xEF 0x28 SLOAD 0xD8 0xE7 PUSH32 0xC5D02A46D8D564736F6C634300060C0033000000000000000000000000000000 ",
              "sourceMap": "1440:14849:70:-:0;;;926:1:74;884:43;;1440:14849:70;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061010b5760003560e01c8063ad4e6432116100a2578063c4d66de811610071578063c4d66de8146101f6578063cef84c5114610209578063eede87c11461021c578063ef1f93731461022f578063f53a2515146102425761010b565b8063ad4e6432146101aa578063b75d6f34146101bd578063bb01c37c146101d0578063bf344183146101e35761010b565b80637641f3d9116100de5780637641f3d91461015e5780637aca76eb146101715780637c4e560b14610184578063a8dc0f45146101975761010b565b80631d2118f9146101105780633e72a454146101255780634b4e6753146101385780637626cde31461014b575b600080fd5b61012361011e366004612f40565b610255565b005b610123610133366004612f01565b6103c7565b610123610146366004612fa9565b6105c2565b6101236101593660046131eb565b6107c1565b61012361016c36600461307d565b610ae5565b61012361017f366004612f01565b610c0a565b610123610192366004612fd4565b610dfc565b6101236101a5366004612f01565b611125565b6101236101b83660046131eb565b611317565b6101236101cb366004612f01565b6115c4565b6101236101de3660046131b3565b6117b6565b6101236101f1366004612f01565b611a75565b610123610204366004612f01565b611c67565b61012361021736600461300e565b611d99565b61012361022a366004612f78565b611ea5565b61012361023d366004612f01565b6120a2565b610123610250366004612f01565b612294565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561029957600080fd5b505afa1580156102ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d19190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b8152509061031d5760405162461bcd60e51b8152600401610314919061351a565b60405180910390fd5b50603554604051631d2118f960e01b81526001600160a01b0390911690631d2118f99061035090859085906004016132e0565b600060405180830381600087803b15801561036a57600080fd5b505af115801561037e573d6000803e3d6000fd5b50505050816001600160a01b03167f5644b64ebb0ce18c4032248ca52f58355469092ff072866c3dcd8640e817d6a5826040516103bb91906132cc565b60405180910390a25050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561040b57600080fd5b505afa15801561041f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104439190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906104865760405162461bcd60e51b8152600401610314919061351a565b5061049081612486565b610498612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f7906104c89085906004016132cc565b60206040518083038186803b1580156104e057600080fd5b505afa1580156104f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610518919061309d565b90506105258160006125e7565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d29276916105589186919060040161337b565b600060405180830381600087803b15801561057257600080fd5b505af1158015610586573d6000803e3d6000fd5b50506040516001600160a01b03851692507f6f60cf8bd0f218cabe1ea3150bd07b0b758c35c4cfdf7138017a283e65564d5e9150600090a25050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561060657600080fd5b505afa15801561061a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063e9190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906106815760405162461bcd60e51b8152600401610314919061351a565b5061068a612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f7906106ba9086906004016132cc565b60206040518083038186803b1580156106d257600080fd5b505afa1580156106e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070a919061309d565b90506107168183612615565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d29276916107499187919060040161337b565b600060405180830381600087803b15801561076357600080fd5b505af1158015610777573d6000803e3d6000fd5b50505050826001600160a01b03167f2694ccb0b585b6a54b8d8b4a47aa874b05c257b43d34e98aee50838be00d3405836040516107b4919061357b565b60405180910390a2505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561080557600080fd5b505afa158015610819573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083d9190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906108805760405162461bcd60e51b8152600401610314919061351a565b506035546001600160a01b0316610895612e22565b6001600160a01b0382166335ea6a756108b16020860186612f01565b6040518263ffffffff1660e01b81526004016108cd91906132cc565b6101806040518083038186803b1580156108e657600080fd5b505afa1580156108fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091e91906130b8565b905060006109b26001600160a01b03841663c44b11f76109416020880188612f01565b6040518263ffffffff1660e01b815260040161095d91906132cc565b60206040518083038186803b15801561097557600080fd5b505afa158015610989573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ad919061309d565b61266c565b50935060609250636111764560e11b91508590506109d36020880188612f01565b6109e36040890160208a01612f01565b856109f160408b018b6135e6565b6109fe60608d018d6135e6565b610a0b60a08f018f61359a565b604051602401610a249a99989796959493929190613467565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610100840151909150610a7990610a7360a0880160808901612f01565b83612697565b610a8960a0860160808701612f01565b6101008401516001600160a01b039182169116610aa96020880188612f01565b6001600160a01b03167f7a943a5b6c214bf7726c069a878b1e2a8e7371981d516048b84e03743e67bc2860405160405180910390a45050505050565b60345460408051636ee554f560e11b8152905133926001600160a01b03169163ddcaa9ea916004808301926020929190829003018186803b158015610b2957600080fd5b505afa158015610b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b619190612f24565b6001600160a01b031614604051806040016040528060028152602001611b9b60f11b81525090610ba45760405162461bcd60e51b8152600401610314919061351a565b5060355460405163bedb86fb60e01b81526001600160a01b039091169063bedb86fb90610bd5908490600401613394565b600060405180830381600087803b158015610bef57600080fd5b505af1158015610c03573d6000803e3d6000fd5b5050505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b158015610c4e57600080fd5b505afa158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c869190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b81525090610cc95760405162461bcd60e51b8152600401610314919061351a565b50610cd2612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f790610d029085906004016132cc565b60206040518083038186803b158015610d1a57600080fd5b505afa158015610d2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d52919061309d565b9050610d5f8160016126ff565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d2927691610d929186919060040161337b565b600060405180830381600087803b158015610dac57600080fd5b505af1158015610dc0573d6000803e3d6000fd5b50506040516001600160a01b03851692507f85dc710add8a0914461a7dc5a63f6fc529a7700f8c6089a3faf5e93256ccf12a9150600090a25050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b158015610e4057600080fd5b505afa158015610e54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e789190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b81525090610ebb5760405162461bcd60e51b8152600401610314919061351a565b50610ec4612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f790610ef49088906004016132cc565b60206040518083038186803b158015610f0c57600080fd5b505afa158015610f20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f44919061309d565b90508284111560405180604001604052806002815260200161373560f01b81525090610f835760405162461bcd60e51b8152600401610314919061351a565b50821561101457604080518082019091526002815261373560f01b60208201526127108311610fc55760405162461bcd60e51b8152600401610314919061351a565b50612710610fd3848461272d565b111560405180604001604052806002815260200161373560f01b8152509061100e5760405162461bcd60e51b8152600401610314919061351a565b50611056565b604080518082019091526002815261373560f01b6020820152821561104c5760405162461bcd60e51b8152600401610314919061351a565b5061105685612486565b61106081856127a4565b61106a81846127ed565b611074818361283e565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d29276916110a79189919060040161337b565b600060405180830381600087803b1580156110c157600080fd5b505af11580156110d5573d6000803e3d6000fd5b50505050846001600160a01b03167f637febbda9275aea2e85c0ff690444c8d87eb2e8339bbede9715abcc89cb099585858560405161111693929190613584565b60405180910390a25050505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561116957600080fd5b505afa15801561117d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a19190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906111e45760405162461bcd60e51b8152600401610314919061351a565b506111ed612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f79061121d9085906004016132cc565b60206040518083038186803b15801561123557600080fd5b505afa158015611249573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126d919061309d565b905061127a816000612891565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d29276916112ad9186919060040161337b565b600060405180830381600087803b1580156112c757600080fd5b505af11580156112db573d6000803e3d6000fd5b50506040516001600160a01b03851692507fe9a7e5fd4fc8ea18e602350324bf48e8f05d12434af0ce0be05743e6a5fdcb9e9150600090a25050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561135b57600080fd5b505afa15801561136f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113939190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906113d65760405162461bcd60e51b8152600401610314919061351a565b506035546001600160a01b03166113eb612e22565b6001600160a01b0382166335ea6a756114076020860186612f01565b6040518263ffffffff1660e01b815260040161142391906132cc565b6101806040518083038186803b15801561143c57600080fd5b505afa158015611450573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147491906130b8565b905060006114976001600160a01b03841663c44b11f76109416020880188612f01565b50935060609250636111764560e11b91508590506114b86020880188612f01565b6114c86040890160208a01612f01565b856114d660408b018b6135e6565b6114e360608d018d6135e6565b6114f060a08f018f61359a565b6040516024016115099a99989796959493929190613467565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261012084015190915061155890610a7360a0880160808901612f01565b61156860a0860160808701612f01565b6101208401516001600160a01b0391821691166115886020880188612f01565b6001600160a01b03167f9439658a562a5c46b1173589df89cf001483d685bad28aedaff4a88656292d8160405160405180910390a45050505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561160857600080fd5b505afa15801561161c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116409190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906116835760405162461bcd60e51b8152600401610314919061351a565b5061168c612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f7906116bc9085906004016132cc565b60206040518083038186803b1580156116d457600080fd5b505afa1580156116e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170c919061309d565b90506117198160016125e7565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d292769161174c9186919060040161337b565b600060405180830381600087803b15801561176657600080fd5b505af115801561177a573d6000803e3d6000fd5b50506040516001600160a01b03851692507f35b80cd8ea3440e9a8454f116fa658b858da1b64c86c48451f4559cefcdfb56c9150600090a25050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b1580156117fa57600080fd5b505afa15801561180e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118329190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906118755760405162461bcd60e51b8152600401610314919061351a565b506035546001600160a01b031661188a612e22565b6001600160a01b0382166335ea6a756118a66020860186612f01565b6040518263ffffffff1660e01b81526004016118c291906132cc565b6101806040518083038186803b1580156118db57600080fd5b505afa1580156118ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191391906130b8565b905060006119366001600160a01b03841663c44b11f76109416020880188612f01565b5093506060925063183fb41360e01b915085905061195a6040880160208901612f01565b6119676020890189612f01565b61197760608a0160408b01612f01565b8661198560608c018c6135e6565b61199260808e018e6135e6565b8e8060c001906119a2919061359a565b6040516024016119bc9b9a9998979695949392919061339f565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260e0840151909150611a0a90610a7360c0880160a08901612f01565b611a1a60c0860160a08701612f01565b60e08401516001600160a01b039182169116611a396020880188612f01565b6001600160a01b03167fa76f65411ec66a7fb6bc467432eb14767900449ae4469fa295e4441fe5e1cb7360405160405180910390a45050505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b158015611ab957600080fd5b505afa158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af19190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b81525090611b345760405162461bcd60e51b8152600401610314919061351a565b50611b3d612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f790611b6d9085906004016132cc565b60206040518083038186803b158015611b8557600080fd5b505afa158015611b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbd919061309d565b9050611bca8160016128bf565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d2927691611bfd9186919060040161337b565b600060405180830381600087803b158015611c1757600080fd5b505af1158015611c2b573d6000803e3d6000fd5b50506040516001600160a01b03851692507f8dee2b2f3e98319ae6347eda521788f73f4086c9be9a594942b370b137fb8cb19150600090a25050565b6000611c716128ed565b60015490915060ff1680611c885750611c886128f2565b80611c94575060005481115b611cb05760405162461bcd60e51b81526004016103149061352d565b60015460ff16158015611ccf576001805460ff19168117905560008290555b603480546001600160a01b0319166001600160a01b03858116919091179182905560408051630261bf8b60e01b815290519290911691630261bf8b91600480820192602092909190829003018186803b158015611d2b57600080fd5b505afa158015611d3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d639190612f24565b603580546001600160a01b0319166001600160a01b03929092169190911790558015611d94576001805460ff191690555b505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b158015611ddd57600080fd5b505afa158015611df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e159190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b81525090611e585760405162461bcd60e51b8152600401610314919061351a565b506035546001600160a01b031660005b82811015611e9f57611e9782858584818110611e8057fe5b9050602002810190611e9291906135fc565b6128f8565b600101611e68565b50505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b158015611ee957600080fd5b505afa158015611efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f219190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b81525090611f645760405162461bcd60e51b8152600401610314919061351a565b50611f6d612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f790611f9d9086906004016132cc565b60206040518083038186803b158015611fb557600080fd5b505afa158015611fc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fed919061309d565b9050611ffa816001612891565b61200481836128bf565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d29276916120379187919060040161337b565b600060405180830381600087803b15801561205157600080fd5b505af1158015612065573d6000803e3d6000fd5b50505050826001600160a01b03167fab2f7f9e5ca2772fafa94f355c1842a80ae6b9e41f83083098d81f67d7a0b508836040516107b49190613394565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b1580156120e657600080fd5b505afa1580156120fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211e9190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906121615760405162461bcd60e51b8152600401610314919061351a565b5061216a612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f79061219a9085906004016132cc565b60206040518083038186803b1580156121b257600080fd5b505afa1580156121c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ea919061309d565b90506121f78160006126ff565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d292769161222a9186919060040161337b565b600060405180830381600087803b15801561224457600080fd5b505af1158015612258573d6000803e3d6000fd5b50506040516001600160a01b03851692507f838ecdc4709a31a26db48b0c853212cedde3f725f07030079d793fb0719647609150600090a25050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b1580156122d857600080fd5b505afa1580156122ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123109190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906123535760405162461bcd60e51b8152600401610314919061351a565b5061235c612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f79061238c9085906004016132cc565b60206040518083038186803b1580156123a457600080fd5b505afa1580156123b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123dc919061309d565b90506123e98160006128bf565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d292769161241c9186919060040161337b565b600060405180830381600087803b15801561243657600080fd5b505af115801561244a573d6000803e3d6000fd5b50506040516001600160a01b03851692507f8bbf35441ac2c607ddecadd3d8ee58636d32f217fad201fb2655581502dd84e39150600090a25050565b61248e612e22565b6035546040516335ea6a7560e01b81526001600160a01b03909116906335ea6a75906124be9085906004016132cc565b6101806040518083038186803b1580156124d757600080fd5b505afa1580156124eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250f91906130b8565b90506000826001600160a01b03166370a082318360e001516040518263ffffffff1660e01b815260040161254391906132cc565b60206040518083038186803b15801561255b57600080fd5b505afa15801561256f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125939190613223565b9050801580156125ae575060608201516001600160801b0316155b604051806040016040528060028152602001610ccd60f21b81525090611e9f5760405162461bcd60e51b8152600401610314919061351a565b6038816125f55760006125f8565b60015b8351670100000000000000191660ff9190911690911b1790915250565b604080518082019091526002815261373160f01b602082015261ffff8211156126515760405162461bcd60e51b8152600401610314919061351a565b50815169ffff0000000000000000191660409190911b179052565b5161ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b60405163278f794360e11b815283906001600160a01b03821690634f1ef286906126c7908690869060040161334f565b600060405180830381600087803b1580156126e157600080fd5b505af11580156126f5573d6000803e3d6000fd5b5050505050505050565b60398161270d576000612710565b60015b8351670200000000000000191660ff9190911690911b1790915250565b600082158061273a575081155b156127475750600061279e565b81611388198161275357fe5b0483111560405180604001604052806002815260200161068760f31b815250906127905760405162461bcd60e51b8152600401610314919061351a565b505061271061138882840201045b92915050565b604080518082019091526002815261363760f01b602082015261ffff8211156127e05760405162461bcd60e51b8152600401610314919061351a565b50815161ffff1916179052565b60408051808201909152600281526106c760f31b602082015261ffff8211156128295760405162461bcd60e51b8152600401610314919061351a565b50815163ffff0000191660109190911b179052565b604080518082019091526002815261363960f01b602082015261ffff82111561287a5760405162461bcd60e51b8152600401610314919061351a565b50815165ffff00000000191660209190911b179052565b603a8161289f5760006128a2565b60015b8351670400000000000000191660ff9190911690911b1790915250565b603b816128cd5760006128d0565b60015b8351670800000000000000191660ff9190911690911b1790915250565b600190565b303b1590565b60006129cf61290a6020840184612f01565b63183fb41360e01b8561292360e0870160c08801612f01565b61293360c0880160a08901612f01565b612944610100890160e08a01612f01565b61295460808a0160608b0161323b565b6129626101208b018b6135e6565b6129706101408d018d6135e6565b61297e6101e08f018f61359a565b6040516024016129989b9a99989796959493929190613420565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612d1a565b90506000612a636129e66040850160208601612f01565b636111764560e11b866129ff60c0880160a08901612f01565b612a10610100890160e08a01612f01565b612a2060808a0160608b0161323b565b612a2e6101a08b018b6135e6565b612a3c6101c08d018d6135e6565b612a4a6101e08f018f61359a565b6040516024016129989a999897969594939291906134dc565b90506000612ae1612a7a6060860160408701612f01565b636111764560e11b87612a9360c0890160a08a01612f01565b612aa46101008a0160e08b01612f01565b612ab460808b0160608c0161323b565b612ac26101608c018c6135e6565b612ad06101808e018e6135e6565b8e806101e00190612a4a919061359a565b90506001600160a01b038516637a708e92612b0260c0870160a08801612f01565b858585612b1560a08b0160808c01612f01565b6040518663ffffffff1660e01b8152600401612b3595949392919061331d565b600060405180830381600087803b158015612b4f57600080fd5b505af1158015612b63573d6000803e3d6000fd5b50505050612b6f612e0f565b6001600160a01b03861663c44b11f7612b8e60c0880160a08901612f01565b6040518263ffffffff1660e01b8152600401612baa91906132cc565b60206040518083038186803b158015612bc257600080fd5b505afa158015612bd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfa919061309d565b9050612c19612c0f608087016060880161323b565b829060ff16612dbc565b612c248160016125e7565b612c2f8160006126ff565b6001600160a01b03861663b8d29276612c4e60c0880160a08901612f01565b83516040516001600160e01b031960e085901b168152612c7292919060040161337b565b600060405180830381600087803b158015612c8c57600080fd5b505af1158015612ca0573d6000803e3d6000fd5b5050506001600160a01b0385169050612cbf60c0870160a08801612f01565b6001600160a01b03167f3a0ca721fc364424566385a1aa271ed508cc2c0949c2272575fb3013a163a45f8585612cfb60a08b0160808c01612f01565b604051612d0a939291906132fa565b60405180910390a3505050505050565b60008030604051612d2a90612e8d565b612d3491906132cc565b604051809103906000f080158015612d50573d6000803e3d6000fd5b5060405163347d5e2560e21b81529091506001600160a01b0382169063d1f5789490612d82908790879060040161334f565b600060405180830381600087803b158015612d9c57600080fd5b505af1158015612db0573d6000803e3d6000fd5b50929695505050505050565b604080518082019091526002815261037360f41b602082015260ff821115612df75760405162461bcd60e51b8152600401610314919061351a565b50815166ff000000000000191660309190911b179052565b6040518060200160405280600081525090565b604051806101800160405280612e36612e0f565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6107738061366b83390190565b805161279e81613643565b600060208284031215612eb6578081fd5b612ec0602061361c565b9151825250919050565b80516001600160801b038116811461279e57600080fd5b805164ffffffffff8116811461279e57600080fd5b805161279e8161365b565b600060208284031215612f12578081fd5b8135612f1d81613643565b9392505050565b600060208284031215612f35578081fd5b8151612f1d81613643565b60008060408385031215612f52578081fd5b8235612f5d81613643565b91506020830135612f6d81613643565b809150509250929050565b60008060408385031215612f8a578182fd5b8235612f9581613643565b915060208301358015158114612f6d578182fd5b60008060408385031215612fbb578182fd5b8235612fc681613643565b946020939093013593505050565b60008060008060808587031215612fe9578182fd5b8435612ff481613643565b966020860135965060408601359560600135945092505050565b60008060208385031215613020578182fd5b823567ffffffffffffffff80821115613037578384fd5b818501915085601f83011261304a578384fd5b813581811115613058578485fd5b866020808302850101111561306b578485fd5b60209290920196919550909350505050565b60006020828403121561308e578081fd5b81358015158114612f1d578182fd5b6000602082840312156130ae578081fd5b612f1d8383612ea5565b60006101808083850312156130cb578182fd5b6130d48161361c565b90506130e08484612ea5565b81526130ef8460208501612eca565b60208201526131018460408501612eca565b60408201526131138460608501612eca565b60608201526131258460808501612eca565b60808201526131378460a08501612eca565b60a08201526131498460c08501612ee1565b60c082015261315b8460e08501612e9a565b60e082015261010061316f85828601612e9a565b9082015261012061318285858301612e9a565b9082015261014061319585858301612e9a565b908201526101606131a885858301612ef6565b908201529392505050565b6000602082840312156131c4578081fd5b813567ffffffffffffffff8111156131da578182fd5b820160e08185031215612f1d578182fd5b6000602082840312156131fc578081fd5b813567ffffffffffffffff811115613212578182fd5b820160c08185031215612f1d578182fd5b600060208284031215613234578081fd5b5051919050565b60006020828403121561324c578081fd5b8135612f1d8161365b565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452815b818110156132a65760208185018101518683018201520161328a565b818111156132b75782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6001600160a01b0395861681529385166020850152918416604084015283166060830152909116608082015260a00190565b6001600160a01b038316815260406020820181905260009061337390830184613281565b949350505050565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6001600160a01b038c811682528b811660208301528a81166040830152891660608201526080810188905261010060a082018190526000906133e4838201898b613257565b905082810360c08401526133f9818789613257565b905082810360e084015261340e818587613257565b9e9d5050505050505050505050505050565b6001600160a01b038c811682528b811660208301528a811660408301528916606082015260ff8816608082015261010060a082018190526000906133e4838201898b613257565b6001600160a01b038b811682528a81166020830152891660408201526060810188905260e0608082018190526000906134a3908301888a613257565b82810360a08401526134b6818789613257565b905082810360c08401526134cb818587613257565b9d9c50505050505050505050505050565b6001600160a01b038b811682528a811660208301528916604082015260ff8816606082015260e0608082018190526000906134a3908301888a613257565b600060208252612f1d6020830184613281565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b90815260200190565b9283526020830191909152604082015260600190565b6000808335601e198436030181126135b0578283fd5b83018035915067ffffffffffffffff8211156135ca578283fd5b6020019150368190038213156135df57600080fd5b9250929050565b6000808335601e198436030181126135b0578182fd5b600082356101fe19833603018112613612578182fd5b9190910192915050565b60405181810167ffffffffffffffff8111828210171561363b57600080fd5b604052919050565b6001600160a01b038116811461365857600080fd5b50565b60ff8116811461365857600080fdfe60a060405234801561001057600080fd5b506040516107733803806107738339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b03166106f36100806000398061022852806102725280610331528061045e528061048752806105af52506106f36000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b14610107578063d1f5789414610138578063f851a440146101ee575b610052610203565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661021d565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b509092509050610267565b34801561011357600080fd5b5061011c610324565b604080516001600160a01b039092168252519081900360200190f35b6100526004803603604081101561014e57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561017957600080fd5b82018360208201111561018b57600080fd5b803590602001918460018302840111640100000000831117156101ad57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610371945050505050565b3480156101fa57600080fd5b5061011c610451565b61020b6104ab565b61021b6102166104b3565b6104d8565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561025c57610257816104fc565b610264565b610264610203565b50565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610317576102a1836104fc565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146102fe576040519150601f19603f3d011682016040523d82523d6000602084013e610303565b606091505b505090508061031157600080fd5b5061031f565b61031f610203565b505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156103665761035f6104b3565b905061036e565b61036e610203565b90565b600061037b6104b3565b6001600160a01b03161461038e57600080fd5b6103978261053c565b80511561044d576000826001600160a01b0316826040518082805190602001908083835b602083106103da5780518252601f1990920191602091820191016103bb565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461043a576040519150601f19603f3d011682016040523d82523d6000602084013e61043f565b606091505b505090508061031f57600080fd5b5050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561036657507f000000000000000000000000000000000000000000000000000000000000000061036e565b61021b6105a4565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156104f7573d6000f35b3d6000fd5b6105058161053c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b61054581610614565b6105805760405162461bcd60e51b815260040180806020018281038252603b815260200180610683603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561060c5760405162461bcd60e51b81526004018080602001828103825260328152602001806106516032913960400191505060405180910390fd5b61021b61021b565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061064857508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212203801682b75a74ce25ca5dbe58739c5b62298b707b9119c9413881c56f29bcfa864736f6c634300060c0033a26469706673582212202e1f690b5f489f98ac02478bc6f42c96c0f05abcef2854d8e77fc5d02a46d8d564736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x10B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAD4E6432 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xC4D66DE8 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x1F6 JUMPI DUP1 PUSH4 0xCEF84C51 EQ PUSH2 0x209 JUMPI DUP1 PUSH4 0xEEDE87C1 EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0xEF1F9373 EQ PUSH2 0x22F JUMPI DUP1 PUSH4 0xF53A2515 EQ PUSH2 0x242 JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0xAD4E6432 EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0xB75D6F34 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0xBB01C37C EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0xBF344183 EQ PUSH2 0x1E3 JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x7641F3D9 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x7641F3D9 EQ PUSH2 0x15E JUMPI DUP1 PUSH4 0x7ACA76EB EQ PUSH2 0x171 JUMPI DUP1 PUSH4 0x7C4E560B EQ PUSH2 0x184 JUMPI DUP1 PUSH4 0xA8DC0F45 EQ PUSH2 0x197 JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x1D2118F9 EQ PUSH2 0x110 JUMPI DUP1 PUSH4 0x3E72A454 EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0x4B4E6753 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0x7626CDE3 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x123 PUSH2 0x11E CALLDATASIZE PUSH1 0x4 PUSH2 0x2F40 JUMP JUMPDEST PUSH2 0x255 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x123 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x3C7 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x146 CALLDATASIZE PUSH1 0x4 PUSH2 0x2FA9 JUMP JUMPDEST PUSH2 0x5C2 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x159 CALLDATASIZE PUSH1 0x4 PUSH2 0x31EB JUMP JUMPDEST PUSH2 0x7C1 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x16C CALLDATASIZE PUSH1 0x4 PUSH2 0x307D JUMP JUMPDEST PUSH2 0xAE5 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x17F CALLDATASIZE PUSH1 0x4 PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0xC0A JUMP JUMPDEST PUSH2 0x123 PUSH2 0x192 CALLDATASIZE PUSH1 0x4 PUSH2 0x2FD4 JUMP JUMPDEST PUSH2 0xDFC JUMP JUMPDEST PUSH2 0x123 PUSH2 0x1A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x1125 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x1B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x31EB JUMP JUMPDEST PUSH2 0x1317 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x1CB CALLDATASIZE PUSH1 0x4 PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x15C4 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x1DE CALLDATASIZE PUSH1 0x4 PUSH2 0x31B3 JUMP JUMPDEST PUSH2 0x17B6 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x1F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x1A75 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x204 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x1C67 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x217 CALLDATASIZE PUSH1 0x4 PUSH2 0x300E JUMP JUMPDEST PUSH2 0x1D99 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x22A CALLDATASIZE PUSH1 0x4 PUSH2 0x2F78 JUMP JUMPDEST PUSH2 0x1EA5 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x23D CALLDATASIZE PUSH1 0x4 PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x20A2 JUMP JUMPDEST PUSH2 0x123 PUSH2 0x250 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x2294 JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2D1 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x31D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x35 SLOAD PUSH1 0x40 MLOAD PUSH4 0x1D2118F9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x1D2118F9 SWAP1 PUSH2 0x350 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x32E0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x36A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x37E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x5644B64EBB0CE18C4032248CA52F58355469092FF072866C3DCD8640E817D6A5 DUP3 PUSH1 0x40 MLOAD PUSH2 0x3BB SWAP2 SWAP1 PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x40B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x41F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x443 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x486 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH2 0x490 DUP2 PUSH2 0x2486 JUMP JUMPDEST PUSH2 0x498 PUSH2 0x2E0F JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 MLOAD PUSH4 0xC44B11F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC44B11F7 SWAP1 PUSH2 0x4C8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4F4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x518 SWAP2 SWAP1 PUSH2 0x309D JUMP JUMPDEST SWAP1 POP PUSH2 0x525 DUP2 PUSH1 0x0 PUSH2 0x25E7 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 MLOAD PUSH1 0x40 MLOAD PUSH4 0x5C69493B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB8D29276 SWAP2 PUSH2 0x558 SWAP2 DUP7 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x337B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x572 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x586 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 POP PUSH32 0x6F60CF8BD0F218CABE1EA3150BD07B0B758C35C4CFDF7138017A283E65564D5E SWAP2 POP PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x606 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x61A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x63E SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x681 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH2 0x68A PUSH2 0x2E0F JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 MLOAD PUSH4 0xC44B11F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC44B11F7 SWAP1 PUSH2 0x6BA SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x70A SWAP2 SWAP1 PUSH2 0x309D JUMP JUMPDEST SWAP1 POP PUSH2 0x716 DUP2 DUP4 PUSH2 0x2615 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 MLOAD PUSH1 0x40 MLOAD PUSH4 0x5C69493B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB8D29276 SWAP2 PUSH2 0x749 SWAP2 DUP8 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x337B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x763 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x777 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2694CCB0B585B6A54B8D8B4A47AA874B05C257B43D34E98AEE50838BE00D3405 DUP4 PUSH1 0x40 MLOAD PUSH2 0x7B4 SWAP2 SWAP1 PUSH2 0x357B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x805 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x819 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x83D SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x880 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x895 PUSH2 0x2E22 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH4 0x35EA6A75 PUSH2 0x8B1 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2F01 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8CD SWAP2 SWAP1 PUSH2 0x32CC JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x91E SWAP2 SWAP1 PUSH2 0x30B8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x9B2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH4 0xC44B11F7 PUSH2 0x941 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2F01 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x95D SWAP2 SWAP1 PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x975 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x989 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9AD SWAP2 SWAP1 PUSH2 0x309D JUMP JUMPDEST PUSH2 0x266C JUMP JUMPDEST POP SWAP4 POP PUSH1 0x60 SWAP3 POP PUSH4 0x61117645 PUSH1 0xE1 SHL SWAP2 POP DUP6 SWAP1 POP PUSH2 0x9D3 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x9E3 PUSH1 0x40 DUP10 ADD PUSH1 0x20 DUP11 ADD PUSH2 0x2F01 JUMP JUMPDEST DUP6 PUSH2 0x9F1 PUSH1 0x40 DUP12 ADD DUP12 PUSH2 0x35E6 JUMP JUMPDEST PUSH2 0x9FE PUSH1 0x60 DUP14 ADD DUP14 PUSH2 0x35E6 JUMP JUMPDEST PUSH2 0xA0B PUSH1 0xA0 DUP16 ADD DUP16 PUSH2 0x359A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0xA24 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3467 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x100 DUP5 ADD MLOAD SWAP1 SWAP2 POP PUSH2 0xA79 SWAP1 PUSH2 0xA73 PUSH1 0xA0 DUP9 ADD PUSH1 0x80 DUP10 ADD PUSH2 0x2F01 JUMP JUMPDEST DUP4 PUSH2 0x2697 JUMP JUMPDEST PUSH2 0xA89 PUSH1 0xA0 DUP7 ADD PUSH1 0x80 DUP8 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x100 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND PUSH2 0xAA9 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2F01 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x7A943A5B6C214BF7726C069A878B1E2A8E7371981D516048B84E03743E67BC28 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EE554F5 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xDDCAA9EA SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB3D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB61 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B9B PUSH1 0xF1 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xBA4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH1 0x35 SLOAD PUSH1 0x40 MLOAD PUSH4 0xBEDB86FB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xBEDB86FB SWAP1 PUSH2 0xBD5 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x3394 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC03 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC62 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC86 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xCC9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH2 0xCD2 PUSH2 0x2E0F JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 MLOAD PUSH4 0xC44B11F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC44B11F7 SWAP1 PUSH2 0xD02 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD2E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD52 SWAP2 SWAP1 PUSH2 0x309D JUMP JUMPDEST SWAP1 POP PUSH2 0xD5F DUP2 PUSH1 0x1 PUSH2 0x26FF JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 MLOAD PUSH1 0x40 MLOAD PUSH4 0x5C69493B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB8D29276 SWAP2 PUSH2 0xD92 SWAP2 DUP7 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x337B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDC0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 POP PUSH32 0x85DC710ADD8A0914461A7DC5A63F6FC529A7700F8C6089A3FAF5E93256CCF12A SWAP2 POP PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE54 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE78 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xEBB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH2 0xEC4 PUSH2 0x2E0F JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 MLOAD PUSH4 0xC44B11F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC44B11F7 SWAP1 PUSH2 0xEF4 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF20 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF44 SWAP2 SWAP1 PUSH2 0x309D JUMP JUMPDEST SWAP1 POP DUP3 DUP5 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3735 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xF83 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP DUP3 ISZERO PUSH2 0x1014 JUMPI PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3735 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x2710 DUP4 GT PUSH2 0xFC5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH2 0x2710 PUSH2 0xFD3 DUP5 DUP5 PUSH2 0x272D JUMP JUMPDEST GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3735 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x100E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH2 0x1056 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3735 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP3 ISZERO PUSH2 0x104C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH2 0x1056 DUP6 PUSH2 0x2486 JUMP JUMPDEST PUSH2 0x1060 DUP2 DUP6 PUSH2 0x27A4 JUMP JUMPDEST PUSH2 0x106A DUP2 DUP5 PUSH2 0x27ED JUMP JUMPDEST PUSH2 0x1074 DUP2 DUP4 PUSH2 0x283E JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 MLOAD PUSH1 0x40 MLOAD PUSH4 0x5C69493B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB8D29276 SWAP2 PUSH2 0x10A7 SWAP2 DUP10 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x337B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x637FEBBDA9275AEA2E85C0FF690444C8D87EB2E8339BBEDE9715ABCC89CB0995 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x1116 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3584 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x117D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11A1 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x11E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH2 0x11ED PUSH2 0x2E0F JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 MLOAD PUSH4 0xC44B11F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC44B11F7 SWAP1 PUSH2 0x121D SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1235 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1249 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x126D SWAP2 SWAP1 PUSH2 0x309D JUMP JUMPDEST SWAP1 POP PUSH2 0x127A DUP2 PUSH1 0x0 PUSH2 0x2891 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 MLOAD PUSH1 0x40 MLOAD PUSH4 0x5C69493B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB8D29276 SWAP2 PUSH2 0x12AD SWAP2 DUP7 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x337B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x12DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 POP PUSH32 0xE9A7E5FD4FC8EA18E602350324BF48E8F05D12434AF0CE0BE05743E6A5FDCB9E SWAP2 POP PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x135B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x136F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1393 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x13D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13EB PUSH2 0x2E22 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH4 0x35EA6A75 PUSH2 0x1407 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2F01 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1423 SWAP2 SWAP1 PUSH2 0x32CC JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x143C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1450 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1474 SWAP2 SWAP1 PUSH2 0x30B8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1497 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH4 0xC44B11F7 PUSH2 0x941 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2F01 JUMP JUMPDEST POP SWAP4 POP PUSH1 0x60 SWAP3 POP PUSH4 0x61117645 PUSH1 0xE1 SHL SWAP2 POP DUP6 SWAP1 POP PUSH2 0x14B8 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x14C8 PUSH1 0x40 DUP10 ADD PUSH1 0x20 DUP11 ADD PUSH2 0x2F01 JUMP JUMPDEST DUP6 PUSH2 0x14D6 PUSH1 0x40 DUP12 ADD DUP12 PUSH2 0x35E6 JUMP JUMPDEST PUSH2 0x14E3 PUSH1 0x60 DUP14 ADD DUP14 PUSH2 0x35E6 JUMP JUMPDEST PUSH2 0x14F0 PUSH1 0xA0 DUP16 ADD DUP16 PUSH2 0x359A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1509 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3467 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x120 DUP5 ADD MLOAD SWAP1 SWAP2 POP PUSH2 0x1558 SWAP1 PUSH2 0xA73 PUSH1 0xA0 DUP9 ADD PUSH1 0x80 DUP10 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x1568 PUSH1 0xA0 DUP7 ADD PUSH1 0x80 DUP8 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x120 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND PUSH2 0x1588 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2F01 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x9439658A562A5C46B1173589DF89CF001483D685BAD28AEDAFF4A88656292D81 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1608 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x161C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1640 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1683 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH2 0x168C PUSH2 0x2E0F JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 MLOAD PUSH4 0xC44B11F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC44B11F7 SWAP1 PUSH2 0x16BC SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x170C SWAP2 SWAP1 PUSH2 0x309D JUMP JUMPDEST SWAP1 POP PUSH2 0x1719 DUP2 PUSH1 0x1 PUSH2 0x25E7 JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 MLOAD PUSH1 0x40 MLOAD PUSH4 0x5C69493B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB8D29276 SWAP2 PUSH2 0x174C SWAP2 DUP7 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x337B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1766 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x177A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 POP PUSH32 0x35B80CD8EA3440E9A8454F116FA658B858DA1B64C86C48451F4559CEFCDFB56C SWAP2 POP PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x180E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1832 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1875 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x188A PUSH2 0x2E22 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH4 0x35EA6A75 PUSH2 0x18A6 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x2F01 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18C2 SWAP2 SWAP1 PUSH2 0x32CC JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18EF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1913 SWAP2 SWAP1 PUSH2 0x30B8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1936 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH4 0xC44B11F7 PUSH2 0x941 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2F01 JUMP JUMPDEST POP SWAP4 POP PUSH1 0x60 SWAP3 POP PUSH4 0x183FB413 PUSH1 0xE0 SHL SWAP2 POP DUP6 SWAP1 POP PUSH2 0x195A PUSH1 0x40 DUP9 ADD PUSH1 0x20 DUP10 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x1967 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x1977 PUSH1 0x60 DUP11 ADD PUSH1 0x40 DUP12 ADD PUSH2 0x2F01 JUMP JUMPDEST DUP7 PUSH2 0x1985 PUSH1 0x60 DUP13 ADD DUP13 PUSH2 0x35E6 JUMP JUMPDEST PUSH2 0x1992 PUSH1 0x80 DUP15 ADD DUP15 PUSH2 0x35E6 JUMP JUMPDEST DUP15 DUP1 PUSH1 0xC0 ADD SWAP1 PUSH2 0x19A2 SWAP2 SWAP1 PUSH2 0x359A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x19BC SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x339F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP5 ADD MLOAD SWAP1 SWAP2 POP PUSH2 0x1A0A SWAP1 PUSH2 0xA73 PUSH1 0xC0 DUP9 ADD PUSH1 0xA0 DUP10 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x1A1A PUSH1 0xC0 DUP7 ADD PUSH1 0xA0 DUP8 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH1 0xE0 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND PUSH2 0x1A39 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2F01 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xA76F65411EC66A7FB6BC467432EB14767900449AE4469FA295E4441FE5E1CB73 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1ACD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1AF1 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1B34 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH2 0x1B3D PUSH2 0x2E0F JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 MLOAD PUSH4 0xC44B11F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC44B11F7 SWAP1 PUSH2 0x1B6D SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B99 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BBD SWAP2 SWAP1 PUSH2 0x309D JUMP JUMPDEST SWAP1 POP PUSH2 0x1BCA DUP2 PUSH1 0x1 PUSH2 0x28BF JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 MLOAD PUSH1 0x40 MLOAD PUSH4 0x5C69493B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB8D29276 SWAP2 PUSH2 0x1BFD SWAP2 DUP7 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x337B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C2B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 POP PUSH32 0x8DEE2B2F3E98319AE6347EDA521788F73F4086C9BE9A594942B370B137FB8CB1 SWAP2 POP PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C71 PUSH2 0x28ED JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 PUSH2 0x1C88 JUMPI POP PUSH2 0x1C88 PUSH2 0x28F2 JUMP JUMPDEST DUP1 PUSH2 0x1C94 JUMPI POP PUSH1 0x0 SLOAD DUP2 GT JUMPDEST PUSH2 0x1CB0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP1 PUSH2 0x352D JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x1CCF JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 OR SWAP1 SSTORE PUSH1 0x0 DUP3 SWAP1 SSTORE JUMPDEST PUSH1 0x34 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x261BF8B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH4 0x261BF8B SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D3F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D63 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x1D94 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DF1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1E15 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1E58 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1E9F JUMPI PUSH2 0x1E97 DUP3 DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x1E80 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1E92 SWAP2 SWAP1 PUSH2 0x35FC JUMP JUMPDEST PUSH2 0x28F8 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1E68 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EFD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F21 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1F64 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH2 0x1F6D PUSH2 0x2E0F JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 MLOAD PUSH4 0xC44B11F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC44B11F7 SWAP1 PUSH2 0x1F9D SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FC9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1FED SWAP2 SWAP1 PUSH2 0x309D JUMP JUMPDEST SWAP1 POP PUSH2 0x1FFA DUP2 PUSH1 0x1 PUSH2 0x2891 JUMP JUMPDEST PUSH2 0x2004 DUP2 DUP4 PUSH2 0x28BF JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 MLOAD PUSH1 0x40 MLOAD PUSH4 0x5C69493B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB8D29276 SWAP2 PUSH2 0x2037 SWAP2 DUP8 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x337B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2051 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2065 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xAB2F7F9E5CA2772FAFA94F355C1842A80AE6B9E41F83083098D81F67D7A0B508 DUP4 PUSH1 0x40 MLOAD PUSH2 0x7B4 SWAP2 SWAP1 PUSH2 0x3394 JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x20FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x211E SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x2161 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH2 0x216A PUSH2 0x2E0F JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 MLOAD PUSH4 0xC44B11F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC44B11F7 SWAP1 PUSH2 0x219A SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x21B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x21C6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x21EA SWAP2 SWAP1 PUSH2 0x309D JUMP JUMPDEST SWAP1 POP PUSH2 0x21F7 DUP2 PUSH1 0x0 PUSH2 0x26FF JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 MLOAD PUSH1 0x40 MLOAD PUSH4 0x5C69493B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB8D29276 SWAP2 PUSH2 0x222A SWAP2 DUP7 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x337B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2258 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 POP PUSH32 0x838ECDC4709A31A26DB48B0C853212CEDDE3F725F07030079D793FB071964760 SWAP2 POP PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x34 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x22EC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2310 SWAP2 SWAP1 PUSH2 0x2F24 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x2353 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP PUSH2 0x235C PUSH2 0x2E0F JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 MLOAD PUSH4 0xC44B11F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xC44B11F7 SWAP1 PUSH2 0x238C SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x23A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x23DC SWAP2 SWAP1 PUSH2 0x309D JUMP JUMPDEST SWAP1 POP PUSH2 0x23E9 DUP2 PUSH1 0x0 PUSH2 0x28BF JUMP JUMPDEST PUSH1 0x35 SLOAD DUP2 MLOAD PUSH1 0x40 MLOAD PUSH4 0x5C69493B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xB8D29276 SWAP2 PUSH2 0x241C SWAP2 DUP7 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x337B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x244A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP3 POP PUSH32 0x8BBF35441AC2C607DDECADD3D8EE58636D32F217FAD201FB2655581502DD84E3 SWAP2 POP PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH2 0x248E PUSH2 0x2E22 JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 MLOAD PUSH4 0x35EA6A75 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x35EA6A75 SWAP1 PUSH2 0x24BE SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x32CC JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x24EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x250F SWAP2 SWAP1 PUSH2 0x30B8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP4 PUSH1 0xE0 ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2543 SWAP2 SWAP1 PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x255B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x256F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2593 SWAP2 SWAP1 PUSH2 0x3223 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH2 0x25AE JUMPI POP PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xCCD PUSH1 0xF2 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1E9F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST PUSH1 0x38 DUP2 PUSH2 0x25F5 JUMPI PUSH1 0x0 PUSH2 0x25F8 JUMP JUMPDEST PUSH1 0x1 JUMPDEST DUP4 MLOAD PUSH8 0x100000000000000 NOT AND PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND SWAP1 SWAP2 SHL OR SWAP1 SWAP2 MSTORE POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3731 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xFFFF DUP3 GT ISZERO PUSH2 0x2651 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP DUP2 MLOAD PUSH10 0xFFFF0000000000000000 NOT AND PUSH1 0x40 SWAP2 SWAP1 SWAP2 SHL OR SWAP1 MSTORE JUMP JUMPDEST MLOAD PUSH2 0xFFFF DUP1 DUP3 AND SWAP3 PUSH1 0x10 DUP4 SWAP1 SHR DUP3 AND SWAP3 PUSH1 0x20 DUP2 SWAP1 SHR DUP4 AND SWAP3 PUSH1 0x30 DUP3 SWAP1 SHR PUSH1 0xFF AND SWAP3 PUSH1 0x40 SWAP3 SWAP1 SWAP3 SHR AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x278F7943 PUSH1 0xE1 SHL DUP2 MSTORE DUP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x4F1EF286 SWAP1 PUSH2 0x26C7 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x334F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26F5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x39 DUP2 PUSH2 0x270D JUMPI PUSH1 0x0 PUSH2 0x2710 JUMP JUMPDEST PUSH1 0x1 JUMPDEST DUP4 MLOAD PUSH8 0x200000000000000 NOT AND PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND SWAP1 SWAP2 SHL OR SWAP1 SWAP2 MSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x273A JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x2747 JUMPI POP PUSH1 0x0 PUSH2 0x279E JUMP JUMPDEST DUP2 PUSH2 0x1388 NOT DUP2 PUSH2 0x2753 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x2790 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP POP PUSH2 0x2710 PUSH2 0x1388 DUP3 DUP5 MUL ADD DIV JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3637 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xFFFF DUP3 GT ISZERO PUSH2 0x27E0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP DUP2 MLOAD PUSH2 0xFFFF NOT AND OR SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x6C7 PUSH1 0xF3 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xFFFF DUP3 GT ISZERO PUSH2 0x2829 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP DUP2 MLOAD PUSH4 0xFFFF0000 NOT AND PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHL OR SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3639 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xFFFF DUP3 GT ISZERO PUSH2 0x287A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP DUP2 MLOAD PUSH6 0xFFFF00000000 NOT AND PUSH1 0x20 SWAP2 SWAP1 SWAP2 SHL OR SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x3A DUP2 PUSH2 0x289F JUMPI PUSH1 0x0 PUSH2 0x28A2 JUMP JUMPDEST PUSH1 0x1 JUMPDEST DUP4 MLOAD PUSH8 0x400000000000000 NOT AND PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND SWAP1 SWAP2 SHL OR SWAP1 SWAP2 MSTORE POP JUMP JUMPDEST PUSH1 0x3B DUP2 PUSH2 0x28CD JUMPI PUSH1 0x0 PUSH2 0x28D0 JUMP JUMPDEST PUSH1 0x1 JUMPDEST DUP4 MLOAD PUSH8 0x800000000000000 NOT AND PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND SWAP1 SWAP2 SHL OR SWAP1 SWAP2 MSTORE POP JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29CF PUSH2 0x290A PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x2F01 JUMP JUMPDEST PUSH4 0x183FB413 PUSH1 0xE0 SHL DUP6 PUSH2 0x2923 PUSH1 0xE0 DUP8 ADD PUSH1 0xC0 DUP9 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x2933 PUSH1 0xC0 DUP9 ADD PUSH1 0xA0 DUP10 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x2944 PUSH2 0x100 DUP10 ADD PUSH1 0xE0 DUP11 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x2954 PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x323B JUMP JUMPDEST PUSH2 0x2962 PUSH2 0x120 DUP12 ADD DUP12 PUSH2 0x35E6 JUMP JUMPDEST PUSH2 0x2970 PUSH2 0x140 DUP14 ADD DUP14 PUSH2 0x35E6 JUMP JUMPDEST PUSH2 0x297E PUSH2 0x1E0 DUP16 ADD DUP16 PUSH2 0x359A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2998 SWAP12 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3420 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x2D1A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2A63 PUSH2 0x29E6 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH4 0x61117645 PUSH1 0xE1 SHL DUP7 PUSH2 0x29FF PUSH1 0xC0 DUP9 ADD PUSH1 0xA0 DUP10 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x2A10 PUSH2 0x100 DUP10 ADD PUSH1 0xE0 DUP11 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x2A20 PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x323B JUMP JUMPDEST PUSH2 0x2A2E PUSH2 0x1A0 DUP12 ADD DUP12 PUSH2 0x35E6 JUMP JUMPDEST PUSH2 0x2A3C PUSH2 0x1C0 DUP14 ADD DUP14 PUSH2 0x35E6 JUMP JUMPDEST PUSH2 0x2A4A PUSH2 0x1E0 DUP16 ADD DUP16 PUSH2 0x359A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2998 SWAP11 SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x34DC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2AE1 PUSH2 0x2A7A PUSH1 0x60 DUP7 ADD PUSH1 0x40 DUP8 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH4 0x61117645 PUSH1 0xE1 SHL DUP8 PUSH2 0x2A93 PUSH1 0xC0 DUP10 ADD PUSH1 0xA0 DUP11 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x2AA4 PUSH2 0x100 DUP11 ADD PUSH1 0xE0 DUP12 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH2 0x2AB4 PUSH1 0x80 DUP12 ADD PUSH1 0x60 DUP13 ADD PUSH2 0x323B JUMP JUMPDEST PUSH2 0x2AC2 PUSH2 0x160 DUP13 ADD DUP13 PUSH2 0x35E6 JUMP JUMPDEST PUSH2 0x2AD0 PUSH2 0x180 DUP15 ADD DUP15 PUSH2 0x35E6 JUMP JUMPDEST DUP15 DUP1 PUSH2 0x1E0 ADD SWAP1 PUSH2 0x2A4A SWAP2 SWAP1 PUSH2 0x359A JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH4 0x7A708E92 PUSH2 0x2B02 PUSH1 0xC0 DUP8 ADD PUSH1 0xA0 DUP9 ADD PUSH2 0x2F01 JUMP JUMPDEST DUP6 DUP6 DUP6 PUSH2 0x2B15 PUSH1 0xA0 DUP12 ADD PUSH1 0x80 DUP13 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2B35 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x331D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2B63 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x2B6F PUSH2 0x2E0F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH4 0xC44B11F7 PUSH2 0x2B8E PUSH1 0xC0 DUP9 ADD PUSH1 0xA0 DUP10 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BAA SWAP2 SWAP1 PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BD6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2BFA SWAP2 SWAP1 PUSH2 0x309D JUMP JUMPDEST SWAP1 POP PUSH2 0x2C19 PUSH2 0x2C0F PUSH1 0x80 DUP8 ADD PUSH1 0x60 DUP9 ADD PUSH2 0x323B JUMP JUMPDEST DUP3 SWAP1 PUSH1 0xFF AND PUSH2 0x2DBC JUMP JUMPDEST PUSH2 0x2C24 DUP2 PUSH1 0x1 PUSH2 0x25E7 JUMP JUMPDEST PUSH2 0x2C2F DUP2 PUSH1 0x0 PUSH2 0x26FF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH4 0xB8D29276 PUSH2 0x2C4E PUSH1 0xC0 DUP9 ADD PUSH1 0xA0 DUP10 ADD PUSH2 0x2F01 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH2 0x2C72 SWAP3 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x337B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 POP PUSH2 0x2CBF PUSH1 0xC0 DUP8 ADD PUSH1 0xA0 DUP9 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x3A0CA721FC364424566385A1AA271ED508CC2C0949C2272575FB3013A163A45F DUP6 DUP6 PUSH2 0x2CFB PUSH1 0xA0 DUP12 ADD PUSH1 0x80 DUP13 ADD PUSH2 0x2F01 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2D0A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x32FA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 ADDRESS PUSH1 0x40 MLOAD PUSH2 0x2D2A SWAP1 PUSH2 0x2E8D JUMP JUMPDEST PUSH2 0x2D34 SWAP2 SWAP1 PUSH2 0x32CC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x2D50 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x347D5E25 PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xD1F57894 SWAP1 PUSH2 0x2D82 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x334F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2DB0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x373 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xFF DUP3 GT ISZERO PUSH2 0x2DF7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x314 SWAP2 SWAP1 PUSH2 0x351A JUMP JUMPDEST POP DUP2 MLOAD PUSH7 0xFF000000000000 NOT AND PUSH1 0x30 SWAP2 SWAP1 SWAP2 SHL OR SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x180 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x2E36 PUSH2 0x2E0F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x100 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x140 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x160 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x773 DUP1 PUSH2 0x366B DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x279E DUP2 PUSH2 0x3643 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2EB6 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x2EC0 PUSH1 0x20 PUSH2 0x361C JUMP JUMPDEST SWAP2 MLOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x279E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x279E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x279E DUP2 PUSH2 0x365B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2F12 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2F1D DUP2 PUSH2 0x3643 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2F35 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2F1D DUP2 PUSH2 0x3643 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2F52 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2F5D DUP2 PUSH2 0x3643 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2F6D DUP2 PUSH2 0x3643 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2F8A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2F95 DUP2 PUSH2 0x3643 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2F6D JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2FBB JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2FC6 DUP2 PUSH2 0x3643 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2FE9 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2FF4 DUP2 PUSH2 0x3643 JUMP JUMPDEST SWAP7 PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP7 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP6 PUSH1 0x60 ADD CALLDATALOAD SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3020 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3037 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x304A JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3058 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x306B JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x308E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2F1D JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x30AE JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x2F1D DUP4 DUP4 PUSH2 0x2EA5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x180 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x30CB JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x30D4 DUP2 PUSH2 0x361C JUMP JUMPDEST SWAP1 POP PUSH2 0x30E0 DUP5 DUP5 PUSH2 0x2EA5 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x30EF DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x2ECA JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3101 DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x2ECA JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x3113 DUP5 PUSH1 0x60 DUP6 ADD PUSH2 0x2ECA JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3125 DUP5 PUSH1 0x80 DUP6 ADD PUSH2 0x2ECA JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x3137 DUP5 PUSH1 0xA0 DUP6 ADD PUSH2 0x2ECA JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x3149 DUP5 PUSH1 0xC0 DUP6 ADD PUSH2 0x2EE1 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x315B DUP5 PUSH1 0xE0 DUP6 ADD PUSH2 0x2E9A JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 PUSH2 0x316F DUP6 DUP3 DUP7 ADD PUSH2 0x2E9A JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x120 PUSH2 0x3182 DUP6 DUP6 DUP4 ADD PUSH2 0x2E9A JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x140 PUSH2 0x3195 DUP6 DUP6 DUP4 ADD PUSH2 0x2E9A JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x160 PUSH2 0x31A8 DUP6 DUP6 DUP4 ADD PUSH2 0x2EF6 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x31C4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x31DA JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0xE0 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x2F1D JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x31FC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3212 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 ADD PUSH1 0xC0 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x2F1D JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3234 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x324C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2F1D DUP2 PUSH2 0x365B JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE DUP3 DUP3 PUSH1 0x20 DUP7 ADD CALLDATACOPY DUP1 PUSH1 0x20 DUP5 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP6 ADD ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x32A6 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x328A JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x32B7 JUMPI DUP3 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND DUP2 MSTORE SWAP4 DUP6 AND PUSH1 0x20 DUP6 ADD MSTORE SWAP2 DUP5 AND PUSH1 0x40 DUP5 ADD MSTORE DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x3373 SWAP1 DUP4 ADD DUP5 PUSH2 0x3281 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 DUP2 AND DUP3 MSTORE DUP12 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP11 DUP2 AND PUSH1 0x40 DUP4 ADD MSTORE DUP10 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP9 SWAP1 MSTORE PUSH2 0x100 PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x33E4 DUP4 DUP3 ADD DUP10 DUP12 PUSH2 0x3257 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0xC0 DUP5 ADD MSTORE PUSH2 0x33F9 DUP2 DUP8 DUP10 PUSH2 0x3257 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x340E DUP2 DUP6 DUP8 PUSH2 0x3257 JUMP JUMPDEST SWAP15 SWAP14 POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 DUP2 AND DUP3 MSTORE DUP12 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP11 DUP2 AND PUSH1 0x40 DUP4 ADD MSTORE DUP10 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xFF DUP9 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x100 PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x33E4 DUP4 DUP3 ADD DUP10 DUP12 PUSH2 0x3257 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP3 MSTORE DUP11 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP10 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0xE0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x34A3 SWAP1 DUP4 ADD DUP9 DUP11 PUSH2 0x3257 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0xA0 DUP5 ADD MSTORE PUSH2 0x34B6 DUP2 DUP8 DUP10 PUSH2 0x3257 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0xC0 DUP5 ADD MSTORE PUSH2 0x34CB DUP2 DUP6 DUP8 PUSH2 0x3257 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP3 MSTORE DUP11 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP10 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xFF DUP9 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xE0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x34A3 SWAP1 DUP4 ADD DUP9 DUP11 PUSH2 0x3257 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x2F1D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3281 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x436F6E747261637420696E7374616E63652068617320616C7265616479206265 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x195B881A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x35B0 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x35CA JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x35DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x35B0 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH2 0x1FE NOT DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x3612 JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x363B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3658 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x3658 JUMPI PUSH1 0x0 DUP1 REVERT INVALID PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x773 CODESIZE SUB DUP1 PUSH2 0x773 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 DUP2 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6F3 PUSH2 0x80 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x228 MSTORE DUP1 PUSH2 0x272 MSTORE DUP1 PUSH2 0x331 MSTORE DUP1 PUSH2 0x45E MSTORE DUP1 PUSH2 0x487 MSTORE DUP1 PUSH2 0x5AF MSTORE POP PUSH2 0x6F3 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x54 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x87 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x107 JUMPI DUP1 PUSH4 0xD1F57894 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x1EE JUMPI JUMPDEST PUSH2 0x52 PUSH2 0x203 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x21D JUMP JUMPDEST PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x267 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11C PUSH2 0x324 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x14E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x371 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11C PUSH2 0x451 JUMP JUMPDEST PUSH2 0x20B PUSH2 0x4AB JUMP JUMPDEST PUSH2 0x21B PUSH2 0x216 PUSH2 0x4B3 JUMP JUMPDEST PUSH2 0x4D8 JUMP JUMPDEST JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x25C JUMPI PUSH2 0x257 DUP2 PUSH2 0x4FC JUMP JUMPDEST PUSH2 0x264 JUMP JUMPDEST PUSH2 0x264 PUSH2 0x203 JUMP JUMPDEST POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x317 JUMPI PUSH2 0x2A1 DUP4 PUSH2 0x4FC JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2FE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x303 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31F JUMP JUMPDEST PUSH2 0x31F PUSH2 0x203 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x366 JUMPI PUSH2 0x35F PUSH2 0x4B3 JUMP JUMPDEST SWAP1 POP PUSH2 0x36E JUMP JUMPDEST PUSH2 0x36E PUSH2 0x203 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37B PUSH2 0x4B3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x397 DUP3 PUSH2 0x53C JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x44D JUMPI PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3DA JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3BB JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x43A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x43F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x366 JUMPI POP PUSH32 0x0 PUSH2 0x36E JUMP JUMPDEST PUSH2 0x21B PUSH2 0x5A4 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x4F7 JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x505 DUP2 PUSH2 0x53C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x545 DUP2 PUSH2 0x614 JUMP JUMPDEST PUSH2 0x580 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x683 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SSTORE JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x60C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x651 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x21B PUSH2 0x21B JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x648 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID NUMBER PUSH2 0x6E6E PUSH16 0x742063616C6C2066616C6C6261636B20 PUSH7 0x756E6374696F6E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH17 0x726F78792061646D696E43616E6E6F7420 PUSH20 0x657420612070726F787920696D706C656D656E74 PUSH2 0x7469 PUSH16 0x6E20746F2061206E6F6E2D636F6E7472 PUSH2 0x6374 KECCAK256 PUSH2 0x6464 PUSH19 0x657373A26469706673582212203801682B75A7 0x4C 0xE2 0x5C 0xA5 0xDB 0xE5 DUP8 CODECOPY 0xC5 0xB6 0x22 SWAP9 0xB7 SMOD 0xB9 GT SWAP13 SWAP5 SGT DUP9 SHR JUMP CALLCODE SWAP12 0xCF 0xA8 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2E 0x1F PUSH10 0xB5F489F98AC02478BC6 DELEGATECALL 0x2C SWAP7 0xC0 CREATE GAS 0xBC 0xEF 0x28 SLOAD 0xD8 0xE7 PUSH32 0xC5D02A46D8D564736F6C634300060C0033000000000000000000000000000000 ",
              "sourceMap": "1440:14849:70:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14707:278;;;;;;:::i;:::-;;:::i;:::-;;12680:321;;;;;;:::i;:::-;;:::i;14140:344::-;;;;;;:::i;:::-;;:::i;5849:854::-;;;;;;:::i;:::-;;:::i;15160:89::-;;;;;;:::i;:::-;;:::i;13259:280::-;;;;;;:::i;:::-;;:::i;9449:1786::-;;;;;;:::i;:::-;;:::i;8475:315::-;;;;;;:::i;:::-;;:::i;6791:867::-;;;;;;:::i;:::-;;:::i;12277:285::-;;;;;;:::i;:::-;;:::i;4954:807::-;;;;;;:::i;:::-;;:::i;11373:323::-;;;;;;:::i;:::-;;:::i;2217:179::-;;;;;;:::i;:::-;;:::i;2453:222::-;;;;;;:::i;:::-;;:::i;7895:452::-;;;;;;:::i;:::-;;:::i;13655:285::-;;;;;;:::i;:::-;;:::i;11835:326::-;;;;;;:::i;:::-;;:::i;14707:278::-;1792:17;;:32;;;-1:-1:-1;;;1792:32:70;;;;1828:10;;-1:-1:-1;;;;;1792:17:70;;:30;;:32;;;;;;;;;;;;;;:17;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1792:46:70;;1840:28;;;;;;;;;;;;;-1:-1:-1;;;1840:28:70;;;1784:85;;;;;-1:-1:-1;;;1784:85:70;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;14837:4:70::1;::::0;:70:::1;::::0;-1:-1:-1;;;14837:70:70;;-1:-1:-1;;;;;14837:4:70;;::::1;::::0;:42:::1;::::0;:70:::1;::::0;14880:5;;14887:19;;14837:70:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14953:5;-1:-1:-1::0;;;;;14918:62:70::1;;14960:19;14918:62;;;;;;:::i;:::-;;;;;;;;14707:278:::0;;:::o;12680:321::-;1792:17;;:32;;;-1:-1:-1;;;1792:32:70;;;;1828:10;;-1:-1:-1;;;;;1792:17:70;;:30;;:32;;;;;;;;;;;;;;:17;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1792:46:70;;1840:28;;;;;;;;;;;;;-1:-1:-1;;;1840:28:70;;;1784:85;;;;;-1:-1:-1;;;1784:85:70;;;;;;;;:::i;:::-;;12751:24:::1;12769:5;12751:17;:24::i;:::-;12782:54;;:::i;:::-;12839:4;::::0;:28:::1;::::0;-1:-1:-1;;;12839:28:70;;-1:-1:-1;;;;;12839:4:70;;::::1;::::0;:21:::1;::::0;:28:::1;::::0;12861:5;;12839:28:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12782:85:::0;-1:-1:-1;12874:30:70::1;12782:85:::0;12898:5:::1;12874:23;:30::i;:::-;12911:4;::::0;12940:18;;12911:48:::1;::::0;-1:-1:-1;;;12911:48:70;;-1:-1:-1;;;;;12911:4:70;;::::1;::::0;:21:::1;::::0;:48:::1;::::0;12933:5;;12940:18;12911:48:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;12971:25:70::1;::::0;-1:-1:-1;;;;;12971:25:70;::::1;::::0;-1:-1:-1;12971:25:70::1;::::0;-1:-1:-1;12971:25:70;;::::1;1875:1;12680:321:::0;:::o;14140:344::-;1792:17;;:32;;;-1:-1:-1;;;1792:32:70;;;;1828:10;;-1:-1:-1;;;;;1792:17:70;;:30;;:32;;;;;;;;;;;;;;:17;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1792:46:70;;1840:28;;;;;;;;;;;;;-1:-1:-1;;;1840:28:70;;;1784:85;;;;;-1:-1:-1;;;1784:85:70;;;;;;;;:::i;:::-;;14233:54:::1;;:::i;:::-;14290:4;::::0;:28:::1;::::0;-1:-1:-1;;;14290:28:70;;-1:-1:-1;;;;;14290:4:70;;::::1;::::0;:21:::1;::::0;:28:::1;::::0;14312:5;;14290:28:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14233:85:::0;-1:-1:-1;14325:45:70::1;14233:85:::0;14356:13;14325:30:::1;:45::i;:::-;14377:4;::::0;14406:18;;14377:48:::1;::::0;-1:-1:-1;;;14377:48:70;;-1:-1:-1;;;;;14377:4:70;;::::1;::::0;:21:::1;::::0;:48:::1;::::0;14399:5;;14406:18;14377:48:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14458:5;-1:-1:-1::0;;;;;14437:42:70::1;;14465:13;14437:42;;;;;;:::i;:::-;;;;;;;;1875:1;14140:344:::0;;:::o;5849:854::-;1792:17;;:32;;;-1:-1:-1;;;1792:32:70;;;;1828:10;;-1:-1:-1;;;;;1792:17:70;;:30;;:32;;;;;;;;;;;;;;:17;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1792:46:70;;1840:28;;;;;;;;;;;;;-1:-1:-1;;;1840:28:70;;;1784:85;;;;;-1:-1:-1;;;1784:85:70;;;;;;;;:::i;:::-;-1:-1:-1;5972:4:70::1;::::0;-1:-1:-1;;;;;5972:4:70::1;5983:40;;:::i;:::-;-1:-1:-1::0;;;;;6026:25:70;::::1;;6052:11;;::::0;::::1;:5:::0;:11:::1;:::i;:::-;6026:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5983:81:::0;-1:-1:-1;6083:16:70::1;6105:58;-1:-1:-1::0;;;;;6105:27:70;::::1;;6133:11;;::::0;::::1;:5:::0;:11:::1;:::i;:::-;6105:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;:58::i;:::-;-1:-1:-1::0;6076:87:70;-1:-1:-1;6170:24:70::1;::::0;-1:-1:-1;;;;6229:43:70;-1:-1:-1;6282:10:70;;-1:-1:-1;6302:11:70::1;;::::0;::::1;:5:::0;:11:::1;:::i;:::-;6323:26;::::0;;;::::1;::::0;::::1;;:::i;:::-;6359:8:::0;6377:10:::1;;::::0;::::1;:5:::0;:10:::1;:::i;:::-;6397:12;;::::0;::::1;:5:::0;:12:::1;:::i;:::-;6419;;::::0;::::1;:5:::0;:12:::1;:::i;:::-;6197:242;;;;;;;;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;6197:242:70;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;6197:242:70::1;-1:-1:-1::0;;;;;;6197:242:70;;::::1;::::0;;;::::1;::::0;;;6481:34:::1;::::0;::::1;::::0;6197:242;;-1:-1:-1;6446:122:70::1;::::0;6523:20:::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;6551:11;6446:27;:122::i;:::-;6672:20;::::0;;;::::1;::::0;::::1;;:::i;:::-;6630:34;::::0;::::1;::::0;-1:-1:-1;;;;;6580:118:70;;::::1;::::0;::::1;6611:11;;::::0;::::1;:5:::0;:11:::1;:::i;:::-;-1:-1:-1::0;;;;;6580:118:70::1;;;;;;;;;;;1875:1;;;;5849:854:::0;:::o;15160:89::-;1934:17;;:37;;;-1:-1:-1;;;1934:37:70;;;;1975:10;;-1:-1:-1;;;;;1934:17:70;;:35;;:37;;;;;;;;;;;;;;:17;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1934:51:70;;1993:37;;;;;;;;;;;;;-1:-1:-1;;;1993:37:70;;;1919:117;;;;;-1:-1:-1;;;1919:117:70;;;;;;;;:::i;:::-;-1:-1:-1;15226:4:70::1;::::0;:18:::1;::::0;-1:-1:-1;;;15226:18:70;;-1:-1:-1;;;;;15226:4:70;;::::1;::::0;:13:::1;::::0;:18:::1;::::0;15240:3;;15226:18:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15160:89:::0;:::o;13259:280::-;1792:17;;:32;;;-1:-1:-1;;;1792:32:70;;;;1828:10;;-1:-1:-1;;;;;1792:17:70;;:30;;:32;;;;;;;;;;;;;;:17;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1792:46:70;;1840:28;;;;;;;;;;;;;-1:-1:-1;;;1840:28:70;;;1784:85;;;;;-1:-1:-1;;;1784:85:70;;;;;;;;:::i;:::-;;13326:54:::1;;:::i;:::-;13383:4;::::0;:28:::1;::::0;-1:-1:-1;;;13383:28:70;;-1:-1:-1;;;;;13383:4:70;;::::1;::::0;:21:::1;::::0;:28:::1;::::0;13405:5;;13383:28:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13326:85:::0;-1:-1:-1;13418:29:70::1;13326:85:::0;13442:4:::1;13418:23;:29::i;:::-;13454:4;::::0;13483:18;;13454:48:::1;::::0;-1:-1:-1;;;13454:48:70;;-1:-1:-1;;;;;13454:4:70;;::::1;::::0;:21:::1;::::0;:48:::1;::::0;13476:5;;13483:18;13454:48:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;13514:20:70::1;::::0;-1:-1:-1;;;;;13514:20:70;::::1;::::0;-1:-1:-1;13514:20:70::1;::::0;-1:-1:-1;13514:20:70;;::::1;1875:1;13259:280:::0;:::o;9449:1786::-;1792:17;;:32;;;-1:-1:-1;;;1792:32:70;;;;1828:10;;-1:-1:-1;;;;;1792:17:70;;:30;;:32;;;;;;;;;;;;;;:17;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1792:46:70;;1840:28;;;;;;;;;;;;;-1:-1:-1;;;1840:28:70;;;1784:85;;;;;-1:-1:-1;;;1784:85:70;;;;;;;;:::i;:::-;;9620:54:::1;;:::i;:::-;9677:4;::::0;:28:::1;::::0;-1:-1:-1;;;9677:28:70;;-1:-1:-1;;;;;9677:4:70;;::::1;::::0;:21:::1;::::0;:28:::1;::::0;9699:5;;9677:28:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9620:85;;9916:20;9909:3;:27;;9938:32;;;;;;;;;;;;;-1:-1:-1::0;;;9938:32:70::1;;::::0;9901:70:::1;;;;;-1:-1:-1::0;;;9901:70:70::1;;;;;;;;:::i;:::-;-1:-1:-1::0;9982:25:70;;9978:950:::1;;10243:32;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;10243:32:70::1;::::0;::::1;::::0;466:3:84::1;10182:51:70::0;::::1;10165:118;;;;-1:-1:-1::0;;;10165:118:70::1;;;;;;;;:::i;:::-;-1:-1:-1::0;466:3:84::1;10497:49:70;:20:::0;10529:16;10497:31:::1;:49::i;:::-;:85;;10592:32;;;;;;;;;;;;;-1:-1:-1::0;;;10592:32:70::1;;::::0;10480:152:::1;;;;;-1:-1:-1::0;;;10480:152:70::1;;;;;;;;:::i;:::-;;9978:950;;;10684:32;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;10684:32:70::1;::::0;::::1;::::0;10661:21;;10653:64:::1;;;;-1:-1:-1::0;;;10653:64:70::1;;;;;;;;:::i;:::-;;10897:24;10915:5;10897:17;:24::i;:::-;10934:25;:13:::0;10955:3;10934:20:::1;:25::i;:::-;10965:59;:13:::0;11003:20;10965:37:::1;:59::i;:::-;11030:51;:13:::0;11064:16;11030:33:::1;:51::i;:::-;11088:4;::::0;11117:18;;11088:48:::1;::::0;-1:-1:-1;;;11088:48:70;;-1:-1:-1;;;;;11088:4:70;;::::1;::::0;:21:::1;::::0;:48:::1;::::0;11110:5;;11117:18;11088:48:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11179:5;-1:-1:-1::0;;;;;11148:82:70::1;;11186:3;11191:20;11213:16;11148:82;;;;;;;;:::i;:::-;;;;;;;;1875:1;9449:1786:::0;;;;:::o;8475:315::-;1792:17;;:32;;;-1:-1:-1;;;1792:32:70;;;;1828:10;;-1:-1:-1;;;;;1792:17:70;;:30;;:32;;;;;;;;;;;;;;:17;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1792:46:70;;1840:28;;;;;;;;;;;;;-1:-1:-1;;;1840:28:70;;;1784:85;;;;;-1:-1:-1;;;1784:85:70;;;;;;;;:::i;:::-;;8554:54:::1;;:::i;:::-;8611:4;::::0;:28:::1;::::0;-1:-1:-1;;;8611:28:70;;-1:-1:-1;;;;;8611:4:70;;::::1;::::0;:21:::1;::::0;:28:::1;::::0;8633:5;;8611:28:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8554:85:::0;-1:-1:-1;8646:40:70::1;8554:85:::0;8680:5:::1;8646:33;:40::i;:::-;8693:4;::::0;8722:18;;8693:48:::1;::::0;-1:-1:-1;;;8693:48:70;;-1:-1:-1;;;;;8693:4:70;;::::1;::::0;:21:::1;::::0;:48:::1;::::0;8715:5;;8722:18;8693:48:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;8752:33:70::1;::::0;-1:-1:-1;;;;;8752:33:70;::::1;::::0;-1:-1:-1;8752:33:70::1;::::0;-1:-1:-1;8752:33:70;;::::1;1875:1;8475:315:::0;:::o;6791:867::-;1792:17;;:32;;;-1:-1:-1;;;1792:32:70;;;;1828:10;;-1:-1:-1;;;;;1792:17:70;;:30;;:32;;;;;;;;;;;;;;:17;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1792:46:70;;1840:28;;;;;;;;;;;;;-1:-1:-1;;;1840:28:70;;;1784:85;;;;;-1:-1:-1;;;1784:85:70;;;;;;;;:::i;:::-;-1:-1:-1;6926:4:70::1;::::0;-1:-1:-1;;;;;6926:4:70::1;6937:40;;:::i;:::-;-1:-1:-1::0;;;;;6980:25:70;::::1;;7006:11;;::::0;::::1;:5:::0;:11:::1;:::i;:::-;6980:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6937:81:::0;-1:-1:-1;7032:16:70::1;7054:58;-1:-1:-1::0;;;;;7054:27:70;::::1;;7082:11;;::::0;::::1;:5:::0;:11:::1;:::i;7054:58::-;-1:-1:-1::0;7025:87:70;-1:-1:-1;7119:24:70::1;::::0;-1:-1:-1;;;;7178:43:70;-1:-1:-1;7231:10:70;;-1:-1:-1;7251:11:70::1;;::::0;::::1;:5:::0;:11:::1;:::i;:::-;7272:26;::::0;;;::::1;::::0;::::1;;:::i;:::-;7308:8:::0;7326:10:::1;;::::0;::::1;:5:::0;:10:::1;:::i;:::-;7346:12;;::::0;::::1;:5:::0;:12:::1;:::i;:::-;7368;;::::0;::::1;:5:::0;:12:::1;:::i;:::-;7146:242;;;;;;;;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;7146:242:70;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;7146:242:70::1;-1:-1:-1::0;;;;;;7146:242:70;;::::1;::::0;;;::::1;::::0;;;7430:36:::1;::::0;::::1;::::0;7146:242;;-1:-1:-1;7395:124:70::1;::::0;7474:20:::1;::::0;;;::::1;::::0;::::1;;:::i;7395:124::-;7627:20;::::0;;;::::1;::::0;::::1;;:::i;:::-;7583:36;::::0;::::1;::::0;-1:-1:-1;;;;;7531:122:70;;::::1;::::0;::::1;7564:11;;::::0;::::1;:5:::0;:11:::1;:::i;:::-;-1:-1:-1::0;;;;;7531:122:70::1;;;;;;;;;;;1875:1;;;;6791:867:::0;:::o;12277:285::-;1792:17;;:32;;;-1:-1:-1;;;1792:32:70;;;;1828:10;;-1:-1:-1;;;;;1792:17:70;;:30;;:32;;;;;;;;;;;;;;:17;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1792:46:70;;1840:28;;;;;;;;;;;;;-1:-1:-1;;;1840:28:70;;;1784:85;;;;;-1:-1:-1;;;1784:85:70;;;;;;;;:::i;:::-;;12346:54:::1;;:::i;:::-;12403:4;::::0;:28:::1;::::0;-1:-1:-1;;;12403:28:70;;-1:-1:-1;;;;;12403:4:70;;::::1;::::0;:21:::1;::::0;:28:::1;::::0;12425:5;;12403:28:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12346:85:::0;-1:-1:-1;12438:29:70::1;12346:85:::0;12462:4:::1;12438:23;:29::i;:::-;12474:4;::::0;12503:18;;12474:48:::1;::::0;-1:-1:-1;;;12474:48:70;;-1:-1:-1;;;;;12474:4:70;;::::1;::::0;:21:::1;::::0;:48:::1;::::0;12496:5;;12503:18;12474:48:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;12534:23:70::1;::::0;-1:-1:-1;;;;;12534:23:70;::::1;::::0;-1:-1:-1;12534:23:70::1;::::0;-1:-1:-1;12534:23:70;;::::1;1875:1;12277:285:::0;:::o;4954:807::-;1792:17;;:32;;;-1:-1:-1;;;1792:32:70;;;;1828:10;;-1:-1:-1;;;;;1792:17:70;;:30;;:32;;;;;;;;;;;;;;:17;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1792:46:70;;1840:28;;;;;;;;;;;;;-1:-1:-1;;;1840:28:70;;;1784:85;;;;;-1:-1:-1;;;1784:85:70;;;;;;;;:::i;:::-;-1:-1:-1;5065:4:70::1;::::0;-1:-1:-1;;;;;5065:4:70::1;5076:40;;:::i;:::-;-1:-1:-1::0;;;;;5119:25:70;::::1;;5145:11;;::::0;::::1;:5:::0;:11:::1;:::i;:::-;5119:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5076:81:::0;-1:-1:-1;5171:16:70::1;5193:58;-1:-1:-1::0;;;;;5193:27:70;::::1;;5221:11;;::::0;::::1;:5:::0;:11:::1;:::i;5193:58::-;-1:-1:-1::0;5164:87:70;-1:-1:-1;5258:24:70::1;::::0;-1:-1:-1;;;;5317:40:70;-1:-1:-1;5367:10:70;;-1:-1:-1;5387:14:70::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;5411:11;;::::0;::::1;:5:::0;:11:::1;:::i;:::-;5432:26;::::0;;;::::1;::::0;::::1;;:::i;:::-;5468:8:::0;5486:10:::1;;::::0;::::1;:5:::0;:10:::1;:::i;:::-;5506:12;;::::0;::::1;:5:::0;:12:::1;:::i;:::-;5528:5;:12;;;;;;;;:::i;:::-;5285:263;;;;;;;;;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;5285:263:70;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;5285:263:70::1;-1:-1:-1::0;;;;;;5285:263:70;;::::1;::::0;;;::::1;::::0;;;5590:25:::1;::::0;::::1;::::0;5285:263;;-1:-1:-1;5555:113:70::1;::::0;5623:20:::1;::::0;;;::::1;::::0;::::1;;:::i;5555:113::-;5735:20;::::0;;;::::1;::::0;::::1;;:::i;:::-;5708:25;::::0;::::1;::::0;-1:-1:-1;;;;;5680:76:70;;::::1;::::0;::::1;5695:11;;::::0;::::1;:5:::0;:11:::1;:::i;:::-;-1:-1:-1::0;;;;;5680:76:70::1;;;;;;;;;;;1875:1;;;;4954:807:::0;:::o;11373:323::-;1792:17;;:32;;;-1:-1:-1;;;1792:32:70;;;;1828:10;;-1:-1:-1;;;;;1792:17:70;;:30;;:32;;;;;;;;;;;;;;:17;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1792:46:70;;1840:28;;;;;;;;;;;;;-1:-1:-1;;;1840:28:70;;;1784:85;;;;;-1:-1:-1;;;1784:85:70;;;;;;;;:::i;:::-;;11450:54:::1;;:::i;:::-;11507:4;::::0;:28:::1;::::0;-1:-1:-1;;;11507:28:70;;-1:-1:-1;;;;;11507:4:70;;::::1;::::0;:21:::1;::::0;:28:::1;::::0;11529:5;;11507:28:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11450:85:::0;-1:-1:-1;11542:49:70::1;11450:85:::0;11586:4:::1;11542:43;:49::i;:::-;11598:4;::::0;11627:18;;11598:48:::1;::::0;-1:-1:-1;;;11598:48:70;;-1:-1:-1;;;;;11598:4:70;;::::1;::::0;:21:::1;::::0;:48:::1;::::0;11620:5;;11627:18;11598:48:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11658:33:70::1;::::0;-1:-1:-1;;;;;11658:33:70;::::1;::::0;-1:-1:-1;11658:33:70::1;::::0;-1:-1:-1;11658:33:70;;::::1;1875:1;11373:323:::0;:::o;2217:179::-;1162:16:74;1181:13;:11;:13::i;:::-;1215:12;;1162:32;;-1:-1:-1;1215:12:74;;;:31;;;1231:15;:13;:15::i;:::-;1215:69;;;;1261:23;;1250:8;:34;1215:69;1200:146;;;;-1:-1:-1;;;1200:146:74;;;;;;;:::i;:::-;1376:12;;;;1375:13;1394:96;;;;1437:4;1422:19;;-1:-1:-1;;1422:19:74;;;;;:12;1449:34;;;1394:96;2302:17:70::1;:28:::0;;-1:-1:-1;;;;;;2302:28:70::1;-1:-1:-1::0;;;;;2302:28:70;;::::1;::::0;;;::::1;::::0;;;;2356:34:::1;::::0;;-1:-1:-1;;;2356:34:70;;;;:17;;;::::1;::::0;:32:::1;::::0;:34:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:17;:34;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2336:4;:55:::0;;-1:-1:-1;;;;;;2336:55:70::1;-1:-1:-1::0;;;;;2336:55:70;;;::::1;::::0;;;::::1;::::0;;1504::74;;;;1532:12;:20;;-1:-1:-1;;1532:20:74;;;1504:55;2217:179:70;;;:::o;2453:222::-;1792:17;;:32;;;-1:-1:-1;;;1792:32:70;;;;1828:10;;-1:-1:-1;;;;;1792:17:70;;:30;;:32;;;;;;;;;;;;;;:17;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1792:46:70;;1840:28;;;;;;;;;;;;;-1:-1:-1;;;1840:28:70;;;1784:85;;;;;-1:-1:-1;;;1784:85:70;;;;;;;;:::i;:::-;-1:-1:-1;2569:4:70::1;::::0;-1:-1:-1;;;;;2569:4:70::1;2543:23;2579:92;2599:16:::0;;::::1;2579:92;;;2630:34;2643:10;2655:5;;2661:1;2655:8;;;;;;;;;;;;;;;;;;:::i;:::-;2630:12;:34::i;:::-;2617:3;;2579:92;;;;1875:1;2453:222:::0;;:::o;7895:452::-;1792:17;;:32;;;-1:-1:-1;;;1792:32:70;;;;1828:10;;-1:-1:-1;;;;;1792:17:70;;:30;;:32;;;;;;;;;;;;;;:17;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1792:46:70;;1840:28;;;;;;;;;;;;;-1:-1:-1;;;1840:28:70;;;1784:85;;;;;-1:-1:-1;;;1784:85:70;;;;;;;;:::i;:::-;;8013:54:::1;;:::i;:::-;8070:4;::::0;:28:::1;::::0;-1:-1:-1;;;8070:28:70;;-1:-1:-1;;;;;8070:4:70;;::::1;::::0;:21:::1;::::0;:28:::1;::::0;8092:5;;8070:28:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8013:85:::0;-1:-1:-1;8105:39:70::1;8013:85:::0;8139:4:::1;8105:33;:39::i;:::-;8150:68;:13:::0;8194:23;8150:43:::1;:68::i;:::-;8225:4;::::0;8254:18;;8225:48:::1;::::0;-1:-1:-1;;;8225:48:70;;-1:-1:-1;;;;;8225:4:70;;::::1;::::0;:21:::1;::::0;:48:::1;::::0;8247:5;;8254:18;8225:48:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8311:5;-1:-1:-1::0;;;;;8285:57:70::1;;8318:23;8285:57;;;;;;:::i;13655:285::-:0;1792:17;;:32;;;-1:-1:-1;;;1792:32:70;;;;1828:10;;-1:-1:-1;;;;;1792:17:70;;:30;;:32;;;;;;;;;;;;;;:17;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1792:46:70;;1840:28;;;;;;;;;;;;;-1:-1:-1;;;1840:28:70;;;1784:85;;;;;-1:-1:-1;;;1784:85:70;;;;;;;;:::i;:::-;;13724:54:::1;;:::i;:::-;13781:4;::::0;:28:::1;::::0;-1:-1:-1;;;13781:28:70;;-1:-1:-1;;;;;13781:4:70;;::::1;::::0;:21:::1;::::0;:28:::1;::::0;13803:5;;13781:28:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13724:85:::0;-1:-1:-1;13816:30:70::1;13724:85:::0;13840:5:::1;13816:23;:30::i;:::-;13853:4;::::0;13882:18;;13853:48:::1;::::0;-1:-1:-1;;;13853:48:70;;-1:-1:-1;;;;;13853:4:70;;::::1;::::0;:21:::1;::::0;:48:::1;::::0;13875:5;;13882:18;13853:48:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;13913:22:70::1;::::0;-1:-1:-1;;;;;13913:22:70;::::1;::::0;-1:-1:-1;13913:22:70::1;::::0;-1:-1:-1;13913:22:70;;::::1;1875:1;13655:285:::0;:::o;11835:326::-;1792:17;;:32;;;-1:-1:-1;;;1792:32:70;;;;1828:10;;-1:-1:-1;;;;;1792:17:70;;:30;;:32;;;;;;;;;;;;;;:17;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1792:46:70;;1840:28;;;;;;;;;;;;;-1:-1:-1;;;1840:28:70;;;1784:85;;;;;-1:-1:-1;;;1784:85:70;;;;;;;;:::i;:::-;;11913:54:::1;;:::i;:::-;11970:4;::::0;:28:::1;::::0;-1:-1:-1;;;11970:28:70;;-1:-1:-1;;;;;11970:4:70;;::::1;::::0;:21:::1;::::0;:28:::1;::::0;11992:5;;11970:28:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11913:85:::0;-1:-1:-1;12005:50:70::1;11913:85:::0;12049:5:::1;12005:43;:50::i;:::-;12062:4;::::0;12091:18;;12062:48:::1;::::0;-1:-1:-1;;;12062:48:70;;-1:-1:-1;;;;;12062:4:70;;::::1;::::0;:21:::1;::::0;:48:::1;::::0;12084:5;;12091:18;12062:48:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;12122:34:70::1;::::0;-1:-1:-1;;;;;12122:34:70;::::1;::::0;-1:-1:-1;12122:34:70::1;::::0;-1:-1:-1;12122:34:70;;::::1;1875:1;11835:326:::0;:::o;15923:364::-;15985:40;;:::i;:::-;16028:4;;:26;;-1:-1:-1;;;16028:26:70;;-1:-1:-1;;;;;16028:4:70;;;;:19;;:26;;16048:5;;16028:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15985:69;;16061:26;16105:5;-1:-1:-1;;;;;16090:31:70;;16122:11;:25;;;16090:58;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16061:87;-1:-1:-1;16170:23:70;;:64;;;;-1:-1:-1;16197:32:70;;;;-1:-1:-1;;;;;16197:37:70;;16170:64;16242:34;;;;;;;;;;;;;-1:-1:-1;;;16242:34:70;;;16155:127;;;;;-1:-1:-1;;;16155:127:70;;;;;;;;:::i;5679:213:75:-;1869:2;5839:6;:14;;5852:1;5839:14;;;5848:1;5839:14;5797:9;;-1:-1:-1;;5797:23:75;5831;;;;;:55;;;5796:91;5778:109;;;-1:-1:-1;5679:213:75:o;8567:334::-;8744:32;;;;;;;;;;;;-1:-1:-1;;;8744:32:75;;;;2367:5;8701:41;;;8693:84;;;;-1:-1:-1;;;8693:84:75;;;;;;;;:::i;:::-;-1:-1:-1;8803:9:75;;-1:-1:-1;;8803:31:75;2113:2;8845:50;;;;8802:94;8784:112;;8567:334::o;10941:575::-;11152:9;11164;11152:21;;;;1692:2;11181:85;;;;;;1754:2;11274:77;;;;;;1815:2;11359:67;;;;;;2113:2;11434:71;;;;;;10941:575::o;15588:331:70:-;15864:50;;-1:-1:-1;;;15864:50:70;;15843:12;;-1:-1:-1;;;;;15864:22:70;;;;;:50;;15887:14;;15903:10;;15864:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15588:331;;;;:::o;6317:213:75:-;1923:2;6477:6;:14;;6490:1;6477:14;;;6486:1;6477:14;6435:9;;-1:-1:-1;;6435:23:75;6469;;;;;:55;;;6434:91;6416:109;;;-1:-1:-1;6317:213:75:o;802:351:84:-;880:7;899:10;;;:29;;-1:-1:-1;913:15:84;;899:29;895:58;;;-1:-1:-1;945:1:84;938:8;;895:58;1020:10;-1:-1:-1;;1020:10:84;983:47;;;;;974:5;:56;;1038:35;;;;;;;;;;;;;-1:-1:-1;;;1038:35:84;;;959:120;;;;;-1:-1:-1;;;959:120:84;;;;;;;;:::i;:::-;-1:-1:-1;;466:3:84;536:21;1094:18;;;:33;1093:55;802:351;;;;;:::o;2509:200:75:-;2635:21;;;;;;;;;;;;-1:-1:-1;;;2635:21:75;;;;2153:5;2613:20;;;2605:52;;;;-1:-1:-1;;;2605:52:75;;;;;;;;:::i;:::-;-1:-1:-1;2677:9:75;;-1:-1:-1;;2677:20:75;2676:28;2664:40;;2509:200::o;3151:349::-;3334:31;;;;;;;;;;;;-1:-1:-1;;;3334:31:75;;;;2213:5;3288:44;;;3280:86;;;;-1:-1:-1;;;3280:86:75;;;;;;;;:::i;:::-;-1:-1:-1;3392:9:75;;-1:-1:-1;;3392:38:75;1692:2;3441:53;;;;3391:104;3373:122;;3151:349::o;4041:317::-;4208:27;;;;;;;;;;;;-1:-1:-1;;;4208:27:75;;;;2269:5;4170:36;;;4162:74;;;;-1:-1:-1;;;4162:74:75;;;;;;;;:::i;:::-;-1:-1:-1;4262:9:75;;-1:-1:-1;;4262:34:75;1754:2;4307:45;;;;4261:92;4243:110;;4041:317::o;7006:246::-;1985:2;7190:7;:15;;7204:1;7190:15;;;7200:1;7190:15;7145:9;;-1:-1:-1;;7145:26:75;7182:24;;;;;:64;;;7144:103;7126:121;;;-1:-1:-1;7006:246:75:o;7785:272::-;2054:2;7988:7;:15;;8002:1;7988:15;;;7998:1;7988:15;7936:9;;-1:-1:-1;;7936:33:75;7980:24;;;;;:71;;;7935:117;7917:135;;;-1:-1:-1;7785:272:75:o;2110:103:70:-;2102:3;2110:103;:::o;1858:510:74:-;2328:9;2316:22;2356:7;1858:510;:::o;2679:2198:70:-;2768:26;2803:410;2832:16;;;;:5;:16;:::i;:::-;-1:-1:-1;;;2944:4:70;2960:14;2892:40;2960:14;;;;;;:::i;:::-;2986:21;;;;;;;;:::i;:::-;3045:26;;;;;;;;:::i;:::-;3084:29;;;;;;;;:::i;:::-;3125:16;;;;:5;:16;:::i;:::-;3153:18;;;;:5;:18;:::i;:::-;3183:12;;;;:5;:12;:::i;:::-;2858:347;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2858:347:70;;;;;;;;;;;;;;-1:-1:-1;;;;;2858:347:70;-1:-1:-1;;;;;;2858:347:70;;;;;;;;;;2803:19;:410::i;:::-;2768:445;-1:-1:-1;3220:35:70;3264:414;3293:25;;;;;;;;:::i;:::-;-1:-1:-1;;;3417:4:70;3433:21;;;;;;;;:::i;:::-;3492:26;;;;;;;;:::i;:::-;3531:29;;;;;;;;:::i;:::-;3572:25;;;;:5;:25;:::i;:::-;3609:27;;;;:5;:27;:::i;:::-;3648:12;;;;:5;:12;:::i;:::-;3328:342;;;;;;;;;;;;;;;;;:::i;3264:414::-;3220:458;-1:-1:-1;3685:37:70;3731:420;3760:27;;;;;;;;:::i;:::-;-1:-1:-1;;;3886:4:70;3902:21;;;;;;;;:::i;:::-;3961:26;;;;;;;;:::i;:::-;4000:29;;;;;;;;:::i;:::-;4041:27;;;;:5;:27;:::i;:::-;4080:29;;;;:5;:29;:::i;:::-;4121:5;:12;;;;;;;;:::i;3731:420::-;3685:466;-1:-1:-1;;;;;;4158:16:70;;;4182:21;;;;;;;;:::i;:::-;4211:18;4237:27;4272:29;4309:33;;;;;;;;:::i;:::-;4158:190;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4355:54;;:::i;:::-;-1:-1:-1;;;;;4418:21:70;;;4440;;;;;;;;:::i;:::-;4418:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4355:107;-1:-1:-1;4469:56:70;4495:29;;;;;;;;:::i;:::-;4469:13;;:56;;:25;:56::i;:::-;4532:29;:13;4556:4;4532:23;:29::i;:::-;4567:30;:13;4591:5;4567:23;:30::i;:::-;-1:-1:-1;;;;;4604:21:70;;;4626;;;;;;;;:::i;:::-;4649:18;;4604:64;;-1:-1:-1;;;;;;4604:64:70;;;;;;;;;;4649:18;4604:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;4680:192:70;;;-1:-1:-1;4706:21:70;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4680:192:70;;4761:27;4796:29;4833:33;;;;;;;;:::i;:::-;4680:192;;;;;;;;:::i;:::-;;;;;;;;2679:2198;;;;;;:::o;15253:331::-;15357:7;15374:52;15494:4;15435:65;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15507:44:70;;-1:-1:-1;;;15507:44:70;;15374:126;;-1:-1:-1;;;;;;15507:16:70;;;;;:44;;15524:14;;15540:10;;15507:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15573:5:70;;15253:331;-1:-1:-1;;;;;;15253:331:70:o;4884:286:75:-;5040:26;;;;;;;;;;;;-1:-1:-1;;;5040:26:75;;;;2316:3;5008:30;;;5000:67;;;;-1:-1:-1;;;5000:67:75;;;;;;;;:::i;:::-;-1:-1:-1;5087:9:75;;-1:-1:-1;;5087:25:75;1815:2;5117:47;;;;5086:79;5074:91;;4884:286::o;-1:-1:-1:-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;142:134::-;220:13;;238:33;220:13;238:33;:::i;1129:362::-;;1271:4;1259:9;1254:3;1250:19;1246:30;1243:2;;;-1:-1;;1279:12;1243:2;1307:20;1271:4;1307:20;:::i;:::-;4657:13;;1384:86;;-1:-1;1298:29;1237:254;-1:-1;1237:254::o;4301:134::-;4379:13;;-1:-1;;;;;25146:46;;27284:35;;27274:2;;27333:1;;27323:12;4720:132;4797:13;;25483:12;25472:24;;27531:34;;27521:2;;27579:1;;27569:12;4992:130;5068:13;;5086:31;5068:13;5086:31;:::i;5129:241::-;;5233:2;5221:9;5212:7;5208:23;5204:32;5201:2;;;-1:-1;;5239:12;5201:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;5291:63;5195:175;-1:-1;;;5195:175::o;5377:263::-;;5492:2;5480:9;5471:7;5467:23;5463:32;5460:2;;;-1:-1;;5498:12;5460:2;226:6;220:13;238:33;265:5;238:33;:::i;5647:366::-;;;5768:2;5756:9;5747:7;5743:23;5739:32;5736:2;;;-1:-1;;5774:12;5736:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;5826:63;-1:-1;5926:2;5965:22;;72:20;97:33;72:20;97:33;:::i;:::-;5934:63;;;;5730:283;;;;;:::o;6020:360::-;;;6138:2;6126:9;6117:7;6113:23;6109:32;6106:2;;;-1:-1;;6144:12;6106:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;6196:63;-1:-1;6296:2;6332:22;;802:20;24922:13;;24915:21;26963:32;;26953:2;;-1:-1;;26999:12;6387:366;;;6508:2;6496:9;6487:7;6483:23;6479:32;6476:2;;;-1:-1;;6514:12;6476:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;6566:63;6666:2;6705:22;;;;4509:20;;-1:-1;;;6470:283::o;6760:617::-;;;;;6915:3;6903:9;6894:7;6890:23;6886:33;6883:2;;;-1:-1;;6922:12;6883:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;6974:63;7074:2;7113:22;;4509:20;;-1:-1;7182:2;7221:22;;4509:20;;7290:2;7329:22;4509:20;;-1:-1;6877:500;-1:-1;;;6877:500::o;7384:469::-;;;7559:2;7547:9;7538:7;7534:23;7530:32;7527:2;;;-1:-1;;7565:12;7527:2;7623:17;7610:31;7661:18;;7653:6;7650:30;7647:2;;;-1:-1;;7683:12;7647:2;7820:6;7809:9;7805:22;;;508:3;501:4;493:6;489:17;485:27;475:2;;-1:-1;;516:12;475:2;559:6;546:20;7661:18;578:6;575:30;572:2;;;-1:-1;;608:12;572:2;703:3;7559:2;;687:6;683:17;644:6;669:32;;666:41;663:2;;;-1:-1;;710:12;663:2;7559;640:17;;;;;7703:134;;-1:-1;7521:332;;-1:-1;;;;7521:332::o;7860:235::-;;7961:2;7949:9;7940:7;7936:23;7932:32;7929:2;;;-1:-1;;7967:12;7929:2;815:6;802:20;26988:5;24922:13;24915:21;26966:5;26963:32;26953:2;;-1:-1;;26999:12;8426:347;;8583:2;8571:9;8562:7;8558:23;8554:32;8551:2;;;-1:-1;;8589:12;8551:2;8651:106;8749:7;8725:22;8651:106;:::i;8780:324::-;;8925:3;;8913:9;8904:7;8900:23;8896:33;8893:2;;;-1:-1;;8932:12;8893:2;1701:22;8925:3;1701:22;:::i;:::-;1692:31;;1814:102;1912:3;1888:22;1814:102;:::i;:::-;1796:16;1789:128;2021:60;2077:3;1988:2;2057:9;2053:22;2021:60;:::i;:::-;1988:2;2007:5;2003:16;1996:86;2191:60;2247:3;2158:2;2227:9;2223:22;2191:60;:::i;:::-;2158:2;2177:5;2173:16;2166:86;2362:60;2418:3;2329:2;2398:9;2394:22;2362:60;:::i;:::-;2329:2;2348:5;2344:16;2337:86;2539:60;2595:3;2505;2575:9;2571:22;2539:60;:::i;:::-;2505:3;2525:5;2521:16;2514:86;2714:60;2770:3;2680;2750:9;2746:22;2714:60;:::i;:::-;2680:3;2700:5;2696:16;2689:86;2885:59;2940:3;2851;2920:9;2916:22;2885:59;:::i;:::-;2851:3;2871:5;2867:16;2860:85;3049:60;3105:3;3015;3085:9;3081:22;3049:60;:::i;:::-;3015:3;3035:5;3031:16;3024:86;3189:3;3225:60;3281:3;3189;3261:9;3257:22;3225:60;:::i;:::-;3205:18;;;3198:88;3367:3;3403:60;3459:3;3435:22;;;3403:60;:::i;:::-;3383:18;;;3376:88;3548:3;3584:60;3640:3;3616:22;;;3584:60;:::i;:::-;3564:18;;;3557:88;3704:3;3740:58;3794:3;3770:22;;;3740:58;:::i;:::-;3720:18;;;3713:86;3724:5;8887:217;-1:-1;;;8887:217::o;9111:401::-;;9252:2;9240:9;9231:7;9227:23;9223:32;9220:2;;;-1:-1;;9258:12;9220:2;9316:17;9303:31;9354:18;9346:6;9343:30;9340:2;;;-1:-1;;9376:12;9340:2;9464:22;;4006:3;3988:16;;;3984:26;3981:2;;;-1:-1;;4013:12;9519:407;;9663:2;9651:9;9642:7;9638:23;9634:32;9631:2;;;-1:-1;;9669:12;9631:2;9727:17;9714:31;9765:18;9757:6;9754:30;9751:2;;;-1:-1;;9787:12;9751:2;9878:22;;4246:3;4228:16;;;4224:26;4221:2;;;-1:-1;;4253:12;9933:263;;10048:2;10036:9;10027:7;10023:23;10019:32;10016:2;;;-1:-1;;10054:12;10016:2;-1:-1;4657:13;;10010:186;-1:-1;10010:186::o;10203:237::-;;10305:2;10293:9;10284:7;10280:23;10276:32;10273:2;;;-1:-1;;10311:12;10273:2;4937:6;4924:20;4949:31;4974:5;4949:31;:::i;10701:297::-;;24530:6;24525:3;24518:19;26329:6;26324:3;24567:4;24562:3;24558:14;26306:30;-1:-1;24567:4;26376:6;24562:3;26367:16;;26360:27;24567:4;26762:7;;26766:2;10984:6;26746:14;26742:28;24562:3;10953:39;;10946:46;;10801:197;;;;;:::o;11006:343::-;;11148:5;24245:12;24530:6;24525:3;24518:19;-1:-1;26474:101;26488:6;26485:1;26482:13;26474:101;;;24567:4;26555:11;;;;;26549:18;26536:11;;;;;26529:39;26503:10;26474:101;;;26590:6;26587:1;26584:13;26581:2;;;-1:-1;24567:4;26646:6;24562:3;26637:16;;26630:27;26581:2;-1:-1;26762:7;26746:14;-1:-1;;26742:28;11305:39;;;;24567:4;11305:39;;11096:253;-1:-1;;11096:253::o;13045:222::-;-1:-1;;;;;25266:54;;;;10518:37;;13172:2;13157:18;;13143:124::o;13274:333::-;-1:-1;;;;;25266:54;;;10518:37;;25266:54;;13593:2;13578:18;;10518:37;13429:2;13414:18;;13400:207::o;13614:444::-;-1:-1;;;;;25266:54;;;10518:37;;25266:54;;;13961:2;13946:18;;10518:37;25266:54;;;14044:2;14029:18;;10518:37;13797:2;13782:18;;13768:290::o;14065:668::-;-1:-1;;;;;25266:54;;;10518:37;;25266:54;;;14469:2;14454:18;;10518:37;25266:54;;;14552:2;14537:18;;10518:37;25266:54;;14635:2;14620:18;;10518:37;25266:54;;;14718:3;14703:19;;10518:37;14304:3;14289:19;;14275:458::o;14740:417::-;-1:-1;;;;;25266:54;;10518:37;;14913:2;15031;15016:18;;15009:48;;;14740:417;;15071:76;;14898:18;;15133:6;15071:76;:::i;:::-;15063:84;14884:273;-1:-1;;;;14884:273::o;15164:333::-;-1:-1;;;;;25266:54;;;;10518:37;;15483:2;15468:18;;12882:37;15319:2;15304:18;;15290:207::o;15504:210::-;24922:13;;24915:21;10632:34;;15625:2;15610:18;;15596:118::o;15721:1368::-;-1:-1;;;;;25266:54;;;11461:84;;25266:54;;;16340:2;16325:18;;10518:37;25266:54;;;16423:2;16408:18;;10518:37;25266:54;;16506:2;16491:18;;10518:37;16589:3;16574:19;;12882:37;;;16154:3;25277:42;16612:19;;16605:49;;;15721:1368;;16668:88;16139:19;;;16742:6;16734;16668:88;:::i;:::-;16660:96;;16805:9;16799:4;16795:20;16789:3;16778:9;16774:19;16767:49;16830:88;16913:4;16904:6;16896;16830:88;:::i;:::-;16822:96;;16967:9;16961:4;16957:20;16951:3;16940:9;16936:19;16929:49;16992:87;17074:4;17064:7;17056:6;16992:87;:::i;:::-;16984:95;16125:964;-1:-1;;;;;;;;;;;;;;16125:964::o;17096:1428::-;-1:-1;;;;;25266:54;;;11461:84;;25266:54;;;17745:2;17730:18;;10518:37;25266:54;;;17828:2;17813:18;;10518:37;25266:54;;17945:2;17930:18;;11461:84;25579:4;25568:16;;18024:3;18009:19;;12998:35;17559:3;25277:42;18047:19;;18040:49;;;17096:1428;;18103:88;17544:19;;;18177:6;18169;18103:88;:::i;18531:1254::-;-1:-1;;;;;25266:54;;;11461:84;;25266:54;;;19121:2;19106:18;;10518:37;25266:54;;19204:2;19189:18;;10518:37;19287:2;19272:18;;12882:37;;;18935:3;19324;19309:19;;19302:49;;;18531:1254;;19365:88;;18920:19;;19439:6;19431;19365:88;:::i;:::-;19502:9;19496:4;19492:20;19486:3;19475:9;19471:19;19464:49;19527:88;19610:4;19601:6;19593;19527:88;:::i;:::-;19519:96;;19664:9;19658:4;19654:20;19648:3;19637:9;19633:19;19626:49;19689:86;19770:4;19761:6;19753;19689:86;:::i;:::-;19681:94;18906:879;-1:-1;;;;;;;;;;;;;18906:879::o;19792:1314::-;-1:-1;;;;;25266:54;;;11461:84;;25266:54;;;20412:2;20397:18;;10518:37;25266:54;;20529:2;20514:18;;11461:84;25579:4;25568:16;;20608:2;20593:18;;12998:35;20226:3;20645;20630:19;;20623:49;;;19792:1314;;20686:88;;20211:19;;20760:6;20752;20686:88;:::i;21113:310::-;;21260:2;21281:17;21274:47;21335:78;21260:2;21249:9;21245:18;21399:6;21335:78;:::i;21430:416::-;21630:2;21644:47;;;12644:2;21615:18;;;24518:19;12680:34;24558:14;;;12660:55;-1:-1;;;12735:12;;;12728:38;12785:12;;;21601:245::o;21853:222::-;12882:37;;;21980:2;21965:18;;21951:124::o;22082:444::-;12882:37;;;22429:2;22414:18;;12882:37;;;;22512:2;22497:18;;12882:37;22265:2;22250:18;;22236:290::o;22533:506::-;;;22668:11;22655:25;22719:48;;22743:8;22727:14;22723:29;22719:48;22699:18;22695:73;22685:2;;-1:-1;;22772:12;22685:2;22799:33;;22853:18;;;-1:-1;22891:18;22880:30;;22877:2;;;-1:-1;;22913:12;22877:2;22758:4;22941:13;;-1:-1;22727:14;22973:38;;;22963:49;;22960:2;;;23025:1;;23015:12;22960:2;22623:416;;;;;:::o;23046:507::-;;;23182:11;23169:25;22719:48;;23257:8;23241:14;23237:29;23233:48;23213:18;23209:73;23199:2;;-1:-1;;23286:12;23560:328;;23712:11;23699:25;23763:50;;23787:8;23771:14;23767:29;23763:50;23743:18;23739:75;23729:2;;-1:-1;;23818:12;23729:2;23845:33;;;;;23667:221;-1:-1;;23667:221::o;23895:256::-;23957:2;23951:9;23983:17;;;24058:18;24043:34;;24079:22;;;24040:62;24037:2;;;24115:1;;24105:12;24037:2;23957;24124:22;23935:216;;-1:-1;23935:216::o;26783:117::-;-1:-1;;;;;25266:54;;26842:35;;26832:2;;26891:1;;26881:12;26832:2;26826:74;:::o;27595:113::-;25579:4;27678:5;25568:16;27655:5;27652:33;27642:2;;27699:1;;27689:12"
            },
            "methodIdentifiers": {
              "activateReserve(address)": "b75d6f34",
              "batchInitReserve((address,address,address,uint8,address,address,address,address,string,string,string,string,string,string,string,bytes)[])": "cef84c51",
              "configureReserveAsCollateral(address,uint256,uint256,uint256)": "7c4e560b",
              "deactivateReserve(address)": "3e72a454",
              "disableBorrowingOnReserve(address)": "a8dc0f45",
              "disableReserveStableRate(address)": "f53a2515",
              "enableBorrowingOnReserve(address,bool)": "eede87c1",
              "enableReserveStableRate(address)": "bf344183",
              "freezeReserve(address)": "7aca76eb",
              "initialize(address)": "c4d66de8",
              "setPoolPause(bool)": "7641f3d9",
              "setReserveFactor(address,uint256)": "4b4e6753",
              "setReserveInterestRateStrategyAddress(address,address)": "1d2118f9",
              "unfreezeReserve(address)": "ef1f9373",
              "updateAToken((address,address,address,string,string,address,bytes))": "bb01c37c",
              "updateStableDebtToken((address,address,string,string,address,bytes))": "7626cde3",
              "updateVariableDebtToken((address,address,string,string,address,bytes))": "ad4e6432"
            }
          }
        }
      },
      "contracts/protocol/lendingpool/LendingPoolStorage.sol": {
        "LendingPoolStorage": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212200282846c22faf245e0676e4a28d555d38cc4bf24e1adab2fb6e7797aede8d29d64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MUL DUP3 DUP5 PUSH13 0x22FAF245E0676E4A28D555D38C 0xC4 0xBF 0x24 0xE1 0xAD 0xAB 0x2F 0xB6 0xE7 PUSH26 0x7AEDE8D29D64736F6C634300060C003300000000000000000000 ",
              "sourceMap": "461:757:71:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600080fdfea26469706673582212200282846c22faf245e0676e4a28d555d38cc4bf24e1adab2fb6e7797aede8d29d64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MUL DUP3 DUP5 PUSH13 0x22FAF245E0676E4A28D555D38C 0xC4 0xBF 0x24 0xE1 0xAD 0xAB 0x2F 0xB6 0xE7 PUSH26 0x7AEDE8D29D64736F6C634300060C003300000000000000000000 ",
              "sourceMap": "461:757:71:-:0;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "contracts/protocol/libraries/aave-upgradeability/BaseImmutableAdminUpgradeabilityProxy.sol": {
        "BaseImmutableAdminUpgradeabilityProxy": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "Upgraded",
              "type": "event"
            },
            {
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "implementation",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newImplementation",
                  "type": "address"
                }
              ],
              "name": "upgradeTo",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newImplementation",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "upgradeToAndCall",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60a060405234801561001057600080fd5b506040516105ca3803806105ca8339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b031661054a6100806000398061016752806101b1528061027052806102bd52806102e65280610315525061054a6000f3fe60806040526004361061003f5760003560e01c80633659cfe6146100495780634f1ef2861461007c5780635c60da1b146100fc578063f851a4401461012d575b610047610142565b005b34801561005557600080fd5b506100476004803603602081101561006c57600080fd5b50356001600160a01b031661015c565b6100476004803603604081101561009257600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100bd57600080fd5b8201836020820111156100cf57600080fd5b803590602001918460018302840111640100000000831117156100f157600080fd5b5090925090506101a6565b34801561010857600080fd5b50610111610263565b604080516001600160a01b039092168252519081900360200190f35b34801561013957600080fd5b506101116102b0565b61014a61030a565b61015a61015561037a565b61039f565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561019b57610196816103c3565b6101a3565b6101a3610142565b50565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610256576101e0836103c3565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d806000811461023d576040519150601f19603f3d011682016040523d82523d6000602084013e610242565b606091505b505090508061025057600080fd5b5061025e565b61025e610142565b505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156102a55761029e61037a565b90506102ad565b6102ad610142565b90565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156102a557507f00000000000000000000000000000000000000000000000000000000000000006102ad565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156103725760405162461bcd60e51b81526004018080602001828103825260328152602001806104a86032913960400191505060405180910390fd5b61015a61015a565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156103be573d6000f35b3d6000fd5b6103cc81610403565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b61040c8161046b565b6104475760405162461bcd60e51b815260040180806020018281038252603b8152602001806104da603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061049f57508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212208164596792f942fc3b6b368ddb911a2c3be724177b37d682e5cf4be38b403b4e64736f6c634300060c0033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x5CA CODESIZE SUB DUP1 PUSH2 0x5CA DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 DUP2 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x54A PUSH2 0x80 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x167 MSTORE DUP1 PUSH2 0x1B1 MSTORE DUP1 PUSH2 0x270 MSTORE DUP1 PUSH2 0x2BD MSTORE DUP1 PUSH2 0x2E6 MSTORE DUP1 PUSH2 0x315 MSTORE POP PUSH2 0x54A PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x49 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x7C JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xFC JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x12D JUMPI JUMPDEST PUSH2 0x47 PUSH2 0x142 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x15C JUMP JUMPDEST PUSH2 0x47 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1A6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x111 PUSH2 0x263 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x111 PUSH2 0x2B0 JUMP JUMPDEST PUSH2 0x14A PUSH2 0x30A JUMP JUMPDEST PUSH2 0x15A PUSH2 0x155 PUSH2 0x37A JUMP JUMPDEST PUSH2 0x39F JUMP JUMPDEST JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x19B JUMPI PUSH2 0x196 DUP2 PUSH2 0x3C3 JUMP JUMPDEST PUSH2 0x1A3 JUMP JUMPDEST PUSH2 0x1A3 PUSH2 0x142 JUMP JUMPDEST POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x256 JUMPI PUSH2 0x1E0 DUP4 PUSH2 0x3C3 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x23D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x242 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x250 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25E JUMP JUMPDEST PUSH2 0x25E PUSH2 0x142 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x2A5 JUMPI PUSH2 0x29E PUSH2 0x37A JUMP JUMPDEST SWAP1 POP PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD PUSH2 0x142 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x2A5 JUMPI POP PUSH32 0x0 PUSH2 0x2AD JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x372 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4A8 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x15A PUSH2 0x15A JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x3BE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x3CC DUP2 PUSH2 0x403 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x40C DUP2 PUSH2 0x46B JUMP JUMPDEST PUSH2 0x447 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4DA PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x49F JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID NUMBER PUSH2 0x6E6E PUSH16 0x742063616C6C2066616C6C6261636B20 PUSH7 0x756E6374696F6E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH17 0x726F78792061646D696E43616E6E6F7420 PUSH20 0x657420612070726F787920696D706C656D656E74 PUSH2 0x7469 PUSH16 0x6E20746F2061206E6F6E2D636F6E7472 PUSH2 0x6374 KECCAK256 PUSH2 0x6464 PUSH19 0x657373A26469706673582212208164596792F9 TIMESTAMP 0xFC EXTCODESIZE PUSH12 0x368DDB911A2C3BE724177B37 0xD6 DUP3 0xE5 0xCF 0x4B 0xE3 DUP12 BLOCKHASH EXTCODESIZE 0x4E PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "681:1854:72:-:0;;;787:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;787:58:72;827:13;;;;-1:-1:-1;;;;;;827:13:72;;;-1:-1:-1;;;;;681:1854:72;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "15800": [
                  {
                    "length": 32,
                    "start": 359
                  },
                  {
                    "length": 32,
                    "start": 433
                  },
                  {
                    "length": 32,
                    "start": 624
                  },
                  {
                    "length": 32,
                    "start": 701
                  },
                  {
                    "length": 32,
                    "start": 742
                  },
                  {
                    "length": 32,
                    "start": 789
                  }
                ]
              },
              "linkReferences": {},
              "object": "60806040526004361061003f5760003560e01c80633659cfe6146100495780634f1ef2861461007c5780635c60da1b146100fc578063f851a4401461012d575b610047610142565b005b34801561005557600080fd5b506100476004803603602081101561006c57600080fd5b50356001600160a01b031661015c565b6100476004803603604081101561009257600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100bd57600080fd5b8201836020820111156100cf57600080fd5b803590602001918460018302840111640100000000831117156100f157600080fd5b5090925090506101a6565b34801561010857600080fd5b50610111610263565b604080516001600160a01b039092168252519081900360200190f35b34801561013957600080fd5b506101116102b0565b61014a61030a565b61015a61015561037a565b61039f565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561019b57610196816103c3565b6101a3565b6101a3610142565b50565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610256576101e0836103c3565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d806000811461023d576040519150601f19603f3d011682016040523d82523d6000602084013e610242565b606091505b505090508061025057600080fd5b5061025e565b61025e610142565b505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156102a55761029e61037a565b90506102ad565b6102ad610142565b90565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156102a557507f00000000000000000000000000000000000000000000000000000000000000006102ad565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156103725760405162461bcd60e51b81526004018080602001828103825260328152602001806104a86032913960400191505060405180910390fd5b61015a61015a565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156103be573d6000f35b3d6000fd5b6103cc81610403565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b61040c8161046b565b6104475760405162461bcd60e51b815260040180806020018281038252603b8152602001806104da603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061049f57508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212208164596792f942fc3b6b368ddb911a2c3be724177b37d682e5cf4be38b403b4e64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x49 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x7C JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0xFC JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x12D JUMPI JUMPDEST PUSH2 0x47 PUSH2 0x142 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x15C JUMP JUMPDEST PUSH2 0x47 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1A6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x111 PUSH2 0x263 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x111 PUSH2 0x2B0 JUMP JUMPDEST PUSH2 0x14A PUSH2 0x30A JUMP JUMPDEST PUSH2 0x15A PUSH2 0x155 PUSH2 0x37A JUMP JUMPDEST PUSH2 0x39F JUMP JUMPDEST JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x19B JUMPI PUSH2 0x196 DUP2 PUSH2 0x3C3 JUMP JUMPDEST PUSH2 0x1A3 JUMP JUMPDEST PUSH2 0x1A3 PUSH2 0x142 JUMP JUMPDEST POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x256 JUMPI PUSH2 0x1E0 DUP4 PUSH2 0x3C3 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x23D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x242 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x250 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25E JUMP JUMPDEST PUSH2 0x25E PUSH2 0x142 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x2A5 JUMPI PUSH2 0x29E PUSH2 0x37A JUMP JUMPDEST SWAP1 POP PUSH2 0x2AD JUMP JUMPDEST PUSH2 0x2AD PUSH2 0x142 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x2A5 JUMPI POP PUSH32 0x0 PUSH2 0x2AD JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x372 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4A8 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x15A PUSH2 0x15A JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x3BE JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x3CC DUP2 PUSH2 0x403 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x40C DUP2 PUSH2 0x46B JUMP JUMPDEST PUSH2 0x447 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4DA PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x49F JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID NUMBER PUSH2 0x6E6E PUSH16 0x742063616C6C2066616C6C6261636B20 PUSH7 0x756E6374696F6E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH17 0x726F78792061646D696E43616E6E6F7420 PUSH20 0x657420612070726F787920696D706C656D656E74 PUSH2 0x7469 PUSH16 0x6E20746F2061206E6F6E2D636F6E7472 PUSH2 0x6374 KECCAK256 PUSH2 0x6464 PUSH19 0x657373A26469706673582212208164596792F9 TIMESTAMP 0xFC EXTCODESIZE PUSH12 0x368DDB911A2C3BE724177B37 0xD6 DUP3 0xE5 0xCF 0x4B 0xE3 DUP12 BLOCKHASH EXTCODESIZE 0x4E PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "681:1854:72:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;498:11:19;:9;:11::i;:::-;681:1854:72;1431:103;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1431:103:72;-1:-1:-1;;;;;1431:103:72;;:::i;2051:236::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2051:236:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2051:236:72;;-1:-1:-1;2051:236:72;-1:-1:-1;2051:236:72;:::i;1151:96::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1151:96:72;;;;;;;;;;;;;;1012:75;;;;;;;;;;;;;:::i;2095:90:19:-;2131:15;:13;:15::i;:::-;2152:28;2162:17;:15;:17::i;:::-;2152:9;:28::i;:::-;2095:90::o;1431:103:72:-;878:10;-1:-1:-1;;;;;892:5:72;878:19;;874:73;;;1500:29:::1;1511:17;1500:10;:29::i;:::-;874:73:::0;;;929:11;:9;:11::i;:::-;1431:103;:::o;2051:236::-;878:10;-1:-1:-1;;;;;892:5:72;878:19;;874:73;;;2170:29:::1;2181:17;2170:10;:29::i;:::-;2206:12;2224:17;-1:-1:-1::0;;;;;2224:30:72::1;2255:4;;2224:36;;;;;;;;;;::::0;;::::1;::::0;-1:-1:-1;2224:36:72::1;::::0;-1:-1:-1;2224:36:72;;-1:-1:-1;;2224:36:72;;::::1;::::0;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2205:55;;;2274:7;2266:16;;;::::0;::::1;;907:1;874:73:::0;;;929:11;:9;:11::i;:::-;2051:236;;;:::o;1151:96::-;1203:7;878:10;-1:-1:-1;;;;;892:5:72;878:19;;874:73;;;1225:17:::1;:15;:17::i;:::-;1218:24;;874:73:::0;;;929:11;:9;:11::i;:::-;1151:96;:::o;1012:75::-;1055:7;878:10;-1:-1:-1;;;;;892:5:72;878:19;;874:73;;;-1:-1:-1;1077:5:72::1;874:73:::0;;2362:171;2427:10;-1:-1:-1;;;;;2441:5:72;2427:19;;;2419:82;;;;-1:-1:-1;;;2419:82:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2507:21;:19;:21::i;1008:196:16:-;823:66;1183:11;;1167:33::o;931:816:19:-;1264:14;1261:1;1258;1245:34;1460:1;1457;1441:14;1438:1;1422:14;1415:5;1402:60;1524:16;1521:1;1518;1503:38;1556:6;1615:56;;;;1710:16;1707:1;1700:27;1615:56;1644:16;1641:1;1634:27;1339:142:16;1401:37;1420:17;1401:18;:37::i;:::-;1449:27;;-1:-1:-1;;;;;1449:27:16;;;;;;;;1339:142;:::o;1618:334::-;1703:37;1722:17;1703:18;:37::i;:::-;1688:127;;;;-1:-1:-1;;;1688:127:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;823:66;1911:31;1903:45::o;686:586:6:-;746:4;1185:20;;1032:66;1224:23;;;;;;:42;;-1:-1:-1;1251:15:6;;;1224:42;1216:51;686:586;-1:-1:-1;;;;686:586:6:o"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "implementation()": "5c60da1b",
              "upgradeTo(address)": "3659cfe6",
              "upgradeToAndCall(address,bytes)": "4f1ef286"
            }
          }
        }
      },
      "contracts/protocol/libraries/aave-upgradeability/InitializableImmutableAdminUpgradeabilityProxy.sol": {
        "InitializableImmutableAdminUpgradeabilityProxy": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "admin",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "implementation",
                  "type": "address"
                }
              ],
              "name": "Upgraded",
              "type": "event"
            },
            {
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "inputs": [],
              "name": "admin",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "implementation",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_logic",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newImplementation",
                  "type": "address"
                }
              ],
              "name": "upgradeTo",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newImplementation",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "upgradeToAndCall",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60a060405234801561001057600080fd5b506040516107733803806107738339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b03166106f36100806000398061022852806102725280610331528061045e528061048752806105af52506106f36000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b14610107578063d1f5789414610138578063f851a440146101ee575b610052610203565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661021d565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b509092509050610267565b34801561011357600080fd5b5061011c610324565b604080516001600160a01b039092168252519081900360200190f35b6100526004803603604081101561014e57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561017957600080fd5b82018360208201111561018b57600080fd5b803590602001918460018302840111640100000000831117156101ad57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610371945050505050565b3480156101fa57600080fd5b5061011c610451565b61020b6104ab565b61021b6102166104b3565b6104d8565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561025c57610257816104fc565b610264565b610264610203565b50565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610317576102a1836104fc565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146102fe576040519150601f19603f3d011682016040523d82523d6000602084013e610303565b606091505b505090508061031157600080fd5b5061031f565b61031f610203565b505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156103665761035f6104b3565b905061036e565b61036e610203565b90565b600061037b6104b3565b6001600160a01b03161461038e57600080fd5b6103978261053c565b80511561044d576000826001600160a01b0316826040518082805190602001908083835b602083106103da5780518252601f1990920191602091820191016103bb565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461043a576040519150601f19603f3d011682016040523d82523d6000602084013e61043f565b606091505b505090508061031f57600080fd5b5050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561036657507f000000000000000000000000000000000000000000000000000000000000000061036e565b61021b6105a4565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156104f7573d6000f35b3d6000fd5b6105058161053c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b61054581610614565b6105805760405162461bcd60e51b815260040180806020018281038252603b815260200180610683603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561060c5760405162461bcd60e51b81526004018080602001828103825260328152602001806106516032913960400191505060405180910390fd5b61021b61021b565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061064857508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212203801682b75a74ce25ca5dbe58739c5b62298b707b9119c9413881c56f29bcfa864736f6c634300060c0033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x773 CODESIZE SUB DUP1 PUSH2 0x773 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 DUP2 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6F3 PUSH2 0x80 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x228 MSTORE DUP1 PUSH2 0x272 MSTORE DUP1 PUSH2 0x331 MSTORE DUP1 PUSH2 0x45E MSTORE DUP1 PUSH2 0x487 MSTORE DUP1 PUSH2 0x5AF MSTORE POP PUSH2 0x6F3 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x54 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x87 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x107 JUMPI DUP1 PUSH4 0xD1F57894 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x1EE JUMPI JUMPDEST PUSH2 0x52 PUSH2 0x203 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x21D JUMP JUMPDEST PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x267 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11C PUSH2 0x324 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x14E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x371 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11C PUSH2 0x451 JUMP JUMPDEST PUSH2 0x20B PUSH2 0x4AB JUMP JUMPDEST PUSH2 0x21B PUSH2 0x216 PUSH2 0x4B3 JUMP JUMPDEST PUSH2 0x4D8 JUMP JUMPDEST JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x25C JUMPI PUSH2 0x257 DUP2 PUSH2 0x4FC JUMP JUMPDEST PUSH2 0x264 JUMP JUMPDEST PUSH2 0x264 PUSH2 0x203 JUMP JUMPDEST POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x317 JUMPI PUSH2 0x2A1 DUP4 PUSH2 0x4FC JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2FE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x303 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31F JUMP JUMPDEST PUSH2 0x31F PUSH2 0x203 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x366 JUMPI PUSH2 0x35F PUSH2 0x4B3 JUMP JUMPDEST SWAP1 POP PUSH2 0x36E JUMP JUMPDEST PUSH2 0x36E PUSH2 0x203 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37B PUSH2 0x4B3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x397 DUP3 PUSH2 0x53C JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x44D JUMPI PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3DA JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3BB JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x43A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x43F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x366 JUMPI POP PUSH32 0x0 PUSH2 0x36E JUMP JUMPDEST PUSH2 0x21B PUSH2 0x5A4 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x4F7 JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x505 DUP2 PUSH2 0x53C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x545 DUP2 PUSH2 0x614 JUMP JUMPDEST PUSH2 0x580 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x683 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SSTORE JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x60C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x651 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x21B PUSH2 0x21B JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x648 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID NUMBER PUSH2 0x6E6E PUSH16 0x742063616C6C2066616C6C6261636B20 PUSH7 0x756E6374696F6E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH17 0x726F78792061646D696E43616E6E6F7420 PUSH20 0x657420612070726F787920696D706C656D656E74 PUSH2 0x7469 PUSH16 0x6E20746F2061206E6F6E2D636F6E7472 PUSH2 0x6374 KECCAK256 PUSH2 0x6464 PUSH19 0x657373A26469706673582212203801682B75A7 0x4C 0xE2 0x5C 0xA5 0xDB 0xE5 DUP8 CODECOPY 0xC5 0xB6 0x22 SWAP9 0xB7 SMOD 0xB9 GT SWAP13 SWAP5 SGT DUP9 SHR JUMP CALLCODE SWAP12 0xCF 0xA8 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "344:450:73:-:0;;;483:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;483:81:73;827:13:72;;;;-1:-1:-1;;827:13:72;;;-1:-1:-1;;;;;344:450:73;-1:-1:-1;344:450:73;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "15800": [
                  {
                    "length": 32,
                    "start": 552
                  },
                  {
                    "length": 32,
                    "start": 626
                  },
                  {
                    "length": 32,
                    "start": 817
                  },
                  {
                    "length": 32,
                    "start": 1118
                  },
                  {
                    "length": 32,
                    "start": 1159
                  },
                  {
                    "length": 32,
                    "start": 1455
                  }
                ]
              },
              "linkReferences": {},
              "object": "60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b14610107578063d1f5789414610138578063f851a440146101ee575b610052610203565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661021d565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b509092509050610267565b34801561011357600080fd5b5061011c610324565b604080516001600160a01b039092168252519081900360200190f35b6100526004803603604081101561014e57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561017957600080fd5b82018360208201111561018b57600080fd5b803590602001918460018302840111640100000000831117156101ad57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610371945050505050565b3480156101fa57600080fd5b5061011c610451565b61020b6104ab565b61021b6102166104b3565b6104d8565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561025c57610257816104fc565b610264565b610264610203565b50565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610317576102a1836104fc565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146102fe576040519150601f19603f3d011682016040523d82523d6000602084013e610303565b606091505b505090508061031157600080fd5b5061031f565b61031f610203565b505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156103665761035f6104b3565b905061036e565b61036e610203565b90565b600061037b6104b3565b6001600160a01b03161461038e57600080fd5b6103978261053c565b80511561044d576000826001600160a01b0316826040518082805190602001908083835b602083106103da5780518252601f1990920191602091820191016103bb565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461043a576040519150601f19603f3d011682016040523d82523d6000602084013e61043f565b606091505b505090508061031f57600080fd5b5050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561036657507f000000000000000000000000000000000000000000000000000000000000000061036e565b61021b6105a4565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156104f7573d6000f35b3d6000fd5b6105058161053c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b61054581610614565b6105805760405162461bcd60e51b815260040180806020018281038252603b815260200180610683603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561060c5760405162461bcd60e51b81526004018080602001828103825260328152602001806106516032913960400191505060405180910390fd5b61021b61021b565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061064857508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212203801682b75a74ce25ca5dbe58739c5b62298b707b9119c9413881c56f29bcfa864736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x54 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x87 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x107 JUMPI DUP1 PUSH4 0xD1F57894 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0x1EE JUMPI JUMPDEST PUSH2 0x52 PUSH2 0x203 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x21D JUMP JUMPDEST PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x267 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11C PUSH2 0x324 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x52 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x14E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x371 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11C PUSH2 0x451 JUMP JUMPDEST PUSH2 0x20B PUSH2 0x4AB JUMP JUMPDEST PUSH2 0x21B PUSH2 0x216 PUSH2 0x4B3 JUMP JUMPDEST PUSH2 0x4D8 JUMP JUMPDEST JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x25C JUMPI PUSH2 0x257 DUP2 PUSH2 0x4FC JUMP JUMPDEST PUSH2 0x264 JUMP JUMPDEST PUSH2 0x264 PUSH2 0x203 JUMP JUMPDEST POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x317 JUMPI PUSH2 0x2A1 DUP4 PUSH2 0x4FC JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2FE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x303 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31F JUMP JUMPDEST PUSH2 0x31F PUSH2 0x203 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x366 JUMPI PUSH2 0x35F PUSH2 0x4B3 JUMP JUMPDEST SWAP1 POP PUSH2 0x36E JUMP JUMPDEST PUSH2 0x36E PUSH2 0x203 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37B PUSH2 0x4B3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x397 DUP3 PUSH2 0x53C JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x44D JUMPI PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3DA JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3BB JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x43A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x43F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x366 JUMPI POP PUSH32 0x0 PUSH2 0x36E JUMP JUMPDEST PUSH2 0x21B PUSH2 0x5A4 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x4F7 JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x505 DUP2 PUSH2 0x53C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x545 DUP2 PUSH2 0x614 JUMP JUMPDEST PUSH2 0x580 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x683 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SSTORE JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ ISZERO PUSH2 0x60C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x651 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x21B PUSH2 0x21B JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x648 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID NUMBER PUSH2 0x6E6E PUSH16 0x742063616C6C2066616C6C6261636B20 PUSH7 0x756E6374696F6E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH17 0x726F78792061646D696E43616E6E6F7420 PUSH20 0x657420612070726F787920696D706C656D656E74 PUSH2 0x7469 PUSH16 0x6E20746F2061206E6F6E2D636F6E7472 PUSH2 0x6374 KECCAK256 PUSH2 0x6464 PUSH19 0x657373A26469706673582212203801682B75A7 0x4C 0xE2 0x5C 0xA5 0xDB 0xE5 DUP8 CODECOPY 0xC5 0xB6 0x22 SWAP9 0xB7 SMOD 0xB9 GT SWAP13 SWAP5 SGT DUP9 SHR JUMP CALLCODE SWAP12 0xCF 0xA8 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "344:450:73:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;498:11:19;:9;:11::i;:::-;344:450:73;1431:103:72;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1431:103:72;-1:-1:-1;;;;;1431:103:72;;:::i;2051:236::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2051:236:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2051:236:72;;-1:-1:-1;2051:236:72;-1:-1:-1;2051:236:72;:::i;1151:96::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1151:96:72;;;;;;;;;;;;;;859:365:18;;;;;;;;;;;;;;;;-1:-1:-1;;;;;859:365:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;859:365:18;;-1:-1:-1;859:365:18;;-1:-1:-1;;;;;859:365:18:i;1012:75:72:-;;;;;;;;;;;;;:::i;2095:90:19:-;2131:15;:13;:15::i;:::-;2152:28;2162:17;:15;:17::i;:::-;2152:9;:28::i;:::-;2095:90::o;1431:103:72:-;878:10;-1:-1:-1;;;;;892:5:72;878:19;;874:73;;;1500:29:::1;1511:17;1500:10;:29::i;:::-;874:73:::0;;;929:11;:9;:11::i;:::-;1431:103;:::o;2051:236::-;878:10;-1:-1:-1;;;;;892:5:72;878:19;;874:73;;;2170:29:::1;2181:17;2170:10;:29::i;:::-;2206:12;2224:17;-1:-1:-1::0;;;;;2224:30:72::1;2255:4;;2224:36;;;;;;;;;;::::0;;::::1;::::0;-1:-1:-1;2224:36:72::1;::::0;-1:-1:-1;2224:36:72;;-1:-1:-1;;2224:36:72;;::::1;::::0;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2205:55;;;2274:7;2266:16;;;::::0;::::1;;907:1;874:73:::0;;;929:11;:9;:11::i;:::-;2051:236;;;:::o;1151:96::-;1203:7;878:10;-1:-1:-1;;;;;892:5:72;878:19;;874:73;;;1225:17:::1;:15;:17::i;:::-;1218:24;;874:73:::0;;;929:11;:9;:11::i;:::-;1151:96;:::o;859:365:18:-;973:1;944:17;:15;:17::i;:::-;-1:-1:-1;;;;;944:31:18;;936:40;;;;;;1082:26;1101:6;1082:18;:26::i;:::-;1118:12;;:16;1114:106;;1145:12;1163:6;-1:-1:-1;;;;;1163:19:18;1183:5;1163:26;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1163:26:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1144:45;;;1205:7;1197:16;;;;;1114:106;859:365;;:::o;1012:75:72:-;1055:7;878:10;-1:-1:-1;;;;;892:5:72;878:19;;874:73;;;-1:-1:-1;1077:5:72::1;874:73:::0;;639:153:73;734:53;:51;:53::i;1008:196:16:-;823:66;1183:11;;1167:33::o;931:816:19:-;1264:14;1261:1;1258;1245:34;1460:1;1457;1441:14;1438:1;1422:14;1415:5;1402:60;1524:16;1521:1;1518;1503:38;1556:6;1615:56;;;;1710:16;1707:1;1700:27;1615:56;1644:16;1641:1;1634:27;1339:142:16;1401:37;1420:17;1401:18;:37::i;:::-;1449:27;;-1:-1:-1;;;;;1449:27:16;;;;;;;;1339:142;:::o;1618:334::-;1703:37;1722:17;1703:18;:37::i;:::-;1688:127;;;;-1:-1:-1;;;1688:127:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;823:66;1911:31;1903:45::o;2362:171:72:-;2427:10;-1:-1:-1;;;;;2441:5:72;2427:19;;;2419:82;;;;-1:-1:-1;;;2419:82:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2507:21;:19;:21::i;686:586:6:-;746:4;1185:20;;1032:66;1224:23;;;;;;:42;;-1:-1:-1;1251:15:6;;;1224:42;1216:51;686:586;-1:-1:-1;;;;686:586:6:o"
            },
            "methodIdentifiers": {
              "admin()": "f851a440",
              "implementation()": "5c60da1b",
              "initialize(address,bytes)": "d1f57894",
              "upgradeTo(address)": "3659cfe6",
              "upgradeToAndCall(address,bytes)": "4f1ef286"
            }
          }
        }
      },
      "contracts/protocol/libraries/aave-upgradeability/VersionedInitializable.sol": {
        "VersionedInitializable": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          }
        }
      },
      "contracts/protocol/libraries/configuration/ReserveConfiguration.sol": {
        "ReserveConfiguration": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122002f45f9ffa6871f35159c4aa08c9edd3e2de74ddb04088fcf4cea0d6123823ce64736f6c634300060c0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MUL DELEGATECALL 0x5F SWAP16 STATICCALL PUSH9 0x71F35159C4AA08C9ED 0xD3 0xE2 0xDE PUSH21 0xDDB04088FCF4CEA0D6123823CE64736F6C63430006 0xC STOP CALLER ",
              "sourceMap": "297:11816:75:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122002f45f9ffa6871f35159c4aa08c9edd3e2de74ddb04088fcf4cea0d6123823ce64736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MUL DELEGATECALL 0x5F SWAP16 STATICCALL PUSH9 0x71F35159C4AA08C9ED 0xD3 0xE2 0xDE PUSH21 0xDDB04088FCF4CEA0D6123823CE64736F6C63430006 0xC STOP CALLER ",
              "sourceMap": "297:11816:75:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "contracts/protocol/libraries/configuration/UserConfiguration.sol": {
        "UserConfiguration": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ce80a6184653964529bff62fe0cb15511b1d5d83fd9a41cecb8ff74155bc52ef64736f6c634300060c0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCE DUP1 0xA6 XOR CHAINID MSTORE8 SWAP7 GASLIMIT 0x29 0xBF 0xF6 0x2F 0xE0 0xCB ISZERO MLOAD SHL SAR 0x5D DUP4 REVERT SWAP11 COINBASE 0xCE 0xCB DUP16 0xF7 COINBASE SSTORE 0xBC MSTORE 0xEF PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "291:3754:76:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ce80a6184653964529bff62fe0cb15511b1d5d83fd9a41cecb8ff74155bc52ef64736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCE DUP1 0xA6 XOR CHAINID MSTORE8 SWAP7 GASLIMIT 0x29 0xBF 0xF6 0x2F 0xE0 0xCB ISZERO MLOAD SHL SAR 0x5D DUP4 REVERT SWAP11 COINBASE 0xCE 0xCB DUP16 0xF7 COINBASE SSTORE 0xBC MSTORE 0xEF PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "291:3754:76:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "contracts/protocol/libraries/helpers/Errors.sol": {
        "Errors": {
          "abi": [
            {
              "inputs": [],
              "name": "BORROW_ALLOWANCE_NOT_ENOUGH",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "CALLER_NOT_POOL_ADMIN",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "CT_CALLER_MUST_BE_LENDING_POOL",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "CT_CANNOT_GIVE_ALLOWANCE_TO_HIMSELF",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "CT_INVALID_BURN_AMOUNT",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "CT_INVALID_MINT_AMOUNT",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "CT_TRANSFER_AMOUNT_NOT_GT_0",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LPAPR_INVALID_ADDRESSES_PROVIDER_ID",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LPAPR_PROVIDER_NOT_REGISTERED",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LPCM_COLLATERAL_CANNOT_BE_LIQUIDATED",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LPCM_HEALTH_FACTOR_NOT_BELOW_THRESHOLD",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LPCM_NOT_ENOUGH_LIQUIDITY_TO_LIQUIDATE",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LPCM_NO_ERRORS",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LPCM_SPECIFIED_CURRENCY_NOT_BORROWED_BY_USER",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LPC_CALLER_NOT_EMERGENCY_ADMIN",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LPC_INVALID_ADDRESSES_PROVIDER_ID",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LPC_INVALID_ATOKEN_POOL_ADDRESS",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LPC_INVALID_CONFIGURATION",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LPC_INVALID_STABLE_DEBT_TOKEN_POOL_ADDRESS",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LPC_INVALID_STABLE_DEBT_TOKEN_UNDERLYING_ADDRESS",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LPC_INVALID_VARIABLE_DEBT_TOKEN_POOL_ADDRESS",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LPC_INVALID_VARIABLE_DEBT_TOKEN_UNDERLYING_ADDRESS",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LPC_RESERVE_LIQUIDITY_NOT_0",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LP_CALLER_MUST_BE_AN_ATOKEN",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LP_CALLER_NOT_LENDING_POOL_CONFIGURATOR",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LP_FAILED_COLLATERAL_SWAP",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LP_FAILED_REPAY_WITH_COLLATERAL",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LP_INCONSISTENT_FLASHLOAN_PARAMS",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LP_INCONSISTENT_PARAMS_LENGTH",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LP_INCONSISTENT_PROTOCOL_ACTUAL_BALANCE",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LP_INTEREST_RATE_REBALANCE_CONDITIONS_NOT_MET",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LP_INVALID_EQUAL_ASSETS_TO_SWAP",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LP_INVALID_FLASHLOAN_MODE",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LP_INVALID_FLASH_LOAN_EXECUTOR_RETURN",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LP_IS_PAUSED",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LP_LIQUIDATION_CALL_FAILED",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LP_NOT_CONTRACT",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LP_NOT_ENOUGH_LIQUIDITY_TO_BORROW",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LP_NOT_ENOUGH_STABLE_BORROW_BALANCE",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LP_NO_MORE_RESERVES_ALLOWED",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LP_REENTRANCY_NOT_ALLOWED",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LP_REQUESTED_AMOUNT_TOO_SMALL",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "MATH_ADDITION_OVERFLOW",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "MATH_DIVISION_BY_ZERO",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "MATH_MULTIPLICATION_OVERFLOW",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "RC_INVALID_DECIMALS",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "RC_INVALID_LIQ_BONUS",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "RC_INVALID_LIQ_THRESHOLD",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "RC_INVALID_LTV",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "RC_INVALID_RESERVE_FACTOR",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "RL_LIQUIDITY_INDEX_OVERFLOW",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "RL_LIQUIDITY_RATE_OVERFLOW",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "RL_RESERVE_ALREADY_INITIALIZED",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "RL_STABLE_BORROW_RATE_OVERFLOW",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "RL_VARIABLE_BORROW_INDEX_OVERFLOW",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "RL_VARIABLE_BORROW_RATE_OVERFLOW",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "SDT_BURN_EXCEEDS_BALANCE",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "SDT_STABLE_DEBT_OVERFLOW",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "UL_INVALID_INDEX",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "VL_AMOUNT_BIGGER_THAN_MAX_LOAN_SIZE_STABLE",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "VL_BORROWING_NOT_ENABLED",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "VL_COLLATERAL_BALANCE_IS_0",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "VL_COLLATERAL_CANNOT_COVER_NEW_BORROW",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "VL_COLLATERAL_SAME_AS_BORROWING_CURRENCY",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "VL_CURRENT_AVAILABLE_LIQUIDITY_NOT_ENOUGH",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "VL_DEPOSIT_ALREADY_IN_USE",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "VL_HEALTH_FACTOR_LOWER_THAN_LIQUIDATION_THRESHOLD",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "VL_INCONSISTENT_FLASHLOAN_PARAMS",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "VL_INVALID_AMOUNT",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "VL_INVALID_INTEREST_RATE_MODE_SELECTED",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "VL_NOT_ENOUGH_AVAILABLE_USER_BALANCE",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "VL_NO_ACTIVE_RESERVE",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "VL_NO_DEBT_OF_SELECTED_TYPE",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "VL_NO_EXPLICIT_AMOUNT_TO_REPAY_ON_BEHALF",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "VL_NO_STABLE_RATE_LOAN_IN_RESERVE",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "VL_NO_VARIABLE_RATE_LOAN_IN_RESERVE",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "VL_RESERVE_FROZEN",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "VL_STABLE_BORROWING_NOT_ENABLED",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "VL_TRANSFER_NOT_ALLOWED",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "VL_UNDERLYING_BALANCE_NOT_GREATER_THAN_0",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "611111610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061048a5760003560e01c80636ba4271f11610261578063cdad445a11610150578063e2c16d69116100cd578063f11c672011610091578063f11c67201461075c578063f3d9cc1114610764578063f902735d1461076c578063fb681def14610774578063fe75fd261461077c5761048a565b8063e2c16d6914610734578063e66327481461073c578063e7bf91b314610744578063eca85d3a1461074c578063f0473259146107545761048a565b8063d7510e0c11610114578063d7510e0c1461070c578063d7b079aa14610714578063daf235471461071c578063e0d7dfd714610724578063e29425dc1461072c5761048a565b8063cdad445a146106e4578063d3e370ee146106ec578063d44e8e88146106f4578063d57bb964146106fc578063d6f681b6146107045761048a565b8063a39ed4ff116101de578063b89652cd116101a2578063b89652cd146106bc578063bd013f5b146106c4578063c09e2618146106cc578063c2d628df146106d4578063cc5fc44c146106dc5761048a565b8063a39ed4ff14610694578063a84402411461069c578063ac753236146106a4578063b36a2cf3146106ac578063b72e40c7146106b45761048a565b80637865a627116102255780637865a6271461066c578063871938a81461067457806391a9fb181461067c5780639be4f03a14610684578063a2fbc8ad1461068c5761048a565b80636ba4271f146106445780636d422aa11461064c578063708b8dd31461065457806371a629da1461065c57806376f19030146106645761048a565b80633aa786a81161037d5780634a529f91116102fa578063614cf6a1116102be578063614cf6a11461061c578063637a5a12146106245780636422b2571461062c57806365344799146106345780636ab5e6151461063c5761048a565b80634a529f91146105f45780634fe4f1ab146105fc57806355bab12c146106045780635a9786d41461060c5780635e869ff1146106145761048a565b80634349e3d8116103415780634349e3d8146105cc57806344942004146105d457806344dc4f70146105dc57806347d25300146105e45780634927c63a146105ec5761048a565b80633aa786a8146105a45780633b5d25aa146105ac5780633f5d6ec8146105b4578063407374a4146105bc57806341b40ba5146105c45761048a565b806322a6f08e1161040b578063333e8ea8116103cf578063333e8ea81461057c57806335a9d21d1461058457806336565ab11461058c5780633872b0ad14610594578063390f34ba1461059c5761048a565b806322a6f08e146105545780632ace698a1461055c5780632b34c349146105645780632b9c57f61461056c5780632ea347b0146105745761048a565b80631291a38b116104525780631291a38b1461052c578063179476c5146105345780631befa78d1461053c5780631ea7c604146105445780631ec68b1d1461054c5761048a565b806302454ad31461048f578063029d23441461050c57806306f355ad146105145780630b8fd5881461051c5780630f5ee48214610524575b600080fd5b610497610784565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104d15781810151838201526020016104b9565b50505050905090810190601f1680156104fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104976107a2565b6104976107c0565b6104976107de565b6104976107fc565b61049761081a565b610497610838565b610497610855565b610497610873565b610497610891565b6104976108af565b6104976108cd565b6104976108eb565b610497610909565b610497610927565b610497610945565b610497610963565b610497610981565b61049761099e565b6104976109bc565b6104976109da565b6104976109f8565b610497610a15565b610497610a33565b610497610a51565b610497610a6f565b610497610a8d565b610497610aab565b610497610ac9565b610497610ae7565b610497610b05565b610497610b23565b610497610b41565b610497610b5f565b610497610b7d565b610497610b9b565b610497610bb9565b610497610bd7565b610497610bf5565b610497610c13565b610497610c31565b610497610c4f565b610497610c6d565b610497610c8a565b610497610ca8565b610497610cc6565b610497610ce3565b610497610d00565b610497610d1e565b610497610d3c565b610497610d5a565b610497610d78565b610497610d95565b610497610db3565b610497610dd1565b610497610def565b610497610e0d565b610497610e2b565b610497610e49565b610497610e67565b610497610e85565b610497610ea3565b610497610ec1565b610497610edf565b610497610efd565b610497610f1b565b610497610f38565b610497610f56565b610497610f74565b610497610f92565b610497610fb0565b610497610fce565b610497610fec565b61049761100a565b610497611028565b610497611046565b610497611064565b610497611081565b61049761109f565b6104976110bd565b60405180604001604052806002815260200161373760f01b81525081565b60405180604001604052806002815260200161068760f31b81525081565b60405180604001604052806002815260200161033360f41b81525081565b60405180604001604052806002815260200161191b60f11b81525081565b60405180604001604052806002815260200161343960f01b81525081565b604051806040016040528060028152602001611a9b60f11b81525081565b604051806040016040528060018152602001600d60fa1b81525081565b60405180604001604052806002815260200161038360f41b81525081565b604051806040016040528060028152602001611a1b60f11b81525081565b60405180604001604052806002815260200161031360f41b81525081565b604051806040016040528060028152602001610c8d60f21b81525081565b60405180604001604052806002815260200161313160f01b81525081565b60405180604001604052806002815260200161064760f31b81525081565b6040518060400160405280600281526020016106a760f31b81525081565b604051806040016040528060028152602001610d4d60f21b81525081565b604051806040016040528060028152602001611b9960f11b81525081565b60405180604001604052806002815260200161313960f01b81525081565b604051806040016040528060018152602001603760f81b81525081565b60405180604001604052806002815260200161333960f01b81525081565b60405180604001604052806002815260200161323560f01b81525081565b604051806040016040528060028152602001610c4d60f21b81525081565b604051806040016040528060018152602001600760fb1b81525081565b60405180604001604052806002815260200161037360f41b81525081565b60405180604001604052806002815260200161343360f01b81525081565b60405180604001604052806002815260200161066760f31b81525081565b60405180604001604052806002815260200161035360f41b81525081565b604051806040016040528060028152602001611a9960f11b81525081565b60405180604001604052806002815260200161323160f01b81525081565b60405180604001604052806002815260200161373560f01b81525081565b60405180604001604052806002815260200161189960f11b81525081565b60405180604001604052806002815260200161323360f01b81525081565b60405180604001604052806002815260200161353160f01b81525081565b60405180604001604052806002815260200161036360f41b81525081565b60405180604001604052806002815260200161034360f41b81525081565b60405180604001604052806002815260200161363960f01b81525081565b60405180604001604052806002815260200161363760f01b81525081565b6040518060400160405280600281526020016106e760f31b81525081565b60405180604001604052806002815260200161313760f01b81525081565b604051806040016040528060028152602001610ccd60f21b81525081565b60405180604001604052806002815260200161062760f31b81525081565b60405180604001604052806002815260200161323960f01b81525081565b60405180604001604052806002815260200161353560f01b81525081565b604051806040016040528060018152602001603960f81b81525081565b604051806040016040528060028152602001610d0d60f21b81525081565b60405180604001604052806002815260200161363560f01b81525081565b604051806040016040528060018152602001601960f91b81525081565b604051806040016040528060018152602001603160f81b81525081565b60405180604001604052806002815260200161313560f01b81525081565b60405180604001604052806002815260200161373160f01b81525081565b60405180604001604052806002815260200161333160f01b81525081565b60405180604001604052806002815260200161313360f01b81525081565b604051806040016040528060018152602001603560f81b81525081565b60405180604001604052806002815260200161333360f01b81525081565b60405180604001604052806002815260200161323760f01b81525081565b604051806040016040528060028152602001610dcd60f21b81525081565b60405180604001604052806002815260200161191960f11b81525081565b6040518060400160405280600281526020016106c760f31b81525081565b60405180604001604052806002815260200161333760f01b81525081565b60405180604001604052806002815260200161363160f01b81525081565b60405180604001604052806002815260200161343560f01b81525081565b60405180604001604052806002815260200161373960f01b81525081565b604051806040016040528060028152602001611b9b60f11b81525081565b604051806040016040528060028152602001611b1b60f11b81525081565b604051806040016040528060028152602001610d8d60f21b81525081565b60405180604001604052806002815260200161343160f01b81525081565b604051806040016040528060018152602001603360f81b81525081565b60405180604001604052806002815260200161373360f01b81525081565b60405180604001604052806002815260200161189b60f11b81525081565b60405180604001604052806002815260200161199b60f11b81525081565b60405180604001604052806002815260200161032360f41b81525081565b60405180604001604052806002815260200161353960f01b81525081565b60405180604001604052806002815260200161353760f01b81525081565b60405180604001604052806002815260200161343760f01b81525081565b60405180604001604052806002815260200161363360f01b81525081565b60405180604001604052806002815260200161333560f01b81525081565b60405180604001604052806002815260200161353360f01b81525081565b604051806040016040528060018152602001601b60f91b81525081565b604051806040016040528060028152602001611b1960f11b81525081565b604051806040016040528060028152602001611a1960f11b81525081565b60405180604001604052806002815260200161199960f11b8152508156fea264697066735822122031dc367ad4466b8be1fcde1dc598e31bd7cee9829694af2139923ac0db7f5faa64736f6c634300060c0033",
              "opcodes": "PUSH2 0x1111 PUSH2 0x26 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x19 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x48A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6BA4271F GT PUSH2 0x261 JUMPI DUP1 PUSH4 0xCDAD445A GT PUSH2 0x150 JUMPI DUP1 PUSH4 0xE2C16D69 GT PUSH2 0xCD JUMPI DUP1 PUSH4 0xF11C6720 GT PUSH2 0x91 JUMPI DUP1 PUSH4 0xF11C6720 EQ PUSH2 0x75C JUMPI DUP1 PUSH4 0xF3D9CC11 EQ PUSH2 0x764 JUMPI DUP1 PUSH4 0xF902735D EQ PUSH2 0x76C JUMPI DUP1 PUSH4 0xFB681DEF EQ PUSH2 0x774 JUMPI DUP1 PUSH4 0xFE75FD26 EQ PUSH2 0x77C JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0xE2C16D69 EQ PUSH2 0x734 JUMPI DUP1 PUSH4 0xE6632748 EQ PUSH2 0x73C JUMPI DUP1 PUSH4 0xE7BF91B3 EQ PUSH2 0x744 JUMPI DUP1 PUSH4 0xECA85D3A EQ PUSH2 0x74C JUMPI DUP1 PUSH4 0xF0473259 EQ PUSH2 0x754 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0xD7510E0C GT PUSH2 0x114 JUMPI DUP1 PUSH4 0xD7510E0C EQ PUSH2 0x70C JUMPI DUP1 PUSH4 0xD7B079AA EQ PUSH2 0x714 JUMPI DUP1 PUSH4 0xDAF23547 EQ PUSH2 0x71C JUMPI DUP1 PUSH4 0xE0D7DFD7 EQ PUSH2 0x724 JUMPI DUP1 PUSH4 0xE29425DC EQ PUSH2 0x72C JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0xCDAD445A EQ PUSH2 0x6E4 JUMPI DUP1 PUSH4 0xD3E370EE EQ PUSH2 0x6EC JUMPI DUP1 PUSH4 0xD44E8E88 EQ PUSH2 0x6F4 JUMPI DUP1 PUSH4 0xD57BB964 EQ PUSH2 0x6FC JUMPI DUP1 PUSH4 0xD6F681B6 EQ PUSH2 0x704 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0xA39ED4FF GT PUSH2 0x1DE JUMPI DUP1 PUSH4 0xB89652CD GT PUSH2 0x1A2 JUMPI DUP1 PUSH4 0xB89652CD EQ PUSH2 0x6BC JUMPI DUP1 PUSH4 0xBD013F5B EQ PUSH2 0x6C4 JUMPI DUP1 PUSH4 0xC09E2618 EQ PUSH2 0x6CC JUMPI DUP1 PUSH4 0xC2D628DF EQ PUSH2 0x6D4 JUMPI DUP1 PUSH4 0xCC5FC44C EQ PUSH2 0x6DC JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0xA39ED4FF EQ PUSH2 0x694 JUMPI DUP1 PUSH4 0xA8440241 EQ PUSH2 0x69C JUMPI DUP1 PUSH4 0xAC753236 EQ PUSH2 0x6A4 JUMPI DUP1 PUSH4 0xB36A2CF3 EQ PUSH2 0x6AC JUMPI DUP1 PUSH4 0xB72E40C7 EQ PUSH2 0x6B4 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x7865A627 GT PUSH2 0x225 JUMPI DUP1 PUSH4 0x7865A627 EQ PUSH2 0x66C JUMPI DUP1 PUSH4 0x871938A8 EQ PUSH2 0x674 JUMPI DUP1 PUSH4 0x91A9FB18 EQ PUSH2 0x67C JUMPI DUP1 PUSH4 0x9BE4F03A EQ PUSH2 0x684 JUMPI DUP1 PUSH4 0xA2FBC8AD EQ PUSH2 0x68C JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x6BA4271F EQ PUSH2 0x644 JUMPI DUP1 PUSH4 0x6D422AA1 EQ PUSH2 0x64C JUMPI DUP1 PUSH4 0x708B8DD3 EQ PUSH2 0x654 JUMPI DUP1 PUSH4 0x71A629DA EQ PUSH2 0x65C JUMPI DUP1 PUSH4 0x76F19030 EQ PUSH2 0x664 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x3AA786A8 GT PUSH2 0x37D JUMPI DUP1 PUSH4 0x4A529F91 GT PUSH2 0x2FA JUMPI DUP1 PUSH4 0x614CF6A1 GT PUSH2 0x2BE JUMPI DUP1 PUSH4 0x614CF6A1 EQ PUSH2 0x61C JUMPI DUP1 PUSH4 0x637A5A12 EQ PUSH2 0x624 JUMPI DUP1 PUSH4 0x6422B257 EQ PUSH2 0x62C JUMPI DUP1 PUSH4 0x65344799 EQ PUSH2 0x634 JUMPI DUP1 PUSH4 0x6AB5E615 EQ PUSH2 0x63C JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x4A529F91 EQ PUSH2 0x5F4 JUMPI DUP1 PUSH4 0x4FE4F1AB EQ PUSH2 0x5FC JUMPI DUP1 PUSH4 0x55BAB12C EQ PUSH2 0x604 JUMPI DUP1 PUSH4 0x5A9786D4 EQ PUSH2 0x60C JUMPI DUP1 PUSH4 0x5E869FF1 EQ PUSH2 0x614 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x4349E3D8 GT PUSH2 0x341 JUMPI DUP1 PUSH4 0x4349E3D8 EQ PUSH2 0x5CC JUMPI DUP1 PUSH4 0x44942004 EQ PUSH2 0x5D4 JUMPI DUP1 PUSH4 0x44DC4F70 EQ PUSH2 0x5DC JUMPI DUP1 PUSH4 0x47D25300 EQ PUSH2 0x5E4 JUMPI DUP1 PUSH4 0x4927C63A EQ PUSH2 0x5EC JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x3AA786A8 EQ PUSH2 0x5A4 JUMPI DUP1 PUSH4 0x3B5D25AA EQ PUSH2 0x5AC JUMPI DUP1 PUSH4 0x3F5D6EC8 EQ PUSH2 0x5B4 JUMPI DUP1 PUSH4 0x407374A4 EQ PUSH2 0x5BC JUMPI DUP1 PUSH4 0x41B40BA5 EQ PUSH2 0x5C4 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x22A6F08E GT PUSH2 0x40B JUMPI DUP1 PUSH4 0x333E8EA8 GT PUSH2 0x3CF JUMPI DUP1 PUSH4 0x333E8EA8 EQ PUSH2 0x57C JUMPI DUP1 PUSH4 0x35A9D21D EQ PUSH2 0x584 JUMPI DUP1 PUSH4 0x36565AB1 EQ PUSH2 0x58C JUMPI DUP1 PUSH4 0x3872B0AD EQ PUSH2 0x594 JUMPI DUP1 PUSH4 0x390F34BA EQ PUSH2 0x59C JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x22A6F08E EQ PUSH2 0x554 JUMPI DUP1 PUSH4 0x2ACE698A EQ PUSH2 0x55C JUMPI DUP1 PUSH4 0x2B34C349 EQ PUSH2 0x564 JUMPI DUP1 PUSH4 0x2B9C57F6 EQ PUSH2 0x56C JUMPI DUP1 PUSH4 0x2EA347B0 EQ PUSH2 0x574 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x1291A38B GT PUSH2 0x452 JUMPI DUP1 PUSH4 0x1291A38B EQ PUSH2 0x52C JUMPI DUP1 PUSH4 0x179476C5 EQ PUSH2 0x534 JUMPI DUP1 PUSH4 0x1BEFA78D EQ PUSH2 0x53C JUMPI DUP1 PUSH4 0x1EA7C604 EQ PUSH2 0x544 JUMPI DUP1 PUSH4 0x1EC68B1D EQ PUSH2 0x54C JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x2454AD3 EQ PUSH2 0x48F JUMPI DUP1 PUSH4 0x29D2344 EQ PUSH2 0x50C JUMPI DUP1 PUSH4 0x6F355AD EQ PUSH2 0x514 JUMPI DUP1 PUSH4 0xB8FD588 EQ PUSH2 0x51C JUMPI DUP1 PUSH4 0xF5EE482 EQ PUSH2 0x524 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x497 PUSH2 0x784 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4D1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4B9 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4FE JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x497 PUSH2 0x7A2 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x7C0 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x7DE JUMP JUMPDEST PUSH2 0x497 PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x497 PUSH2 0x81A JUMP JUMPDEST PUSH2 0x497 PUSH2 0x838 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x855 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x873 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x891 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x8AF JUMP JUMPDEST PUSH2 0x497 PUSH2 0x8CD JUMP JUMPDEST PUSH2 0x497 PUSH2 0x8EB JUMP JUMPDEST PUSH2 0x497 PUSH2 0x909 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x927 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x945 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x963 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x981 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x99E JUMP JUMPDEST PUSH2 0x497 PUSH2 0x9BC JUMP JUMPDEST PUSH2 0x497 PUSH2 0x9DA JUMP JUMPDEST PUSH2 0x497 PUSH2 0x9F8 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xA15 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xA33 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xA51 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xA6F JUMP JUMPDEST PUSH2 0x497 PUSH2 0xA8D JUMP JUMPDEST PUSH2 0x497 PUSH2 0xAAB JUMP JUMPDEST PUSH2 0x497 PUSH2 0xAC9 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xB05 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xB23 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xB41 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0x497 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x497 PUSH2 0xB9B JUMP JUMPDEST PUSH2 0x497 PUSH2 0xBB9 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xBD7 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xBF5 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xC13 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xC31 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xC4F JUMP JUMPDEST PUSH2 0x497 PUSH2 0xC6D JUMP JUMPDEST PUSH2 0x497 PUSH2 0xC8A JUMP JUMPDEST PUSH2 0x497 PUSH2 0xCA8 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xCC6 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xCE3 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xD00 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xD1E JUMP JUMPDEST PUSH2 0x497 PUSH2 0xD3C JUMP JUMPDEST PUSH2 0x497 PUSH2 0xD5A JUMP JUMPDEST PUSH2 0x497 PUSH2 0xD78 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xD95 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xDB3 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xDD1 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xDEF JUMP JUMPDEST PUSH2 0x497 PUSH2 0xE0D JUMP JUMPDEST PUSH2 0x497 PUSH2 0xE2B JUMP JUMPDEST PUSH2 0x497 PUSH2 0xE49 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xE67 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xE85 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xEA3 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xEC1 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xEDF JUMP JUMPDEST PUSH2 0x497 PUSH2 0xEFD JUMP JUMPDEST PUSH2 0x497 PUSH2 0xF1B JUMP JUMPDEST PUSH2 0x497 PUSH2 0xF38 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xF56 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xF74 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xF92 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xFB0 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xFCE JUMP JUMPDEST PUSH2 0x497 PUSH2 0xFEC JUMP JUMPDEST PUSH2 0x497 PUSH2 0x100A JUMP JUMPDEST PUSH2 0x497 PUSH2 0x1028 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x1046 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x1064 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x1081 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x109F JUMP JUMPDEST PUSH2 0x497 PUSH2 0x10BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x333 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x191B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3439 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A9B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xD PUSH1 0xFA SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x383 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A1B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x313 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC8D PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3131 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x647 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6A7 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD4D PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B99 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3139 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x37 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3339 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3235 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC4D PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 PUSH1 0xFB SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x373 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3433 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x667 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x353 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A99 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3231 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3735 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1899 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3233 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3531 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x363 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x343 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3639 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3637 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6E7 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3137 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xCCD PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x627 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3535 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x39 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD0D PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3635 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x19 PUSH1 0xF9 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3135 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3731 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3331 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3133 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x35 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3237 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xDCD PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1919 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6C7 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3337 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3631 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3435 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3739 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B9B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B1B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD8D PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3431 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x33 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3733 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x189B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x199B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3539 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3537 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3437 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3633 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3335 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3533 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1B PUSH1 0xF9 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B19 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A19 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1999 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BALANCE 0xDC CALLDATASIZE PUSH27 0xD4466B8BE1FCDE1DC598E31BD7CEE9829694AF2139923AC0DB7F5F 0xAA PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "660:8264:77:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "730000000000000000000000000000000000000000301460806040526004361061048a5760003560e01c80636ba4271f11610261578063cdad445a11610150578063e2c16d69116100cd578063f11c672011610091578063f11c67201461075c578063f3d9cc1114610764578063f902735d1461076c578063fb681def14610774578063fe75fd261461077c5761048a565b8063e2c16d6914610734578063e66327481461073c578063e7bf91b314610744578063eca85d3a1461074c578063f0473259146107545761048a565b8063d7510e0c11610114578063d7510e0c1461070c578063d7b079aa14610714578063daf235471461071c578063e0d7dfd714610724578063e29425dc1461072c5761048a565b8063cdad445a146106e4578063d3e370ee146106ec578063d44e8e88146106f4578063d57bb964146106fc578063d6f681b6146107045761048a565b8063a39ed4ff116101de578063b89652cd116101a2578063b89652cd146106bc578063bd013f5b146106c4578063c09e2618146106cc578063c2d628df146106d4578063cc5fc44c146106dc5761048a565b8063a39ed4ff14610694578063a84402411461069c578063ac753236146106a4578063b36a2cf3146106ac578063b72e40c7146106b45761048a565b80637865a627116102255780637865a6271461066c578063871938a81461067457806391a9fb181461067c5780639be4f03a14610684578063a2fbc8ad1461068c5761048a565b80636ba4271f146106445780636d422aa11461064c578063708b8dd31461065457806371a629da1461065c57806376f19030146106645761048a565b80633aa786a81161037d5780634a529f91116102fa578063614cf6a1116102be578063614cf6a11461061c578063637a5a12146106245780636422b2571461062c57806365344799146106345780636ab5e6151461063c5761048a565b80634a529f91146105f45780634fe4f1ab146105fc57806355bab12c146106045780635a9786d41461060c5780635e869ff1146106145761048a565b80634349e3d8116103415780634349e3d8146105cc57806344942004146105d457806344dc4f70146105dc57806347d25300146105e45780634927c63a146105ec5761048a565b80633aa786a8146105a45780633b5d25aa146105ac5780633f5d6ec8146105b4578063407374a4146105bc57806341b40ba5146105c45761048a565b806322a6f08e1161040b578063333e8ea8116103cf578063333e8ea81461057c57806335a9d21d1461058457806336565ab11461058c5780633872b0ad14610594578063390f34ba1461059c5761048a565b806322a6f08e146105545780632ace698a1461055c5780632b34c349146105645780632b9c57f61461056c5780632ea347b0146105745761048a565b80631291a38b116104525780631291a38b1461052c578063179476c5146105345780631befa78d1461053c5780631ea7c604146105445780631ec68b1d1461054c5761048a565b806302454ad31461048f578063029d23441461050c57806306f355ad146105145780630b8fd5881461051c5780630f5ee48214610524575b600080fd5b610497610784565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104d15781810151838201526020016104b9565b50505050905090810190601f1680156104fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104976107a2565b6104976107c0565b6104976107de565b6104976107fc565b61049761081a565b610497610838565b610497610855565b610497610873565b610497610891565b6104976108af565b6104976108cd565b6104976108eb565b610497610909565b610497610927565b610497610945565b610497610963565b610497610981565b61049761099e565b6104976109bc565b6104976109da565b6104976109f8565b610497610a15565b610497610a33565b610497610a51565b610497610a6f565b610497610a8d565b610497610aab565b610497610ac9565b610497610ae7565b610497610b05565b610497610b23565b610497610b41565b610497610b5f565b610497610b7d565b610497610b9b565b610497610bb9565b610497610bd7565b610497610bf5565b610497610c13565b610497610c31565b610497610c4f565b610497610c6d565b610497610c8a565b610497610ca8565b610497610cc6565b610497610ce3565b610497610d00565b610497610d1e565b610497610d3c565b610497610d5a565b610497610d78565b610497610d95565b610497610db3565b610497610dd1565b610497610def565b610497610e0d565b610497610e2b565b610497610e49565b610497610e67565b610497610e85565b610497610ea3565b610497610ec1565b610497610edf565b610497610efd565b610497610f1b565b610497610f38565b610497610f56565b610497610f74565b610497610f92565b610497610fb0565b610497610fce565b610497610fec565b61049761100a565b610497611028565b610497611046565b610497611064565b610497611081565b61049761109f565b6104976110bd565b60405180604001604052806002815260200161373760f01b81525081565b60405180604001604052806002815260200161068760f31b81525081565b60405180604001604052806002815260200161033360f41b81525081565b60405180604001604052806002815260200161191b60f11b81525081565b60405180604001604052806002815260200161343960f01b81525081565b604051806040016040528060028152602001611a9b60f11b81525081565b604051806040016040528060018152602001600d60fa1b81525081565b60405180604001604052806002815260200161038360f41b81525081565b604051806040016040528060028152602001611a1b60f11b81525081565b60405180604001604052806002815260200161031360f41b81525081565b604051806040016040528060028152602001610c8d60f21b81525081565b60405180604001604052806002815260200161313160f01b81525081565b60405180604001604052806002815260200161064760f31b81525081565b6040518060400160405280600281526020016106a760f31b81525081565b604051806040016040528060028152602001610d4d60f21b81525081565b604051806040016040528060028152602001611b9960f11b81525081565b60405180604001604052806002815260200161313960f01b81525081565b604051806040016040528060018152602001603760f81b81525081565b60405180604001604052806002815260200161333960f01b81525081565b60405180604001604052806002815260200161323560f01b81525081565b604051806040016040528060028152602001610c4d60f21b81525081565b604051806040016040528060018152602001600760fb1b81525081565b60405180604001604052806002815260200161037360f41b81525081565b60405180604001604052806002815260200161343360f01b81525081565b60405180604001604052806002815260200161066760f31b81525081565b60405180604001604052806002815260200161035360f41b81525081565b604051806040016040528060028152602001611a9960f11b81525081565b60405180604001604052806002815260200161323160f01b81525081565b60405180604001604052806002815260200161373560f01b81525081565b60405180604001604052806002815260200161189960f11b81525081565b60405180604001604052806002815260200161323360f01b81525081565b60405180604001604052806002815260200161353160f01b81525081565b60405180604001604052806002815260200161036360f41b81525081565b60405180604001604052806002815260200161034360f41b81525081565b60405180604001604052806002815260200161363960f01b81525081565b60405180604001604052806002815260200161363760f01b81525081565b6040518060400160405280600281526020016106e760f31b81525081565b60405180604001604052806002815260200161313760f01b81525081565b604051806040016040528060028152602001610ccd60f21b81525081565b60405180604001604052806002815260200161062760f31b81525081565b60405180604001604052806002815260200161323960f01b81525081565b60405180604001604052806002815260200161353560f01b81525081565b604051806040016040528060018152602001603960f81b81525081565b604051806040016040528060028152602001610d0d60f21b81525081565b60405180604001604052806002815260200161363560f01b81525081565b604051806040016040528060018152602001601960f91b81525081565b604051806040016040528060018152602001603160f81b81525081565b60405180604001604052806002815260200161313560f01b81525081565b60405180604001604052806002815260200161373160f01b81525081565b60405180604001604052806002815260200161333160f01b81525081565b60405180604001604052806002815260200161313360f01b81525081565b604051806040016040528060018152602001603560f81b81525081565b60405180604001604052806002815260200161333360f01b81525081565b60405180604001604052806002815260200161323760f01b81525081565b604051806040016040528060028152602001610dcd60f21b81525081565b60405180604001604052806002815260200161191960f11b81525081565b6040518060400160405280600281526020016106c760f31b81525081565b60405180604001604052806002815260200161333760f01b81525081565b60405180604001604052806002815260200161363160f01b81525081565b60405180604001604052806002815260200161343560f01b81525081565b60405180604001604052806002815260200161373960f01b81525081565b604051806040016040528060028152602001611b9b60f11b81525081565b604051806040016040528060028152602001611b1b60f11b81525081565b604051806040016040528060028152602001610d8d60f21b81525081565b60405180604001604052806002815260200161343160f01b81525081565b604051806040016040528060018152602001603360f81b81525081565b60405180604001604052806002815260200161373360f01b81525081565b60405180604001604052806002815260200161189b60f11b81525081565b60405180604001604052806002815260200161199b60f11b81525081565b60405180604001604052806002815260200161032360f41b81525081565b60405180604001604052806002815260200161353960f01b81525081565b60405180604001604052806002815260200161353760f01b81525081565b60405180604001604052806002815260200161343760f01b81525081565b60405180604001604052806002815260200161363360f01b81525081565b60405180604001604052806002815260200161333560f01b81525081565b60405180604001604052806002815260200161353360f01b81525081565b604051806040016040528060018152602001601b60f91b81525081565b604051806040016040528060028152602001611b1960f11b81525081565b604051806040016040528060028152602001611a1960f11b81525081565b60405180604001604052806002815260200161199960f11b8152508156fea264697066735822122031dc367ad4466b8be1fcde1dc598e31bd7cee9829694af2139923ac0db7f5faa64736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x48A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6BA4271F GT PUSH2 0x261 JUMPI DUP1 PUSH4 0xCDAD445A GT PUSH2 0x150 JUMPI DUP1 PUSH4 0xE2C16D69 GT PUSH2 0xCD JUMPI DUP1 PUSH4 0xF11C6720 GT PUSH2 0x91 JUMPI DUP1 PUSH4 0xF11C6720 EQ PUSH2 0x75C JUMPI DUP1 PUSH4 0xF3D9CC11 EQ PUSH2 0x764 JUMPI DUP1 PUSH4 0xF902735D EQ PUSH2 0x76C JUMPI DUP1 PUSH4 0xFB681DEF EQ PUSH2 0x774 JUMPI DUP1 PUSH4 0xFE75FD26 EQ PUSH2 0x77C JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0xE2C16D69 EQ PUSH2 0x734 JUMPI DUP1 PUSH4 0xE6632748 EQ PUSH2 0x73C JUMPI DUP1 PUSH4 0xE7BF91B3 EQ PUSH2 0x744 JUMPI DUP1 PUSH4 0xECA85D3A EQ PUSH2 0x74C JUMPI DUP1 PUSH4 0xF0473259 EQ PUSH2 0x754 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0xD7510E0C GT PUSH2 0x114 JUMPI DUP1 PUSH4 0xD7510E0C EQ PUSH2 0x70C JUMPI DUP1 PUSH4 0xD7B079AA EQ PUSH2 0x714 JUMPI DUP1 PUSH4 0xDAF23547 EQ PUSH2 0x71C JUMPI DUP1 PUSH4 0xE0D7DFD7 EQ PUSH2 0x724 JUMPI DUP1 PUSH4 0xE29425DC EQ PUSH2 0x72C JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0xCDAD445A EQ PUSH2 0x6E4 JUMPI DUP1 PUSH4 0xD3E370EE EQ PUSH2 0x6EC JUMPI DUP1 PUSH4 0xD44E8E88 EQ PUSH2 0x6F4 JUMPI DUP1 PUSH4 0xD57BB964 EQ PUSH2 0x6FC JUMPI DUP1 PUSH4 0xD6F681B6 EQ PUSH2 0x704 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0xA39ED4FF GT PUSH2 0x1DE JUMPI DUP1 PUSH4 0xB89652CD GT PUSH2 0x1A2 JUMPI DUP1 PUSH4 0xB89652CD EQ PUSH2 0x6BC JUMPI DUP1 PUSH4 0xBD013F5B EQ PUSH2 0x6C4 JUMPI DUP1 PUSH4 0xC09E2618 EQ PUSH2 0x6CC JUMPI DUP1 PUSH4 0xC2D628DF EQ PUSH2 0x6D4 JUMPI DUP1 PUSH4 0xCC5FC44C EQ PUSH2 0x6DC JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0xA39ED4FF EQ PUSH2 0x694 JUMPI DUP1 PUSH4 0xA8440241 EQ PUSH2 0x69C JUMPI DUP1 PUSH4 0xAC753236 EQ PUSH2 0x6A4 JUMPI DUP1 PUSH4 0xB36A2CF3 EQ PUSH2 0x6AC JUMPI DUP1 PUSH4 0xB72E40C7 EQ PUSH2 0x6B4 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x7865A627 GT PUSH2 0x225 JUMPI DUP1 PUSH4 0x7865A627 EQ PUSH2 0x66C JUMPI DUP1 PUSH4 0x871938A8 EQ PUSH2 0x674 JUMPI DUP1 PUSH4 0x91A9FB18 EQ PUSH2 0x67C JUMPI DUP1 PUSH4 0x9BE4F03A EQ PUSH2 0x684 JUMPI DUP1 PUSH4 0xA2FBC8AD EQ PUSH2 0x68C JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x6BA4271F EQ PUSH2 0x644 JUMPI DUP1 PUSH4 0x6D422AA1 EQ PUSH2 0x64C JUMPI DUP1 PUSH4 0x708B8DD3 EQ PUSH2 0x654 JUMPI DUP1 PUSH4 0x71A629DA EQ PUSH2 0x65C JUMPI DUP1 PUSH4 0x76F19030 EQ PUSH2 0x664 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x3AA786A8 GT PUSH2 0x37D JUMPI DUP1 PUSH4 0x4A529F91 GT PUSH2 0x2FA JUMPI DUP1 PUSH4 0x614CF6A1 GT PUSH2 0x2BE JUMPI DUP1 PUSH4 0x614CF6A1 EQ PUSH2 0x61C JUMPI DUP1 PUSH4 0x637A5A12 EQ PUSH2 0x624 JUMPI DUP1 PUSH4 0x6422B257 EQ PUSH2 0x62C JUMPI DUP1 PUSH4 0x65344799 EQ PUSH2 0x634 JUMPI DUP1 PUSH4 0x6AB5E615 EQ PUSH2 0x63C JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x4A529F91 EQ PUSH2 0x5F4 JUMPI DUP1 PUSH4 0x4FE4F1AB EQ PUSH2 0x5FC JUMPI DUP1 PUSH4 0x55BAB12C EQ PUSH2 0x604 JUMPI DUP1 PUSH4 0x5A9786D4 EQ PUSH2 0x60C JUMPI DUP1 PUSH4 0x5E869FF1 EQ PUSH2 0x614 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x4349E3D8 GT PUSH2 0x341 JUMPI DUP1 PUSH4 0x4349E3D8 EQ PUSH2 0x5CC JUMPI DUP1 PUSH4 0x44942004 EQ PUSH2 0x5D4 JUMPI DUP1 PUSH4 0x44DC4F70 EQ PUSH2 0x5DC JUMPI DUP1 PUSH4 0x47D25300 EQ PUSH2 0x5E4 JUMPI DUP1 PUSH4 0x4927C63A EQ PUSH2 0x5EC JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x3AA786A8 EQ PUSH2 0x5A4 JUMPI DUP1 PUSH4 0x3B5D25AA EQ PUSH2 0x5AC JUMPI DUP1 PUSH4 0x3F5D6EC8 EQ PUSH2 0x5B4 JUMPI DUP1 PUSH4 0x407374A4 EQ PUSH2 0x5BC JUMPI DUP1 PUSH4 0x41B40BA5 EQ PUSH2 0x5C4 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x22A6F08E GT PUSH2 0x40B JUMPI DUP1 PUSH4 0x333E8EA8 GT PUSH2 0x3CF JUMPI DUP1 PUSH4 0x333E8EA8 EQ PUSH2 0x57C JUMPI DUP1 PUSH4 0x35A9D21D EQ PUSH2 0x584 JUMPI DUP1 PUSH4 0x36565AB1 EQ PUSH2 0x58C JUMPI DUP1 PUSH4 0x3872B0AD EQ PUSH2 0x594 JUMPI DUP1 PUSH4 0x390F34BA EQ PUSH2 0x59C JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x22A6F08E EQ PUSH2 0x554 JUMPI DUP1 PUSH4 0x2ACE698A EQ PUSH2 0x55C JUMPI DUP1 PUSH4 0x2B34C349 EQ PUSH2 0x564 JUMPI DUP1 PUSH4 0x2B9C57F6 EQ PUSH2 0x56C JUMPI DUP1 PUSH4 0x2EA347B0 EQ PUSH2 0x574 JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x1291A38B GT PUSH2 0x452 JUMPI DUP1 PUSH4 0x1291A38B EQ PUSH2 0x52C JUMPI DUP1 PUSH4 0x179476C5 EQ PUSH2 0x534 JUMPI DUP1 PUSH4 0x1BEFA78D EQ PUSH2 0x53C JUMPI DUP1 PUSH4 0x1EA7C604 EQ PUSH2 0x544 JUMPI DUP1 PUSH4 0x1EC68B1D EQ PUSH2 0x54C JUMPI PUSH2 0x48A JUMP JUMPDEST DUP1 PUSH4 0x2454AD3 EQ PUSH2 0x48F JUMPI DUP1 PUSH4 0x29D2344 EQ PUSH2 0x50C JUMPI DUP1 PUSH4 0x6F355AD EQ PUSH2 0x514 JUMPI DUP1 PUSH4 0xB8FD588 EQ PUSH2 0x51C JUMPI DUP1 PUSH4 0xF5EE482 EQ PUSH2 0x524 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x497 PUSH2 0x784 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4D1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4B9 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4FE JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x497 PUSH2 0x7A2 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x7C0 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x7DE JUMP JUMPDEST PUSH2 0x497 PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x497 PUSH2 0x81A JUMP JUMPDEST PUSH2 0x497 PUSH2 0x838 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x855 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x873 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x891 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x8AF JUMP JUMPDEST PUSH2 0x497 PUSH2 0x8CD JUMP JUMPDEST PUSH2 0x497 PUSH2 0x8EB JUMP JUMPDEST PUSH2 0x497 PUSH2 0x909 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x927 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x945 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x963 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x981 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x99E JUMP JUMPDEST PUSH2 0x497 PUSH2 0x9BC JUMP JUMPDEST PUSH2 0x497 PUSH2 0x9DA JUMP JUMPDEST PUSH2 0x497 PUSH2 0x9F8 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xA15 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xA33 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xA51 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xA6F JUMP JUMPDEST PUSH2 0x497 PUSH2 0xA8D JUMP JUMPDEST PUSH2 0x497 PUSH2 0xAAB JUMP JUMPDEST PUSH2 0x497 PUSH2 0xAC9 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xB05 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xB23 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xB41 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xB5F JUMP JUMPDEST PUSH2 0x497 PUSH2 0xB7D JUMP JUMPDEST PUSH2 0x497 PUSH2 0xB9B JUMP JUMPDEST PUSH2 0x497 PUSH2 0xBB9 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xBD7 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xBF5 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xC13 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xC31 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xC4F JUMP JUMPDEST PUSH2 0x497 PUSH2 0xC6D JUMP JUMPDEST PUSH2 0x497 PUSH2 0xC8A JUMP JUMPDEST PUSH2 0x497 PUSH2 0xCA8 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xCC6 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xCE3 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xD00 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xD1E JUMP JUMPDEST PUSH2 0x497 PUSH2 0xD3C JUMP JUMPDEST PUSH2 0x497 PUSH2 0xD5A JUMP JUMPDEST PUSH2 0x497 PUSH2 0xD78 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xD95 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xDB3 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xDD1 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xDEF JUMP JUMPDEST PUSH2 0x497 PUSH2 0xE0D JUMP JUMPDEST PUSH2 0x497 PUSH2 0xE2B JUMP JUMPDEST PUSH2 0x497 PUSH2 0xE49 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xE67 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xE85 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xEA3 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xEC1 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xEDF JUMP JUMPDEST PUSH2 0x497 PUSH2 0xEFD JUMP JUMPDEST PUSH2 0x497 PUSH2 0xF1B JUMP JUMPDEST PUSH2 0x497 PUSH2 0xF38 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xF56 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xF74 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xF92 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xFB0 JUMP JUMPDEST PUSH2 0x497 PUSH2 0xFCE JUMP JUMPDEST PUSH2 0x497 PUSH2 0xFEC JUMP JUMPDEST PUSH2 0x497 PUSH2 0x100A JUMP JUMPDEST PUSH2 0x497 PUSH2 0x1028 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x1046 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x1064 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x1081 JUMP JUMPDEST PUSH2 0x497 PUSH2 0x109F JUMP JUMPDEST PUSH2 0x497 PUSH2 0x10BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x333 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x191B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3439 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A9B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xD PUSH1 0xFA SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x383 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A1B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x313 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC8D PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3131 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x647 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6A7 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD4D PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B99 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3139 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x37 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3339 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3235 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC4D PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 PUSH1 0xFB SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x373 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3433 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x667 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x353 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A99 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3231 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3735 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1899 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3233 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3531 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x363 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x343 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3639 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3637 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6E7 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3137 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xCCD PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x627 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3535 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x39 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD0D PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3635 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x19 PUSH1 0xF9 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3135 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3731 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3331 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3133 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x35 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3237 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xDCD PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1919 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6C7 PUSH1 0xF3 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3337 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3631 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3435 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3739 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B9B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B1B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD8D PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3431 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x33 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3733 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x189B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x199B PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 PUSH1 0xF4 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3539 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3537 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3437 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3633 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3335 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3533 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1B PUSH1 0xF9 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B19 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A19 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1999 PUSH1 0xF1 SHL DUP2 MSTORE POP DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BALANCE 0xDC CALLDATASIZE PUSH27 0xD4466B8BE1FCDE1DC598E31BD7CEE9829694AF2139923AC0DB7F5F 0xAA PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "660:8264:77:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8375:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6542:58;;;:::i;4406:65::-;;;:::i;3949:69::-;;;:::i;6604:52::-;;;:::i;7236:::-;;;:::i;1226:70::-;;;:::i;8532:54::-;;;:::i;6386:44::-;;;:::i;1848:79::-;;;:::i;3708:63::-;;;:::i;1991:67::-;;;:::i;4220:62::-;;;:::i;7382:52::-;;;:::i;7022:62::-;;;:::i;8177:65::-;;;:::i;3114:70::-;;;:::i;1557:53::-;;;:::i;5341:80::-;;;:::i;3830:59::-;;;:::i;2358:72::-;;;:::i;1644:67::-;;;:::i;8065:49::-;;;:::i;6013:66::-;;;:::i;5211:78::-;;;:::i;6660:51::-;;;:::i;6814:63::-;;;:::i;3356:65::-;;;:::i;5588:55::-;;;:::i;2120:61::-;;;:::i;3619:56::-;;;:::i;6715:57::-;;;:::i;7463:55::-;;;:::i;5473:63::-;;;:::i;8011:50::-;;;:::i;7905:44::-;;;:::i;8425:45::-;;;:::i;2834:63::-;;;:::i;4739:57::-;;;:::i;2972:65::-;;;:::i;4286:60::-;;;:::i;7131:::-;;;:::i;1756:55::-;;;:::i;6131:74::-;;;:::i;7773:57::-;;;:::i;1022:49::-;;;:::i;937:46::-;;;:::i;2513:57::-;;;:::i;8118:55::-;;;:::i;4518:57::-;;;:::i;2217:70::-;;;:::i;1341:65::-;;;:::i;697:51::-;;;:::i;4078:69::-;;;:::i;8312:59::-;;;:::i;3487:75::-;;;:::i;7953:54::-;;;:::i;5085:74::-;;;:::i;7522:61::-;;;:::i;6257:68::-;;;:::i;8474:54::-;;;:::i;5692:60::-;;;:::i;7834:67::-;;;:::i;7707:42::-;;;:::i;5800:59::-;;;:::i;1114:46::-;;;:::i;8246:62::-;;;:::i;2687:70::-;;;:::i;4961:72::-;;;:::i;3243:55::-;;;:::i;791:57::-;;;:::i;7317:61::-;;;:::i;6449:55::-;;;:::i;7646:57::-;;;:::i;4848:61::-;;;:::i;6925:56::-;;;:::i;1468:52::-;;;:::i;7587:55::-;;;:::i;5895:68::-;;;:::i;4633:60::-;;;:::i;8375:46::-;;;;;;;;;;;;;;-1:-1:-1;;;8375:46:77;;;;:::o;6542:58::-;;;;;;;;;;;;;;-1:-1:-1;;;6542:58:77;;;;:::o;4406:65::-;;;;;;;;;;;;;;-1:-1:-1;;;4406:65:77;;;;:::o;3949:69::-;;;;;;;;;;;;;;-1:-1:-1;;;3949:69:77;;;;:::o;6604:52::-;;;;;;;;;;;;;;-1:-1:-1;;;6604:52:77;;;;:::o;7236:::-;;;;;;;;;;;;;;-1:-1:-1;;;7236:52:77;;;;:::o;1226:70::-;;;;;;;;;;;;;;-1:-1:-1;;;1226:70:77;;;;:::o;8532:54::-;;;;;;;;;;;;;;-1:-1:-1;;;8532:54:77;;;;:::o;6386:44::-;;;;;;;;;;;;;;-1:-1:-1;;;6386:44:77;;;;:::o;1848:79::-;;;;;;;;;;;;;;-1:-1:-1;;;1848:79:77;;;;:::o;3708:63::-;;;;;;;;;;;;;;-1:-1:-1;;;3708:63:77;;;;:::o;1991:67::-;;;;;;;;;;;;;;-1:-1:-1;;;1991:67:77;;;;:::o;4220:62::-;;;;;;;;;;;;;;-1:-1:-1;;;4220:62:77;;;;:::o;7382:52::-;;;;;;;;;;;;;;-1:-1:-1;;;7382:52:77;;;;:::o;7022:62::-;;;;;;;;;;;;;;-1:-1:-1;;;7022:62:77;;;;:::o;8177:65::-;;;;;;;;;;;;;;-1:-1:-1;;;8177:65:77;;;;:::o;3114:70::-;;;;;;;;;;;;;;-1:-1:-1;;;3114:70:77;;;;:::o;1557:53::-;;;;;;;;;;;;;;-1:-1:-1;;;1557:53:77;;;;:::o;5341:80::-;;;;;;;;;;;;;;-1:-1:-1;;;5341:80:77;;;;:::o;3830:59::-;;;;;;;;;;;;;;-1:-1:-1;;;3830:59:77;;;;:::o;2358:72::-;;;;;;;;;;;;;;-1:-1:-1;;;2358:72:77;;;;:::o;1644:67::-;;;;;;;;;;;;;;-1:-1:-1;;;1644:67:77;;;;:::o;8065:49::-;;;;;;;;;;;;;;-1:-1:-1;;;8065:49:77;;;;:::o;6013:66::-;;;;;;;;;;;;;;-1:-1:-1;;;6013:66:77;;;;:::o;5211:78::-;;;;;;;;;;;;;;-1:-1:-1;;;5211:78:77;;;;:::o;6660:51::-;;;;;;;;;;;;;;-1:-1:-1;;;6660:51:77;;;;:::o;6814:63::-;;;;;;;;;;;;;;-1:-1:-1;;;6814:63:77;;;;:::o;3356:65::-;;;;;;;;;;;;;;-1:-1:-1;;;3356:65:77;;;;:::o;5588:55::-;;;;;;;;;;;;;;-1:-1:-1;;;5588:55:77;;;;:::o;2120:61::-;;;;;;;;;;;;;;-1:-1:-1;;;2120:61:77;;;;:::o;3619:56::-;;;;;;;;;;;;;;-1:-1:-1;;;3619:56:77;;;;:::o;6715:57::-;;;;;;;;;;;;;;-1:-1:-1;;;6715:57:77;;;;:::o;7463:55::-;;;;;;;;;;;;;;-1:-1:-1;;;7463:55:77;;;;:::o;5473:63::-;;;;;;;;;;;;;;-1:-1:-1;;;5473:63:77;;;;:::o;8011:50::-;;;;;;;;;;;;;;-1:-1:-1;;;8011:50:77;;;;:::o;7905:44::-;;;;;;;;;;;;;;-1:-1:-1;;;7905:44:77;;;;:::o;8425:45::-;;;;;;;;;;;;;;-1:-1:-1;;;8425:45:77;;;;:::o;2834:63::-;;;;;;;;;;;;;;-1:-1:-1;;;2834:63:77;;;;:::o;4739:57::-;;;;;;;;;;;;;;-1:-1:-1;;;4739:57:77;;;;:::o;2972:65::-;;;;;;;;;;;;;;-1:-1:-1;;;2972:65:77;;;;:::o;4286:60::-;;;;;;;;;;;;;;-1:-1:-1;;;4286:60:77;;;;:::o;7131:::-;;;;;;;;;;;;;;-1:-1:-1;;;7131:60:77;;;;:::o;1756:55::-;;;;;;;;;;;;;;-1:-1:-1;;;1756:55:77;;;;:::o;6131:74::-;;;;;;;;;;;;;;-1:-1:-1;;;6131:74:77;;;;:::o;7773:57::-;;;;;;;;;;;;;;-1:-1:-1;;;7773:57:77;;;;:::o;1022:49::-;;;;;;;;;;;;;;-1:-1:-1;;;1022:49:77;;;;:::o;937:46::-;;;;;;;;;;;;;;-1:-1:-1;;;937:46:77;;;;:::o;2513:57::-;;;;;;;;;;;;;;-1:-1:-1;;;2513:57:77;;;;:::o;8118:55::-;;;;;;;;;;;;;;-1:-1:-1;;;8118:55:77;;;;:::o;4518:57::-;;;;;;;;;;;;;;-1:-1:-1;;;4518:57:77;;;;:::o;2217:70::-;;;;;;;;;;;;;;-1:-1:-1;;;2217:70:77;;;;:::o;1341:65::-;;;;;;;;;;;;;;-1:-1:-1;;;1341:65:77;;;;:::o;697:51::-;;;;;;;;;;;;;;-1:-1:-1;;;697:51:77;;;;:::o;4078:69::-;;;;;;;;;;;;;;-1:-1:-1;;;4078:69:77;;;;:::o;8312:59::-;;;;;;;;;;;;;;-1:-1:-1;;;8312:59:77;;;;:::o;3487:75::-;;;;;;;;;;;;;;-1:-1:-1;;;3487:75:77;;;;:::o;7953:54::-;;;;;;;;;;;;;;-1:-1:-1;;;7953:54:77;;;;:::o;5085:74::-;;;;;;;;;;;;;;-1:-1:-1;;;5085:74:77;;;;:::o;7522:61::-;;;;;;;;;;;;;;-1:-1:-1;;;7522:61:77;;;;:::o;6257:68::-;;;;;;;;;;;;;;-1:-1:-1;;;6257:68:77;;;;:::o;8474:54::-;;;;;;;;;;;;;;-1:-1:-1;;;8474:54:77;;;;:::o;5692:60::-;;;;;;;;;;;;;;-1:-1:-1;;;5692:60:77;;;;:::o;7834:67::-;;;;;;;;;;;;;;-1:-1:-1;;;7834:67:77;;;;:::o;7707:42::-;;;;;;;;;;;;;;-1:-1:-1;;;7707:42:77;;;;:::o;5800:59::-;;;;;;;;;;;;;;-1:-1:-1;;;5800:59:77;;;;:::o;1114:46::-;;;;;;;;;;;;;;-1:-1:-1;;;1114:46:77;;;;:::o;8246:62::-;;;;;;;;;;;;;;-1:-1:-1;;;8246:62:77;;;;:::o;2687:70::-;;;;;;;;;;;;;;-1:-1:-1;;;2687:70:77;;;;:::o;4961:72::-;;;;;;;;;;;;;;-1:-1:-1;;;4961:72:77;;;;:::o;3243:55::-;;;;;;;;;;;;;;-1:-1:-1;;;3243:55:77;;;;:::o;791:57::-;;;;;;;;;;;;;;-1:-1:-1;;;791:57:77;;;;:::o;7317:61::-;;;;;;;;;;;;;;-1:-1:-1;;;7317:61:77;;;;:::o;6449:55::-;;;;;;;;;;;;;;-1:-1:-1;;;6449:55:77;;;;:::o;7646:57::-;;;;;;;;;;;;;;-1:-1:-1;;;7646:57:77;;;;:::o;4848:61::-;;;;;;;;;;;;;;-1:-1:-1;;;4848:61:77;;;;:::o;6925:56::-;;;;;;;;;;;;;;-1:-1:-1;;;6925:56:77;;;;:::o;1468:52::-;;;;;;;;;;;;;;-1:-1:-1;;;1468:52:77;;;;:::o;7587:55::-;;;;;;;;;;;;;;-1:-1:-1;;;7587:55:77;;;;:::o;5895:68::-;;;;;;;;;;;;;;-1:-1:-1;;;5895:68:77;;;;:::o;4633:60::-;;;;;;;;;;;;;;-1:-1:-1;;;4633:60:77;;;;:::o"
            },
            "methodIdentifiers": {
              "BORROW_ALLOWANCE_NOT_ENOUGH()": "e2c16d69",
              "CALLER_NOT_POOL_ADMIN()": "ac753236",
              "CT_CALLER_MUST_BE_LENDING_POOL()": "6ba4271f",
              "CT_CANNOT_GIVE_ALLOWANCE_TO_HIMSELF()": "06f355ad",
              "CT_INVALID_BURN_AMOUNT()": "2b9c57f6",
              "CT_INVALID_MINT_AMOUNT()": "1291a38b",
              "CT_TRANSFER_AMOUNT_NOT_GT_0()": "a2fbc8ad",
              "LPAPR_INVALID_ADDRESSES_PROVIDER_ID()": "333e8ea8",
              "LPAPR_PROVIDER_NOT_REGISTERED()": "d6f681b6",
              "LPCM_COLLATERAL_CANNOT_BE_LIQUIDATED()": "407374a4",
              "LPCM_HEALTH_FACTOR_NOT_BELOW_THRESHOLD()": "fb681def",
              "LPCM_NOT_ENOUGH_LIQUIDITY_TO_LIQUIDATE()": "cc5fc44c",
              "LPCM_NO_ERRORS()": "1ea7c604",
              "LPCM_SPECIFIED_CURRENCY_NOT_BORROWED_BY_USER()": "71a629da",
              "LPC_CALLER_NOT_EMERGENCY_ADMIN()": "d3e370ee",
              "LPC_INVALID_ADDRESSES_PROVIDER_ID()": "5a9786d4",
              "LPC_INVALID_ATOKEN_POOL_ADDRESS()": "f0473259",
              "LPC_INVALID_CONFIGURATION()": "47d25300",
              "LPC_INVALID_STABLE_DEBT_TOKEN_POOL_ADDRESS()": "e0d7dfd7",
              "LPC_INVALID_STABLE_DEBT_TOKEN_UNDERLYING_ADDRESS()": "41b40ba5",
              "LPC_INVALID_VARIABLE_DEBT_TOKEN_POOL_ADDRESS()": "c09e2618",
              "LPC_INVALID_VARIABLE_DEBT_TOKEN_UNDERLYING_ADDRESS()": "3872b0ad",
              "LPC_RESERVE_LIQUIDITY_NOT_0()": "65344799",
              "LP_CALLER_MUST_BE_AN_ATOKEN()": "eca85d3a",
              "LP_CALLER_NOT_LENDING_POOL_CONFIGURATOR()": "b36a2cf3",
              "LP_FAILED_COLLATERAL_SWAP()": "55bab12c",
              "LP_FAILED_REPAY_WITH_COLLATERAL()": "e6632748",
              "LP_INCONSISTENT_FLASHLOAN_PARAMS()": "2b34c349",
              "LP_INCONSISTENT_PARAMS_LENGTH()": "b72e40c7",
              "LP_INCONSISTENT_PROTOCOL_ACTUAL_BALANCE()": "0b8fd588",
              "LP_INTEREST_RATE_REBALANCE_CONDITIONS_NOT_MET()": "b89652cd",
              "LP_INVALID_EQUAL_ASSETS_TO_SWAP()": "c2d628df",
              "LP_INVALID_FLASHLOAN_MODE()": "e7bf91b3",
              "LP_INVALID_FLASH_LOAN_EXECUTOR_RETURN()": "d44e8e88",
              "LP_IS_PAUSED()": "d57bb964",
              "LP_LIQUIDATION_CALL_FAILED()": "4a529f91",
              "LP_NOT_CONTRACT()": "637a5a12",
              "LP_NOT_ENOUGH_LIQUIDITY_TO_BORROW()": "22a6f08e",
              "LP_NOT_ENOUGH_STABLE_BORROW_BALANCE()": "44dc4f70",
              "LP_NO_MORE_RESERVES_ALLOWED()": "76f19030",
              "LP_REENTRANCY_NOT_ALLOWED()": "f902735d",
              "LP_REQUESTED_AMOUNT_TOO_SMALL()": "390f34ba",
              "MATH_ADDITION_OVERFLOW()": "0f5ee482",
              "MATH_DIVISION_BY_ZERO()": "4349e3d8",
              "MATH_MULTIPLICATION_OVERFLOW()": "029d2344",
              "RC_INVALID_DECIMALS()": "3f5d6ec8",
              "RC_INVALID_LIQ_BONUS()": "5e869ff1",
              "RC_INVALID_LIQ_THRESHOLD()": "bd013f5b",
              "RC_INVALID_LTV()": "614cf6a1",
              "RC_INVALID_RESERVE_FACTOR()": "9be4f03a",
              "RL_LIQUIDITY_INDEX_OVERFLOW()": "4fe4f1ab",
              "RL_LIQUIDITY_RATE_OVERFLOW()": "f11c6720",
              "RL_RESERVE_ALREADY_INITIALIZED()": "fe75fd26",
              "RL_STABLE_BORROW_RATE_OVERFLOW()": "6d422aa1",
              "RL_VARIABLE_BORROW_INDEX_OVERFLOW()": "44942004",
              "RL_VARIABLE_BORROW_RATE_OVERFLOW()": "2ea347b0",
              "SDT_BURN_EXCEEDS_BALANCE()": "1befa78d",
              "SDT_STABLE_DEBT_OVERFLOW()": "cdad445a",
              "UL_INVALID_INDEX()": "02454ad3",
              "VL_AMOUNT_BIGGER_THAN_MAX_LOAN_SIZE_STABLE()": "3aa786a8",
              "VL_BORROWING_NOT_ENABLED()": "36565ab1",
              "VL_COLLATERAL_BALANCE_IS_0()": "708b8dd3",
              "VL_COLLATERAL_CANNOT_COVER_NEW_BORROW()": "2ace698a",
              "VL_COLLATERAL_SAME_AS_BORROWING_CURRENCY()": "a39ed4ff",
              "VL_CURRENT_AVAILABLE_LIQUIDITY_NOT_ENOUGH()": "179476c5",
              "VL_DEPOSIT_ALREADY_IN_USE()": "e29425dc",
              "VL_HEALTH_FACTOR_LOWER_THAN_LIQUIDATION_THRESHOLD()": "1ec68b1d",
              "VL_INCONSISTENT_FLASHLOAN_PARAMS()": "d7b079aa",
              "VL_INVALID_AMOUNT()": "871938a8",
              "VL_INVALID_INTEREST_RATE_MODE_SELECTED()": "3b5d25aa",
              "VL_NOT_ENOUGH_AVAILABLE_USER_BALANCE()": "a8440241",
              "VL_NO_ACTIVE_RESERVE()": "7865a627",
              "VL_NO_DEBT_OF_SELECTED_TYPE()": "91a9fb18",
              "VL_NO_EXPLICIT_AMOUNT_TO_REPAY_ON_BEHALF()": "daf23547",
              "VL_NO_STABLE_RATE_LOAN_IN_RESERVE()": "6422b257",
              "VL_NO_VARIABLE_RATE_LOAN_IN_RESERVE()": "6ab5e615",
              "VL_RESERVE_FROZEN()": "d7510e0c",
              "VL_STABLE_BORROWING_NOT_ENABLED()": "4927c63a",
              "VL_TRANSFER_NOT_ALLOWED()": "f3d9cc11",
              "VL_UNDERLYING_BALANCE_NOT_GREATER_THAN_0()": "35a9d21d"
            }
          }
        }
      },
      "contracts/protocol/libraries/helpers/Helpers.sol": {
        "Helpers": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220381605c4ccf19c827bf1d07283f4ce15e8050272c1bb1b7dd9340fb83357728664736f6c634300060c0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODESIZE AND SDIV 0xC4 0xCC CALL SWAP13 DUP3 PUSH28 0xF1D07283F4CE15E8050272C1BB1B7DD9340FB83357728664736F6C63 NUMBER STOP MOD 0xC STOP CALLER ",
              "sourceMap": "243:813:78:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220381605c4ccf19c827bf1d07283f4ce15e8050272c1bb1b7dd9340fb83357728664736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODESIZE AND SDIV 0xC4 0xCC CALL SWAP13 DUP3 PUSH28 0xF1D07283F4CE15E8050272C1BB1B7DD9340FB83357728664736F6C63 NUMBER STOP MOD 0xC STOP CALLER ",
              "sourceMap": "243:813:78:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "contracts/protocol/libraries/helpers/StaticATokenErrors.sol": {
        "StaticATokenErrors": {
          "abi": [
            {
              "inputs": [],
              "name": "INVALID_CLAIMER",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "INVALID_DEPOSITOR",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "INVALID_EXPIRATION",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "INVALID_OWNER",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "INVALID_RECIPIENT",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "INVALID_SIGNATURE",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "ONLY_ONE_AMOUNT_FORMAT_ALLOWED",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "61023a610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100875760003560e01c80639d2d2731116100655780639d2d273114610119578063a3402a3814610121578063c08a114614610129578063f74366121461013157610087565b806310325cb31461008c57806318ce148514610109578063521005a614610111575b600080fd5b610094610139565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100ce5781810151838201526020016100b6565b50505050905090810190601f1680156100fb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610094610156565b610094610173565b610094610190565b6100946101ad565b6100946101ca565b6100946101e7565b604051806040016040528060018152602001600d60fa1b81525081565b604051806040016040528060018152602001601b60f91b81525081565b604051806040016040528060018152602001603560f81b81525081565b604051806040016040528060018152602001603160f81b81525081565b604051806040016040528060018152602001603360f81b81525081565b604051806040016040528060018152602001601960f91b81525081565b604051806040016040528060018152602001603760f81b8152508156fea2646970667358221220cdaa0cbf8cb940f77c0681e4af20b54997d6ba80e3f7cffdf65423e52c2cf0ac64736f6c634300060c0033",
              "opcodes": "PUSH2 0x23A PUSH2 0x26 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x19 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x87 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9D2D2731 GT PUSH2 0x65 JUMPI DUP1 PUSH4 0x9D2D2731 EQ PUSH2 0x119 JUMPI DUP1 PUSH4 0xA3402A38 EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0xC08A1146 EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0xF7436612 EQ PUSH2 0x131 JUMPI PUSH2 0x87 JUMP JUMPDEST DUP1 PUSH4 0x10325CB3 EQ PUSH2 0x8C JUMPI DUP1 PUSH4 0x18CE1485 EQ PUSH2 0x109 JUMPI DUP1 PUSH4 0x521005A6 EQ PUSH2 0x111 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x94 PUSH2 0x139 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xB6 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xFB JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x94 PUSH2 0x156 JUMP JUMPDEST PUSH2 0x94 PUSH2 0x173 JUMP JUMPDEST PUSH2 0x94 PUSH2 0x190 JUMP JUMPDEST PUSH2 0x94 PUSH2 0x1AD JUMP JUMPDEST PUSH2 0x94 PUSH2 0x1CA JUMP JUMPDEST PUSH2 0x94 PUSH2 0x1E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xD PUSH1 0xFA SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1B PUSH1 0xF9 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x35 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x33 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x19 PUSH1 0xF9 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x37 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCD 0xAA 0xC 0xBF DUP13 0xB9 BLOCKHASH 0xF7 PUSH29 0x681E4AF20B54997D6BA80E3F7CFFDF65423E52C2CF0AC64736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "62:388:79:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600436106100875760003560e01c80639d2d2731116100655780639d2d273114610119578063a3402a3814610121578063c08a114614610129578063f74366121461013157610087565b806310325cb31461008c57806318ce148514610109578063521005a614610111575b600080fd5b610094610139565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100ce5781810151838201526020016100b6565b50505050905090810190601f1680156100fb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610094610156565b610094610173565b610094610190565b6100946101ad565b6100946101ca565b6100946101e7565b604051806040016040528060018152602001600d60fa1b81525081565b604051806040016040528060018152602001601b60f91b81525081565b604051806040016040528060018152602001603560f81b81525081565b604051806040016040528060018152602001603160f81b81525081565b604051806040016040528060018152602001603360f81b81525081565b604051806040016040528060018152602001601960f91b81525081565b604051806040016040528060018152602001603760f81b8152508156fea2646970667358221220cdaa0cbf8cb940f77c0681e4af20b54997d6ba80e3f7cffdf65423e52c2cf0ac64736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x87 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9D2D2731 GT PUSH2 0x65 JUMPI DUP1 PUSH4 0x9D2D2731 EQ PUSH2 0x119 JUMPI DUP1 PUSH4 0xA3402A38 EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0xC08A1146 EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0xF7436612 EQ PUSH2 0x131 JUMPI PUSH2 0x87 JUMP JUMPDEST DUP1 PUSH4 0x10325CB3 EQ PUSH2 0x8C JUMPI DUP1 PUSH4 0x18CE1485 EQ PUSH2 0x109 JUMPI DUP1 PUSH4 0x521005A6 EQ PUSH2 0x111 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x94 PUSH2 0x139 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xB6 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xFB JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x94 PUSH2 0x156 JUMP JUMPDEST PUSH2 0x94 PUSH2 0x173 JUMP JUMPDEST PUSH2 0x94 PUSH2 0x190 JUMP JUMPDEST PUSH2 0x94 PUSH2 0x1AD JUMP JUMPDEST PUSH2 0x94 PUSH2 0x1CA JUMP JUMPDEST PUSH2 0x94 PUSH2 0x1E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xD PUSH1 0xFA SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1B PUSH1 0xF9 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x35 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x33 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x19 PUSH1 0xF9 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x37 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCD 0xAA 0xC 0xBF DUP13 0xB9 BLOCKHASH 0xF7 PUSH29 0x681E4AF20B54997D6BA80E3F7CFFDF65423E52C2CF0AC64736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "62:388:79:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;240:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;340:44;;;:::i;290:46::-;;;:::i;93:42::-;;;:::i;190:46::-;;;:::i;139:47::-;;;:::i;388:59::-;;;:::i;240:46::-;;;;;;;;;;;;;;-1:-1:-1;;;240:46:79;;;;:::o;340:44::-;;;;;;;;;;;;;;-1:-1:-1;;;340:44:79;;;;:::o;290:46::-;;;;;;;;;;;;;;-1:-1:-1;;;290:46:79;;;;:::o;93:42::-;;;;;;;;;;;;;;-1:-1:-1;;;93:42:79;;;;:::o;190:46::-;;;;;;;;;;;;;;-1:-1:-1;;;190:46:79;;;;:::o;139:47::-;;;;;;;;;;;;;;-1:-1:-1;;;139:47:79;;;;:::o;388:59::-;;;;;;;;;;;;;;-1:-1:-1;;;388:59:79;;;;:::o"
            },
            "methodIdentifiers": {
              "INVALID_CLAIMER()": "18ce1485",
              "INVALID_DEPOSITOR()": "10325cb3",
              "INVALID_EXPIRATION()": "c08a1146",
              "INVALID_OWNER()": "9d2d2731",
              "INVALID_RECIPIENT()": "521005a6",
              "INVALID_SIGNATURE()": "a3402a38",
              "ONLY_ONE_AMOUNT_FORMAT_ALLOWED()": "f7436612"
            }
          }
        }
      },
      "contracts/protocol/libraries/logic/GenericLogic.sol": {
        "GenericLogic": {
          "abi": [
            {
              "inputs": [],
              "name": "HEALTH_FACTOR_LIQUIDATION_THRESHOLD",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "610e75610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100405760003560e01c8063c3525c2814610045578063e617042414610063575b600080fd5b61004d610083565b60405161005a9190610e36565b60405180910390f35b610076610071366004610c6f565b61008f565b60405161005a9190610d60565b670de0b6b3a764000081565b60006100a86100a336879003870187610cf7565b6102be565b15806100f057506001600160a01b0389166000908152602087905260409020600701546100ee90600160a01b900460ff166100e836889003880188610cf7565b906102e6565b155b156100fd575060016102b2565b610105610b69565b6001600160a01b038a16600090815260208890526040902061012690610348565b5084525060208301819052151590506101435760019150506102b2565b61015f8988610157368a90038a018a610cf7565b888888610373565b506080850152506060830181905260408301919091526101835760019150506102b2565b61021a8160000151600a0a6102148a866001600160a01b031663b3596f078f6040518263ffffffff1660e01b81526004016101be9190610d4c565b60206040518083038186803b1580156101d657600080fd5b505afa1580156101ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020e9190610d34565b90610834565b90610875565b60a08201819052604082015161022f916108b7565b60c082018190526102445760009150506102b2565b6102838160c0015161021461026a84602001518560a0015161083490919063ffffffff16565b6080850151604086015161027d91610834565b906108b7565b60e0820181905260c082015160608301516000926102a29291906108f9565b670de0b6b3a76400001115925050505b98975050505050505050565b517f555555555555555555555555555555555555555555555555555555555555555516151590565b60006080821060405180604001604052806002815260200161373760f01b8152509061032e5760405162461bcd60e51b81526004016103259190610d6b565b60405180910390fd5b5050815160016002830281019190911c1615155b92915050565b5461ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b6000806000806000610383610bbe565b61038c8a610925565b156103aa576000806000806000199550955095509550955050610826565b600060e08201525b878160e0015110156107855760e08101516103ce908b9061092a565b6103d757610775565b60e0810151600090815260208a81526040808320546001600160a01b03166101e085018190528352908d9052902061040e81610348565b506080860181905260c08601929092525060a0840191909152600a0a60208301526101e082015160405163b3596f0760e01b81526001600160a01b038a169163b3596f07916104609190600401610d4c565b60206040518083038186803b15801561047857600080fd5b505afa15801561048c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b09190610d34565b825260c0820151158015906104d0575060e08201516104d0908c906102e6565b156105ee578060040160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b81526004016105189190610d4c565b60206040518083038186803b15801561053057600080fd5b505afa158015610544573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105689190610d34565b6040830181905260208301518351600092610587929161021491610834565b61012084015190915061059a908261097b565b61012084015260a08301516105c0906105b4908390610834565b6101608501519061097b565b61016084015260c08301516105e6906105da908390610834565b6101808501519061097b565b610180840152505b60e08201516105fe908c906109a0565b15610773578060050160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b81526004016106469190610d4c565b60206040518083038186803b15801561065e57600080fd5b505afa158015610672573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106969190610d34565b8260600181815250506107408160060160009054906101000a90046001600160a01b03166001600160a01b03166370a082318f6040518263ffffffff1660e01b81526004016106e59190610d4c565b60206040518083038186803b1580156106fd57600080fd5b505afa158015610711573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107359190610d34565b60608401519061097b565b606083018190526020830151835161076c92610760929161021491610834565b6101408401519061097b565b6101408301525b505b60e08101805160010190526103b2565b6000816101200151116107995760006107ae565b6101208101516101608201516107ae91610875565b6101608201526101208101516107c55760006107da565b6101208101516101808201516107da91610875565b61018082018190526101208201516101408301516107f7926108f9565b610100820181905261012082015161014083015161016084015161018090940151919850965091945090925090505b965096509650965096915050565b60008261084357506000610342565b8282028284828161085057fe5b041461086e5760405162461bcd60e51b815260040161032590610df5565b9392505050565b600061086e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506109f1565b600061086e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610a28565b600082610909575060001961086e565b61091d836109178685610a54565b90610ac6565b949350505050565b511590565b60006080821060405180604001604052806002815260200161373760f01b815250906109695760405162461bcd60e51b81526004016103259190610d6b565b50509051600360029092021c16151590565b60008282018381101561086e5760405162461bcd60e51b815260040161032590610dbe565b60006080821060405180604001604052806002815260200161373760f01b815250906109df5760405162461bcd60e51b81526004016103259190610d6b565b50509051600160029092021c16151590565b60008183610a125760405162461bcd60e51b81526004016103259190610d6b565b506000838581610a1e57fe5b0495945050505050565b60008184841115610a4c5760405162461bcd60e51b81526004016103259190610d6b565b505050900390565b6000821580610a61575081155b15610a6e57506000610342565b816113881981610a7a57fe5b0483111560405180604001604052806002815260200161068760f31b81525090610ab75760405162461bcd60e51b81526004016103259190610d6b565b50506127109102611388010490565b604080518082019091526002815261035360f41b602082015260009082610b005760405162461bcd60e51b81526004016103259190610d6b565b5060408051808201909152600280825261068760f31b6020830152830490670de0b6b3a7640000821904851115610b4a5760405162461bcd60e51b81526004016103259190610d6b565b508281670de0b6b3a764000086020181610b6057fe5b04949350505050565b6040518061014001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b604051806102400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b031681526020016000151581526020016000151581525090565b80356001600160a01b038116811461034257600080fd5b600080600080600080600080888a03610100811215610c8c578485fd5b610c968b8b610c58565b9850610ca58b60208c01610c58565b975060408a0135965060608a013595506020607f1982011215610cc6578485fd5b5060808901935060a0890135925060c08901359150610ce88a60e08b01610c58565b90509295985092959890939650565b600060208284031215610d08578081fd5b6040516020810181811067ffffffffffffffff82111715610d27578283fd5b6040529135825250919050565b600060208284031215610d45578081fd5b5051919050565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b81811015610d9757858101830151858201604001528201610d7b565b81811115610da85783604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b9081526020019056fea264697066735822122001ae603f3ca0cde03a0527e7abdd48c02408fe3bac81c83fb19d3558847dea2764736f6c634300060c0033",
              "opcodes": "PUSH2 0xE75 PUSH2 0x26 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x19 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x40 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC3525C28 EQ PUSH2 0x45 JUMPI DUP1 PUSH4 0xE6170424 EQ PUSH2 0x63 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4D PUSH2 0x83 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5A SWAP2 SWAP1 PUSH2 0xE36 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x76 PUSH2 0x71 CALLDATASIZE PUSH1 0x4 PUSH2 0xC6F JUMP JUMPDEST PUSH2 0x8F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5A SWAP2 SWAP1 PUSH2 0xD60 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA8 PUSH2 0xA3 CALLDATASIZE DUP8 SWAP1 SUB DUP8 ADD DUP8 PUSH2 0xCF7 JUMP JUMPDEST PUSH2 0x2BE JUMP JUMPDEST ISZERO DUP1 PUSH2 0xF0 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP8 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x7 ADD SLOAD PUSH2 0xEE SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0xE8 CALLDATASIZE DUP9 SWAP1 SUB DUP9 ADD DUP9 PUSH2 0xCF7 JUMP JUMPDEST SWAP1 PUSH2 0x2E6 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0xFD JUMPI POP PUSH1 0x1 PUSH2 0x2B2 JUMP JUMPDEST PUSH2 0x105 PUSH2 0xB69 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP9 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x126 SWAP1 PUSH2 0x348 JUMP JUMPDEST POP DUP5 MSTORE POP PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE ISZERO ISZERO SWAP1 POP PUSH2 0x143 JUMPI PUSH1 0x1 SWAP2 POP POP PUSH2 0x2B2 JUMP JUMPDEST PUSH2 0x15F DUP10 DUP9 PUSH2 0x157 CALLDATASIZE DUP11 SWAP1 SUB DUP11 ADD DUP11 PUSH2 0xCF7 JUMP JUMPDEST DUP9 DUP9 DUP9 PUSH2 0x373 JUMP JUMPDEST POP PUSH1 0x80 DUP6 ADD MSTORE POP PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x183 JUMPI PUSH1 0x1 SWAP2 POP POP PUSH2 0x2B2 JUMP JUMPDEST PUSH2 0x21A DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0xA EXP PUSH2 0x214 DUP11 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB3596F07 DUP16 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1BE SWAP2 SWAP1 PUSH2 0xD4C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x20E SWAP2 SWAP1 PUSH2 0xD34 JUMP JUMPDEST SWAP1 PUSH2 0x834 JUMP JUMPDEST SWAP1 PUSH2 0x875 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x22F SWAP2 PUSH2 0x8B7 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x244 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x2B2 JUMP JUMPDEST PUSH2 0x283 DUP2 PUSH1 0xC0 ADD MLOAD PUSH2 0x214 PUSH2 0x26A DUP5 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0xA0 ADD MLOAD PUSH2 0x834 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x80 DUP6 ADD MLOAD PUSH1 0x40 DUP7 ADD MLOAD PUSH2 0x27D SWAP2 PUSH2 0x834 JUMP JUMPDEST SWAP1 PUSH2 0x8B7 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x0 SWAP3 PUSH2 0x2A2 SWAP3 SWAP2 SWAP1 PUSH2 0x8F9 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 GT ISZERO SWAP3 POP POP POP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST MLOAD PUSH32 0x5555555555555555555555555555555555555555555555555555555555555555 AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x32E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x325 SWAP2 SWAP1 PUSH2 0xD6B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP DUP2 MLOAD PUSH1 0x1 PUSH1 0x2 DUP4 MUL DUP2 ADD SWAP2 SWAP1 SWAP2 SHR AND ISZERO ISZERO JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST SLOAD PUSH2 0xFFFF DUP1 DUP3 AND SWAP3 PUSH1 0x10 DUP4 SWAP1 SHR DUP3 AND SWAP3 PUSH1 0x20 DUP2 SWAP1 SHR DUP4 AND SWAP3 PUSH1 0x30 DUP3 SWAP1 SHR PUSH1 0xFF AND SWAP3 PUSH1 0x40 SWAP3 SWAP1 SWAP3 SHR AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x383 PUSH2 0xBBE JUMP JUMPDEST PUSH2 0x38C DUP11 PUSH2 0x925 JUMP JUMPDEST ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 NOT SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP POP PUSH2 0x826 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 ADD MSTORE JUMPDEST DUP8 DUP2 PUSH1 0xE0 ADD MLOAD LT ISZERO PUSH2 0x785 JUMPI PUSH1 0xE0 DUP2 ADD MLOAD PUSH2 0x3CE SWAP1 DUP12 SWAP1 PUSH2 0x92A JUMP JUMPDEST PUSH2 0x3D7 JUMPI PUSH2 0x775 JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP11 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E0 DUP6 ADD DUP2 SWAP1 MSTORE DUP4 MSTORE SWAP1 DUP14 SWAP1 MSTORE SWAP1 KECCAK256 PUSH2 0x40E DUP2 PUSH2 0x348 JUMP JUMPDEST POP PUSH1 0x80 DUP7 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP7 ADD SWAP3 SWAP1 SWAP3 MSTORE POP PUSH1 0xA0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA EXP PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1E0 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xB3596F07 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP2 PUSH4 0xB3596F07 SWAP2 PUSH2 0x460 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0xD4C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x48C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4B0 SWAP2 SWAP1 PUSH2 0xD34 JUMP JUMPDEST DUP3 MSTORE PUSH1 0xC0 DUP3 ADD MLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0x4D0 JUMPI POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x4D0 SWAP1 DUP13 SWAP1 PUSH2 0x2E6 JUMP JUMPDEST ISZERO PUSH2 0x5EE JUMPI DUP1 PUSH1 0x4 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x518 SWAP2 SWAP1 PUSH2 0xD4C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x530 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x544 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x568 SWAP2 SWAP1 PUSH2 0xD34 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD MLOAD DUP4 MLOAD PUSH1 0x0 SWAP3 PUSH2 0x587 SWAP3 SWAP2 PUSH2 0x214 SWAP2 PUSH2 0x834 JUMP JUMPDEST PUSH2 0x120 DUP5 ADD MLOAD SWAP1 SWAP2 POP PUSH2 0x59A SWAP1 DUP3 PUSH2 0x97B JUMP JUMPDEST PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH2 0x5C0 SWAP1 PUSH2 0x5B4 SWAP1 DUP4 SWAP1 PUSH2 0x834 JUMP JUMPDEST PUSH2 0x160 DUP6 ADD MLOAD SWAP1 PUSH2 0x97B JUMP JUMPDEST PUSH2 0x160 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD MLOAD PUSH2 0x5E6 SWAP1 PUSH2 0x5DA SWAP1 DUP4 SWAP1 PUSH2 0x834 JUMP JUMPDEST PUSH2 0x180 DUP6 ADD MLOAD SWAP1 PUSH2 0x97B JUMP JUMPDEST PUSH2 0x180 DUP5 ADD MSTORE POP JUMPDEST PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x5FE SWAP1 DUP13 SWAP1 PUSH2 0x9A0 JUMP JUMPDEST ISZERO PUSH2 0x773 JUMPI DUP1 PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x646 SWAP2 SWAP1 PUSH2 0xD4C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x65E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x672 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x696 SWAP2 SWAP1 PUSH2 0xD34 JUMP JUMPDEST DUP3 PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x740 DUP2 PUSH1 0x6 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP16 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6E5 SWAP2 SWAP1 PUSH2 0xD4C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x711 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x735 SWAP2 SWAP1 PUSH2 0xD34 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MLOAD SWAP1 PUSH2 0x97B JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD MLOAD DUP4 MLOAD PUSH2 0x76C SWAP3 PUSH2 0x760 SWAP3 SWAP2 PUSH2 0x214 SWAP2 PUSH2 0x834 JUMP JUMPDEST PUSH2 0x140 DUP5 ADD MLOAD SWAP1 PUSH2 0x97B JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE JUMPDEST POP JUMPDEST PUSH1 0xE0 DUP2 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE PUSH2 0x3B2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x120 ADD MLOAD GT PUSH2 0x799 JUMPI PUSH1 0x0 PUSH2 0x7AE JUMP JUMPDEST PUSH2 0x120 DUP2 ADD MLOAD PUSH2 0x160 DUP3 ADD MLOAD PUSH2 0x7AE SWAP2 PUSH2 0x875 JUMP JUMPDEST PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0x120 DUP2 ADD MLOAD PUSH2 0x7C5 JUMPI PUSH1 0x0 PUSH2 0x7DA JUMP JUMPDEST PUSH2 0x120 DUP2 ADD MLOAD PUSH2 0x180 DUP3 ADD MLOAD PUSH2 0x7DA SWAP2 PUSH2 0x875 JUMP JUMPDEST PUSH2 0x180 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD MLOAD PUSH2 0x140 DUP4 ADD MLOAD PUSH2 0x7F7 SWAP3 PUSH2 0x8F9 JUMP JUMPDEST PUSH2 0x100 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD MLOAD PUSH2 0x140 DUP4 ADD MLOAD PUSH2 0x160 DUP5 ADD MLOAD PUSH2 0x180 SWAP1 SWAP5 ADD MLOAD SWAP2 SWAP9 POP SWAP7 POP SWAP2 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x843 JUMPI POP PUSH1 0x0 PUSH2 0x342 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x850 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x86E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x325 SWAP1 PUSH2 0xDF5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x86E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x9F1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x86E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0xA28 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x909 JUMPI POP PUSH1 0x0 NOT PUSH2 0x86E JUMP JUMPDEST PUSH2 0x91D DUP4 PUSH2 0x917 DUP7 DUP6 PUSH2 0xA54 JUMP JUMPDEST SWAP1 PUSH2 0xAC6 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST MLOAD ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x969 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x325 SWAP2 SWAP1 PUSH2 0xD6B JUMP JUMPDEST POP POP SWAP1 MLOAD PUSH1 0x3 PUSH1 0x2 SWAP1 SWAP3 MUL SHR AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x86E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x325 SWAP1 PUSH2 0xDBE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x9DF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x325 SWAP2 SWAP1 PUSH2 0xD6B JUMP JUMPDEST POP POP SWAP1 MLOAD PUSH1 0x1 PUSH1 0x2 SWAP1 SWAP3 MUL SHR AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0xA12 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x325 SWAP2 SWAP1 PUSH2 0xD6B JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0xA1E JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xA4C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x325 SWAP2 SWAP1 PUSH2 0xD6B JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0xA61 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0xA6E JUMPI POP PUSH1 0x0 PUSH2 0x342 JUMP JUMPDEST DUP2 PUSH2 0x1388 NOT DUP2 PUSH2 0xA7A JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xAB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x325 SWAP2 SWAP1 PUSH2 0xD6B JUMP JUMPDEST POP POP PUSH2 0x2710 SWAP2 MUL PUSH2 0x1388 ADD DIV SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0xB00 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x325 SWAP2 SWAP1 PUSH2 0xD6B JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH8 0xDE0B6B3A7640000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0xB4A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x325 SWAP2 SWAP1 PUSH2 0xD6B JUMP JUMPDEST POP DUP3 DUP2 PUSH8 0xDE0B6B3A7640000 DUP7 MUL ADD DUP2 PUSH2 0xB60 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x140 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x240 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x342 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP9 DUP11 SUB PUSH2 0x100 DUP2 SLT ISZERO PUSH2 0xC8C JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0xC96 DUP12 DUP12 PUSH2 0xC58 JUMP JUMPDEST SWAP9 POP PUSH2 0xCA5 DUP12 PUSH1 0x20 DUP13 ADD PUSH2 0xC58 JUMP JUMPDEST SWAP8 POP PUSH1 0x40 DUP11 ADD CALLDATALOAD SWAP7 POP PUSH1 0x60 DUP11 ADD CALLDATALOAD SWAP6 POP PUSH1 0x20 PUSH1 0x7F NOT DUP3 ADD SLT ISZERO PUSH2 0xCC6 JUMPI DUP5 DUP6 REVERT JUMPDEST POP PUSH1 0x80 DUP10 ADD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH2 0xCE8 DUP11 PUSH1 0xE0 DUP12 ADD PUSH2 0xC58 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD08 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xD27 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 CALLDATALOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD45 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD97 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xD7B JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xDA8 JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADD 0xAE PUSH1 0x3F EXTCODECOPY LOG0 0xCD 0xE0 GASPRICE SDIV 0x27 0xE7 0xAB 0xDD 0x48 0xC0 0x24 ADDMOD INVALID EXTCODESIZE 0xAC DUP2 0xC8 EXTCODEHASH 0xB1 SWAP14 CALLDATALOAD PC DUP5 PUSH30 0xEA2764736F6C634300060C00330000000000000000000000000000000000 ",
              "sourceMap": "846:8662:80:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600436106100405760003560e01c8063c3525c2814610045578063e617042414610063575b600080fd5b61004d610083565b60405161005a9190610e36565b60405180910390f35b610076610071366004610c6f565b61008f565b60405161005a9190610d60565b670de0b6b3a764000081565b60006100a86100a336879003870187610cf7565b6102be565b15806100f057506001600160a01b0389166000908152602087905260409020600701546100ee90600160a01b900460ff166100e836889003880188610cf7565b906102e6565b155b156100fd575060016102b2565b610105610b69565b6001600160a01b038a16600090815260208890526040902061012690610348565b5084525060208301819052151590506101435760019150506102b2565b61015f8988610157368a90038a018a610cf7565b888888610373565b506080850152506060830181905260408301919091526101835760019150506102b2565b61021a8160000151600a0a6102148a866001600160a01b031663b3596f078f6040518263ffffffff1660e01b81526004016101be9190610d4c565b60206040518083038186803b1580156101d657600080fd5b505afa1580156101ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020e9190610d34565b90610834565b90610875565b60a08201819052604082015161022f916108b7565b60c082018190526102445760009150506102b2565b6102838160c0015161021461026a84602001518560a0015161083490919063ffffffff16565b6080850151604086015161027d91610834565b906108b7565b60e0820181905260c082015160608301516000926102a29291906108f9565b670de0b6b3a76400001115925050505b98975050505050505050565b517f555555555555555555555555555555555555555555555555555555555555555516151590565b60006080821060405180604001604052806002815260200161373760f01b8152509061032e5760405162461bcd60e51b81526004016103259190610d6b565b60405180910390fd5b5050815160016002830281019190911c1615155b92915050565b5461ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b6000806000806000610383610bbe565b61038c8a610925565b156103aa576000806000806000199550955095509550955050610826565b600060e08201525b878160e0015110156107855760e08101516103ce908b9061092a565b6103d757610775565b60e0810151600090815260208a81526040808320546001600160a01b03166101e085018190528352908d9052902061040e81610348565b506080860181905260c08601929092525060a0840191909152600a0a60208301526101e082015160405163b3596f0760e01b81526001600160a01b038a169163b3596f07916104609190600401610d4c565b60206040518083038186803b15801561047857600080fd5b505afa15801561048c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b09190610d34565b825260c0820151158015906104d0575060e08201516104d0908c906102e6565b156105ee578060040160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b81526004016105189190610d4c565b60206040518083038186803b15801561053057600080fd5b505afa158015610544573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105689190610d34565b6040830181905260208301518351600092610587929161021491610834565b61012084015190915061059a908261097b565b61012084015260a08301516105c0906105b4908390610834565b6101608501519061097b565b61016084015260c08301516105e6906105da908390610834565b6101808501519061097b565b610180840152505b60e08201516105fe908c906109a0565b15610773578060050160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b81526004016106469190610d4c565b60206040518083038186803b15801561065e57600080fd5b505afa158015610672573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106969190610d34565b8260600181815250506107408160060160009054906101000a90046001600160a01b03166001600160a01b03166370a082318f6040518263ffffffff1660e01b81526004016106e59190610d4c565b60206040518083038186803b1580156106fd57600080fd5b505afa158015610711573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107359190610d34565b60608401519061097b565b606083018190526020830151835161076c92610760929161021491610834565b6101408401519061097b565b6101408301525b505b60e08101805160010190526103b2565b6000816101200151116107995760006107ae565b6101208101516101608201516107ae91610875565b6101608201526101208101516107c55760006107da565b6101208101516101808201516107da91610875565b61018082018190526101208201516101408301516107f7926108f9565b610100820181905261012082015161014083015161016084015161018090940151919850965091945090925090505b965096509650965096915050565b60008261084357506000610342565b8282028284828161085057fe5b041461086e5760405162461bcd60e51b815260040161032590610df5565b9392505050565b600061086e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506109f1565b600061086e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610a28565b600082610909575060001961086e565b61091d836109178685610a54565b90610ac6565b949350505050565b511590565b60006080821060405180604001604052806002815260200161373760f01b815250906109695760405162461bcd60e51b81526004016103259190610d6b565b50509051600360029092021c16151590565b60008282018381101561086e5760405162461bcd60e51b815260040161032590610dbe565b60006080821060405180604001604052806002815260200161373760f01b815250906109df5760405162461bcd60e51b81526004016103259190610d6b565b50509051600160029092021c16151590565b60008183610a125760405162461bcd60e51b81526004016103259190610d6b565b506000838581610a1e57fe5b0495945050505050565b60008184841115610a4c5760405162461bcd60e51b81526004016103259190610d6b565b505050900390565b6000821580610a61575081155b15610a6e57506000610342565b816113881981610a7a57fe5b0483111560405180604001604052806002815260200161068760f31b81525090610ab75760405162461bcd60e51b81526004016103259190610d6b565b50506127109102611388010490565b604080518082019091526002815261035360f41b602082015260009082610b005760405162461bcd60e51b81526004016103259190610d6b565b5060408051808201909152600280825261068760f31b6020830152830490670de0b6b3a7640000821904851115610b4a5760405162461bcd60e51b81526004016103259190610d6b565b508281670de0b6b3a764000086020181610b6057fe5b04949350505050565b6040518061014001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b604051806102400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b031681526020016000151581526020016000151581525090565b80356001600160a01b038116811461034257600080fd5b600080600080600080600080888a03610100811215610c8c578485fd5b610c968b8b610c58565b9850610ca58b60208c01610c58565b975060408a0135965060608a013595506020607f1982011215610cc6578485fd5b5060808901935060a0890135925060c08901359150610ce88a60e08b01610c58565b90509295985092959890939650565b600060208284031215610d08578081fd5b6040516020810181811067ffffffffffffffff82111715610d27578283fd5b6040529135825250919050565b600060208284031215610d45578081fd5b5051919050565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b81811015610d9757858101830151858201604001528201610d7b565b81811115610da85783604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b9081526020019056fea264697066735822122001ae603f3ca0cde03a0527e7abdd48c02408fe3bac81c83fb19d3558847dea2764736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x40 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC3525C28 EQ PUSH2 0x45 JUMPI DUP1 PUSH4 0xE6170424 EQ PUSH2 0x63 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4D PUSH2 0x83 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5A SWAP2 SWAP1 PUSH2 0xE36 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x76 PUSH2 0x71 CALLDATASIZE PUSH1 0x4 PUSH2 0xC6F JUMP JUMPDEST PUSH2 0x8F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5A SWAP2 SWAP1 PUSH2 0xD60 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA8 PUSH2 0xA3 CALLDATASIZE DUP8 SWAP1 SUB DUP8 ADD DUP8 PUSH2 0xCF7 JUMP JUMPDEST PUSH2 0x2BE JUMP JUMPDEST ISZERO DUP1 PUSH2 0xF0 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP8 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x7 ADD SLOAD PUSH2 0xEE SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0xE8 CALLDATASIZE DUP9 SWAP1 SUB DUP9 ADD DUP9 PUSH2 0xCF7 JUMP JUMPDEST SWAP1 PUSH2 0x2E6 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0xFD JUMPI POP PUSH1 0x1 PUSH2 0x2B2 JUMP JUMPDEST PUSH2 0x105 PUSH2 0xB69 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP9 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x126 SWAP1 PUSH2 0x348 JUMP JUMPDEST POP DUP5 MSTORE POP PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE ISZERO ISZERO SWAP1 POP PUSH2 0x143 JUMPI PUSH1 0x1 SWAP2 POP POP PUSH2 0x2B2 JUMP JUMPDEST PUSH2 0x15F DUP10 DUP9 PUSH2 0x157 CALLDATASIZE DUP11 SWAP1 SUB DUP11 ADD DUP11 PUSH2 0xCF7 JUMP JUMPDEST DUP9 DUP9 DUP9 PUSH2 0x373 JUMP JUMPDEST POP PUSH1 0x80 DUP6 ADD MSTORE POP PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x183 JUMPI PUSH1 0x1 SWAP2 POP POP PUSH2 0x2B2 JUMP JUMPDEST PUSH2 0x21A DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0xA EXP PUSH2 0x214 DUP11 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB3596F07 DUP16 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1BE SWAP2 SWAP1 PUSH2 0xD4C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x20E SWAP2 SWAP1 PUSH2 0xD34 JUMP JUMPDEST SWAP1 PUSH2 0x834 JUMP JUMPDEST SWAP1 PUSH2 0x875 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x22F SWAP2 PUSH2 0x8B7 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x244 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x2B2 JUMP JUMPDEST PUSH2 0x283 DUP2 PUSH1 0xC0 ADD MLOAD PUSH2 0x214 PUSH2 0x26A DUP5 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0xA0 ADD MLOAD PUSH2 0x834 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x80 DUP6 ADD MLOAD PUSH1 0x40 DUP7 ADD MLOAD PUSH2 0x27D SWAP2 PUSH2 0x834 JUMP JUMPDEST SWAP1 PUSH2 0x8B7 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x0 SWAP3 PUSH2 0x2A2 SWAP3 SWAP2 SWAP1 PUSH2 0x8F9 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 GT ISZERO SWAP3 POP POP POP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST MLOAD PUSH32 0x5555555555555555555555555555555555555555555555555555555555555555 AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x32E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x325 SWAP2 SWAP1 PUSH2 0xD6B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP DUP2 MLOAD PUSH1 0x1 PUSH1 0x2 DUP4 MUL DUP2 ADD SWAP2 SWAP1 SWAP2 SHR AND ISZERO ISZERO JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST SLOAD PUSH2 0xFFFF DUP1 DUP3 AND SWAP3 PUSH1 0x10 DUP4 SWAP1 SHR DUP3 AND SWAP3 PUSH1 0x20 DUP2 SWAP1 SHR DUP4 AND SWAP3 PUSH1 0x30 DUP3 SWAP1 SHR PUSH1 0xFF AND SWAP3 PUSH1 0x40 SWAP3 SWAP1 SWAP3 SHR AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x383 PUSH2 0xBBE JUMP JUMPDEST PUSH2 0x38C DUP11 PUSH2 0x925 JUMP JUMPDEST ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 NOT SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP POP PUSH2 0x826 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 ADD MSTORE JUMPDEST DUP8 DUP2 PUSH1 0xE0 ADD MLOAD LT ISZERO PUSH2 0x785 JUMPI PUSH1 0xE0 DUP2 ADD MLOAD PUSH2 0x3CE SWAP1 DUP12 SWAP1 PUSH2 0x92A JUMP JUMPDEST PUSH2 0x3D7 JUMPI PUSH2 0x775 JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP11 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E0 DUP6 ADD DUP2 SWAP1 MSTORE DUP4 MSTORE SWAP1 DUP14 SWAP1 MSTORE SWAP1 KECCAK256 PUSH2 0x40E DUP2 PUSH2 0x348 JUMP JUMPDEST POP PUSH1 0x80 DUP7 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP7 ADD SWAP3 SWAP1 SWAP3 MSTORE POP PUSH1 0xA0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA EXP PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1E0 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xB3596F07 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP2 PUSH4 0xB3596F07 SWAP2 PUSH2 0x460 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0xD4C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x48C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4B0 SWAP2 SWAP1 PUSH2 0xD34 JUMP JUMPDEST DUP3 MSTORE PUSH1 0xC0 DUP3 ADD MLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0x4D0 JUMPI POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x4D0 SWAP1 DUP13 SWAP1 PUSH2 0x2E6 JUMP JUMPDEST ISZERO PUSH2 0x5EE JUMPI DUP1 PUSH1 0x4 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x518 SWAP2 SWAP1 PUSH2 0xD4C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x530 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x544 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x568 SWAP2 SWAP1 PUSH2 0xD34 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD MLOAD DUP4 MLOAD PUSH1 0x0 SWAP3 PUSH2 0x587 SWAP3 SWAP2 PUSH2 0x214 SWAP2 PUSH2 0x834 JUMP JUMPDEST PUSH2 0x120 DUP5 ADD MLOAD SWAP1 SWAP2 POP PUSH2 0x59A SWAP1 DUP3 PUSH2 0x97B JUMP JUMPDEST PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH2 0x5C0 SWAP1 PUSH2 0x5B4 SWAP1 DUP4 SWAP1 PUSH2 0x834 JUMP JUMPDEST PUSH2 0x160 DUP6 ADD MLOAD SWAP1 PUSH2 0x97B JUMP JUMPDEST PUSH2 0x160 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD MLOAD PUSH2 0x5E6 SWAP1 PUSH2 0x5DA SWAP1 DUP4 SWAP1 PUSH2 0x834 JUMP JUMPDEST PUSH2 0x180 DUP6 ADD MLOAD SWAP1 PUSH2 0x97B JUMP JUMPDEST PUSH2 0x180 DUP5 ADD MSTORE POP JUMPDEST PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x5FE SWAP1 DUP13 SWAP1 PUSH2 0x9A0 JUMP JUMPDEST ISZERO PUSH2 0x773 JUMPI DUP1 PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x646 SWAP2 SWAP1 PUSH2 0xD4C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x65E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x672 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x696 SWAP2 SWAP1 PUSH2 0xD34 JUMP JUMPDEST DUP3 PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x740 DUP2 PUSH1 0x6 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP16 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6E5 SWAP2 SWAP1 PUSH2 0xD4C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x711 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x735 SWAP2 SWAP1 PUSH2 0xD34 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MLOAD SWAP1 PUSH2 0x97B JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD MLOAD DUP4 MLOAD PUSH2 0x76C SWAP3 PUSH2 0x760 SWAP3 SWAP2 PUSH2 0x214 SWAP2 PUSH2 0x834 JUMP JUMPDEST PUSH2 0x140 DUP5 ADD MLOAD SWAP1 PUSH2 0x97B JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE JUMPDEST POP JUMPDEST PUSH1 0xE0 DUP2 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE PUSH2 0x3B2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x120 ADD MLOAD GT PUSH2 0x799 JUMPI PUSH1 0x0 PUSH2 0x7AE JUMP JUMPDEST PUSH2 0x120 DUP2 ADD MLOAD PUSH2 0x160 DUP3 ADD MLOAD PUSH2 0x7AE SWAP2 PUSH2 0x875 JUMP JUMPDEST PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0x120 DUP2 ADD MLOAD PUSH2 0x7C5 JUMPI PUSH1 0x0 PUSH2 0x7DA JUMP JUMPDEST PUSH2 0x120 DUP2 ADD MLOAD PUSH2 0x180 DUP3 ADD MLOAD PUSH2 0x7DA SWAP2 PUSH2 0x875 JUMP JUMPDEST PUSH2 0x180 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD MLOAD PUSH2 0x140 DUP4 ADD MLOAD PUSH2 0x7F7 SWAP3 PUSH2 0x8F9 JUMP JUMPDEST PUSH2 0x100 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD MLOAD PUSH2 0x140 DUP4 ADD MLOAD PUSH2 0x160 DUP5 ADD MLOAD PUSH2 0x180 SWAP1 SWAP5 ADD MLOAD SWAP2 SWAP9 POP SWAP7 POP SWAP2 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x843 JUMPI POP PUSH1 0x0 PUSH2 0x342 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x850 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x86E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x325 SWAP1 PUSH2 0xDF5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x86E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x9F1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x86E DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0xA28 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x909 JUMPI POP PUSH1 0x0 NOT PUSH2 0x86E JUMP JUMPDEST PUSH2 0x91D DUP4 PUSH2 0x917 DUP7 DUP6 PUSH2 0xA54 JUMP JUMPDEST SWAP1 PUSH2 0xAC6 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST MLOAD ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x969 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x325 SWAP2 SWAP1 PUSH2 0xD6B JUMP JUMPDEST POP POP SWAP1 MLOAD PUSH1 0x3 PUSH1 0x2 SWAP1 SWAP3 MUL SHR AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x86E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x325 SWAP1 PUSH2 0xDBE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x9DF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x325 SWAP2 SWAP1 PUSH2 0xD6B JUMP JUMPDEST POP POP SWAP1 MLOAD PUSH1 0x1 PUSH1 0x2 SWAP1 SWAP3 MUL SHR AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0xA12 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x325 SWAP2 SWAP1 PUSH2 0xD6B JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0xA1E JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xA4C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x325 SWAP2 SWAP1 PUSH2 0xD6B JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0xA61 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0xA6E JUMPI POP PUSH1 0x0 PUSH2 0x342 JUMP JUMPDEST DUP2 PUSH2 0x1388 NOT DUP2 PUSH2 0xA7A JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xAB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x325 SWAP2 SWAP1 PUSH2 0xD6B JUMP JUMPDEST POP POP PUSH2 0x2710 SWAP2 MUL PUSH2 0x1388 ADD DIV SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0xB00 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x325 SWAP2 SWAP1 PUSH2 0xD6B JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH8 0xDE0B6B3A7640000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0xB4A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x325 SWAP2 SWAP1 PUSH2 0xD6B JUMP JUMPDEST POP DUP3 DUP2 PUSH8 0xDE0B6B3A7640000 DUP7 MUL ADD DUP2 PUSH2 0xB60 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x140 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x240 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x342 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP9 DUP11 SUB PUSH2 0x100 DUP2 SLT ISZERO PUSH2 0xC8C JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0xC96 DUP12 DUP12 PUSH2 0xC58 JUMP JUMPDEST SWAP9 POP PUSH2 0xCA5 DUP12 PUSH1 0x20 DUP13 ADD PUSH2 0xC58 JUMP JUMPDEST SWAP8 POP PUSH1 0x40 DUP11 ADD CALLDATALOAD SWAP7 POP PUSH1 0x60 DUP11 ADD CALLDATALOAD SWAP6 POP PUSH1 0x20 PUSH1 0x7F NOT DUP3 ADD SLT ISZERO PUSH2 0xCC6 JUMPI DUP5 DUP6 REVERT JUMPDEST POP PUSH1 0x80 DUP10 ADD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH2 0xCE8 DUP11 PUSH1 0xE0 DUP12 ADD PUSH2 0xC58 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD08 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xD27 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 CALLDATALOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD45 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD97 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xD7B JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xDA8 JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADD 0xAE PUSH1 0x3F EXTCODECOPY LOG0 0xCD 0xE0 GASPRICE SDIV 0x27 0xE7 0xAB 0xDD 0x48 0xC0 0x24 ADDMOD INVALID EXTCODESIZE 0xAC DUP2 0xC8 EXTCODEHASH 0xB1 SWAP14 CALLDATALOAD PC DUP5 PUSH30 0xEA2764736F6C634300060C00330000000000000000000000000000000000 ",
              "sourceMap": "846:8662:80:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1148:69;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2234:1889;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1148:69::-;1210:7;1148:69;:::o;2234:1889::-;2571:4;2588:27;:25;;;;;;;:10;:25;:::i;:::-;;:27::i;:::-;2587:28;:87;;;-1:-1:-1;;;;;;2651:19:80;;;;;;;;;;;;;:22;;;2620:54;;-1:-1:-1;;;2651:22:80;;;;2620:30;;;;;;;;;:::i;:::-;;;:54::i;:::-;2619:55;2587:87;2583:119;;;-1:-1:-1;2691:4:80;2684:11;;2583:119;2708:43;;:::i;:::-;-1:-1:-1;;;;;2809:19:80;;;;;;;;;;;;;:59;;:57;:59::i;:::-;-1:-1:-1;2758:110:80;;-1:-1:-1;2761:25:80;;;2758:110;;;2879:30;2875:62;;-1:-1:-1;2875:62:80;;2926:4;2919:11;;;;;2875:62;3058:89;3083:4;3089:12;3058:89;;;;;;;3103:10;3058:89;:::i;:::-;3115:8;3125:13;3140:6;3058:24;:89::i;:::-;-1:-1:-1;3019:28:80;;;2943:204;-1:-1:-1;2984:19:80;;;2943:204;;;2951:25;;;2943:204;;;;3154:56;;3199:4;3192:11;;;;;3154:56;3245:94;3320:4;:13;;;3316:2;:17;3245:59;3297:6;3264;-1:-1:-1;;;;;3245:40:80;;3286:5;3245:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:51;;:59::i;:::-;:63;;:94::i;:::-;3216:26;;;:123;;;3384:25;;;;:57;;:29;:57::i;:::-;3346:35;;;:95;;;3504:73;;3565:5;3558:12;;;;;3504:73;3624:191;3779:4;:35;;;3624:143;3709:57;3740:4;:25;;;3709:4;:26;;;:30;;:57;;;;:::i;:::-;3668:28;;;;3624:32;;;;:73;;:43;:73::i;:::-;:84;;:143::i;:191::-;3583:38;;;:232;;;3907:35;;;;3952:19;;;;3822:33;;3864:163;;3907:35;3952:19;3864:33;:163::i;:::-;1210:7;-1:-1:-1;4041:77:80;;-1:-1:-1;;;2234:1889:80;;;;;;;;;;;:::o;3570:146:76:-;3680:9;368:66;3680:26;:31;;;3570:146::o;3100:260::-;3230:4;3267:3;3252:12;:18;3272:23;;;;;;;;;;;;;-1:-1:-1;;;3272:23:76;;;3244:52;;;;;-1:-1:-1;;;3244:52:76;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;3310:9:76;;3343:1;3339;3324:16;;:20;;3310:35;;;;3309:41;:46;;3100:260;;;;;:::o;10085:606:75:-;10296:9;10339;10327:21;;;;1692:2;10356:85;;;;;;1754:2;10449:77;;;;;;1815:2;10534:67;;;;;;2113:2;10609:71;;;;;;10085:606::o;5296:2773:80:-;5613:7;5628;5643;5658;5673;5695:40;;:::i;:::-;5746:20;:10;:18;:20::i;:::-;5742:73;;;5784:1;5787;5790;5793;-1:-1:-1;;5776:32:80;;;;;;;;;;;;;5742:73;5834:1;5825:6;;;:10;5820:1681;5846:13;5837:4;:6;;;:22;5820:1681;;;5926:6;;;;5884:49;;:10;;:41;:49::i;:::-;5879:83;;5945:8;;5879:83;6008:6;;;;5999:16;;;;;;;;;;;;;-1:-1:-1;;;;;5999:16:80;5970:26;;;:45;;;6070:40;;;;;;;;6178:58;6070:40;6178:56;:58::i;:::-;-1:-1:-1;6159:13:80;;;6119:117;;;6130:25;;;6119:117;;;;-1:-1:-1;6120:8:80;;;6119:117;;;;6262:2;:17;-1:-1:-1;6245:14:80;;:34;6352:26;;;;6311:68;;-1:-1:-1;;;6311:68:80;;-1:-1:-1;;;;;6311:40:80;;;;;:68;;6352:26;6311:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6287:92;;6392:25;;;;:30;;;;:72;;-1:-1:-1;6457:6:80;;;;6426:38;;:10;;:30;:38::i;:::-;6388:621;;;6517:14;:28;;;;;;;;;;-1:-1:-1;;;;;6517:28:80;-1:-1:-1;;;;;6510:46:80;;6557:4;6510:52;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6476:31;;;:86;;;6676:14;;;;6613:21;;6573:27;;6613:78;;6676:14;6613:58;;:25;:58::i;:78::-;6730:25;;;;6573:118;;-1:-1:-1;6730:50:80;;6573:118;6730:29;:50::i;:::-;6702:25;;;:78;6845:8;;;;6805:50;;6821:33;;:19;;:23;:33::i;:::-;6805:11;;;;;:15;:50::i;:::-;6791:11;;;:64;6964:25;;;;6896:104;;6940:50;;:19;;:23;:50::i;:::-;6896:28;;;;;:32;:104::i;:::-;6865:28;;;:135;-1:-1:-1;6388:621:80;7044:6;;;;7021:30;;:10;;:22;:30::i;:::-;7017:478;;;7101:14;:37;;;;;;;;;;-1:-1:-1;;;;;7101:37:80;-1:-1:-1;;;;;7094:55:80;;7161:4;7094:81;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7063:4;:28;;:112;;;;;7216:117;7267:14;:39;;;;;;;;;;-1:-1:-1;;;;;7267:39:80;-1:-1:-1;;;;;7260:57:80;;7318:4;7260:63;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7216:28;;;;;:32;:117::i;:::-;7185:28;;;:148;;;7461:14;;;;7401:21;;7366:120;;7401:75;;7461:14;7401:55;;:25;:55::i;:75::-;7366:19;;;;;:23;:120::i;:::-;7344:19;;;:142;7017:478;5820:1681;;5861:6;;;:8;;;;;;5820:1681;;;7549:1;7521:4;:25;;;:29;:78;;7598:1;7521:78;;;7569:25;;;;7553:11;;;;:42;;:15;:42::i;:::-;7507:11;;;:92;7636:25;;;;:107;;7742:1;7636:107;;;7707:25;;;;7674:28;;;;:59;;:32;:59::i;:::-;7605:28;;;:138;;;7811:25;;;;7844:19;;;;7770:135;;:33;:135::i;:::-;7750:17;;;:155;;;7926:25;;;;7959:19;;;;7986:11;;;;8005:28;;;;;7926:25;;-1:-1:-1;7959:19:80;-1:-1:-1;7986:11:80;;-1:-1:-1;8005:28:80;;-1:-1:-1;7750:155:80;-1:-1:-1;5296:2773:80;;;;;;;;;;;;;:::o;2058:419:13:-;2116:7;2341:6;2337:35;;-1:-1:-1;2364:1:13;2357:8;;2337:35;2390:5;;;2394:1;2390;:5;:1;2409:5;;;;;:10;2401:56;;;;-1:-1:-1;;;2401:56:13;;;;;;;:::i;:::-;2471:1;2058:419;-1:-1:-1;;;2058:419:13:o;2908:124::-;2966:7;2988:39;2992:1;2995;2988:39;;;;;;;;;;;;;;;;;:3;:39::i;1257:128::-;1315:7;1337:43;1341:1;1344;1337:43;;;;;;;;;;;;;;;;;:3;:43::i;8399:321:80:-;8565:7;8584:19;8580:43;;-1:-1:-1;;;8605:18:80;;8580:43;8637:78;8700:14;8638:53;:20;8670;8638:31;:53::i;:::-;8637:62;;:78::i;:::-;8630:85;8399:321;-1:-1:-1;;;;8399:321:80:o;3921:122:76:-;4024:9;:14;;3921:122::o;2013:265::-;2154:4;2189:3;2174:12;:18;2194:23;;;;;;;;;;;;;-1:-1:-1;;;2194:23:76;;;2166:52;;;;;-1:-1:-1;;;2166:52:76;;;;;;;;:::i;:::-;-1:-1:-1;;2232:9:76;;2267:1;2261;2246:16;;;2232:31;2231:37;:42;;;2013:265::o;851:162:13:-;909:7;936:5;;;955:6;;;;947:46;;;;-1:-1:-1;;;947:46:13;;;;;;;:::i;2565:248:76:-;2687:4;2724:3;2709:12;:18;2729:23;;;;;;;;;;;;;-1:-1:-1;;;2729:23:76;;;2701:52;;;;;-1:-1:-1;;;2701:52:76;;;;;;;;:::i;:::-;-1:-1:-1;;2767:9:76;;2802:1;2796;2781:16;;;2767:31;2766:37;:42;;;2565:248::o;3483:332:13:-;3585:7;3677:12;3670:5;3662:28;;;;-1:-1:-1;;;3662:28:13;;;;;;;;:::i;:::-;;3696:9;3712:1;3708;:5;;;;;;;3483:332;-1:-1:-1;;;;;3483:332:13:o;1649:189::-;1751:7;1782:12;1774:6;;;;1766:29;;;;-1:-1:-1;;;1766:29:13;;;;;;;;:::i;:::-;-1:-1:-1;;;1813:5:13;;;1649:189::o;802:351:84:-;880:7;899:10;;;:29;;-1:-1:-1;913:15:84;;899:29;895:58;;;-1:-1:-1;945:1:84;938:8;;895:58;1020:10;-1:-1:-1;;1020:10:84;983:47;;;;;974:5;:56;;1038:35;;;;;;;;;;;;;-1:-1:-1;;;1038:35:84;;;959:120;;;;;-1:-1:-1;;;959:120:84;;;;;;;;:::i;:::-;-1:-1:-1;;466:3:84;1094:18;;536:21;1094:33;1093:55;;802:351::o;1571:279:86:-;1663:28;;;;;;;;;;;;-1:-1:-1;;;1663:28:86;;;;1632:7;;1655:6;1647:45;;;;-1:-1:-1;;;1647:45:86;;;;;;;;:::i;:::-;-1:-1:-1;1774:35:86;;;;;;;;;1718:1;1774:35;;;-1:-1:-1;;;1774:35:86;;;;1714:5;;;344:4;1740:25;;1739:33;1734:38;;;1726:84;;;;-1:-1:-1;;;1726:84:86;;;;;;;;:::i;:::-;;1844:1;1835:5;344:4;1825:1;:7;:15;1824:21;;;;;;;1571:279;-1:-1:-1;;;;1571:279:86:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;72:20;;-1:-1;;;;;7778:54;;8364:35;;8354:2;;8413:1;;8403:12;1461:1357;;;;;;;;;1790:9;1781:7;1777:23;1802:3;1777:23;1773:33;1770:2;;;-1:-1;;1809:12;1770:2;1871:53;1916:7;1892:22;1871:53;:::i;:::-;1861:63;;1979:53;2024:7;1961:2;2004:9;2000:22;1979:53;:::i;:::-;1969:63;-1:-1;2069:2;2108:22;;1250:20;;-1:-1;2177:2;2268:22;;261:20;;-1:-1;1961:2;-1:-1;;723:16;;719:25;716:2;;;-1:-1;;747:12;716:2;;2337:3;2422:9;2418:22;2346:104;;2487:3;2556:9;2552:22;475:20;2496:88;;2621:3;2665:9;2661:22;1250:20;2630:63;;2749:53;2794:7;2730:3;2774:9;2770:22;2749:53;:::i;:::-;2739:63;;1764:1054;;;;;;;;;;;:::o;2825:319::-;;2968:2;2956:9;2947:7;2943:23;2939:32;2936:2;;;-1:-1;;2974:12;2936:2;6789;6783:9;2968:2;6819:6;6815:17;6926:6;6914:10;6911:22;6890:18;6878:10;6875:34;6872:62;6869:2;;;-1:-1;;6937:12;6869:2;6789;6956:22;1250:20;;1080:75;;-1:-1;1087:16;2930:214;-1:-1;2930:214::o;3151:263::-;;3266:2;3254:9;3245:7;3241:23;3237:32;3234:2;;;-1:-1;;3272:12;3234:2;-1:-1;1398:13;;3228:186;-1:-1;3228:186::o;4857:222::-;-1:-1;;;;;7778:54;;;;3492:37;;4984:2;4969:18;;4955:124::o;5086:226::-;7455:13;;7448:21;3614:34;;5215:2;5200:18;;5186:126::o;5319:310::-;;5466:2;;5487:17;5480:47;3805:5;7078:12;7235:6;5466:2;5455:9;5451:18;7223:19;-1:-1;7996:101;8010:6;8007:1;8004:13;7996:101;;;8077:11;;;;;8071:18;8058:11;;;7263:14;8058:11;8051:39;8025:10;;7996:101;;;8112:6;8109:1;8106:13;8103:2;;;-1:-1;7263:14;8168:6;5455:9;8159:16;;8152:27;8103:2;-1:-1;8284:7;8268:14;-1:-1;;8264:28;3963:39;;;;7263:14;3963:39;;5437:192;-1:-1;;;5437:192::o;5636:416::-;5836:2;5850:47;;;4239:2;5821:18;;;7223:19;4275:29;7263:14;;;4255:50;4324:12;;;5807:245::o;6059:416::-;6259:2;6273:47;;;4575:2;6244:18;;;7223:19;4611:34;7263:14;;;4591:55;-1:-1;;;4666:12;;;4659:25;4703:12;;;6230:245::o;6482:238::-;4808:37;;;6617:2;6602:18;;6588:132::o"
            },
            "methodIdentifiers": {
              "HEALTH_FACTOR_LIQUIDATION_THRESHOLD()": "c3525c28",
              "balanceDecreaseAllowed(address,address,uint256,mapping(address => DataTypes.ReserveData) storage,DataTypes.UserConfigurationMap,mapping(uint256 => address) storage,uint256,address)": "e6170424"
            }
          }
        }
      },
      "contracts/protocol/libraries/logic/ReserveLogic.sol": {
        "ReserveLogic": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "liquidityRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "stableBorrowRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "variableBorrowRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "liquidityIndex",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "variableBorrowIndex",
                  "type": "uint256"
                }
              ],
              "name": "ReserveDataUpdated",
              "type": "event"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "61023b610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c80632b33897c1461003a575b600080fd5b81801561004657600080fd5b5061008b600480360360a081101561005d57600080fd5b508035906001600160a01b03602082013581169160408101358216916060820135811691608001351661008d565b005b6004850154604080518082019091526002815261199960f11b6020820152906001600160a01b03161561013e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156101035781810151838201526020016100eb565b50505050905090810190601f1680156101305780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506101476101f5565b6001860180546fffffffffffffffffffffffffffffffff19166001600160801b039290921691909117905561017a6101f5565b6001860180546001600160801b03928316600160801b0292169190911790556004850180546001600160a01b039586166001600160a01b031991821617909155600586018054948616948216949094179093556006850180549285169284169290921790915560079093018054939092169216919091179055565b6b033b2e3c9fd0803ce80000009056fea2646970667358221220ba58612c4be0f3e6011104f6333d1433351db881ce358a78f6b09cd5c07e444464736f6c634300060c0033",
              "opcodes": "PUSH2 0x23B PUSH2 0x26 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x19 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x35 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2B33897C EQ PUSH2 0x3A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x40 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x60 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x80 ADD CALLDATALOAD AND PUSH2 0x8D JUMP JUMPDEST STOP JUMPDEST PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1999 PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x13E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x103 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xEB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x130 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x147 PUSH2 0x1F5 JUMP JUMPDEST PUSH1 0x1 DUP7 ADD DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x17A PUSH2 0x1F5 JUMP JUMPDEST PUSH1 0x1 DUP7 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 DUP4 AND PUSH1 0x1 PUSH1 0x80 SHL MUL SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x4 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x5 DUP7 ADD DUP1 SLOAD SWAP5 DUP7 AND SWAP5 DUP3 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 SSTORE PUSH1 0x6 DUP6 ADD DUP1 SLOAD SWAP3 DUP6 AND SWAP3 DUP5 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x7 SWAP1 SWAP4 ADD DUP1 SLOAD SWAP4 SWAP1 SWAP3 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBA PC PUSH2 0x2C4B 0xE0 RETURN 0xE6 ADD GT DIV 0xF6 CALLER RETURNDATASIZE EQ CALLER CALLDATALOAD SAR 0xB8 DUP2 0xCE CALLDATALOAD DUP11 PUSH25 0xF6B09CD5C07E444464736F6C634300060C0033000000000000 ",
              "sourceMap": "1074:12766:81:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c80632b33897c1461003a575b600080fd5b81801561004657600080fd5b5061008b600480360360a081101561005d57600080fd5b508035906001600160a01b03602082013581169160408101358216916060820135811691608001351661008d565b005b6004850154604080518082019091526002815261199960f11b6020820152906001600160a01b03161561013e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156101035781810151838201526020016100eb565b50505050905090810190601f1680156101305780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506101476101f5565b6001860180546fffffffffffffffffffffffffffffffff19166001600160801b039290921691909117905561017a6101f5565b6001860180546001600160801b03928316600160801b0292169190911790556004850180546001600160a01b039586166001600160a01b031991821617909155600586018054948616948216949094179093556006850180549285169284169290921790915560079093018054939092169216919091179055565b6b033b2e3c9fd0803ce80000009056fea2646970667358221220ba58612c4be0f3e6011104f6333d1433351db881ce358a78f6b09cd5c07e444464736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x35 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2B33897C EQ PUSH2 0x3A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x40 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x60 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x80 ADD CALLDATALOAD AND PUSH2 0x8D JUMP JUMPDEST STOP JUMPDEST PUSH1 0x4 DUP6 ADD SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1999 PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x13E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x103 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xEB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x130 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x147 PUSH2 0x1F5 JUMP JUMPDEST PUSH1 0x1 DUP7 ADD DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x17A PUSH2 0x1F5 JUMP JUMPDEST PUSH1 0x1 DUP7 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 DUP4 AND PUSH1 0x1 PUSH1 0x80 SHL MUL SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x4 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x5 DUP7 ADD DUP1 SLOAD SWAP5 DUP7 AND SWAP5 DUP3 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 SSTORE PUSH1 0x6 DUP6 ADD DUP1 SLOAD SWAP3 DUP6 AND SWAP3 DUP5 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x7 SWAP1 SWAP4 ADD DUP1 SLOAD SWAP4 SWAP1 SWAP3 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBA PC PUSH2 0x2C4B 0xE0 RETURN 0xE6 ADD GT DIV 0xF6 CALLER RETURNDATASIZE EQ CALLER CALLDATALOAD SAR 0xB8 DUP2 0xCE CALLDATALOAD DUP11 PUSH25 0xF6B09CD5C07E444464736F6C634300060C0033000000000000 ",
              "sourceMap": "1074:12766:81:-:0;;;;;;;;;;;;;;;;;;;;;;;;5880:664;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5880:664:81;;;-1:-1:-1;;;;;5880:664:81;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;6106:21;;;;6143:37;;;;;;;;;;;;-1:-1:-1;;;6143:37:81;;;;;-1:-1:-1;;;;;6106:21:81;:35;6098:83;;;;-1:-1:-1;;;6098:83:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6221:16;:14;:16::i;:::-;6188:22;;;:50;;-1:-1:-1;;6188:50:81;-1:-1:-1;;;;;6188:50:81;;;;;;;;;;6282:16;:14;:16::i;:::-;6244:27;;;:55;;-1:-1:-1;;;;;6244:55:81;;;-1:-1:-1;;;6244:55:81;;;;;;;;;6305:21;;;:37;;-1:-1:-1;;;;;6305:37:81;;;-1:-1:-1;;;;;;6305:37:81;;;;;;;6348:30;;;:55;;;;;;;;;;;;;;;6409:32;;;:59;;;;;;;;;;;;;;;6474:35;;;;:65;;;;;;;;;;;;;;5880:664::o;578:68:86:-;432:4;578:68;:::o"
            },
            "methodIdentifiers": {
              "init(DataTypes.ReserveData storage,address,address,address,address)": "2b33897c"
            }
          }
        }
      },
      "contracts/protocol/libraries/logic/ValidationLogic.sol": {
        "ValidationLogic": {
          "abi": [
            {
              "inputs": [],
              "name": "REBALANCE_UP_LIQUIDITY_RATE_THRESHOLD",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "REBALANCE_UP_USAGE_RATIO_THRESHOLD",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {
                "contracts/protocol/libraries/logic/GenericLogic.sol": {
                  "GenericLogic": [
                    {
                      "length": 20,
                      "start": 1565
                    },
                    {
                      "length": 20,
                      "start": 3887
                    }
                  ]
                }
              },
              "object": "61204e610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061009d5760003560e01c8063721a92f911610070578063721a92f9146100fb578063a8695b1d1461010e578063abfcc86a14610121578063d09db04a14610129578063fa0c21491461013c5761009d565b80630eca322b146100a2578063548cad09146100b75780635494eb8a146100ca5780635fa297e5146100e8575b600080fd5b6100b56100b0366004611e2e565b61014f565b005b6100b56100c5366004611d86565b610217565b6100d261050d565b6040516100df9190611fe9565b60405180910390f35b6100b56100f6366004611d1c565b61051d565b6100b5610109366004611bea565b6106c2565b6100b561011c366004611ded565b610b8a565b6100d2610e23565b6100b5610137366004611c8e565b610e29565b6100b561014a366004611e4f565b610fc7565b60008061015b8461110d565b50506040805180820190915260018152603160f81b60208201529193509150836101a15760405162461bcd60e51b81526004016101989190611f1e565b60405180910390fd5b506040805180820190915260018152601960f91b6020820152826101d85760405162461bcd60e51b81526004016101989190611f1e565b506040805180820190915260018152603360f81b602082015281156102105760405162461bcd60e51b81526004016101989190611f1e565b5050505050565b60006102228661110d565b505050905080604051806040016040528060018152602001601960f91b815250906102605760405162461bcd60e51b81526004016101989190611f1e565b506000610356610351856001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102a257600080fd5b505afa1580156102b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102da9190611ead565b876001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561031357600080fd5b505afa158015610327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034b9190611ead565b90611145565b611173565b905060006103d9876001600160a01b03166370a08231866040518263ffffffff1660e01b81526004016103899190611ec5565b60206040518083038186803b1580156103a157600080fd5b505afa1580156103b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103519190611ead565b9050600082156103fc576103f76103f08385611145565b84906111c3565b6103ff565b60005b60028a015460078b0154604080516380031e3760e01b815290519394506fffffffffffffffffffffffffffffffff909216926000926001600160a01b03909216916380031e37916004808301926020929190829003018186803b15801561046557600080fd5b505afa158015610479573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049d9190611ead565b90506b0311d253316c79d37600000083101580156104c657506104c281610fa061126e565b8211155b60405180604001604052806002815260200161191960f11b815250906104ff5760405162461bcd60e51b81526004016101989190611f1e565b505050505050505050505050565b6b0311d253316c79d37600000081565b6004808901546040516370a0823160e01b81526000926001600160a01b03909216916370a082319161055191339101611ec5565b60206040518083038186803b15801561056957600080fd5b505afa15801561057d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a19190611ead565b90506000811160405180604001604052806002815260200161313960f01b815250906105e05760405162461bcd60e51b81526004016101989190611f1e565b50868061067d5750604051633985c10960e21b815273__$52a8a86ab43135662ff256bbc95497e8e3$__9063e61704249061062d908b90339086908c908c908c908c908c90600401611ed9565b60206040518083038186803b15801561064557600080fd5b505af4158015610659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067d9190611d00565b60405180604001604052806002815260200161032360f41b815250906106b65760405162461bcd60e51b81526004016101989190611f1e565b50505050505050505050565b6106ca611aee565b6106d38c61110d565b151561014085015215156101208401521515610100830152151560e082018190526040805180820190915260018152601960f91b60208201529061072a5760405162461bcd60e51b81526004016101989190611f1e565b5080610100015115604051806040016040528060018152602001603360f81b8152509061076a5760405162461bcd60e51b81526004016101989190611f1e565b506040805180820190915260018152603160f81b60208201528a6107a15760405162461bcd60e51b81526004016101989190611f1e565b50806101200151604051806040016040528060018152602001603760f81b815250906107e05760405162461bcd60e51b81526004016101989190611f1e565b5087600214806107f05750876001145b604051806040016040528060018152602001600760fb1b815250906108285760405162461bcd60e51b81526004016101989190611f1e565b50604080516020810190915285548152610848908c9088908787876112e0565b60c08601526020808601919091529084526080840191909152606083018290526040805180820190915260018152603960f81b91810191909152906108a05760405162461bcd60e51b81526004016101989190611f1e565b50670de0b6b3a76400008160c001511160405180604001604052806002815260200161031360f41b815250906108e95760405162461bcd60e51b81526004016101989190611f1e565b50805160808201516109069190610900908c611145565b906117a7565b6040808301829052606083015181518083019092526002825261313160f01b60208301529091111561094b5760405162461bcd60e51b81526004016101989190611f1e565b506001881415610b7b5780610140015160405180604001604052806002815260200161189960f11b815250906109945760405162461bcd60e51b81526004016101989190611f1e565b5060078c01546040805160208101909152865481526109bc91600160a01b900460ff16611835565b15806109ce57506109cc8c61188d565b155b80610a5857506004808d01546040516370a0823160e01b81526001600160a01b03909116916370a0823191610a05918f9101611ec5565b60206040518083038186803b158015610a1d57600080fd5b505afa158015610a31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a559190611ead565b8a115b60405180604001604052806002815260200161313360f01b81525090610a915760405162461bcd60e51b81526004016101989190611f1e565b508c6001600160a01b03166370a082318d60040160009054906101000a90046001600160a01b03166040518263ffffffff1660e01b8152600401610ad59190611ec5565b60206040518083038186803b158015610aed57600080fd5b505afa158015610b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b259190611ead565b60a08201819052600090610b39908961126e565b9050808b1115604051806040016040528060028152602001610c4d60f21b81525090610b785760405162461bcd60e51b81526004016101989190611f1e565b50505b50505050505050505050505050565b60008080610b978861110d565b9350509250925082604051806040016040528060018152602001601960f91b81525090610bd75760405162461bcd60e51b81526004016101989190611f1e565b506040805180820190915260018152603360f81b60208201528215610c0f5760405162461bcd60e51b81526004016101989190611f1e565b506001846002811115610c1e57fe5b1415610c6157604080518082019091526002815261313760f01b602082015286610c5b5760405162461bcd60e51b81526004016101989190611f1e565b50610e19565b6002846002811115610c6f57fe5b1415610dea57604080518082019091526002815261062760f31b602082015285610cac5760405162461bcd60e51b81526004016101989190611f1e565b50604080518082019091526002815261189960f11b602082015281610ce45760405162461bcd60e51b81526004016101989190611f1e565b506007880154604080516020810190915288548152610d0c91600160a01b900460ff16611835565b1580610d1e5750610d1c8861188d565b155b80610db157506004808901546040516370a0823160e01b81526001600160a01b03909116916370a0823191610d5591339101611ec5565b60206040518083038186803b158015610d6d57600080fd5b505afa158015610d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da59190611ead565b610daf8787611145565b115b60405180604001604052806002815260200161313360f01b81525090610c5b5760405162461bcd60e51b81526004016101989190611f1e565b60408051808201825260018152600760fb1b6020820152905162461bcd60e51b81526101989190600401611f1e565b5050505050505050565b610fa081565b6040805180820190915260018152603160f81b602082015287610e5f5760405162461bcd60e51b81526004016101989190611f1e565b506040805180820190915260018152603560f81b602082015286881115610e995760405162461bcd60e51b81526004016101989190611f1e565b506001600160a01b0388166000908152602086905260408120610ebb9061110d565b505050905080604051806040016040528060018152602001601960f91b81525090610ef95760405162461bcd60e51b81526004016101989190611f1e565b50604051633985c10960e21b815273__$52a8a86ab43135662ff256bbc95497e8e3$__9063e617042490610f3f908c9033908d908c908c908c908c908c90600401611ed9565b60206040518083038186803b158015610f5757600080fd5b505af4158015610f6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8f9190611d00565b604051806040016040528060018152602001601b60f91b815250906106b65760405162461bcd60e51b81526004016101989190611f1e565b6000610fd287611895565b905080604051806040016040528060018152602001601960f91b8152509061100d5760405162461bcd60e51b81526004016101989190611f1e565b506040805180820190915260018152603160f81b6020820152866110445760405162461bcd60e51b81526004016101989190611f1e565b506000831180156110605750600185600281111561105e57fe5b145b8061108157506000821180156110815750600285600281111561107f57fe5b145b60405180604001604052806002815260200161313560f01b815250906110ba5760405162461bcd60e51b81526004016101989190611f1e565b50600019861415806110d45750336001600160a01b038516145b60405180604001604052806002815260200161189b60f11b81525090610e195760405162461bcd60e51b81526004016101989190611f1e565b54600160381b811615159167020000000000000082161515916704000000000000008116151591670800000000000000909116151590565b60008282018381101561116a5760405162461bcd60e51b815260040161019890611f71565b90505b92915050565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b815250906111bc5760405162461bcd60e51b81526004016101989190611f1e565b5092915050565b604080518082019091526002815261035360f41b6020820152600090826111fd5760405162461bcd60e51b81526004016101989190611f1e565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce800000082190485111561124b5760405162461bcd60e51b81526004016101989190611f1e565b5082816b033b2e3c9fd0803ce80000008602018161126557fe5b04949350505050565b600082158061127b575081155b156112885750600061116d565b81611388198161129457fe5b0483111560405180604001604052806002815260200161068760f31b815250906112d15760405162461bcd60e51b81526004016101989190611f1e565b50506127109102611388010490565b60008060008060006112f0611b50565b6112f98a6118a1565b15611317576000806000806000199550955095509550955050611799565b600060e08201525b878160e0015110156116f85760e081015161133b908b906118a6565b611344576116e8565b60e0810151600090815260208a81526040808320546001600160a01b03166101e085018190528352908d9052902061137b816118f7565b506080860181905260c08601929092525060a0840191909152600a0a60208301526101e082015160405163b3596f0760e01b81526001600160a01b038a169163b3596f07916113cd9190600401611ec5565b60206040518083038186803b1580156113e557600080fd5b505afa1580156113f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141d9190611ead565b825260c08201511580159061143d575060e082015161143d908c90611835565b15611561578060040160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b81526004016114859190611ec5565b60206040518083038186803b15801561149d57600080fd5b505afa1580156114b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d59190611ead565b60408301819052602083015183516000926114fa92916114f491611922565b9061195c565b61012084015190915061150d9082611145565b61012084015260a083015161153390611527908390611922565b61016085015190611145565b61016084015260c08301516115599061154d908390611922565b61018085015190611145565b610180840152505b60e0820151611571908c9061199e565b156116e6578060050160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b81526004016115b99190611ec5565b60206040518083038186803b1580156115d157600080fd5b505afa1580156115e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116099190611ead565b8260600181815250506116b38160060160009054906101000a90046001600160a01b03166001600160a01b03166370a082318f6040518263ffffffff1660e01b81526004016116589190611ec5565b60206040518083038186803b15801561167057600080fd5b505afa158015611684573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a89190611ead565b606084015190611145565b60608301819052602083015183516116df926116d392916114f491611922565b61014084015190611145565b6101408301525b505b60e081018051600101905261131f565b60008161012001511161170c576000611721565b6101208101516101608201516117219161195c565b61016082015261012081015161173857600061174d565b61012081015161018082015161174d9161195c565b610180820181905261012082015161014083015161176a926119ef565b610100820181905261012082015161014083015161016084015161018090940151919850965091945090925090505b965096509650965096915050565b604080518082019091526002815261035360f41b6020820152600090826117e15760405162461bcd60e51b81526004016101989190611f1e565b5060408051808201909152600280825261068760f31b60208301528304906127108219048511156118255760405162461bcd60e51b81526004016101989190611f1e565b5082816127108602018161126557fe5b60006080821060405180604001604052806002815260200161373760f01b815250906118745760405162461bcd60e51b81526004016101989190611f1e565b5050815160016002830281019190911c16151592915050565b5461ffff1690565b54600160381b16151590565b511590565b60006080821060405180604001604052806002815260200161373760f01b815250906118e55760405162461bcd60e51b81526004016101989190611f1e565b50509051600360029092021c16151590565b5461ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b6000826119315750600061116d565b8282028284828161193e57fe5b041461116a5760405162461bcd60e51b815260040161019890611fa8565b600061116a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a1d565b60006080821060405180604001604052806002815260200161373760f01b815250906119dd5760405162461bcd60e51b81526004016101989190611f1e565b50509051600160029092021c16151590565b6000826119ff5750600019611a16565b611a1383611a0d868561126e565b90611a54565b90505b9392505050565b60008183611a3e5760405162461bcd60e51b81526004016101989190611f1e565b506000838581611a4a57fe5b0495945050505050565b604080518082019091526002815261035360f41b602082015260009082611a8e5760405162461bcd60e51b81526004016101989190611f1e565b5060408051808201909152600280825261068760f31b6020830152830490670de0b6b3a7640000821904851115611ad85760405162461bcd60e51b81526004016101989190611f1e565b508281670de0b6b3a76400008602018161126557fe5b604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581526020016000151581526020016000151581525090565b604051806102400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b031681526020016000151581526020016000151581525090565b6000806000806000806000806000806000806101808d8f031215611c0c578788fd5b8c35611c1781611ff2565b9b5060208d01359a5060408d0135611c2e81611ff2565b995060608d0135985060808d0135975060a08d0135965060c08d0135955060e08d013594506101008d013593506101208d013592506101408d013591506101608d0135611c7a81611ff2565b809150509295989b509295989b509295989b565b600080600080600080600080610100898b031215611caa578384fd5b8835611cb581611ff2565b97506020890135965060408901359550606089013594506080890135935060a0890135925060c0890135915060e0890135611cef81611ff2565b809150509295985092959890939650565b600060208284031215611d11578081fd5b815161116a8161200a565b600080600080600080600080610100898b031215611d38578384fd5b883597506020890135611d4a81611ff2565b96506040890135611d5a8161200a565b9550606089013594506080890135935060a0890135925060c0890135915060e0890135611cef81611ff2565b600080600080600060a08688031215611d9d578081fd5b853594506020860135611daf81611ff2565b93506040860135611dbf81611ff2565b92506060860135611dcf81611ff2565b91506080860135611ddf81611ff2565b809150509295509295909350565b600080600080600060a08688031215611e04578081fd5b85359450602086013593506040860135925060608601359150608086013560038110611ddf578182fd5b60008060408385031215611e40578182fd5b50508035926020909101359150565b60008060008060008060c08789031215611e67578384fd5b8635955060208701359450604087013560038110611e83578485fd5b93506060870135611e9381611ff2565b9598949750929560808101359460a0909101359350915050565b600060208284031215611ebe578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b0398891681529688166020880152604087019590955260608601939093529054608085015260a084015260c083015290911660e08201526101000190565b6000602080835283518082850152825b81811015611f4a57858101830151858201604001528201611f2e565b81811115611f5b5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b90815260200190565b6001600160a01b038116811461200757600080fd5b50565b801515811461200757600080fdfea26469706673582212203c30599c8a5482e0a636a2b1954d448b4d81c30bab8a0ee73706546607d7f01d64736f6c634300060c0033",
              "opcodes": "PUSH2 0x204E PUSH2 0x26 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x19 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x9D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x721A92F9 GT PUSH2 0x70 JUMPI DUP1 PUSH4 0x721A92F9 EQ PUSH2 0xFB JUMPI DUP1 PUSH4 0xA8695B1D EQ PUSH2 0x10E JUMPI DUP1 PUSH4 0xABFCC86A EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0xD09DB04A EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0xFA0C2149 EQ PUSH2 0x13C JUMPI PUSH2 0x9D JUMP JUMPDEST DUP1 PUSH4 0xECA322B EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0x548CAD09 EQ PUSH2 0xB7 JUMPI DUP1 PUSH4 0x5494EB8A EQ PUSH2 0xCA JUMPI DUP1 PUSH4 0x5FA297E5 EQ PUSH2 0xE8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB5 PUSH2 0xB0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E2E JUMP JUMPDEST PUSH2 0x14F JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB5 PUSH2 0xC5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D86 JUMP JUMPDEST PUSH2 0x217 JUMP JUMPDEST PUSH2 0xD2 PUSH2 0x50D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDF SWAP2 SWAP1 PUSH2 0x1FE9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB5 PUSH2 0xF6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D1C JUMP JUMPDEST PUSH2 0x51D JUMP JUMPDEST PUSH2 0xB5 PUSH2 0x109 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BEA JUMP JUMPDEST PUSH2 0x6C2 JUMP JUMPDEST PUSH2 0xB5 PUSH2 0x11C CALLDATASIZE PUSH1 0x4 PUSH2 0x1DED JUMP JUMPDEST PUSH2 0xB8A JUMP JUMPDEST PUSH2 0xD2 PUSH2 0xE23 JUMP JUMPDEST PUSH2 0xB5 PUSH2 0x137 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C8E JUMP JUMPDEST PUSH2 0xE29 JUMP JUMPDEST PUSH2 0xB5 PUSH2 0x14A CALLDATASIZE PUSH1 0x4 PUSH2 0x1E4F JUMP JUMPDEST PUSH2 0xFC7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x15B DUP5 PUSH2 0x110D JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 SWAP4 POP SWAP2 POP DUP4 PUSH2 0x1A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x19 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH2 0x1D8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x33 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP2 ISZERO PUSH2 0x210 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x222 DUP7 PUSH2 0x110D JUMP JUMPDEST POP POP POP SWAP1 POP DUP1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x19 PUSH1 0xF9 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x260 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x356 PUSH2 0x351 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2DA SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x313 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x327 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x34B SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST SWAP1 PUSH2 0x1145 JUMP JUMPDEST PUSH2 0x1173 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3D9 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x389 SWAP2 SWAP1 PUSH2 0x1EC5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x351 SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 ISZERO PUSH2 0x3FC JUMPI PUSH2 0x3F7 PUSH2 0x3F0 DUP4 DUP6 PUSH2 0x1145 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x11C3 JUMP JUMPDEST PUSH2 0x3FF JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x2 DUP11 ADD SLOAD PUSH1 0x7 DUP12 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x80031E37 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP4 SWAP5 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x80031E37 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x465 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x479 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x49D SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST SWAP1 POP PUSH12 0x311D253316C79D376000000 DUP4 LT ISZERO DUP1 ISZERO PUSH2 0x4C6 JUMPI POP PUSH2 0x4C2 DUP2 PUSH2 0xFA0 PUSH2 0x126E JUMP JUMPDEST DUP3 GT ISZERO JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1919 PUSH1 0xF1 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x4FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH12 0x311D253316C79D376000000 DUP2 JUMP JUMPDEST PUSH1 0x4 DUP1 DUP10 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH2 0x551 SWAP2 CALLER SWAP2 ADD PUSH2 0x1EC5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x569 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x57D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5A1 SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3139 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x5E0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP DUP7 DUP1 PUSH2 0x67D JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x3985C109 PUSH1 0xE2 SHL DUP2 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xE6170424 SWAP1 PUSH2 0x62D SWAP1 DUP12 SWAP1 CALLER SWAP1 DUP7 SWAP1 DUP13 SWAP1 DUP13 SWAP1 DUP13 SWAP1 DUP13 SWAP1 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x1ED9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x645 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x659 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x67D SWAP2 SWAP1 PUSH2 0x1D00 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 PUSH1 0xF4 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x6B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x6CA PUSH2 0x1AEE JUMP JUMPDEST PUSH2 0x6D3 DUP13 PUSH2 0x110D JUMP JUMPDEST ISZERO ISZERO PUSH2 0x140 DUP6 ADD MSTORE ISZERO ISZERO PUSH2 0x120 DUP5 ADD MSTORE ISZERO ISZERO PUSH2 0x100 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x19 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH2 0x72A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP DUP1 PUSH2 0x100 ADD MLOAD ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x33 PUSH1 0xF8 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x76A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP11 PUSH2 0x7A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP DUP1 PUSH2 0x120 ADD MLOAD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x37 PUSH1 0xF8 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x7E0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP DUP8 PUSH1 0x2 EQ DUP1 PUSH2 0x7F0 JUMPI POP DUP8 PUSH1 0x1 EQ JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 PUSH1 0xFB SHL DUP2 MSTORE POP SWAP1 PUSH2 0x828 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE DUP6 SLOAD DUP2 MSTORE PUSH2 0x848 SWAP1 DUP13 SWAP1 DUP9 SWAP1 DUP8 DUP8 DUP8 PUSH2 0x12E0 JUMP JUMPDEST PUSH1 0xC0 DUP7 ADD MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP5 MSTORE PUSH1 0x80 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x39 PUSH1 0xF8 SHL SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 PUSH2 0x8A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH8 0xDE0B6B3A7640000 DUP2 PUSH1 0xC0 ADD MLOAD GT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x313 PUSH1 0xF4 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x8E9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP DUP1 MLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x906 SWAP2 SWAP1 PUSH2 0x900 SWAP1 DUP13 PUSH2 0x1145 JUMP JUMPDEST SWAP1 PUSH2 0x17A7 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP4 ADD MLOAD DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x2 DUP3 MSTORE PUSH2 0x3131 PUSH1 0xF0 SHL PUSH1 0x20 DUP4 ADD MSTORE SWAP1 SWAP2 GT ISZERO PUSH2 0x94B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x1 DUP9 EQ ISZERO PUSH2 0xB7B JUMPI DUP1 PUSH2 0x140 ADD MLOAD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1899 PUSH1 0xF1 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x994 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x7 DUP13 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE DUP7 SLOAD DUP2 MSTORE PUSH2 0x9BC SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1835 JUMP JUMPDEST ISZERO DUP1 PUSH2 0x9CE JUMPI POP PUSH2 0x9CC DUP13 PUSH2 0x188D JUMP JUMPDEST ISZERO JUMPDEST DUP1 PUSH2 0xA58 JUMPI POP PUSH1 0x4 DUP1 DUP14 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH2 0xA05 SWAP2 DUP16 SWAP2 ADD PUSH2 0x1EC5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA31 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA55 SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST DUP11 GT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3133 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xA91 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP14 PUSH1 0x4 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAD5 SWAP2 SWAP1 PUSH2 0x1EC5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB01 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB25 SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0xB39 SWAP1 DUP10 PUSH2 0x126E JUMP JUMPDEST SWAP1 POP DUP1 DUP12 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC4D PUSH1 0xF2 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xB78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP POP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0xB97 DUP9 PUSH2 0x110D JUMP JUMPDEST SWAP4 POP POP SWAP3 POP SWAP3 POP DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x19 PUSH1 0xF9 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xBD7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x33 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP3 ISZERO PUSH2 0xC0F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xC1E JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xC61 JUMPI PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3137 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP7 PUSH2 0xC5B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH2 0xE19 JUMP JUMPDEST PUSH1 0x2 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xC6F JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xDEA JUMPI PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x627 PUSH1 0xF3 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP6 PUSH2 0xCAC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1899 PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH2 0xCE4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x7 DUP9 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE DUP9 SLOAD DUP2 MSTORE PUSH2 0xD0C SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1835 JUMP JUMPDEST ISZERO DUP1 PUSH2 0xD1E JUMPI POP PUSH2 0xD1C DUP9 PUSH2 0x188D JUMP JUMPDEST ISZERO JUMPDEST DUP1 PUSH2 0xDB1 JUMPI POP PUSH1 0x4 DUP1 DUP10 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH2 0xD55 SWAP2 CALLER SWAP2 ADD PUSH2 0x1EC5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD81 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDA5 SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST PUSH2 0xDAF DUP8 DUP8 PUSH2 0x1145 JUMP JUMPDEST GT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3133 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xC5B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x7 PUSH1 0xFB SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH2 0x198 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x1F1E JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xFA0 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP8 PUSH2 0xE5F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x35 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP7 DUP9 GT ISZERO PUSH2 0xE99 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0xEBB SWAP1 PUSH2 0x110D JUMP JUMPDEST POP POP POP SWAP1 POP DUP1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x19 PUSH1 0xF9 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xEF9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x3985C109 PUSH1 0xE2 SHL DUP2 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xE6170424 SWAP1 PUSH2 0xF3F SWAP1 DUP13 SWAP1 CALLER SWAP1 DUP14 SWAP1 DUP13 SWAP1 DUP13 SWAP1 DUP13 SWAP1 DUP13 SWAP1 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x1ED9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xF6B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF8F SWAP2 SWAP1 PUSH2 0x1D00 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1B PUSH1 0xF9 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x6B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFD2 DUP8 PUSH2 0x1895 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x19 PUSH1 0xF9 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x100D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP7 PUSH2 0x1044 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x1060 JUMPI POP PUSH1 0x1 DUP6 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x105E JUMPI INVALID JUMPDEST EQ JUMPDEST DUP1 PUSH2 0x1081 JUMPI POP PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x1081 JUMPI POP PUSH1 0x2 DUP6 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x107F JUMPI INVALID JUMPDEST EQ JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3135 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x10BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x0 NOT DUP7 EQ ISZERO DUP1 PUSH2 0x10D4 JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EQ JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x189B PUSH1 0xF1 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xE19 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x38 SHL DUP2 AND ISZERO ISZERO SWAP2 PUSH8 0x200000000000000 DUP3 AND ISZERO ISZERO SWAP2 PUSH8 0x400000000000000 DUP2 AND ISZERO ISZERO SWAP2 PUSH8 0x800000000000000 SWAP1 SWAP2 AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x116A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP1 PUSH2 0x1F71 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0x3B9ACA00 DUP3 DUP2 MUL SWAP1 DUP4 SWAP1 DUP3 DIV EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x11BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x11FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x124B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x1265 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x127B JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x1288 JUMPI POP PUSH1 0x0 PUSH2 0x116D JUMP JUMPDEST DUP2 PUSH2 0x1388 NOT DUP2 PUSH2 0x1294 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x12D1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP POP PUSH2 0x2710 SWAP2 MUL PUSH2 0x1388 ADD DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x12F0 PUSH2 0x1B50 JUMP JUMPDEST PUSH2 0x12F9 DUP11 PUSH2 0x18A1 JUMP JUMPDEST ISZERO PUSH2 0x1317 JUMPI PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 NOT SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP POP PUSH2 0x1799 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 ADD MSTORE JUMPDEST DUP8 DUP2 PUSH1 0xE0 ADD MLOAD LT ISZERO PUSH2 0x16F8 JUMPI PUSH1 0xE0 DUP2 ADD MLOAD PUSH2 0x133B SWAP1 DUP12 SWAP1 PUSH2 0x18A6 JUMP JUMPDEST PUSH2 0x1344 JUMPI PUSH2 0x16E8 JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP11 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E0 DUP6 ADD DUP2 SWAP1 MSTORE DUP4 MSTORE SWAP1 DUP14 SWAP1 MSTORE SWAP1 KECCAK256 PUSH2 0x137B DUP2 PUSH2 0x18F7 JUMP JUMPDEST POP PUSH1 0x80 DUP7 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP7 ADD SWAP3 SWAP1 SWAP3 MSTORE POP PUSH1 0xA0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA EXP PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1E0 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xB3596F07 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP2 PUSH4 0xB3596F07 SWAP2 PUSH2 0x13CD SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x1EC5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x141D SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST DUP3 MSTORE PUSH1 0xC0 DUP3 ADD MLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0x143D JUMPI POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x143D SWAP1 DUP13 SWAP1 PUSH2 0x1835 JUMP JUMPDEST ISZERO PUSH2 0x1561 JUMPI DUP1 PUSH1 0x4 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1485 SWAP2 SWAP1 PUSH2 0x1EC5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x149D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14D5 SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD MLOAD DUP4 MLOAD PUSH1 0x0 SWAP3 PUSH2 0x14FA SWAP3 SWAP2 PUSH2 0x14F4 SWAP2 PUSH2 0x1922 JUMP JUMPDEST SWAP1 PUSH2 0x195C JUMP JUMPDEST PUSH2 0x120 DUP5 ADD MLOAD SWAP1 SWAP2 POP PUSH2 0x150D SWAP1 DUP3 PUSH2 0x1145 JUMP JUMPDEST PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH2 0x1533 SWAP1 PUSH2 0x1527 SWAP1 DUP4 SWAP1 PUSH2 0x1922 JUMP JUMPDEST PUSH2 0x160 DUP6 ADD MLOAD SWAP1 PUSH2 0x1145 JUMP JUMPDEST PUSH2 0x160 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD MLOAD PUSH2 0x1559 SWAP1 PUSH2 0x154D SWAP1 DUP4 SWAP1 PUSH2 0x1922 JUMP JUMPDEST PUSH2 0x180 DUP6 ADD MLOAD SWAP1 PUSH2 0x1145 JUMP JUMPDEST PUSH2 0x180 DUP5 ADD MSTORE POP JUMPDEST PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x1571 SWAP1 DUP13 SWAP1 PUSH2 0x199E JUMP JUMPDEST ISZERO PUSH2 0x16E6 JUMPI DUP1 PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15B9 SWAP2 SWAP1 PUSH2 0x1EC5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1609 SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST DUP3 PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x16B3 DUP2 PUSH1 0x6 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP16 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1658 SWAP2 SWAP1 PUSH2 0x1EC5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1670 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1684 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x16A8 SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MLOAD SWAP1 PUSH2 0x1145 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD MLOAD DUP4 MLOAD PUSH2 0x16DF SWAP3 PUSH2 0x16D3 SWAP3 SWAP2 PUSH2 0x14F4 SWAP2 PUSH2 0x1922 JUMP JUMPDEST PUSH2 0x140 DUP5 ADD MLOAD SWAP1 PUSH2 0x1145 JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE JUMPDEST POP JUMPDEST PUSH1 0xE0 DUP2 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE PUSH2 0x131F JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x120 ADD MLOAD GT PUSH2 0x170C JUMPI PUSH1 0x0 PUSH2 0x1721 JUMP JUMPDEST PUSH2 0x120 DUP2 ADD MLOAD PUSH2 0x160 DUP3 ADD MLOAD PUSH2 0x1721 SWAP2 PUSH2 0x195C JUMP JUMPDEST PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0x120 DUP2 ADD MLOAD PUSH2 0x1738 JUMPI PUSH1 0x0 PUSH2 0x174D JUMP JUMPDEST PUSH2 0x120 DUP2 ADD MLOAD PUSH2 0x180 DUP3 ADD MLOAD PUSH2 0x174D SWAP2 PUSH2 0x195C JUMP JUMPDEST PUSH2 0x180 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD MLOAD PUSH2 0x140 DUP4 ADD MLOAD PUSH2 0x176A SWAP3 PUSH2 0x19EF JUMP JUMPDEST PUSH2 0x100 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD MLOAD PUSH2 0x140 DUP4 ADD MLOAD PUSH2 0x160 DUP5 ADD MLOAD PUSH2 0x180 SWAP1 SWAP5 ADD MLOAD SWAP2 SWAP9 POP SWAP7 POP SWAP2 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x17E1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH2 0x2710 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x1825 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP DUP3 DUP2 PUSH2 0x2710 DUP7 MUL ADD DUP2 PUSH2 0x1265 JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1874 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP POP DUP2 MLOAD PUSH1 0x1 PUSH1 0x2 DUP4 MUL DUP2 ADD SWAP2 SWAP1 SWAP2 SHR AND ISZERO ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST SLOAD PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x38 SHL AND ISZERO ISZERO SWAP1 JUMP JUMPDEST MLOAD ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x18E5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP POP SWAP1 MLOAD PUSH1 0x3 PUSH1 0x2 SWAP1 SWAP3 MUL SHR AND ISZERO ISZERO SWAP1 JUMP JUMPDEST SLOAD PUSH2 0xFFFF DUP1 DUP3 AND SWAP3 PUSH1 0x10 DUP4 SWAP1 SHR DUP3 AND SWAP3 PUSH1 0x20 DUP2 SWAP1 SHR DUP4 AND SWAP3 PUSH1 0x30 DUP3 SWAP1 SHR PUSH1 0xFF AND SWAP3 PUSH1 0x40 SWAP3 SWAP1 SWAP3 SHR AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1931 JUMPI POP PUSH1 0x0 PUSH2 0x116D JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x193E JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x116A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP1 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x116A DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x1A1D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x19DD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP POP SWAP1 MLOAD PUSH1 0x1 PUSH1 0x2 SWAP1 SWAP3 MUL SHR AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x19FF JUMPI POP PUSH1 0x0 NOT PUSH2 0x1A16 JUMP JUMPDEST PUSH2 0x1A13 DUP4 PUSH2 0x1A0D DUP7 DUP6 PUSH2 0x126E JUMP JUMPDEST SWAP1 PUSH2 0x1A54 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x1A3E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x1A4A JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x1A8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH8 0xDE0B6B3A7640000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x1AD8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP DUP3 DUP2 PUSH8 0xDE0B6B3A7640000 DUP7 MUL ADD DUP2 PUSH2 0x1265 JUMPI INVALID JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x160 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x240 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x180 DUP14 DUP16 SUB SLT ISZERO PUSH2 0x1C0C JUMPI DUP8 DUP9 REVERT JUMPDEST DUP13 CALLDATALOAD PUSH2 0x1C17 DUP2 PUSH2 0x1FF2 JUMP JUMPDEST SWAP12 POP PUSH1 0x20 DUP14 ADD CALLDATALOAD SWAP11 POP PUSH1 0x40 DUP14 ADD CALLDATALOAD PUSH2 0x1C2E DUP2 PUSH2 0x1FF2 JUMP JUMPDEST SWAP10 POP PUSH1 0x60 DUP14 ADD CALLDATALOAD SWAP9 POP PUSH1 0x80 DUP14 ADD CALLDATALOAD SWAP8 POP PUSH1 0xA0 DUP14 ADD CALLDATALOAD SWAP7 POP PUSH1 0xC0 DUP14 ADD CALLDATALOAD SWAP6 POP PUSH1 0xE0 DUP14 ADD CALLDATALOAD SWAP5 POP PUSH2 0x100 DUP14 ADD CALLDATALOAD SWAP4 POP PUSH2 0x120 DUP14 ADD CALLDATALOAD SWAP3 POP PUSH2 0x140 DUP14 ADD CALLDATALOAD SWAP2 POP PUSH2 0x160 DUP14 ADD CALLDATALOAD PUSH2 0x1C7A DUP2 PUSH2 0x1FF2 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x1CAA JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x1CB5 DUP2 PUSH2 0x1FF2 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH2 0x1CEF DUP2 PUSH2 0x1FF2 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D11 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x116A DUP2 PUSH2 0x200A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x1D38 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 CALLDATALOAD SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x1D4A DUP2 PUSH2 0x1FF2 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x1D5A DUP2 PUSH2 0x200A JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH2 0x1CEF DUP2 PUSH2 0x1FF2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1D9D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x1DAF DUP2 PUSH2 0x1FF2 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x1DBF DUP2 PUSH2 0x1FF2 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x1DCF DUP2 PUSH2 0x1FF2 JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x1DDF DUP2 PUSH2 0x1FF2 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1E04 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH1 0x3 DUP2 LT PUSH2 0x1DDF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1E40 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x1E67 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH1 0x3 DUP2 LT PUSH2 0x1E83 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x1E93 DUP2 PUSH2 0x1FF2 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP3 SWAP6 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP5 PUSH1 0xA0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1EBE JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 DUP10 AND DUP2 MSTORE SWAP7 DUP9 AND PUSH1 0x20 DUP9 ADD MSTORE PUSH1 0x40 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x60 DUP7 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 SLOAD PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1F4A JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x1F2E JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x1F5B JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2007 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2007 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODECOPY ADDRESS MSIZE SWAP13 DUP11 SLOAD DUP3 0xE0 0xA6 CALLDATASIZE LOG2 0xB1 SWAP6 0x4D DIFFICULTY DUP12 0x4D DUP2 0xC3 SIGNEXTEND 0xAB DUP11 0xE 0xE7 CALLDATACOPY MOD SLOAD PUSH7 0x7D7F01D64736F PUSH13 0x634300060C0033000000000000 ",
              "sourceMap": "1089:16337:82:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {
                "contracts/protocol/libraries/logic/GenericLogic.sol": {
                  "GenericLogic": [
                    {
                      "length": 20,
                      "start": 1527
                    },
                    {
                      "length": 20,
                      "start": 3849
                    }
                  ]
                }
              },
              "object": "730000000000000000000000000000000000000000301460806040526004361061009d5760003560e01c8063721a92f911610070578063721a92f9146100fb578063a8695b1d1461010e578063abfcc86a14610121578063d09db04a14610129578063fa0c21491461013c5761009d565b80630eca322b146100a2578063548cad09146100b75780635494eb8a146100ca5780635fa297e5146100e8575b600080fd5b6100b56100b0366004611e2e565b61014f565b005b6100b56100c5366004611d86565b610217565b6100d261050d565b6040516100df9190611fe9565b60405180910390f35b6100b56100f6366004611d1c565b61051d565b6100b5610109366004611bea565b6106c2565b6100b561011c366004611ded565b610b8a565b6100d2610e23565b6100b5610137366004611c8e565b610e29565b6100b561014a366004611e4f565b610fc7565b60008061015b8461110d565b50506040805180820190915260018152603160f81b60208201529193509150836101a15760405162461bcd60e51b81526004016101989190611f1e565b60405180910390fd5b506040805180820190915260018152601960f91b6020820152826101d85760405162461bcd60e51b81526004016101989190611f1e565b506040805180820190915260018152603360f81b602082015281156102105760405162461bcd60e51b81526004016101989190611f1e565b5050505050565b60006102228661110d565b505050905080604051806040016040528060018152602001601960f91b815250906102605760405162461bcd60e51b81526004016101989190611f1e565b506000610356610351856001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102a257600080fd5b505afa1580156102b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102da9190611ead565b876001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561031357600080fd5b505afa158015610327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034b9190611ead565b90611145565b611173565b905060006103d9876001600160a01b03166370a08231866040518263ffffffff1660e01b81526004016103899190611ec5565b60206040518083038186803b1580156103a157600080fd5b505afa1580156103b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103519190611ead565b9050600082156103fc576103f76103f08385611145565b84906111c3565b6103ff565b60005b60028a015460078b0154604080516380031e3760e01b815290519394506fffffffffffffffffffffffffffffffff909216926000926001600160a01b03909216916380031e37916004808301926020929190829003018186803b15801561046557600080fd5b505afa158015610479573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049d9190611ead565b90506b0311d253316c79d37600000083101580156104c657506104c281610fa061126e565b8211155b60405180604001604052806002815260200161191960f11b815250906104ff5760405162461bcd60e51b81526004016101989190611f1e565b505050505050505050505050565b6b0311d253316c79d37600000081565b6004808901546040516370a0823160e01b81526000926001600160a01b03909216916370a082319161055191339101611ec5565b60206040518083038186803b15801561056957600080fd5b505afa15801561057d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a19190611ead565b90506000811160405180604001604052806002815260200161313960f01b815250906105e05760405162461bcd60e51b81526004016101989190611f1e565b50868061067d5750604051633985c10960e21b815273__$52a8a86ab43135662ff256bbc95497e8e3$__9063e61704249061062d908b90339086908c908c908c908c908c90600401611ed9565b60206040518083038186803b15801561064557600080fd5b505af4158015610659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067d9190611d00565b60405180604001604052806002815260200161032360f41b815250906106b65760405162461bcd60e51b81526004016101989190611f1e565b50505050505050505050565b6106ca611aee565b6106d38c61110d565b151561014085015215156101208401521515610100830152151560e082018190526040805180820190915260018152601960f91b60208201529061072a5760405162461bcd60e51b81526004016101989190611f1e565b5080610100015115604051806040016040528060018152602001603360f81b8152509061076a5760405162461bcd60e51b81526004016101989190611f1e565b506040805180820190915260018152603160f81b60208201528a6107a15760405162461bcd60e51b81526004016101989190611f1e565b50806101200151604051806040016040528060018152602001603760f81b815250906107e05760405162461bcd60e51b81526004016101989190611f1e565b5087600214806107f05750876001145b604051806040016040528060018152602001600760fb1b815250906108285760405162461bcd60e51b81526004016101989190611f1e565b50604080516020810190915285548152610848908c9088908787876112e0565b60c08601526020808601919091529084526080840191909152606083018290526040805180820190915260018152603960f81b91810191909152906108a05760405162461bcd60e51b81526004016101989190611f1e565b50670de0b6b3a76400008160c001511160405180604001604052806002815260200161031360f41b815250906108e95760405162461bcd60e51b81526004016101989190611f1e565b50805160808201516109069190610900908c611145565b906117a7565b6040808301829052606083015181518083019092526002825261313160f01b60208301529091111561094b5760405162461bcd60e51b81526004016101989190611f1e565b506001881415610b7b5780610140015160405180604001604052806002815260200161189960f11b815250906109945760405162461bcd60e51b81526004016101989190611f1e565b5060078c01546040805160208101909152865481526109bc91600160a01b900460ff16611835565b15806109ce57506109cc8c61188d565b155b80610a5857506004808d01546040516370a0823160e01b81526001600160a01b03909116916370a0823191610a05918f9101611ec5565b60206040518083038186803b158015610a1d57600080fd5b505afa158015610a31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a559190611ead565b8a115b60405180604001604052806002815260200161313360f01b81525090610a915760405162461bcd60e51b81526004016101989190611f1e565b508c6001600160a01b03166370a082318d60040160009054906101000a90046001600160a01b03166040518263ffffffff1660e01b8152600401610ad59190611ec5565b60206040518083038186803b158015610aed57600080fd5b505afa158015610b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b259190611ead565b60a08201819052600090610b39908961126e565b9050808b1115604051806040016040528060028152602001610c4d60f21b81525090610b785760405162461bcd60e51b81526004016101989190611f1e565b50505b50505050505050505050505050565b60008080610b978861110d565b9350509250925082604051806040016040528060018152602001601960f91b81525090610bd75760405162461bcd60e51b81526004016101989190611f1e565b506040805180820190915260018152603360f81b60208201528215610c0f5760405162461bcd60e51b81526004016101989190611f1e565b506001846002811115610c1e57fe5b1415610c6157604080518082019091526002815261313760f01b602082015286610c5b5760405162461bcd60e51b81526004016101989190611f1e565b50610e19565b6002846002811115610c6f57fe5b1415610dea57604080518082019091526002815261062760f31b602082015285610cac5760405162461bcd60e51b81526004016101989190611f1e565b50604080518082019091526002815261189960f11b602082015281610ce45760405162461bcd60e51b81526004016101989190611f1e565b506007880154604080516020810190915288548152610d0c91600160a01b900460ff16611835565b1580610d1e5750610d1c8861188d565b155b80610db157506004808901546040516370a0823160e01b81526001600160a01b03909116916370a0823191610d5591339101611ec5565b60206040518083038186803b158015610d6d57600080fd5b505afa158015610d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da59190611ead565b610daf8787611145565b115b60405180604001604052806002815260200161313360f01b81525090610c5b5760405162461bcd60e51b81526004016101989190611f1e565b60408051808201825260018152600760fb1b6020820152905162461bcd60e51b81526101989190600401611f1e565b5050505050505050565b610fa081565b6040805180820190915260018152603160f81b602082015287610e5f5760405162461bcd60e51b81526004016101989190611f1e565b506040805180820190915260018152603560f81b602082015286881115610e995760405162461bcd60e51b81526004016101989190611f1e565b506001600160a01b0388166000908152602086905260408120610ebb9061110d565b505050905080604051806040016040528060018152602001601960f91b81525090610ef95760405162461bcd60e51b81526004016101989190611f1e565b50604051633985c10960e21b815273__$52a8a86ab43135662ff256bbc95497e8e3$__9063e617042490610f3f908c9033908d908c908c908c908c908c90600401611ed9565b60206040518083038186803b158015610f5757600080fd5b505af4158015610f6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8f9190611d00565b604051806040016040528060018152602001601b60f91b815250906106b65760405162461bcd60e51b81526004016101989190611f1e565b6000610fd287611895565b905080604051806040016040528060018152602001601960f91b8152509061100d5760405162461bcd60e51b81526004016101989190611f1e565b506040805180820190915260018152603160f81b6020820152866110445760405162461bcd60e51b81526004016101989190611f1e565b506000831180156110605750600185600281111561105e57fe5b145b8061108157506000821180156110815750600285600281111561107f57fe5b145b60405180604001604052806002815260200161313560f01b815250906110ba5760405162461bcd60e51b81526004016101989190611f1e565b50600019861415806110d45750336001600160a01b038516145b60405180604001604052806002815260200161189b60f11b81525090610e195760405162461bcd60e51b81526004016101989190611f1e565b54600160381b811615159167020000000000000082161515916704000000000000008116151591670800000000000000909116151590565b60008282018381101561116a5760405162461bcd60e51b815260040161019890611f71565b90505b92915050565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b815250906111bc5760405162461bcd60e51b81526004016101989190611f1e565b5092915050565b604080518082019091526002815261035360f41b6020820152600090826111fd5760405162461bcd60e51b81526004016101989190611f1e565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce800000082190485111561124b5760405162461bcd60e51b81526004016101989190611f1e565b5082816b033b2e3c9fd0803ce80000008602018161126557fe5b04949350505050565b600082158061127b575081155b156112885750600061116d565b81611388198161129457fe5b0483111560405180604001604052806002815260200161068760f31b815250906112d15760405162461bcd60e51b81526004016101989190611f1e565b50506127109102611388010490565b60008060008060006112f0611b50565b6112f98a6118a1565b15611317576000806000806000199550955095509550955050611799565b600060e08201525b878160e0015110156116f85760e081015161133b908b906118a6565b611344576116e8565b60e0810151600090815260208a81526040808320546001600160a01b03166101e085018190528352908d9052902061137b816118f7565b506080860181905260c08601929092525060a0840191909152600a0a60208301526101e082015160405163b3596f0760e01b81526001600160a01b038a169163b3596f07916113cd9190600401611ec5565b60206040518083038186803b1580156113e557600080fd5b505afa1580156113f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141d9190611ead565b825260c08201511580159061143d575060e082015161143d908c90611835565b15611561578060040160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b81526004016114859190611ec5565b60206040518083038186803b15801561149d57600080fd5b505afa1580156114b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d59190611ead565b60408301819052602083015183516000926114fa92916114f491611922565b9061195c565b61012084015190915061150d9082611145565b61012084015260a083015161153390611527908390611922565b61016085015190611145565b61016084015260c08301516115599061154d908390611922565b61018085015190611145565b610180840152505b60e0820151611571908c9061199e565b156116e6578060050160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b81526004016115b99190611ec5565b60206040518083038186803b1580156115d157600080fd5b505afa1580156115e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116099190611ead565b8260600181815250506116b38160060160009054906101000a90046001600160a01b03166001600160a01b03166370a082318f6040518263ffffffff1660e01b81526004016116589190611ec5565b60206040518083038186803b15801561167057600080fd5b505afa158015611684573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a89190611ead565b606084015190611145565b60608301819052602083015183516116df926116d392916114f491611922565b61014084015190611145565b6101408301525b505b60e081018051600101905261131f565b60008161012001511161170c576000611721565b6101208101516101608201516117219161195c565b61016082015261012081015161173857600061174d565b61012081015161018082015161174d9161195c565b610180820181905261012082015161014083015161176a926119ef565b610100820181905261012082015161014083015161016084015161018090940151919850965091945090925090505b965096509650965096915050565b604080518082019091526002815261035360f41b6020820152600090826117e15760405162461bcd60e51b81526004016101989190611f1e565b5060408051808201909152600280825261068760f31b60208301528304906127108219048511156118255760405162461bcd60e51b81526004016101989190611f1e565b5082816127108602018161126557fe5b60006080821060405180604001604052806002815260200161373760f01b815250906118745760405162461bcd60e51b81526004016101989190611f1e565b5050815160016002830281019190911c16151592915050565b5461ffff1690565b54600160381b16151590565b511590565b60006080821060405180604001604052806002815260200161373760f01b815250906118e55760405162461bcd60e51b81526004016101989190611f1e565b50509051600360029092021c16151590565b5461ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b6000826119315750600061116d565b8282028284828161193e57fe5b041461116a5760405162461bcd60e51b815260040161019890611fa8565b600061116a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a1d565b60006080821060405180604001604052806002815260200161373760f01b815250906119dd5760405162461bcd60e51b81526004016101989190611f1e565b50509051600160029092021c16151590565b6000826119ff5750600019611a16565b611a1383611a0d868561126e565b90611a54565b90505b9392505050565b60008183611a3e5760405162461bcd60e51b81526004016101989190611f1e565b506000838581611a4a57fe5b0495945050505050565b604080518082019091526002815261035360f41b602082015260009082611a8e5760405162461bcd60e51b81526004016101989190611f1e565b5060408051808201909152600280825261068760f31b6020830152830490670de0b6b3a7640000821904851115611ad85760405162461bcd60e51b81526004016101989190611f1e565b508281670de0b6b3a76400008602018161126557fe5b604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581526020016000151581526020016000151581525090565b604051806102400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b031681526020016000151581526020016000151581525090565b6000806000806000806000806000806000806101808d8f031215611c0c578788fd5b8c35611c1781611ff2565b9b5060208d01359a5060408d0135611c2e81611ff2565b995060608d0135985060808d0135975060a08d0135965060c08d0135955060e08d013594506101008d013593506101208d013592506101408d013591506101608d0135611c7a81611ff2565b809150509295989b509295989b509295989b565b600080600080600080600080610100898b031215611caa578384fd5b8835611cb581611ff2565b97506020890135965060408901359550606089013594506080890135935060a0890135925060c0890135915060e0890135611cef81611ff2565b809150509295985092959890939650565b600060208284031215611d11578081fd5b815161116a8161200a565b600080600080600080600080610100898b031215611d38578384fd5b883597506020890135611d4a81611ff2565b96506040890135611d5a8161200a565b9550606089013594506080890135935060a0890135925060c0890135915060e0890135611cef81611ff2565b600080600080600060a08688031215611d9d578081fd5b853594506020860135611daf81611ff2565b93506040860135611dbf81611ff2565b92506060860135611dcf81611ff2565b91506080860135611ddf81611ff2565b809150509295509295909350565b600080600080600060a08688031215611e04578081fd5b85359450602086013593506040860135925060608601359150608086013560038110611ddf578182fd5b60008060408385031215611e40578182fd5b50508035926020909101359150565b60008060008060008060c08789031215611e67578384fd5b8635955060208701359450604087013560038110611e83578485fd5b93506060870135611e9381611ff2565b9598949750929560808101359460a0909101359350915050565b600060208284031215611ebe578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b0398891681529688166020880152604087019590955260608601939093529054608085015260a084015260c083015290911660e08201526101000190565b6000602080835283518082850152825b81811015611f4a57858101830151858201604001528201611f2e565b81811115611f5b5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b90815260200190565b6001600160a01b038116811461200757600080fd5b50565b801515811461200757600080fdfea26469706673582212203c30599c8a5482e0a636a2b1954d448b4d81c30bab8a0ee73706546607d7f01d64736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x9D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x721A92F9 GT PUSH2 0x70 JUMPI DUP1 PUSH4 0x721A92F9 EQ PUSH2 0xFB JUMPI DUP1 PUSH4 0xA8695B1D EQ PUSH2 0x10E JUMPI DUP1 PUSH4 0xABFCC86A EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0xD09DB04A EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0xFA0C2149 EQ PUSH2 0x13C JUMPI PUSH2 0x9D JUMP JUMPDEST DUP1 PUSH4 0xECA322B EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0x548CAD09 EQ PUSH2 0xB7 JUMPI DUP1 PUSH4 0x5494EB8A EQ PUSH2 0xCA JUMPI DUP1 PUSH4 0x5FA297E5 EQ PUSH2 0xE8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB5 PUSH2 0xB0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E2E JUMP JUMPDEST PUSH2 0x14F JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB5 PUSH2 0xC5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D86 JUMP JUMPDEST PUSH2 0x217 JUMP JUMPDEST PUSH2 0xD2 PUSH2 0x50D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDF SWAP2 SWAP1 PUSH2 0x1FE9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB5 PUSH2 0xF6 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D1C JUMP JUMPDEST PUSH2 0x51D JUMP JUMPDEST PUSH2 0xB5 PUSH2 0x109 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BEA JUMP JUMPDEST PUSH2 0x6C2 JUMP JUMPDEST PUSH2 0xB5 PUSH2 0x11C CALLDATASIZE PUSH1 0x4 PUSH2 0x1DED JUMP JUMPDEST PUSH2 0xB8A JUMP JUMPDEST PUSH2 0xD2 PUSH2 0xE23 JUMP JUMPDEST PUSH2 0xB5 PUSH2 0x137 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C8E JUMP JUMPDEST PUSH2 0xE29 JUMP JUMPDEST PUSH2 0xB5 PUSH2 0x14A CALLDATASIZE PUSH1 0x4 PUSH2 0x1E4F JUMP JUMPDEST PUSH2 0xFC7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x15B DUP5 PUSH2 0x110D JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 SWAP4 POP SWAP2 POP DUP4 PUSH2 0x1A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x19 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH2 0x1D8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x33 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP2 ISZERO PUSH2 0x210 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x222 DUP7 PUSH2 0x110D JUMP JUMPDEST POP POP POP SWAP1 POP DUP1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x19 PUSH1 0xF9 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x260 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x356 PUSH2 0x351 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2DA SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x313 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x327 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x34B SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST SWAP1 PUSH2 0x1145 JUMP JUMPDEST PUSH2 0x1173 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3D9 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x389 SWAP2 SWAP1 PUSH2 0x1EC5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x351 SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 ISZERO PUSH2 0x3FC JUMPI PUSH2 0x3F7 PUSH2 0x3F0 DUP4 DUP6 PUSH2 0x1145 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x11C3 JUMP JUMPDEST PUSH2 0x3FF JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x2 DUP11 ADD SLOAD PUSH1 0x7 DUP12 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x80031E37 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP4 SWAP5 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x80031E37 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x465 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x479 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x49D SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST SWAP1 POP PUSH12 0x311D253316C79D376000000 DUP4 LT ISZERO DUP1 ISZERO PUSH2 0x4C6 JUMPI POP PUSH2 0x4C2 DUP2 PUSH2 0xFA0 PUSH2 0x126E JUMP JUMPDEST DUP3 GT ISZERO JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1919 PUSH1 0xF1 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x4FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH12 0x311D253316C79D376000000 DUP2 JUMP JUMPDEST PUSH1 0x4 DUP1 DUP10 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH2 0x551 SWAP2 CALLER SWAP2 ADD PUSH2 0x1EC5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x569 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x57D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5A1 SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3139 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x5E0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP DUP7 DUP1 PUSH2 0x67D JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x3985C109 PUSH1 0xE2 SHL DUP2 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xE6170424 SWAP1 PUSH2 0x62D SWAP1 DUP12 SWAP1 CALLER SWAP1 DUP7 SWAP1 DUP13 SWAP1 DUP13 SWAP1 DUP13 SWAP1 DUP13 SWAP1 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x1ED9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x645 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x659 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x67D SWAP2 SWAP1 PUSH2 0x1D00 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x323 PUSH1 0xF4 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x6B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x6CA PUSH2 0x1AEE JUMP JUMPDEST PUSH2 0x6D3 DUP13 PUSH2 0x110D JUMP JUMPDEST ISZERO ISZERO PUSH2 0x140 DUP6 ADD MSTORE ISZERO ISZERO PUSH2 0x120 DUP5 ADD MSTORE ISZERO ISZERO PUSH2 0x100 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0xE0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x19 PUSH1 0xF9 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH2 0x72A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP DUP1 PUSH2 0x100 ADD MLOAD ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x33 PUSH1 0xF8 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x76A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP11 PUSH2 0x7A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP DUP1 PUSH2 0x120 ADD MLOAD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x37 PUSH1 0xF8 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x7E0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP DUP8 PUSH1 0x2 EQ DUP1 PUSH2 0x7F0 JUMPI POP DUP8 PUSH1 0x1 EQ JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x7 PUSH1 0xFB SHL DUP2 MSTORE POP SWAP1 PUSH2 0x828 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE DUP6 SLOAD DUP2 MSTORE PUSH2 0x848 SWAP1 DUP13 SWAP1 DUP9 SWAP1 DUP8 DUP8 DUP8 PUSH2 0x12E0 JUMP JUMPDEST PUSH1 0xC0 DUP7 ADD MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP5 MSTORE PUSH1 0x80 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x39 PUSH1 0xF8 SHL SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 PUSH2 0x8A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH8 0xDE0B6B3A7640000 DUP2 PUSH1 0xC0 ADD MLOAD GT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x313 PUSH1 0xF4 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x8E9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP DUP1 MLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x906 SWAP2 SWAP1 PUSH2 0x900 SWAP1 DUP13 PUSH2 0x1145 JUMP JUMPDEST SWAP1 PUSH2 0x17A7 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP4 ADD MLOAD DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x2 DUP3 MSTORE PUSH2 0x3131 PUSH1 0xF0 SHL PUSH1 0x20 DUP4 ADD MSTORE SWAP1 SWAP2 GT ISZERO PUSH2 0x94B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x1 DUP9 EQ ISZERO PUSH2 0xB7B JUMPI DUP1 PUSH2 0x140 ADD MLOAD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1899 PUSH1 0xF1 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x994 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x7 DUP13 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE DUP7 SLOAD DUP2 MSTORE PUSH2 0x9BC SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1835 JUMP JUMPDEST ISZERO DUP1 PUSH2 0x9CE JUMPI POP PUSH2 0x9CC DUP13 PUSH2 0x188D JUMP JUMPDEST ISZERO JUMPDEST DUP1 PUSH2 0xA58 JUMPI POP PUSH1 0x4 DUP1 DUP14 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH2 0xA05 SWAP2 DUP16 SWAP2 ADD PUSH2 0x1EC5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA31 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA55 SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST DUP11 GT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3133 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xA91 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP14 PUSH1 0x4 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAD5 SWAP2 SWAP1 PUSH2 0x1EC5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB01 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB25 SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0xB39 SWAP1 DUP10 PUSH2 0x126E JUMP JUMPDEST SWAP1 POP DUP1 DUP12 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC4D PUSH1 0xF2 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xB78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP POP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0xB97 DUP9 PUSH2 0x110D JUMP JUMPDEST SWAP4 POP POP SWAP3 POP SWAP3 POP DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x19 PUSH1 0xF9 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xBD7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x33 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP3 ISZERO PUSH2 0xC0F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x1 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xC1E JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xC61 JUMPI PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3137 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP7 PUSH2 0xC5B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH2 0xE19 JUMP JUMPDEST PUSH1 0x2 DUP5 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xC6F JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xDEA JUMPI PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x627 PUSH1 0xF3 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP6 PUSH2 0xCAC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1899 PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH2 0xCE4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x7 DUP9 ADD SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE DUP9 SLOAD DUP2 MSTORE PUSH2 0xD0C SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1835 JUMP JUMPDEST ISZERO DUP1 PUSH2 0xD1E JUMPI POP PUSH2 0xD1C DUP9 PUSH2 0x188D JUMP JUMPDEST ISZERO JUMPDEST DUP1 PUSH2 0xDB1 JUMPI POP PUSH1 0x4 DUP1 DUP10 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH2 0xD55 SWAP2 CALLER SWAP2 ADD PUSH2 0x1EC5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD81 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDA5 SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST PUSH2 0xDAF DUP8 DUP8 PUSH2 0x1145 JUMP JUMPDEST GT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3133 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xC5B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x7 PUSH1 0xFB SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH2 0x198 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x1F1E JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xFA0 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP8 PUSH2 0xE5F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x35 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP7 DUP9 GT ISZERO PUSH2 0xE99 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP7 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0xEBB SWAP1 PUSH2 0x110D JUMP JUMPDEST POP POP POP SWAP1 POP DUP1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x19 PUSH1 0xF9 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xEF9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x3985C109 PUSH1 0xE2 SHL DUP2 MSTORE PUSH20 0x0 SWAP1 PUSH4 0xE6170424 SWAP1 PUSH2 0xF3F SWAP1 DUP13 SWAP1 CALLER SWAP1 DUP14 SWAP1 DUP13 SWAP1 DUP13 SWAP1 DUP13 SWAP1 DUP13 SWAP1 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x1ED9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xF6B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF8F SWAP2 SWAP1 PUSH2 0x1D00 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1B PUSH1 0xF9 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x6B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFD2 DUP8 PUSH2 0x1895 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x19 PUSH1 0xF9 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x100D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE DUP7 PUSH2 0x1044 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x1060 JUMPI POP PUSH1 0x1 DUP6 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x105E JUMPI INVALID JUMPDEST EQ JUMPDEST DUP1 PUSH2 0x1081 JUMPI POP PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x1081 JUMPI POP PUSH1 0x2 DUP6 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x107F JUMPI INVALID JUMPDEST EQ JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3135 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x10BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x0 NOT DUP7 EQ ISZERO DUP1 PUSH2 0x10D4 JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EQ JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x189B PUSH1 0xF1 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xE19 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x38 SHL DUP2 AND ISZERO ISZERO SWAP2 PUSH8 0x200000000000000 DUP3 AND ISZERO ISZERO SWAP2 PUSH8 0x400000000000000 DUP2 AND ISZERO ISZERO SWAP2 PUSH8 0x800000000000000 SWAP1 SWAP2 AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x116A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP1 PUSH2 0x1F71 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0x3B9ACA00 DUP3 DUP2 MUL SWAP1 DUP4 SWAP1 DUP3 DIV EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x11BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x11FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x124B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x1265 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x127B JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x1288 JUMPI POP PUSH1 0x0 PUSH2 0x116D JUMP JUMPDEST DUP2 PUSH2 0x1388 NOT DUP2 PUSH2 0x1294 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x12D1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP POP PUSH2 0x2710 SWAP2 MUL PUSH2 0x1388 ADD DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x12F0 PUSH2 0x1B50 JUMP JUMPDEST PUSH2 0x12F9 DUP11 PUSH2 0x18A1 JUMP JUMPDEST ISZERO PUSH2 0x1317 JUMPI PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 NOT SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP POP PUSH2 0x1799 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 ADD MSTORE JUMPDEST DUP8 DUP2 PUSH1 0xE0 ADD MLOAD LT ISZERO PUSH2 0x16F8 JUMPI PUSH1 0xE0 DUP2 ADD MLOAD PUSH2 0x133B SWAP1 DUP12 SWAP1 PUSH2 0x18A6 JUMP JUMPDEST PUSH2 0x1344 JUMPI PUSH2 0x16E8 JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP11 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1E0 DUP6 ADD DUP2 SWAP1 MSTORE DUP4 MSTORE SWAP1 DUP14 SWAP1 MSTORE SWAP1 KECCAK256 PUSH2 0x137B DUP2 PUSH2 0x18F7 JUMP JUMPDEST POP PUSH1 0x80 DUP7 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP7 ADD SWAP3 SWAP1 SWAP3 MSTORE POP PUSH1 0xA0 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA EXP PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1E0 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xB3596F07 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP2 PUSH4 0xB3596F07 SWAP2 PUSH2 0x13CD SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x1EC5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x141D SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST DUP3 MSTORE PUSH1 0xC0 DUP3 ADD MLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0x143D JUMPI POP PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x143D SWAP1 DUP13 SWAP1 PUSH2 0x1835 JUMP JUMPDEST ISZERO PUSH2 0x1561 JUMPI DUP1 PUSH1 0x4 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1485 SWAP2 SWAP1 PUSH2 0x1EC5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x149D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14D5 SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD MLOAD DUP4 MLOAD PUSH1 0x0 SWAP3 PUSH2 0x14FA SWAP3 SWAP2 PUSH2 0x14F4 SWAP2 PUSH2 0x1922 JUMP JUMPDEST SWAP1 PUSH2 0x195C JUMP JUMPDEST PUSH2 0x120 DUP5 ADD MLOAD SWAP1 SWAP2 POP PUSH2 0x150D SWAP1 DUP3 PUSH2 0x1145 JUMP JUMPDEST PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH2 0x1533 SWAP1 PUSH2 0x1527 SWAP1 DUP4 SWAP1 PUSH2 0x1922 JUMP JUMPDEST PUSH2 0x160 DUP6 ADD MLOAD SWAP1 PUSH2 0x1145 JUMP JUMPDEST PUSH2 0x160 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD MLOAD PUSH2 0x1559 SWAP1 PUSH2 0x154D SWAP1 DUP4 SWAP1 PUSH2 0x1922 JUMP JUMPDEST PUSH2 0x180 DUP6 ADD MLOAD SWAP1 PUSH2 0x1145 JUMP JUMPDEST PUSH2 0x180 DUP5 ADD MSTORE POP JUMPDEST PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x1571 SWAP1 DUP13 SWAP1 PUSH2 0x199E JUMP JUMPDEST ISZERO PUSH2 0x16E6 JUMPI DUP1 PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP15 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15B9 SWAP2 SWAP1 PUSH2 0x1EC5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1609 SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST DUP3 PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x16B3 DUP2 PUSH1 0x6 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP16 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1658 SWAP2 SWAP1 PUSH2 0x1EC5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1670 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1684 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x16A8 SWAP2 SWAP1 PUSH2 0x1EAD JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MLOAD SWAP1 PUSH2 0x1145 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP4 ADD MLOAD DUP4 MLOAD PUSH2 0x16DF SWAP3 PUSH2 0x16D3 SWAP3 SWAP2 PUSH2 0x14F4 SWAP2 PUSH2 0x1922 JUMP JUMPDEST PUSH2 0x140 DUP5 ADD MLOAD SWAP1 PUSH2 0x1145 JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE JUMPDEST POP JUMPDEST PUSH1 0xE0 DUP2 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 MSTORE PUSH2 0x131F JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x120 ADD MLOAD GT PUSH2 0x170C JUMPI PUSH1 0x0 PUSH2 0x1721 JUMP JUMPDEST PUSH2 0x120 DUP2 ADD MLOAD PUSH2 0x160 DUP3 ADD MLOAD PUSH2 0x1721 SWAP2 PUSH2 0x195C JUMP JUMPDEST PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0x120 DUP2 ADD MLOAD PUSH2 0x1738 JUMPI PUSH1 0x0 PUSH2 0x174D JUMP JUMPDEST PUSH2 0x120 DUP2 ADD MLOAD PUSH2 0x180 DUP3 ADD MLOAD PUSH2 0x174D SWAP2 PUSH2 0x195C JUMP JUMPDEST PUSH2 0x180 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD MLOAD PUSH2 0x140 DUP4 ADD MLOAD PUSH2 0x176A SWAP3 PUSH2 0x19EF JUMP JUMPDEST PUSH2 0x100 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x120 DUP3 ADD MLOAD PUSH2 0x140 DUP4 ADD MLOAD PUSH2 0x160 DUP5 ADD MLOAD PUSH2 0x180 SWAP1 SWAP5 ADD MLOAD SWAP2 SWAP9 POP SWAP7 POP SWAP2 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x17E1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH2 0x2710 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x1825 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP DUP3 DUP2 PUSH2 0x2710 DUP7 MUL ADD DUP2 PUSH2 0x1265 JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1874 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP POP DUP2 MLOAD PUSH1 0x1 PUSH1 0x2 DUP4 MUL DUP2 ADD SWAP2 SWAP1 SWAP2 SHR AND ISZERO ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST SLOAD PUSH2 0xFFFF AND SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x38 SHL AND ISZERO ISZERO SWAP1 JUMP JUMPDEST MLOAD ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x18E5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP POP SWAP1 MLOAD PUSH1 0x3 PUSH1 0x2 SWAP1 SWAP3 MUL SHR AND ISZERO ISZERO SWAP1 JUMP JUMPDEST SLOAD PUSH2 0xFFFF DUP1 DUP3 AND SWAP3 PUSH1 0x10 DUP4 SWAP1 SHR DUP3 AND SWAP3 PUSH1 0x20 DUP2 SWAP1 SHR DUP4 AND SWAP3 PUSH1 0x30 DUP3 SWAP1 SHR PUSH1 0xFF AND SWAP3 PUSH1 0x40 SWAP3 SWAP1 SWAP3 SHR AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1931 JUMPI POP PUSH1 0x0 PUSH2 0x116D JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x193E JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x116A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP1 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x116A DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x1A1D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 LT PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3737 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x19DD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP POP SWAP1 MLOAD PUSH1 0x1 PUSH1 0x2 SWAP1 SWAP3 MUL SHR AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x19FF JUMPI POP PUSH1 0x0 NOT PUSH2 0x1A16 JUMP JUMPDEST PUSH2 0x1A13 DUP4 PUSH2 0x1A0D DUP7 DUP6 PUSH2 0x126E JUMP JUMPDEST SWAP1 PUSH2 0x1A54 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x1A3E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x1A4A JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x1A8E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH8 0xDE0B6B3A7640000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x1AD8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x198 SWAP2 SWAP1 PUSH2 0x1F1E JUMP JUMPDEST POP DUP3 DUP2 PUSH8 0xDE0B6B3A7640000 DUP7 MUL ADD DUP2 PUSH2 0x1265 JUMPI INVALID JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x160 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x240 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x180 DUP14 DUP16 SUB SLT ISZERO PUSH2 0x1C0C JUMPI DUP8 DUP9 REVERT JUMPDEST DUP13 CALLDATALOAD PUSH2 0x1C17 DUP2 PUSH2 0x1FF2 JUMP JUMPDEST SWAP12 POP PUSH1 0x20 DUP14 ADD CALLDATALOAD SWAP11 POP PUSH1 0x40 DUP14 ADD CALLDATALOAD PUSH2 0x1C2E DUP2 PUSH2 0x1FF2 JUMP JUMPDEST SWAP10 POP PUSH1 0x60 DUP14 ADD CALLDATALOAD SWAP9 POP PUSH1 0x80 DUP14 ADD CALLDATALOAD SWAP8 POP PUSH1 0xA0 DUP14 ADD CALLDATALOAD SWAP7 POP PUSH1 0xC0 DUP14 ADD CALLDATALOAD SWAP6 POP PUSH1 0xE0 DUP14 ADD CALLDATALOAD SWAP5 POP PUSH2 0x100 DUP14 ADD CALLDATALOAD SWAP4 POP PUSH2 0x120 DUP14 ADD CALLDATALOAD SWAP3 POP PUSH2 0x140 DUP14 ADD CALLDATALOAD SWAP2 POP PUSH2 0x160 DUP14 ADD CALLDATALOAD PUSH2 0x1C7A DUP2 PUSH2 0x1FF2 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x1CAA JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x1CB5 DUP2 PUSH2 0x1FF2 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH2 0x1CEF DUP2 PUSH2 0x1FF2 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D11 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x116A DUP2 PUSH2 0x200A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x1D38 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 CALLDATALOAD SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x1D4A DUP2 PUSH2 0x1FF2 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x1D5A DUP2 PUSH2 0x200A JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH2 0x1CEF DUP2 PUSH2 0x1FF2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1D9D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x1DAF DUP2 PUSH2 0x1FF2 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x1DBF DUP2 PUSH2 0x1FF2 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x1DCF DUP2 PUSH2 0x1FF2 JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x1DDF DUP2 PUSH2 0x1FF2 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1E04 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH1 0x3 DUP2 LT PUSH2 0x1DDF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1E40 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x1E67 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH1 0x3 DUP2 LT PUSH2 0x1E83 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x1E93 DUP2 PUSH2 0x1FF2 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP3 SWAP6 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP5 PUSH1 0xA0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1EBE JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 DUP10 AND DUP2 MSTORE SWAP7 DUP9 AND PUSH1 0x20 DUP9 ADD MSTORE PUSH1 0x40 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x60 DUP7 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 SLOAD PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1F4A JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x1F2E JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x1F5B JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2007 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2007 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODECOPY ADDRESS MSIZE SWAP13 DUP11 SLOAD DUP3 0xE0 0xA6 CALLDATASIZE LOG2 0xB1 SWAP6 0x4D DIFFICULTY DUP12 0x4D DUP2 0xC3 SIGNEXTEND 0xAB DUP11 0xE 0xE7 CALLDATACOPY MOD SLOAD PUSH7 0x7D7F01D64736F PUSH13 0x634300060C0033000000000000 ",
              "sourceMap": "1089:16337:82:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:329;;;;;;:::i;:::-;;:::i;:::-;;11452:1317;;;;;;:::i;:::-;;:::i;1496:72::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13224:880;;;;;;:::i;:::-;;:::i;4524:3429::-;;;;;;:::i;:::-;;:::i;9527:1536::-;;;;;;:::i;:::-;;:::i;1424:68::-;;;:::i;2517:879::-;;;;;;:::i;:::-;;:::i;8351:818::-;;;;;;:::i;:::-;;:::i;1760:329::-;1861:13;;1897:32;:7;:30;:32::i;:::-;-1:-1:-1;;1957:24:82;;;;;;;;;;;;-1:-1:-1;;;1957:24:82;;;;1860:69;;-1:-1:-1;1860:69:82;-1:-1:-1;1944:11:82;1936:46;;;;-1:-1:-1;;;1936:46:82;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;2006:27:82;;;;;;;;;;;;-1:-1:-1;;;2006:27:82;;;;1996:8;1988:46;;;;-1:-1:-1;;;1988:46:82;;;;;;;;:::i;:::-;-1:-1:-1;2059:24:82;;;;;;;;;;;;-1:-1:-1;;;2059:24:82;;;;2048:9;;2040:44;;;;-1:-1:-1;;;2040:44:82;;;;;;;;:::i;:::-;;1760:329;;;;:::o;11452:1317::-;11676:13;11699:32;:7;:30;:32::i;:::-;11675:56;;;;;11746:8;11756:27;;;;;;;;;;;;;-1:-1:-1;;;11756:27:82;;;11738:46;;;;;-1:-1:-1;;;11738:46:82;;;;;;;;:::i;:::-;;11855:17;11881:77;:66;11915:17;-1:-1:-1;;;;;11915:29:82;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11881:15;-1:-1:-1;;;;;11881:27:82;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:33;;:66::i;:::-;:75;:77::i;:::-;11855:103;;11964:26;11993:58;12000:14;-1:-1:-1;;;;;11993:32:82;;12026:13;11993:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:58::-;11964:87;-1:-1:-1;12057:18:82;12078:14;;:72;;12099:51;12116:33;:18;12139:9;12116:22;:33::i;:::-;12099:9;;:16;:51::i;:::-;12078:72;;;12095:1;12078:72;12349:28;;;;12450:35;;;;12421:92;;;-1:-1:-1;;;12421:92:82;;;;12057:93;;-1:-1:-1;12349:28:82;;;;;12318;;-1:-1:-1;;;;;12450:35:82;;;;12421:90;;:92;;;;;;;;;;;;;;12450:35;12421:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12383:130;;1557:11;12535:10;:48;;:163;;;;-1:-1:-1;12627:71:82;:21;1488:4;12627:32;:71::i;:::-;12595:20;:103;;12535:163;12706:52;;;;;;;;;;;;;-1:-1:-1;;;12706:52:82;;;12520:244;;;;;-1:-1:-1;;;12520:244:82;;;;;;;;:::i;:::-;;11452:1317;;;;;;;;;;;:::o;1496:72::-;1557:11;1496:72;:::o;13224:880::-;13643:21;;;;;13636:51;;-1:-1:-1;;;13636:51:82;;13608:25;;-1:-1:-1;;;;;13643:21:82;;;;13636:39;;:51;;13676:10;;13636:51;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13608:79;;13722:1;13702:17;:21;13725:47;;;;;;;;;;;;;-1:-1:-1;;;13725:47:82;;;13694:79;;;;;-1:-1:-1;;;13694:79:82;;;;;;;;:::i;:::-;;13795:15;:258;;;-1:-1:-1;13822:231:82;;-1:-1:-1;;;13822:231:82;;:12;;:35;;:231;;13869:14;;13895:10;;13917:17;;13946:12;;13970:10;;13992:8;;14012:13;;14037:6;;13822:231;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14061:32;;;;;;;;;;;;;-1:-1:-1;;;14061:32:82;;;13780:319;;;;;-1:-1:-1;;;13780:319:82;;;;;;;;:::i;:::-;;13224:880;;;;;;;;;:::o;4524:3429::-;4988:35;;:::i;:::-;5119:46;:7;:44;:46::i;:::-;5030:135;;5084:31;;;5030:135;;;5061:21;;;5030:135;;;5046:13;;;5030:135;;;5031:13;;;5030:135;;;-1:-1:-1;5195:27:82;;;;;;;;;;;-1:-1:-1;;;;5195:27:82;;;;5172:51;;;;-1:-1:-1;;;5172:51:82;;;;;;;;:::i;:::-;;5238:4;:13;;;5237:14;5253:24;;;;;;;;;;;;;-1:-1:-1;;;5253:24:82;;;5229:49;;;;;-1:-1:-1;;;5229:49:82;;;;;;;;:::i;:::-;-1:-1:-1;5305:24:82;;;;;;;;;;;;-1:-1:-1;;;5305:24:82;;;;5292:11;5284:46;;;;-1:-1:-1;;;5284:46:82;;;;;;;;:::i;:::-;;5345:4;:21;;;5368:31;;;;;;;;;;;;;-1:-1:-1;;;5368:31:82;;;5337:63;;;;;-1:-1:-1;;;5337:63:82;;;;;;;;:::i;:::-;-1:-1:-1;5504:16:82;5464:35;5456:64;:138;;;-1:-1:-1;5578:16:82;5540:33;5532:62;5456:138;5602:45;;;;;;;;;;;;;-1:-1:-1;;;5602:45:82;;;5441:212;;;;;-1:-1:-1;;;5441:212:82;;;;;;;;:::i;:::-;-1:-1:-1;5827:151:82;;;;;;;;;;;;;;;5872:11;;5891:12;;5929:8;5945:13;5966:6;5827:37;:151::i;:::-;5801:17;;;5660:318;5761:32;;;;5660:318;;;;;;;5705:25;;;5660:318;;;;5668:29;;;5660:318;;;-1:-1:-1;6028:33:82;;;;;;;;;;;-1:-1:-1;;;6028:33:82;;;;;;;;5985:77;;;;-1:-1:-1;;;5985:77:82;;;;;;;;:::i;:::-;;1210:7:80;6084:4:82;:17;;;:68;6160:56;;;;;;;;;;;;;-1:-1:-1;;;6160:56:82;;;6069:153;;;;;-1:-1:-1;;;6069:153:82;;;;;;;;:::i;:::-;-1:-1:-1;6437:15:82;;6376:25;;;;:82;;6437:15;6376:42;;6406:11;6376:29;:42::i;:::-;:53;;:82::i;:::-;6341:32;;;;:117;;;6550:29;;;;6587:44;;;;;;;;;;;-1:-1:-1;;;;6587:44:82;;;;;6514:65;;6499:138;;;;-1:-1:-1;;;6499:138:82;;;;;;;;:::i;:::-;-1:-1:-1;7073:33:82;7045:16;:62;7041:908;;;7225:4;:31;;;7258:38;;;;;;;;;;;;;-1:-1:-1;;;7258:38:82;;;7217:80;;;;;-1:-1:-1;;;7217:80:82;;;;;;;;:::i;:::-;-1:-1:-1;7355:10:82;;;;7324:30;;;;;;;;;;;;;:42;;-1:-1:-1;;;7355:10:82;;;;7324:30;:42::i;:::-;7323:43;:92;;;-1:-1:-1;7380:30:82;:7;:28;:30::i;:::-;:35;7323:92;:167;;;-1:-1:-1;7445:21:82;;;;;7438:52;;-1:-1:-1;;;7438:52:82;;-1:-1:-1;;;;;7445:21:82;;;;7438:39;;:52;;7478:11;;7438:52;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7429:6;:61;7323:167;7500:47;;;;;;;;;;;;;-1:-1:-1;;;7500:47:82;;;7306:249;;;;;-1:-1:-1;;;7306:249:82;;;;;;;;:::i;:::-;;7597:5;-1:-1:-1;;;;;7590:23:82;;7614:7;:21;;;;;;;;;;-1:-1:-1;;;;;7614:21:82;7590:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7564:23;;;:72;;;7762:25;;7790:56;;7825:20;7790:34;:56::i;:::-;7762:84;;7873:17;7863:6;:27;;7892:49;;;;;;;;;;;;;-1:-1:-1;;;7892:49:82;;;7855:87;;;;;-1:-1:-1;;;7855:87:82;;;;;;;;:::i;:::-;;7041:908;;4524:3429;;;;;;;;;;;;;:::o;9527:1536::-;9778:13;;;9836:32;:7;:30;:32::i;:::-;9777:91;;;;;;;9883:8;9893:27;;;;;;;;;;;;;-1:-1:-1;;;9893:27:82;;;9875:46;;;;;-1:-1:-1;;;9875:46:82;;;;;;;;:::i;:::-;-1:-1:-1;9946:24:82;;;;;;;;;;;;-1:-1:-1;;;9946:24:82;;;;9935:9;;9927:44;;;;-1:-1:-1;;;9927:44:82;;;;;;;;:::i;:::-;-1:-1:-1;10001:33:82;9982:15;:52;;;;;;;;;9978:1081;;;10068:40;;;;;;;;;;;;-1:-1:-1;;;10068:40:82;;;;10052:14;10044:65;;;;-1:-1:-1;;;10044:65:82;;;;;;;;:::i;:::-;;9978:1081;;;10145:35;10126:15;:54;;;;;;;;;10122:937;;;10216:42;;;;;;;;;;;;-1:-1:-1;;;10216:42:82;;;;10198:16;10190:69;;;;-1:-1:-1;;;10190:69:82;;;;;;;;:::i;:::-;-1:-1:-1;10660:38:82;;;;;;;;;;;;-1:-1:-1;;;10660:38:82;;;;10641:17;10633:66;;;;-1:-1:-1;;;10633:66:82;;;;;;;;:::i;:::-;-1:-1:-1;10757:10:82;;;;10726:30;;;;;;;;;;;;;:42;;-1:-1:-1;;;10757:10:82;;;;10726:30;:42::i;:::-;10725:43;:92;;;-1:-1:-1;10782:30:82;:7;:28;:30::i;:::-;:35;10725:92;:188;;;-1:-1:-1;10869:21:82;;;;;10862:51;;-1:-1:-1;;;10862:51:82;;-1:-1:-1;;;;;10869:21:82;;;;10862:39;;:51;;10902:10;;10862:51;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10831:28;:10;10846:12;10831:14;:28::i;:::-;:82;10725:188;10923:47;;;;;;;;;;;;;-1:-1:-1;;;10923:47:82;;;10708:270;;;;;-1:-1:-1;;;10708:270:82;;;;;;;;:::i;10122:937::-;11006:45;;;;;;;;;;;-1:-1:-1;;;11006:45:82;;;;10999:53;;-1:-1:-1;;;10999:53:82;;;;11006:45;10999:53;;;:::i;10122:937::-;9527:1536;;;;;;;;:::o;1424:68::-;1488:4;1424:68;:::o;2517:879::-;2881:24;;;;;;;;;;;;-1:-1:-1;;;2881:24:82;;;;2868:11;2860:46;;;;-1:-1:-1;;;2860:46:82;;;;;;;;:::i;:::-;-1:-1:-1;2943:43:82;;;;;;;;;;;;-1:-1:-1;;;2943:43:82;;;;2920:21;;;;2912:75;;;;-1:-1:-1;;;2912:75:82;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;3018:28:82;;2995:13;3018:28;;;;;;;;;;:53;;:51;:53::i;:::-;2994:77;;;;;3085:8;3095:27;;;;;;;;;;;;;-1:-1:-1;;;3095:27:82;;;3077:46;;;;;-1:-1:-1;;;3077:46:82;;;;;;;;:::i;:::-;-1:-1:-1;3145:202:82;;-1:-1:-1;;;3145:202:82;;:12;;:35;;:202;;3190:14;;3214:10;;3234:6;;3250:12;;3272:10;;3292:8;;3310:13;;3333:6;;3145:202;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3355:30;;;;;;;;;;;;;-1:-1:-1;;;3355:30:82;;;3130:261;;;;;-1:-1:-1;;;3130:261:82;;;;;;;;:::i;8351:818::-;8580:13;8596:33;:7;:31;:33::i;:::-;8580:49;;8644:8;8654:27;;;;;;;;;;;;;-1:-1:-1;;;8654:27:82;;;8636:46;;;;;-1:-1:-1;;;8636:46:82;;;;;;;;:::i;:::-;-1:-1:-1;8713:24:82;;;;;;;;;;;;-1:-1:-1;;;8713:24:82;;;;8697:14;8689:49;;;;-1:-1:-1;;;8689:49:82;;;;;;;;:::i;:::-;;8774:1;8761:10;:14;:99;;;;-1:-1:-1;8827:33:82;8814:8;8787:73;;;;;;;;;8761:99;8760:220;;;;8889:1;8874:12;:16;:105;;;;-1:-1:-1;8944:35:82;8931:8;8904:75;;;;;;;;;8874:105;8988:34;;;;;;;;;;;;;-1:-1:-1;;;8988:34:82;;;8745:283;;;;;-1:-1:-1;;;8745:283:82;;;;;;;;:::i;:::-;;-1:-1:-1;;9050:10:82;:25;;:53;;;-1:-1:-1;9079:10:82;-1:-1:-1;;;;;9079:24:82;;;9050:53;9111:47;;;;;;;;;;;;;-1:-1:-1;;;9111:47:82;;;9035:129;;;;;-1:-1:-1;;;9035:129:82;;;;;;;;:::i;9470:386:75:-;9653:9;-1:-1:-1;;;9685:24:75;;9684:31;;;9736:12;9724:24;;9723:31;;;9775:15;9763:27;;9762:34;;;9817:22;9805:34;;;9804:41;;;9470:386::o;851:162:13:-;909:7;936:5;;;955:6;;;;947:46;;;;-1:-1:-1;;;947:46:13;;;;;;;:::i;:::-;1007:1;-1:-1:-1;851:162:13;;;;;:::o;3173:204:86:-;3225:7;530:3;3257:17;;;;:1;;:17;3288:22;:27;3317:35;;;;;;;;;;;;;-1:-1:-1;;;3317:35:86;;;3280:73;;;;;-1:-1:-1;;;3280:73:86;;;;;;;;:::i;:::-;-1:-1:-1;3366:6:86;3173:204;-1:-1:-1;;3173:204:86:o;2416:279::-;2508:28;;;;;;;;;;;;-1:-1:-1;;;2508:28:86;;;;2477:7;;2500:6;2492:45;;;;-1:-1:-1;;;2492:45:86;;;;;;;;:::i;:::-;-1:-1:-1;2619:35:86;;;;;;;;;2563:1;2619:35;;;-1:-1:-1;;;2619:35:86;;;;2559:5;;;432:4;2585:25;;2584:33;2579:38;;;2571:84;;;;-1:-1:-1;;;2571:84:86;;;;;;;;:::i;:::-;;2689:1;2680:5;432:4;2670:1;:7;:15;2669:21;;;;;;;2416:279;-1:-1:-1;;;;2416:279:86:o;802:351:84:-;880:7;899:10;;;:29;;-1:-1:-1;913:15:84;;899:29;895:58;;;-1:-1:-1;945:1:84;938:8;;895:58;1020:10;-1:-1:-1;;1020:10:84;983:47;;;;;974:5;:56;;1038:35;;;;;;;;;;;;;-1:-1:-1;;;1038:35:84;;;959:120;;;;;-1:-1:-1;;;959:120:84;;;;;;;;:::i;:::-;-1:-1:-1;;466:3:84;1094:18;;536:21;1094:33;1093:55;;802:351::o;5296:2773:80:-;5613:7;5628;5643;5658;5673;5695:40;;:::i;:::-;5746:20;:10;:18;:20::i;:::-;5742:73;;;5784:1;5787;5790;5793;-1:-1:-1;;5776:32:80;;;;;;;;;;;;;5742:73;5834:1;5825:6;;;:10;5820:1681;5846:13;5837:4;:6;;;:22;5820:1681;;;5926:6;;;;5884:49;;:10;;:41;:49::i;:::-;5879:83;;5945:8;;5879:83;6008:6;;;;5999:16;;;;;;;;;;;;;-1:-1:-1;;;;;5999:16:80;5970:26;;;:45;;;6070:40;;;;;;;;6178:58;6070:40;6178:56;:58::i;:::-;-1:-1:-1;6159:13:80;;;6119:117;;;6130:25;;;6119:117;;;;-1:-1:-1;6120:8:80;;;6119:117;;;;6262:2;:17;-1:-1:-1;6245:14:80;;:34;6352:26;;;;6311:68;;-1:-1:-1;;;6311:68:80;;-1:-1:-1;;;;;6311:40:80;;;;;:68;;6352:26;6311:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6287:92;;6392:25;;;;:30;;;;:72;;-1:-1:-1;6457:6:80;;;;6426:38;;:10;;:30;:38::i;:::-;6388:621;;;6517:14;:28;;;;;;;;;;-1:-1:-1;;;;;6517:28:80;-1:-1:-1;;;;;6510:46:80;;6557:4;6510:52;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6476:31;;;:86;;;6676:14;;;;6613:21;;6573:27;;6613:78;;6676:14;6613:58;;:25;:58::i;:::-;:62;;:78::i;:::-;6730:25;;;;6573:118;;-1:-1:-1;6730:50:80;;6573:118;6730:29;:50::i;:::-;6702:25;;;:78;6845:8;;;;6805:50;;6821:33;;:19;;:23;:33::i;:::-;6805:11;;;;;:15;:50::i;:::-;6791:11;;;:64;6964:25;;;;6896:104;;6940:50;;:19;;:23;:50::i;:::-;6896:28;;;;;:32;:104::i;:::-;6865:28;;;:135;-1:-1:-1;6388:621:80;7044:6;;;;7021:30;;:10;;:22;:30::i;:::-;7017:478;;;7101:14;:37;;;;;;;;;;-1:-1:-1;;;;;7101:37:80;-1:-1:-1;;;;;7094:55:80;;7161:4;7094:81;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7063:4;:28;;:112;;;;;7216:117;7267:14;:39;;;;;;;;;;-1:-1:-1;;;;;7267:39:80;-1:-1:-1;;;;;7260:57:80;;7318:4;7260:63;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7216:28;;;;;:32;:117::i;:::-;7185:28;;;:148;;;7461:14;;;;7401:21;;7366:120;;7401:75;;7461:14;7401:55;;:25;:55::i;:75::-;7366:19;;;;;:23;:120::i;:::-;7344:19;;;:142;7017:478;5820:1681;;5861:6;;;:8;;;;;;5820:1681;;;7549:1;7521:4;:25;;;:29;:78;;7598:1;7521:78;;;7569:25;;;;7553:11;;;;:42;;:15;:42::i;:::-;7507:11;;;:92;7636:25;;;;:107;;7742:1;7636:107;;;7707:25;;;;7674:28;;;;:59;;:32;:59::i;:::-;7605:28;;;:138;;;7811:25;;;;7844:19;;;;7770:135;;:33;:135::i;:::-;7750:17;;;:155;;;7926:25;;;;7959:19;;;;7986:11;;;;8005:28;;;;;7926:25;;-1:-1:-1;7959:19:80;-1:-1:-1;7986:11:80;;-1:-1:-1;8005:28:80;;-1:-1:-1;7750:155:80;-1:-1:-1;5296:2773:80;;;;;;;;;;;;;:::o;1400:404:84:-;1518:28;;;;;;;;;;;;-1:-1:-1;;;1518:28:84;;;;1478:7;;1501:15;1493:54;;;;-1:-1:-1;;;1493:54:84;;;;;;;;:::i;:::-;-1:-1:-1;1687:35:84;;;;;;;;;1591:1;1687:35;;;-1:-1:-1;;;1687:35:84;;;;1578:14;;;466:3;1624:34;;1623:56;1614:65;;;1599:129;;;;-1:-1:-1;;;1599:129:84;;;;;;;;:::i;:::-;;1789:10;1771:14;466:3;1743:5;:25;:42;1742:57;;;;3100:260:76;3230:4;3267:3;3252:12;:18;3272:23;;;;;;;;;;;;;-1:-1:-1;;;3272:23:76;;;3244:52;;;;;-1:-1:-1;;;3244:52:76;;;;;;;;:::i;:::-;-1:-1:-1;;3310:9:76;;3343:1;3339;3324:16;;:20;;3310:35;;;;3309:41;:46;;3100:260;;;;:::o;2848:135:75:-;2957:9;2969;2957:21;;2848:135::o;6029:145::-;6139:9;-1:-1:-1;;;6139:24:75;6138:31;;;6029:145::o;3921:122:76:-;4024:9;:14;;3921:122::o;2013:265::-;2154:4;2189:3;2174:12;:18;2194:23;;;;;;;;;;;;;-1:-1:-1;;;2194:23:76;;;2166:52;;;;;-1:-1:-1;;;2166:52:76;;;;;;;;:::i;:::-;-1:-1:-1;;2232:9:76;;2267:1;2261;2246:16;;;2232:31;2231:37;:42;;;2013:265::o;10085:606:75:-;10296:9;10339;10327:21;;;;1692:2;10356:85;;;;;;1754:2;10449:77;;;;;;1815:2;10534:67;;;;;;2113:2;10609:71;;;;;;10085:606::o;2058:419:13:-;2116:7;2341:6;2337:35;;-1:-1:-1;2364:1:13;2357:8;;2337:35;2390:5;;;2394:1;2390;:5;:1;2409:5;;;;;:10;2401:56;;;;-1:-1:-1;;;2401:56:13;;;;;;;:::i;2908:124::-;2966:7;2988:39;2992:1;2995;2988:39;;;;;;;;;;;;;;;;;:3;:39::i;2565:248:76:-;2687:4;2724:3;2709:12;:18;2729:23;;;;;;;;;;;;;-1:-1:-1;;;2729:23:76;;;2701:52;;;;;-1:-1:-1;;;2701:52:76;;;;;;;;:::i;:::-;-1:-1:-1;;2767:9:76;;2802:1;2796;2781:16;;;2767:31;2766:37;:42;;;2565:248::o;8399:321:80:-;8565:7;8584:19;8580:43;;-1:-1:-1;;;8605:18:80;;8580:43;8637:78;8700:14;8638:53;:20;8670;8638:31;:53::i;:::-;8637:62;;:78::i;:::-;8630:85;;8399:321;;;;;;:::o;3483:332:13:-;3585:7;3677:12;3670:5;3662:28;;;;-1:-1:-1;;;3662:28:13;;;;;;;;:::i;:::-;;3696:9;3712:1;3708;:5;;;;;;;3483:332;-1:-1:-1;;;;;3483:332:13:o;1571:279:86:-;1663:28;;;;;;;;;;;;-1:-1:-1;;;1663:28:86;;;;1632:7;;1655:6;1647:45;;;;-1:-1:-1;;;1647:45:86;;;;;;;;:::i;:::-;-1:-1:-1;1774:35:86;;;;;;;;;1718:1;1774:35;;;-1:-1:-1;;;1774:35:86;;;;1714:5;;;344:4;1740:25;;1739:33;1734:38;;;1726:84;;;;-1:-1:-1;;;1726:84:86;;;;;;;;:::i;:::-;;1844:1;1835:5;344:4;1825:1;:7;:15;1824:21;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1878:1925::-;;;;;;;;;;;;;2319:3;2307:9;2298:7;2294:23;2290:33;2287:2;;;-1:-1;;2326:12;2287:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;2378:63;-1:-1;2478:2;2548:22;;1282:20;;-1:-1;2617:2;2656:22;;72:20;97:33;72:20;97:33;:::i;:::-;2625:63;-1:-1;2725:2;2764:22;;1667:20;;-1:-1;2833:3;2873:22;;1667:20;;-1:-1;2942:3;2982:22;;1667:20;;-1:-1;3051:3;3091:22;;1667:20;;-1:-1;3160:3;3252:22;;875:20;;-1:-1;3321:3;3401:22;;1490:20;;-1:-1;3470:3;3535:22;;1089:20;;-1:-1;3604:3;3645:22;;1667:20;;-1:-1;3714:3;3755:22;;72:20;97:33;72:20;97:33;:::i;:::-;3723:64;;;;2281:1522;;;;;;;;;;;;;;:::o;3810:1355::-;;;;;;;;;4150:3;4138:9;4129:7;4125:23;4121:33;4118:2;;;-1:-1;;4157:12;4118:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;4209:63;-1:-1;4309:2;4348:22;;1667:20;;-1:-1;4417:2;4456:22;;1667:20;;-1:-1;4525:2;4616:22;;875:20;;-1:-1;4685:3;4765:22;;1490:20;;-1:-1;4834:3;4899:22;;1089:20;;-1:-1;4968:3;5008:22;;1667:20;;-1:-1;5077:3;5117:22;;72:20;97:33;72:20;97:33;:::i;:::-;5086:63;;;;4112:1053;;;;;;;;;;;:::o;5172:257::-;;5284:2;5272:9;5263:7;5259:23;5255:32;5252:2;;;-1:-1;;5290:12;5252:2;354:6;348:13;366:30;390:5;366:30;:::i;5436:1411::-;;;;;;;;;5804:3;5792:9;5783:7;5779:23;5775:33;5772:2;;;-1:-1;;5811:12;5772:2;1295:6;1282:20;5863:94;;5994:2;6037:9;6033:22;72:20;97:33;124:5;97:33;:::i;:::-;6002:63;-1:-1;6102:2;6138:22;;206:20;231:30;206:20;231:30;:::i;:::-;6110:60;-1:-1;6207:2;6298:22;;875:20;;-1:-1;6367:3;6447:22;;1490:20;;-1:-1;6516:3;6581:22;;1089:20;;-1:-1;6650:3;6690:22;;1667:20;;-1:-1;6759:3;6799:22;;72:20;97:33;72:20;97:33;:::i;6854:865::-;;;;;;7087:3;7075:9;7066:7;7062:23;7058:33;7055:2;;;-1:-1;;7094:12;7055:2;1295:6;1282:20;7146:94;;7277:2;7320:9;7316:22;72:20;97:33;124:5;97:33;:::i;:::-;7285:63;-1:-1;7385:2;7439:22;;490:20;515:48;490:20;515:48;:::i;:::-;7393:78;-1:-1;7508:2;7562:22;;490:20;515:48;490:20;515:48;:::i;:::-;7516:78;-1:-1;7631:3;7671:22;;72:20;97:33;72:20;97:33;:::i;:::-;7640:63;;;;7049:670;;;;;;;;:::o;7726:929::-;;;;;;7991:3;7979:9;7970:7;7966:23;7962:33;7959:2;;;-1:-1;;7998:12;7959:2;1295:6;1282:20;8050:94;;8181:2;8264:9;8260:22;1490:20;8189:103;;8329:2;8372:9;8368:22;1667:20;8337:63;;8437:2;8480:9;8476:22;1667:20;8445:63;;8545:3;8611:9;8607:22;664:20;19244:1;19237:5;19234:12;19224:2;;-1:-1;;19250:12;8662:428;;;8814:2;8802:9;8793:7;8789:23;8785:32;8782:2;;;-1:-1;;8820:12;8782:2;-1:-1;;1282:20;;;9003:2;9042:22;;;1667:20;;-1:-1;8776:314::o;9097:975::-;;;;;;;9339:3;9327:9;9318:7;9314:23;9310:33;9307:2;;;-1:-1;;9346:12;9307:2;1295:6;1282:20;9398:94;;9529:2;9572:9;9568:22;1667:20;9537:63;;9637:2;9702:9;9698:22;664:20;19244:1;19237:5;19234:12;19224:2;;-1:-1;;19250:12;19224:2;9645:85;-1:-1;9767:2;9806:22;;72:20;97:33;72:20;97:33;:::i;:::-;9301:771;;;;-1:-1;9301:771;;9875:3;9915:22;;1667:20;;9984:3;10024:22;;;1667:20;;-1:-1;9301:771;-1:-1;;9301:771::o;10079:263::-;;10194:2;10182:9;10173:7;10169:23;10165:32;10162:2;;;-1:-1;;10200:12;10162:2;-1:-1;1815:13;;10156:186;-1:-1;10156:186::o;13058:222::-;-1:-1;;;;;17573:54;;;;10726:37;;13185:2;13170:18;;13156:124::o;13532:1404::-;-1:-1;;;;;17573:54;;;10726:37;;17573:54;;;14216:2;14201:18;;10428:58;14307:2;14292:18;;11034;;;;14450:2;14435:18;;11034;;;;12603:23;;14620:3;14605:19;;11034:18;17584:42;14722:19;;11034:18;14829:3;14814:19;;11034:18;17573:54;;;14921:3;14906:19;;10726:37;14027:3;14012:19;;13998:938::o;14943:310::-;;15090:2;;15111:17;15104:47;11343:5;16439:12;16596:6;15090:2;15079:9;15075:18;16584:19;-1:-1;18170:101;18184:6;18181:1;18178:13;18170:101;;;18251:11;;;;;18245:18;18232:11;;;16624:14;18232:11;18225:39;18199:10;;18170:101;;;18286:6;18283:1;18280:13;18277:2;;;-1:-1;16624:14;18342:6;15079:9;18333:16;;18326:27;18277:2;-1:-1;18626:7;18610:14;-1:-1;;18606:28;11501:39;;;;16624:14;11501:39;;15061:192;-1:-1;;;15061:192::o;15260:416::-;15460:2;15474:47;;;11777:2;15445:18;;;16584:19;11813:29;16624:14;;;11793:50;11862:12;;;15431:245::o;15683:416::-;15883:2;15897:47;;;12113:2;15868:18;;;16584:19;12149:34;16624:14;;;12129:55;-1:-1;;;12204:12;;;12197:25;12241:12;;;15854:245::o;16106:238::-;11034:18;;;16241:2;16226:18;;16212:132::o;18757:117::-;-1:-1;;;;;17573:54;;18816:35;;18806:2;;18865:1;;18855:12;18806:2;18800:74;:::o;18881:111::-;18962:5;16908:13;16901:21;18940:5;18937:32;18927:2;;18983:1;;18973:12"
            },
            "methodIdentifiers": {
              "REBALANCE_UP_LIQUIDITY_RATE_THRESHOLD()": "abfcc86a",
              "REBALANCE_UP_USAGE_RATIO_THRESHOLD()": "5494eb8a",
              "validateBorrow(address,DataTypes.ReserveData storage,address,uint256,uint256,uint256,uint256,mapping(address => DataTypes.ReserveData) storage,DataTypes.UserConfigurationMap storage,mapping(uint256 => address) storage,uint256,address)": "721a92f9",
              "validateDeposit(DataTypes.ReserveData storage,uint256)": "0eca322b",
              "validateRebalanceStableBorrowRate(DataTypes.ReserveData storage,address,IERC20,IERC20,address)": "548cad09",
              "validateRepay(DataTypes.ReserveData storage,uint256,DataTypes.InterestRateMode,address,uint256,uint256)": "fa0c2149",
              "validateSetUseReserveAsCollateral(DataTypes.ReserveData storage,address,bool,mapping(address => DataTypes.ReserveData) storage,DataTypes.UserConfigurationMap storage,mapping(uint256 => address) storage,uint256,address)": "5fa297e5",
              "validateSwapRateMode(DataTypes.ReserveData storage,DataTypes.UserConfigurationMap storage,uint256,uint256,DataTypes.InterestRateMode)": "a8695b1d",
              "validateWithdraw(address,uint256,uint256,mapping(address => DataTypes.ReserveData) storage,DataTypes.UserConfigurationMap storage,mapping(uint256 => address) storage,uint256,address)": "d09db04a"
            }
          }
        }
      },
      "contracts/protocol/libraries/math/MathUtils.sol": {
        "MathUtils": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bd95f86785acf0a5a7b3d7de5022d66faa865b34d41001742ee3cc7d5199969964736f6c634300060c0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBD SWAP6 0xF8 PUSH8 0x85ACF0A5A7B3D7DE POP 0x22 0xD6 PUSH16 0xAA865B34D41001742EE3CC7D51999699 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "192:2880:83:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bd95f86785acf0a5a7b3d7de5022d66faa865b34d41001742ee3cc7d5199969964736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBD SWAP6 0xF8 PUSH8 0x85ACF0A5A7B3D7DE POP 0x22 0xD6 PUSH16 0xAA865B34D41001742EE3CC7D51999699 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "192:2880:83:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "contracts/protocol/libraries/math/PercentageMath.sol": {
        "PercentageMath": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e98aaa475cd62e3ddc619bb45bcd7a88ab2001c146400b5920464ccb7af21c5f64736f6c634300060c0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE9 DUP11 0xAA SELFBALANCE 0x5C 0xD6 0x2E RETURNDATASIZE 0xDC PUSH2 0x9BB4 JUMPDEST 0xCD PUSH27 0x88AB2001C146400B5920464CCB7AF21C5F64736F6C634300060C00 CALLER ",
              "sourceMap": "402:1404:84:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e98aaa475cd62e3ddc619bb45bcd7a88ab2001c146400b5920464ccb7af21c5f64736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE9 DUP11 0xAA SELFBALANCE 0x5C 0xD6 0x2E RETURNDATASIZE 0xDC PUSH2 0x9BB4 JUMPDEST 0xCD PUSH27 0x88AB2001C146400B5920464CCB7AF21C5F64736F6C634300060C00 CALLER ",
              "sourceMap": "402:1404:84:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "contracts/protocol/libraries/math/RayMathNoRounding.sol": {
        "RayMathNoRounding": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d15f31502ee4e2cdb85e1d186b78bf8fa2d859036030ca1e9b134e84200cf75c64736f6c634300060c0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD1 0x5F BALANCE POP 0x2E 0xE4 0xE2 0xCD 0xB8 0x5E SAR XOR PUSH12 0x78BF8FA2D859036030CA1E9B SGT 0x4E DUP5 KECCAK256 0xC 0xF7 0x5C PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "143:719:85:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d15f31502ee4e2cdb85e1d186b78bf8fa2d859036030ca1e9b134e84200cf75c64736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD1 0x5F BALANCE POP 0x2E 0xE4 0xE2 0xCD 0xB8 0x5E SAR XOR PUSH12 0x78BF8FA2D859036030CA1E9B SGT 0x4E DUP5 KECCAK256 0xC 0xF7 0x5C PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "143:719:85:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "contracts/protocol/libraries/math/WadRayMath.sol": {
        "WadRayMath": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122022587d0a15ae0044bc5658b067b1555b9cc4188c69e0c59957cdc065a2c5023a64736f6c634300060c0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 PC PUSH30 0xA15AE0044BC5658B067B1555B9CC4188C69E0C59957CDC065A2C5023A64 PUSH20 0x6F6C634300060C00330000000000000000000000 ",
              "sourceMap": "289:3090:86:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122022587d0a15ae0044bc5658b067b1555b9cc4188c69e0c59957cdc065a2c5023a64736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 PC PUSH30 0xA15AE0044BC5658B067B1555B9CC4188C69E0C59957CDC065A2C5023A64 PUSH20 0x6F6C634300060C00330000000000000000000000 ",
              "sourceMap": "289:3090:86:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "contracts/protocol/libraries/types/DataTypes.sol": {
        "DataTypes": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220994213952bddcef31a0dfc76b05ac29d3fd5b752f96fa2278343c51a37de9e1164736f6c634300060c0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP10 TIMESTAMP SGT SWAP6 0x2B 0xDD 0xCE RETURN BYTE 0xD 0xFC PUSH23 0xB05AC29D3FD5B752F96FA2278343C51A37DE9E1164736F PUSH13 0x634300060C0033000000000000 ",
              "sourceMap": "62:1467:87:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220994213952bddcef31a0dfc76b05ac29d3fd5b752f96fa2278343c51a37de9e1164736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP10 TIMESTAMP SGT SWAP6 0x2B 0xDD 0xCE RETURN BYTE 0xD 0xFC PUSH23 0xB05AC29D3FD5B752F96FA2278343C51A37DE9E1164736F PUSH13 0x634300060C0033000000000000 ",
              "sourceMap": "62:1467:87:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "contracts/protocol/tokenization/AToken.sol": {
        "AToken": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "BalanceTransfer",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "underlyingAsset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "treasury",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "incentivesController",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "aTokenDecimals",
                  "type": "uint8"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "aTokenName",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "aTokenSymbol",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "Mint",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "ATOKEN_REVISION",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "EIP712_REVISION",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PERMIT_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "POOL",
              "outputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "RESERVE_TREASURY_ADDRESS",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "UNDERLYING_ASSET_ADDRESS",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "_nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiverOfUnderlying",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "burn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "subtractedValue",
                  "type": "uint256"
                }
              ],
              "name": "decreaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getIncentivesController",
              "outputs": [
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getScaledUserBalanceAndSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "handleRepayment",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "addedValue",
                  "type": "uint256"
                }
              ],
              "name": "increaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "treasury",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "underlyingAsset",
                  "type": "address"
                },
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "incentivesController",
                  "type": "address"
                },
                {
                  "internalType": "uint8",
                  "name": "aTokenDecimals",
                  "type": "uint8"
                },
                {
                  "internalType": "string",
                  "name": "aTokenName",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "aTokenSymbol",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "mintToTreasury",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "scaledBalanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "scaledTotalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferOnLiquidation",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferUnderlyingTo",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052600080553480156200001557600080fd5b50604080518082018252600b8082526a105513d2d15397d253541360aa1b60208084018281528551808701909652928552840152815191929160009162000060916037919062000094565b5081516200007690603890602085019062000094565b506039805460ff191660ff9290921691909117905550620001309050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000d757805160ff191683800117855562000107565b8280016001018555821562000107579182015b8281111562000107578251825591602001919060010190620000ea565b506200011592915062000119565b5090565b5b808211156200011557600081556001016200011a565b61282280620001406000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80637535d2461161010f578063ae167335116100a2578063d505accf11610071578063d505accf146106aa578063d7020d0a146106fb578063dd62ed3e14610737578063f866c31914610765576101e5565b8063ae1673351461066c578063b16a19de14610674578063b1bf962d1461067c578063b9844d8d14610684576101e5565b806388dd91a1116100de57806388dd91a1146105e057806395d89b411461060c578063a457c2d714610614578063a9059cbb14610640576101e5565b80637535d2461461058957806375d26413146105ad57806378160376146105b55780637df5bd3b146105bd576101e5565b80631da24f3e116101875780633644e515116101565780633644e51514610503578063395093511461050b5780634efecaa51461053757806370a0823114610563576101e5565b80631da24f3e1461048157806323b872dd146104a757806330adf81f146104dd578063313ce567146104e5576101e5565b80630bd7ad3b116101c35780630bd7ad3b146102e6578063156e29f61461030057806318160ddd14610332578063183fb4131461033a576101e5565b806306fdde03146101ea578063095ea7b3146102675780630afbcdc9146102a7575b600080fd5b6101f261079b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102936004803603604081101561027d57600080fd5b506001600160a01b038135169060200135610832565b604080519115158252519081900360200190f35b6102cd600480360360208110156102bd57600080fd5b50356001600160a01b0316610850565b6040805192835260208301919091528051918290030190f35b6102ee61086d565b60408051918252519081900360200190f35b6102936004803603606081101561031657600080fd5b506001600160a01b038135169060208101359060400135610872565b6102ee610a40565b61047f600480360361010081101561035157600080fd5b6001600160a01b038235811692602081013582169260408201358316926060830135169160ff6080820135169181019060c0810160a082013564010000000081111561039c57600080fd5b8201836020820111156103ae57600080fd5b803590602001918460018302840111640100000000831117156103d057600080fd5b9193909290916020810190356401000000008111156103ee57600080fd5b82018360208201111561040057600080fd5b8035906020019184600183028401116401000000008311171561042257600080fd5b91939092909160208101903564010000000081111561044057600080fd5b82018360208201111561045257600080fd5b8035906020019184600183028401116401000000008311171561047457600080fd5b509092509050610aea565b005b6102ee6004803603602081101561049757600080fd5b50356001600160a01b0316610e67565b610293600480360360608110156104bd57600080fd5b506001600160a01b03813581169160208101359091169060400135610e72565b6102ee610f32565b6104ed610f56565b6040805160ff9092168252519081900360200190f35b6102ee610f5f565b6102936004803603604081101561052157600080fd5b506001600160a01b038135169060200135610f65565b6102ee6004803603604081101561054d57600080fd5b506001600160a01b038135169060200135610fb3565b6102ee6004803603602081101561057957600080fd5b50356001600160a01b0316611059565b6105916110e8565b604080516001600160a01b039092168252519081900360200190f35b6105916110f7565b6101f2611106565b61047f600480360360408110156105d357600080fd5b5080359060200135611123565b61047f600480360360408110156105f657600080fd5b506001600160a01b03813516906020013561124a565b6101f26112d4565b6102936004803603604081101561062a57600080fd5b506001600160a01b038135169060200135611335565b6102936004803603604081101561065657600080fd5b506001600160a01b03813516906020013561139d565b6105916113fa565b610591611409565b6102ee611418565b6102ee6004803603602081101561069a57600080fd5b50356001600160a01b0316611422565b61047f600480360360e08110156106c057600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611434565b61047f6004803603608081101561071157600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561167b565b6102ee6004803603604081101561074d57600080fd5b506001600160a01b0381358116916020013516611820565b61047f6004803603606081101561077b57600080fd5b506001600160a01b0381358116916020810135909116906040013561184b565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108275780601f106107fc57610100808354040283529160200191610827565b820191906000526020600020905b81548152906001019060200180831161080a57829003601f168201915b505050505090505b90565b600061084661083f61191c565b8484611920565b5060015b92915050565b60008061085c83611a0c565b610864611a27565b91509150915091565b600181565b603c546000906001600160a01b031661088961191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906109375760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108fc5781810151838201526020016108e4565b50505050905090810190601f1680156109295780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600061094385611a0c565b905060006109518585611a2d565b6040805180820190915260028152611a9b60f11b6020820152909150816109b95760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506109c48682611b34565b6040805186815290516001600160a01b038816916000916000805160206127148339815191529181900360200190a3604080518681526020810186905281516001600160a01b038916927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25015949350505050565b600080610a4b611a27565b905080610a5c57600091505061082f565b603c54603e546040805163d15e005360e01b81526001600160a01b0392831660048201529051610ae493929092169163d15e005391602480820192602092909190829003018186803b158015610ab157600080fd5b505afa158015610ac5573d6000803e3d6000fd5b505050506040513d6020811015610adb57600080fd5b50518290611c85565b91505090565b6000610af4611d43565b60015490915060ff1680610b0b5750610b0b611d48565b80610b17575060005481115b610b525760405162461bcd60e51b815260040180806020018281038252602e8152602001806126e6602e913960400191505060405180910390fd5b60015460ff16158015610b71576001805460ff19168117905560008290555b60004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f89896040518083838082843780830192505050925050506040518091039020604051806040016040528060018152602001603160f81b81525080519060200120833060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120603b81905550610c6989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d4e92505050565b610ca887878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d6192505050565b610cb18a611d74565b8d603c60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c603d60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b603e60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a603f60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508d6001600160a01b03168c6001600160a01b03167fb19e051f8af41150ccccb3fc2c2d8d15f4a4cf434f32a559ba75fe73d6eea20b8f8e8e8e8e8e8e8e8e604051808a6001600160a01b03168152602001896001600160a01b031681526020018860ff16815260200180602001806020018060200184810384528a8a82818152602001925080828437600083820152601f01601f191690910185810384528881526020019050888880828437600083820152601f01601f191690910185810383528681526020019050868680828437600083820152604051601f909101601f19169092018290039e50909c50505050505050505050505050a3508015610e58576001805460ff191690555b50505050505050505050505050565b600061084a82611a0c565b6000610e7f848484611d8a565b610eef84610e8b61191c565b610eea856040518060600160405280602881526020016126be602891396001600160a01b038a16600090815260356020526040812090610ec961191c565b6001600160a01b031681526020810191909152604001600020549190611d97565b611920565b826001600160a01b0316846001600160a01b0316600080516020612714833981519152846040518082815260200191505060405180910390a35060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60395460ff1690565b603b5481565b6000610846610f7261191c565b84610eea8560356000610f8361191c565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611df1565b603c546000906001600160a01b0316610fca61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b8152509061103b5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50603e54611053906001600160a01b03168484611e52565b50919050565b603c54603e546040805163d15e005360e01b81526001600160a01b039283166004820152905160009361084a93169163d15e0053916024808301926020929190829003018186803b1580156110ad57600080fd5b505afa1580156110c1573d6000803e3d6000fd5b505050506040513d60208110156110d757600080fd5b50516110e284611a0c565b90611c85565b603c546001600160a01b031690565b6000611101611ea4565b905090565b604051806040016040528060018152602001603160f81b81525081565b603c546001600160a01b031661113761191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906111a85760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50816111b357611246565b603d546001600160a01b03166111d2816111cd8585611a2d565b611b34565b6040805184815290516001600160a01b038316916000916000805160206127148339815191529181900360200190a3604080518481526020810184905281516001600160a01b038416927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a2505b5050565b603c546001600160a01b031661125e61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906112cf5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b505050565b60388054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108275780601f106107fc57610100808354040283529160200191610827565b600061084661134261191c565b84610eea856040518060600160405280602581526020016127c8602591396035600061136c61191c565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611d97565b60006113b16113aa61191c565b8484611d8a565b826001600160a01b03166113c361191c565b6001600160a01b0316600080516020612714833981519152846040518082815260200191505060405180910390a350600192915050565b603d546001600160a01b031690565b603e546001600160a01b031690565b6000611101611a27565b603a6020526000908152604090205481565b6001600160a01b03871661147f576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa7aba722a960991b604482015290519081900360640190fd5b834211156114c9576040805162461bcd60e51b815260206004820152601260248201527124a72b20a624a22fa2ac2824a920aa24a7a760711b604482015290519081900360640190fd5b6001600160a01b038088166000818152603a6020908152604080832054603b5482517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a0850181905260c08086018b90528251808703909101815260e08601835280519084012061190160f01b6101008701526101028601969096526101228086019690965281518086039096018652610142850180835286519684019690962093909552610162840180825283905260ff88166101828501526101a284018790526101c284018690525191926001926101e28083019392601f198301929081900390910190855afa1580156115de573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614611641576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b61164c826001611df1565b6001600160a01b038a166000908152603a6020526040902055611670898989611920565b505050505050505050565b603c546001600160a01b031661168f61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906117005760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50600061170d8383611a2d565b60408051808201909152600281526106a760f31b6020820152909150816117755760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506117808582611eb3565b603e54611797906001600160a01b03168585611e52565b6040805184815290516000916001600160a01b038816916000805160206127148339815191529181900360200190a3836001600160a01b0316856001600160a01b03167f5d624aa9c148153ab3446c1b154f660ee7701e549fe9b62dab7171b1c80e6fa28585604051808381526020018281526020019250505060405180910390a35050505050565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b603c546001600160a01b031661185f61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906118d05760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506118de8383836000611f57565b816001600160a01b0316836001600160a01b0316600080516020612714833981519152836040518082815260200191505060405180910390a3505050565b3390565b6001600160a01b0383166119655760405162461bcd60e51b815260040180806020018281038252602481526020018061277a6024913960400191505060405180910390fd5b6001600160a01b0382166119aa5760405162461bcd60e51b81526004018080602001828103825260228152602001806126766022913960400191505060405180910390fd5b6001600160a01b03808416600081815260356020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b031660009081526034602052604090205490565b60365490565b604080518082019091526002815261035360f41b602082015260009082611a955760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce8000000821904851115611b115760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b5082816b033b2e3c9fd0803ce800000086020181611b2b57fe5b04949350505050565b6001600160a01b038216611b8f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611b9b600083836112cf565b603654611ba88183611df1565b6036556001600160a01b038316600090815260346020526040902054611bce8184611df1565b6001600160a01b038516600090815260346020526040812091909155611bf2611ea4565b6001600160a01b031614611c7f57611c08611ea4565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015611c6657600080fd5b505af1158015611c7a573d6000803e3d6000fd5b505050505b50505050565b6000821580611c92575081155b15611c9f5750600061084a565b816b019d971e4fe8401e740000001981611cb557fe5b0483111560405180604001604052806002815260200161068760f31b81525090611d205760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b600190565b303b1590565b805161124690603790602084019061259d565b805161124690603890602084019061259d565b6039805460ff191660ff92909216919091179055565b6112cf8383836001611f57565b60008184841115611de95760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b505050900390565b600082820183811015611e4b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112cf908490612100565b603f546001600160a01b031690565b6001600160a01b038216611ef85760405162461bcd60e51b81526004018080602001828103825260218152602001806127346021913960400191505060405180910390fd5b611f04826000836112cf565b603654611f1181836122b8565b6036556001600160a01b0383166000908152603460209081526040918290205482516060810190935260228084529092611bce9286929061265490830139839190611d97565b603e54603c546040805163d15e005360e01b81526001600160a01b03938416600482018190529151919390921691600091839163d15e0053916024808301926020929190829003018186803b158015611faf57600080fd5b505afa158015611fc3573d6000803e3d6000fd5b505050506040513d6020811015611fd957600080fd5b505190506000611fec826110e28a611a0c565b90506000611ffd836110e28a611a0c565b9050612013898961200e8a87611a2d565b6122fa565b85156120a2576040805163d5ed393360e01b81526001600160a01b0387811660048301528b811660248301528a81166044830152606482018a90526084820185905260a4820184905291519186169163d5ed39339160c48082019260009290919082900301818387803b15801561208957600080fd5b505af115801561209d573d6000803e3d6000fd5b505050505b876001600160a01b0316896001600160a01b03167f4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda86668986604051808381526020018281526020019250505060405180910390a3505050505050505050565b612112826001600160a01b0316612561565b612163576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106121a15780518252601f199092019160209182019101612182565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612203576040519150601f19603f3d011682016040523d82523d6000602084013e612208565b606091505b50915091508161225f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611c7f5780806020019051602081101561227b57600080fd5b5051611c7f5760405162461bcd60e51b815260040180806020018281038252602a81526020018061279e602a913960400191505060405180910390fd5b6000611e4b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d97565b6001600160a01b03831661233f5760405162461bcd60e51b81526004018080602001828103825260258152602001806127556025913960400191505060405180910390fd5b6001600160a01b0382166123845760405162461bcd60e51b81526004018080602001828103825260238152602001806126316023913960400191505060405180910390fd5b61238f8383836112cf565b600060346000856001600160a01b03166001600160a01b031681526020019081526020016000205490506123de8260405180606001604052806026815260200161269860269139839190611d97565b6001600160a01b03808616600090815260346020526040808220939093559085168152205461240d8184611df1565b6001600160a01b038516600090815260346020526040812091909155612431611ea4565b6001600160a01b03161461255a5760365461244a611ea4565b6001600160a01b03166331873e2e8783866040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b1580156124a857600080fd5b505af11580156124bc573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b031614612558576124e1611ea4565b6001600160a01b03166331873e2e8683856040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561253f57600080fd5b505af1158015612553573d6000803e3d6000fd5b505050505b505b5050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061259557508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106125de57805160ff191683800117855561260b565b8280016001018555821561260b579182015b8281111561260b5782518255916020019190600101906125f0565b5061261792915061261b565b5090565b5b80821115612617576000815560010161261c56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203729232b81498f0aeabab57714b9dae0a68fbcd6fc72e75051fc236fe4dc42ce64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xB DUP1 DUP3 MSTORE PUSH11 0x105513D2D15397D2535413 PUSH1 0xAA SHL PUSH1 0x20 DUP1 DUP5 ADD DUP3 DUP2 MSTORE DUP6 MLOAD DUP1 DUP8 ADD SWAP1 SWAP7 MSTORE SWAP3 DUP6 MSTORE DUP5 ADD MSTORE DUP2 MLOAD SWAP2 SWAP3 SWAP2 PUSH1 0x0 SWAP2 PUSH3 0x60 SWAP2 PUSH1 0x37 SWAP2 SWAP1 PUSH3 0x94 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0x76 SWAP1 PUSH1 0x38 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x94 JUMP JUMPDEST POP PUSH1 0x39 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0x130 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0xD7 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x107 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x107 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x107 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xEA JUMP JUMPDEST POP PUSH3 0x115 SWAP3 SWAP2 POP PUSH3 0x119 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x115 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x11A JUMP JUMPDEST PUSH2 0x2822 DUP1 PUSH3 0x140 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7535D246 GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xAE167335 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x6AA JUMPI DUP1 PUSH4 0xD7020D0A EQ PUSH2 0x6FB JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x737 JUMPI DUP1 PUSH4 0xF866C319 EQ PUSH2 0x765 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0xAE167335 EQ PUSH2 0x66C JUMPI DUP1 PUSH4 0xB16A19DE EQ PUSH2 0x674 JUMPI DUP1 PUSH4 0xB1BF962D EQ PUSH2 0x67C JUMPI DUP1 PUSH4 0xB9844D8D EQ PUSH2 0x684 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x88DD91A1 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x88DD91A1 EQ PUSH2 0x5E0 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x60C JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x614 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x640 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x7535D246 EQ PUSH2 0x589 JUMPI DUP1 PUSH4 0x75D26413 EQ PUSH2 0x5AD JUMPI DUP1 PUSH4 0x78160376 EQ PUSH2 0x5B5 JUMPI DUP1 PUSH4 0x7DF5BD3B EQ PUSH2 0x5BD JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x1DA24F3E GT PUSH2 0x187 JUMPI DUP1 PUSH4 0x3644E515 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x503 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x50B JUMPI DUP1 PUSH4 0x4EFECAA5 EQ PUSH2 0x537 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x563 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x1DA24F3E EQ PUSH2 0x481 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x4A7 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x4DD JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x4E5 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0xBD7AD3B GT PUSH2 0x1C3 JUMPI DUP1 PUSH4 0xBD7AD3B EQ PUSH2 0x2E6 JUMPI DUP1 PUSH4 0x156E29F6 EQ PUSH2 0x300 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x332 JUMPI DUP1 PUSH4 0x183FB413 EQ PUSH2 0x33A JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x267 JUMPI DUP1 PUSH4 0xAFBCDC9 EQ PUSH2 0x2A7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F2 PUSH2 0x79B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x22C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x214 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x259 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x27D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x832 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x850 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x2EE PUSH2 0x86D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x316 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x872 JUMP JUMPDEST PUSH2 0x2EE PUSH2 0xA40 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x351 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP4 AND SWAP3 PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP2 DUP2 ADD SWAP1 PUSH1 0xC0 DUP2 ADD PUSH1 0xA0 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x39C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x400 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x452 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x474 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xAEA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x497 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE67 JUMP JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xE72 JUMP JUMPDEST PUSH2 0x2EE PUSH2 0xF32 JUMP JUMPDEST PUSH2 0x4ED PUSH2 0xF56 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2EE PUSH2 0xF5F JUMP JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF65 JUMP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x54D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xFB3 JUMP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1059 JUMP JUMPDEST PUSH2 0x591 PUSH2 0x10E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x591 PUSH2 0x10F7 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x1106 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1123 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x12D4 JUMP JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x62A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1335 JUMP JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x139D JUMP JUMPDEST PUSH2 0x591 PUSH2 0x13FA JUMP JUMPDEST PUSH2 0x591 PUSH2 0x1409 JUMP JUMPDEST PUSH2 0x2EE PUSH2 0x1418 JUMP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x69A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1422 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x6C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1434 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x711 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x167B JUMP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x74D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1820 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x77B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x184B JUMP JUMPDEST PUSH1 0x37 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x827 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7FC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x827 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x80A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x846 PUSH2 0x83F PUSH2 0x191C JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1920 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x85C DUP4 PUSH2 0x1A0C JUMP JUMPDEST PUSH2 0x864 PUSH2 0x1A27 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x889 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x937 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x929 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0x943 DUP6 PUSH2 0x1A0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x951 DUP6 DUP6 PUSH2 0x1A2D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1A9B PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0x9B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH2 0x9C4 DUP7 DUP3 PUSH2 0x1B34 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP ISZERO SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA4B PUSH2 0x1A27 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xA5C JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x82F JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x3E SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0xAE4 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xD15E0053 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAC5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xADB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 SWAP1 PUSH2 0x1C85 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAF4 PUSH2 0x1D43 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 PUSH2 0xB0B JUMPI POP PUSH2 0xB0B PUSH2 0x1D48 JUMP JUMPDEST DUP1 PUSH2 0xB17 JUMPI POP PUSH1 0x0 SLOAD DUP2 GT JUMPDEST PUSH2 0xB52 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x26E6 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0xB71 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 OR SWAP1 SSTORE PUSH1 0x0 DUP3 SWAP1 SSTORE JUMPDEST PUSH1 0x0 CHAINID SWAP1 POP PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP10 DUP10 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP4 ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x3B DUP2 SWAP1 SSTORE POP PUSH2 0xC69 DUP10 DUP10 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1D4E SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xCA8 DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1D61 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xCB1 DUP11 PUSH2 0x1D74 JUMP JUMPDEST DUP14 PUSH1 0x3C PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP13 PUSH1 0x3D PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP12 PUSH1 0x3E PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP11 PUSH1 0x3F PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xB19E051F8AF41150CCCCB3FC2C2D8D15F4A4CF434F32A559BA75FE73D6EEA20B DUP16 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP1 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP11 DUP11 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD DUP6 DUP2 SUB DUP5 MSTORE DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 POP DUP9 DUP9 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD DUP6 DUP2 SUB DUP4 MSTORE DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 POP DUP7 DUP7 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP15 POP SWAP1 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP LOG3 POP DUP1 ISZERO PUSH2 0xE58 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x84A DUP3 PUSH2 0x1A0C JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE7F DUP5 DUP5 DUP5 PUSH2 0x1D8A JUMP JUMPDEST PUSH2 0xEEF DUP5 PUSH2 0xE8B PUSH2 0x191C JUMP JUMPDEST PUSH2 0xEEA DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x26BE PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0xEC9 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH2 0x1920 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x39 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x3B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x846 PUSH2 0xF72 PUSH2 0x191C JUMP JUMPDEST DUP5 PUSH2 0xEEA DUP6 PUSH1 0x35 PUSH1 0x0 PUSH2 0xF83 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFCA PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x103B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH1 0x3E SLOAD PUSH2 0x1053 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH2 0x1E52 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x3E SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 PUSH2 0x84A SWAP4 AND SWAP2 PUSH4 0xD15E0053 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10C1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x10E2 DUP5 PUSH2 0x1A0C JUMP JUMPDEST SWAP1 PUSH2 0x1C85 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1101 PUSH2 0x1EA4 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1137 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x11A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP DUP2 PUSH2 0x11B3 JUMPI PUSH2 0x1246 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11D2 DUP2 PUSH2 0x11CD DUP6 DUP6 PUSH2 0x1A2D JUMP JUMPDEST PUSH2 0x1B34 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH1 0x0 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x125E PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x12CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x38 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x827 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7FC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x827 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x846 PUSH2 0x1342 PUSH2 0x191C JUMP JUMPDEST DUP5 PUSH2 0xEEA DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x27C8 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x35 PUSH1 0x0 PUSH2 0x136C PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13B1 PUSH2 0x13AA PUSH2 0x191C JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1D8A JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13C3 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1101 PUSH2 0x1A27 JUMP JUMPDEST PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x147F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x24A72B20A624A22FA7ABA722A9 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x14C9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x24A72B20A624A22FA2AC2824A920AA24A7A7 PUSH1 0x71 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x3B SLOAD DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP13 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP12 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP1 DUP7 ADD DUP12 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP8 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP7 ADD DUP4 MSTORE DUP1 MLOAD SWAP1 DUP5 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH2 0x100 DUP8 ADD MSTORE PUSH2 0x102 DUP7 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP7 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP6 ADD DUP1 DUP4 MSTORE DUP7 MLOAD SWAP7 DUP5 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP4 SWAP1 SWAP6 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP4 SWAP1 MSTORE PUSH1 0xFF DUP9 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP8 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP7 SWAP1 MSTORE MLOAD SWAP2 SWAP3 PUSH1 0x1 SWAP3 PUSH2 0x1E2 DUP1 DUP4 ADD SWAP4 SWAP3 PUSH1 0x1F NOT DUP4 ADD SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15DE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1641 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x494E56414C49445F5349474E4154555245 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x164C DUP3 PUSH1 0x1 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x1670 DUP10 DUP10 DUP10 PUSH2 0x1920 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x168F PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1700 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x170D DUP4 DUP4 PUSH2 0x1A2D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x6A7 PUSH1 0xF3 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0x1775 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH2 0x1780 DUP6 DUP3 PUSH2 0x1EB3 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH2 0x1797 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 PUSH2 0x1E52 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x5D624AA9C148153AB3446C1B154F660EE7701E549FE9B62DAB7171B1C80E6FA2 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x185F PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x18D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH2 0x18DE DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x1F57 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1965 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x277A PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x19AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2676 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x36 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x1A95 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x1B11 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x1B2B JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1B8F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1B9B PUSH1 0x0 DUP4 DUP4 PUSH2 0x12CF JUMP JUMPDEST PUSH1 0x36 SLOAD PUSH2 0x1BA8 DUP2 DUP4 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x36 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1BCE DUP2 DUP5 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1BF2 PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1C7F JUMPI PUSH2 0x1C08 PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP6 DUP5 DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C7A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x1C92 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x1C9F JUMPI POP PUSH1 0x0 PUSH2 0x84A JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x1CB5 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1D20 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP POP PUSH12 0x33B2E3C9FD0803CE8000000 SWAP2 MUL PUSH12 0x19D971E4FE8401E74000000 ADD DIV SWAP1 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1246 SWAP1 PUSH1 0x37 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x259D JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1246 SWAP1 PUSH1 0x38 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x259D JUMP JUMPDEST PUSH1 0x39 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x12CF DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1F57 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1DE9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1E4B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x12CF SWAP1 DUP5 SWAP1 PUSH2 0x2100 JUMP JUMPDEST PUSH1 0x3F SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1EF8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2734 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1F04 DUP3 PUSH1 0x0 DUP4 PUSH2 0x12CF JUMP JUMPDEST PUSH1 0x36 SLOAD PUSH2 0x1F11 DUP2 DUP4 PUSH2 0x22B8 JUMP JUMPDEST PUSH1 0x36 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x22 DUP1 DUP5 MSTORE SWAP1 SWAP3 PUSH2 0x1BCE SWAP3 DUP7 SWAP3 SWAP1 PUSH2 0x2654 SWAP1 DUP4 ADD CODECOPY DUP4 SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP4 SWAP1 SWAP3 AND SWAP2 PUSH1 0x0 SWAP2 DUP4 SWAP2 PUSH4 0xD15E0053 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FC3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1FD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x1FEC DUP3 PUSH2 0x10E2 DUP11 PUSH2 0x1A0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1FFD DUP4 PUSH2 0x10E2 DUP11 PUSH2 0x1A0C JUMP JUMPDEST SWAP1 POP PUSH2 0x2013 DUP10 DUP10 PUSH2 0x200E DUP11 DUP8 PUSH2 0x1A2D JUMP JUMPDEST PUSH2 0x22FA JUMP JUMPDEST DUP6 ISZERO PUSH2 0x20A2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH4 0xD5ED3933 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP11 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP11 SWAP1 MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0xA4 DUP3 ADD DUP5 SWAP1 MSTORE SWAP2 MLOAD SWAP2 DUP7 AND SWAP2 PUSH4 0xD5ED3933 SWAP2 PUSH1 0xC4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2089 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x209D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4BECCB90F994C31ACED7A23B5611020728A23D8EC5CDDD1A3E9D97B96FDA8666 DUP10 DUP7 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2112 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2561 JUMP JUMPDEST PUSH2 0x2163 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x21A1 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2182 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2203 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2208 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x225F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1C7F JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x227B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1C7F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x279E PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1E4B DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x233F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2755 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2384 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2631 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x238F DUP4 DUP4 DUP4 PUSH2 0x12CF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x34 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH2 0x23DE DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2698 PUSH1 0x26 SWAP2 CODECOPY DUP4 SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP6 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x240D DUP2 DUP5 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x2431 PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x255A JUMPI PUSH1 0x36 SLOAD PUSH2 0x244A PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP8 DUP4 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2558 JUMPI PUSH2 0x24E1 PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP7 DUP4 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x253F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2553 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2595 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x25DE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x260B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x260B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x260B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x25F0 JUMP JUMPDEST POP PUSH2 0x2617 SWAP3 SWAP2 POP PUSH2 0x261B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2617 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x261C JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E6365436F6E74726163742069 PUSH15 0x7374616E63652068617320616C7265 PUSH2 0x6479 KECCAK256 PUSH3 0x65656E KECCAK256 PUSH10 0x6E697469616C697A6564 0xDD CALLCODE MSTORE 0xAD SHL 0xE2 0xC8 SWAP12 PUSH10 0xC2B068FC378DAA952BA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A207472616E7366657220 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 MSTORE8 PUSH2 0x6665 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x75636365656445524332303A2064656372656173 PUSH6 0x6420616C6C6F PUSH24 0x616E63652062656C6F77207A65726FA26469706673582212 KECCAK256 CALLDATACOPY 0x29 0x23 0x2B DUP2 0x49 DUP16 EXP 0xEA 0xBA 0xB5 PUSH24 0x14B9DAE0A68FBCD6FC72E75051FC236FE4DC42CE64736F6C PUSH4 0x4300060C STOP CALLER ",
              "sourceMap": "834:12379:88:-:0;;;926:1:74;884:43;;834:12379:88;;;;;;;;;-1:-1:-1;952:164:90;;;;;;;;;;;;-1:-1:-1;;;952:164:90;;;;;;;;;;;;;;;;;;;;;1051:12;;952:164;;;-1:-1:-1;;1051:12:90;;:5;;952:164;1051:12;:::i;:::-;-1:-1:-1;1069:16:90;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;1091:9:90;:20;;-1:-1:-1;;1091:20:90;;;;;;;;;;;;-1:-1:-1;834:12379:88;;-1:-1:-1;834:12379:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;834:12379:88;;;-1:-1:-1;834:12379:88;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101e55760003560e01c80637535d2461161010f578063ae167335116100a2578063d505accf11610071578063d505accf146106aa578063d7020d0a146106fb578063dd62ed3e14610737578063f866c31914610765576101e5565b8063ae1673351461066c578063b16a19de14610674578063b1bf962d1461067c578063b9844d8d14610684576101e5565b806388dd91a1116100de57806388dd91a1146105e057806395d89b411461060c578063a457c2d714610614578063a9059cbb14610640576101e5565b80637535d2461461058957806375d26413146105ad57806378160376146105b55780637df5bd3b146105bd576101e5565b80631da24f3e116101875780633644e515116101565780633644e51514610503578063395093511461050b5780634efecaa51461053757806370a0823114610563576101e5565b80631da24f3e1461048157806323b872dd146104a757806330adf81f146104dd578063313ce567146104e5576101e5565b80630bd7ad3b116101c35780630bd7ad3b146102e6578063156e29f61461030057806318160ddd14610332578063183fb4131461033a576101e5565b806306fdde03146101ea578063095ea7b3146102675780630afbcdc9146102a7575b600080fd5b6101f261079b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102936004803603604081101561027d57600080fd5b506001600160a01b038135169060200135610832565b604080519115158252519081900360200190f35b6102cd600480360360208110156102bd57600080fd5b50356001600160a01b0316610850565b6040805192835260208301919091528051918290030190f35b6102ee61086d565b60408051918252519081900360200190f35b6102936004803603606081101561031657600080fd5b506001600160a01b038135169060208101359060400135610872565b6102ee610a40565b61047f600480360361010081101561035157600080fd5b6001600160a01b038235811692602081013582169260408201358316926060830135169160ff6080820135169181019060c0810160a082013564010000000081111561039c57600080fd5b8201836020820111156103ae57600080fd5b803590602001918460018302840111640100000000831117156103d057600080fd5b9193909290916020810190356401000000008111156103ee57600080fd5b82018360208201111561040057600080fd5b8035906020019184600183028401116401000000008311171561042257600080fd5b91939092909160208101903564010000000081111561044057600080fd5b82018360208201111561045257600080fd5b8035906020019184600183028401116401000000008311171561047457600080fd5b509092509050610aea565b005b6102ee6004803603602081101561049757600080fd5b50356001600160a01b0316610e67565b610293600480360360608110156104bd57600080fd5b506001600160a01b03813581169160208101359091169060400135610e72565b6102ee610f32565b6104ed610f56565b6040805160ff9092168252519081900360200190f35b6102ee610f5f565b6102936004803603604081101561052157600080fd5b506001600160a01b038135169060200135610f65565b6102ee6004803603604081101561054d57600080fd5b506001600160a01b038135169060200135610fb3565b6102ee6004803603602081101561057957600080fd5b50356001600160a01b0316611059565b6105916110e8565b604080516001600160a01b039092168252519081900360200190f35b6105916110f7565b6101f2611106565b61047f600480360360408110156105d357600080fd5b5080359060200135611123565b61047f600480360360408110156105f657600080fd5b506001600160a01b03813516906020013561124a565b6101f26112d4565b6102936004803603604081101561062a57600080fd5b506001600160a01b038135169060200135611335565b6102936004803603604081101561065657600080fd5b506001600160a01b03813516906020013561139d565b6105916113fa565b610591611409565b6102ee611418565b6102ee6004803603602081101561069a57600080fd5b50356001600160a01b0316611422565b61047f600480360360e08110156106c057600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611434565b61047f6004803603608081101561071157600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561167b565b6102ee6004803603604081101561074d57600080fd5b506001600160a01b0381358116916020013516611820565b61047f6004803603606081101561077b57600080fd5b506001600160a01b0381358116916020810135909116906040013561184b565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108275780601f106107fc57610100808354040283529160200191610827565b820191906000526020600020905b81548152906001019060200180831161080a57829003601f168201915b505050505090505b90565b600061084661083f61191c565b8484611920565b5060015b92915050565b60008061085c83611a0c565b610864611a27565b91509150915091565b600181565b603c546000906001600160a01b031661088961191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906109375760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108fc5781810151838201526020016108e4565b50505050905090810190601f1680156109295780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600061094385611a0c565b905060006109518585611a2d565b6040805180820190915260028152611a9b60f11b6020820152909150816109b95760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506109c48682611b34565b6040805186815290516001600160a01b038816916000916000805160206127148339815191529181900360200190a3604080518681526020810186905281516001600160a01b038916927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25015949350505050565b600080610a4b611a27565b905080610a5c57600091505061082f565b603c54603e546040805163d15e005360e01b81526001600160a01b0392831660048201529051610ae493929092169163d15e005391602480820192602092909190829003018186803b158015610ab157600080fd5b505afa158015610ac5573d6000803e3d6000fd5b505050506040513d6020811015610adb57600080fd5b50518290611c85565b91505090565b6000610af4611d43565b60015490915060ff1680610b0b5750610b0b611d48565b80610b17575060005481115b610b525760405162461bcd60e51b815260040180806020018281038252602e8152602001806126e6602e913960400191505060405180910390fd5b60015460ff16158015610b71576001805460ff19168117905560008290555b60004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f89896040518083838082843780830192505050925050506040518091039020604051806040016040528060018152602001603160f81b81525080519060200120833060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120603b81905550610c6989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d4e92505050565b610ca887878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d6192505050565b610cb18a611d74565b8d603c60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c603d60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b603e60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a603f60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508d6001600160a01b03168c6001600160a01b03167fb19e051f8af41150ccccb3fc2c2d8d15f4a4cf434f32a559ba75fe73d6eea20b8f8e8e8e8e8e8e8e8e604051808a6001600160a01b03168152602001896001600160a01b031681526020018860ff16815260200180602001806020018060200184810384528a8a82818152602001925080828437600083820152601f01601f191690910185810384528881526020019050888880828437600083820152601f01601f191690910185810383528681526020019050868680828437600083820152604051601f909101601f19169092018290039e50909c50505050505050505050505050a3508015610e58576001805460ff191690555b50505050505050505050505050565b600061084a82611a0c565b6000610e7f848484611d8a565b610eef84610e8b61191c565b610eea856040518060600160405280602881526020016126be602891396001600160a01b038a16600090815260356020526040812090610ec961191c565b6001600160a01b031681526020810191909152604001600020549190611d97565b611920565b826001600160a01b0316846001600160a01b0316600080516020612714833981519152846040518082815260200191505060405180910390a35060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60395460ff1690565b603b5481565b6000610846610f7261191c565b84610eea8560356000610f8361191c565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611df1565b603c546000906001600160a01b0316610fca61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b8152509061103b5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50603e54611053906001600160a01b03168484611e52565b50919050565b603c54603e546040805163d15e005360e01b81526001600160a01b039283166004820152905160009361084a93169163d15e0053916024808301926020929190829003018186803b1580156110ad57600080fd5b505afa1580156110c1573d6000803e3d6000fd5b505050506040513d60208110156110d757600080fd5b50516110e284611a0c565b90611c85565b603c546001600160a01b031690565b6000611101611ea4565b905090565b604051806040016040528060018152602001603160f81b81525081565b603c546001600160a01b031661113761191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906111a85760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50816111b357611246565b603d546001600160a01b03166111d2816111cd8585611a2d565b611b34565b6040805184815290516001600160a01b038316916000916000805160206127148339815191529181900360200190a3604080518481526020810184905281516001600160a01b038416927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a2505b5050565b603c546001600160a01b031661125e61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906112cf5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b505050565b60388054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108275780601f106107fc57610100808354040283529160200191610827565b600061084661134261191c565b84610eea856040518060600160405280602581526020016127c8602591396035600061136c61191c565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611d97565b60006113b16113aa61191c565b8484611d8a565b826001600160a01b03166113c361191c565b6001600160a01b0316600080516020612714833981519152846040518082815260200191505060405180910390a350600192915050565b603d546001600160a01b031690565b603e546001600160a01b031690565b6000611101611a27565b603a6020526000908152604090205481565b6001600160a01b03871661147f576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa7aba722a960991b604482015290519081900360640190fd5b834211156114c9576040805162461bcd60e51b815260206004820152601260248201527124a72b20a624a22fa2ac2824a920aa24a7a760711b604482015290519081900360640190fd5b6001600160a01b038088166000818152603a6020908152604080832054603b5482517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a0850181905260c08086018b90528251808703909101815260e08601835280519084012061190160f01b6101008701526101028601969096526101228086019690965281518086039096018652610142850180835286519684019690962093909552610162840180825283905260ff88166101828501526101a284018790526101c284018690525191926001926101e28083019392601f198301929081900390910190855afa1580156115de573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614611641576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b61164c826001611df1565b6001600160a01b038a166000908152603a6020526040902055611670898989611920565b505050505050505050565b603c546001600160a01b031661168f61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906117005760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50600061170d8383611a2d565b60408051808201909152600281526106a760f31b6020820152909150816117755760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506117808582611eb3565b603e54611797906001600160a01b03168585611e52565b6040805184815290516000916001600160a01b038816916000805160206127148339815191529181900360200190a3836001600160a01b0316856001600160a01b03167f5d624aa9c148153ab3446c1b154f660ee7701e549fe9b62dab7171b1c80e6fa28585604051808381526020018281526020019250505060405180910390a35050505050565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b603c546001600160a01b031661185f61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906118d05760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506118de8383836000611f57565b816001600160a01b0316836001600160a01b0316600080516020612714833981519152836040518082815260200191505060405180910390a3505050565b3390565b6001600160a01b0383166119655760405162461bcd60e51b815260040180806020018281038252602481526020018061277a6024913960400191505060405180910390fd5b6001600160a01b0382166119aa5760405162461bcd60e51b81526004018080602001828103825260228152602001806126766022913960400191505060405180910390fd5b6001600160a01b03808416600081815260356020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b031660009081526034602052604090205490565b60365490565b604080518082019091526002815261035360f41b602082015260009082611a955760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce8000000821904851115611b115760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b5082816b033b2e3c9fd0803ce800000086020181611b2b57fe5b04949350505050565b6001600160a01b038216611b8f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611b9b600083836112cf565b603654611ba88183611df1565b6036556001600160a01b038316600090815260346020526040902054611bce8184611df1565b6001600160a01b038516600090815260346020526040812091909155611bf2611ea4565b6001600160a01b031614611c7f57611c08611ea4565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015611c6657600080fd5b505af1158015611c7a573d6000803e3d6000fd5b505050505b50505050565b6000821580611c92575081155b15611c9f5750600061084a565b816b019d971e4fe8401e740000001981611cb557fe5b0483111560405180604001604052806002815260200161068760f31b81525090611d205760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b600190565b303b1590565b805161124690603790602084019061259d565b805161124690603890602084019061259d565b6039805460ff191660ff92909216919091179055565b6112cf8383836001611f57565b60008184841115611de95760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b505050900390565b600082820183811015611e4b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112cf908490612100565b603f546001600160a01b031690565b6001600160a01b038216611ef85760405162461bcd60e51b81526004018080602001828103825260218152602001806127346021913960400191505060405180910390fd5b611f04826000836112cf565b603654611f1181836122b8565b6036556001600160a01b0383166000908152603460209081526040918290205482516060810190935260228084529092611bce9286929061265490830139839190611d97565b603e54603c546040805163d15e005360e01b81526001600160a01b03938416600482018190529151919390921691600091839163d15e0053916024808301926020929190829003018186803b158015611faf57600080fd5b505afa158015611fc3573d6000803e3d6000fd5b505050506040513d6020811015611fd957600080fd5b505190506000611fec826110e28a611a0c565b90506000611ffd836110e28a611a0c565b9050612013898961200e8a87611a2d565b6122fa565b85156120a2576040805163d5ed393360e01b81526001600160a01b0387811660048301528b811660248301528a81166044830152606482018a90526084820185905260a4820184905291519186169163d5ed39339160c48082019260009290919082900301818387803b15801561208957600080fd5b505af115801561209d573d6000803e3d6000fd5b505050505b876001600160a01b0316896001600160a01b03167f4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda86668986604051808381526020018281526020019250505060405180910390a3505050505050505050565b612112826001600160a01b0316612561565b612163576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106121a15780518252601f199092019160209182019101612182565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612203576040519150601f19603f3d011682016040523d82523d6000602084013e612208565b606091505b50915091508161225f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611c7f5780806020019051602081101561227b57600080fd5b5051611c7f5760405162461bcd60e51b815260040180806020018281038252602a81526020018061279e602a913960400191505060405180910390fd5b6000611e4b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d97565b6001600160a01b03831661233f5760405162461bcd60e51b81526004018080602001828103825260258152602001806127556025913960400191505060405180910390fd5b6001600160a01b0382166123845760405162461bcd60e51b81526004018080602001828103825260238152602001806126316023913960400191505060405180910390fd5b61238f8383836112cf565b600060346000856001600160a01b03166001600160a01b031681526020019081526020016000205490506123de8260405180606001604052806026815260200161269860269139839190611d97565b6001600160a01b03808616600090815260346020526040808220939093559085168152205461240d8184611df1565b6001600160a01b038516600090815260346020526040812091909155612431611ea4565b6001600160a01b03161461255a5760365461244a611ea4565b6001600160a01b03166331873e2e8783866040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b1580156124a857600080fd5b505af11580156124bc573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b031614612558576124e1611ea4565b6001600160a01b03166331873e2e8683856040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561253f57600080fd5b505af1158015612553573d6000803e3d6000fd5b505050505b505b5050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061259557508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106125de57805160ff191683800117855561260b565b8280016001018555821561260b579182015b8281111561260b5782518255916020019190600101906125f0565b5061261792915061261b565b5090565b5b80821115612617576000815560010161261c56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203729232b81498f0aeabab57714b9dae0a68fbcd6fc72e75051fc236fe4dc42ce64736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7535D246 GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xAE167335 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x6AA JUMPI DUP1 PUSH4 0xD7020D0A EQ PUSH2 0x6FB JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x737 JUMPI DUP1 PUSH4 0xF866C319 EQ PUSH2 0x765 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0xAE167335 EQ PUSH2 0x66C JUMPI DUP1 PUSH4 0xB16A19DE EQ PUSH2 0x674 JUMPI DUP1 PUSH4 0xB1BF962D EQ PUSH2 0x67C JUMPI DUP1 PUSH4 0xB9844D8D EQ PUSH2 0x684 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x88DD91A1 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x88DD91A1 EQ PUSH2 0x5E0 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x60C JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x614 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x640 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x7535D246 EQ PUSH2 0x589 JUMPI DUP1 PUSH4 0x75D26413 EQ PUSH2 0x5AD JUMPI DUP1 PUSH4 0x78160376 EQ PUSH2 0x5B5 JUMPI DUP1 PUSH4 0x7DF5BD3B EQ PUSH2 0x5BD JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x1DA24F3E GT PUSH2 0x187 JUMPI DUP1 PUSH4 0x3644E515 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x503 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x50B JUMPI DUP1 PUSH4 0x4EFECAA5 EQ PUSH2 0x537 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x563 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x1DA24F3E EQ PUSH2 0x481 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x4A7 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x4DD JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x4E5 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0xBD7AD3B GT PUSH2 0x1C3 JUMPI DUP1 PUSH4 0xBD7AD3B EQ PUSH2 0x2E6 JUMPI DUP1 PUSH4 0x156E29F6 EQ PUSH2 0x300 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x332 JUMPI DUP1 PUSH4 0x183FB413 EQ PUSH2 0x33A JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x267 JUMPI DUP1 PUSH4 0xAFBCDC9 EQ PUSH2 0x2A7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F2 PUSH2 0x79B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x22C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x214 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x259 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x27D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x832 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2CD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x850 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x2EE PUSH2 0x86D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x316 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x872 JUMP JUMPDEST PUSH2 0x2EE PUSH2 0xA40 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x351 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP4 AND SWAP3 PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP2 DUP2 ADD SWAP1 PUSH1 0xC0 DUP2 ADD PUSH1 0xA0 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x39C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x400 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x452 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x474 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xAEA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x497 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE67 JUMP JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xE72 JUMP JUMPDEST PUSH2 0x2EE PUSH2 0xF32 JUMP JUMPDEST PUSH2 0x4ED PUSH2 0xF56 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2EE PUSH2 0xF5F JUMP JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF65 JUMP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x54D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xFB3 JUMP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1059 JUMP JUMPDEST PUSH2 0x591 PUSH2 0x10E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x591 PUSH2 0x10F7 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x1106 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1123 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x124A JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x12D4 JUMP JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x62A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1335 JUMP JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x139D JUMP JUMPDEST PUSH2 0x591 PUSH2 0x13FA JUMP JUMPDEST PUSH2 0x591 PUSH2 0x1409 JUMP JUMPDEST PUSH2 0x2EE PUSH2 0x1418 JUMP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x69A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1422 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x6C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1434 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x711 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x167B JUMP JUMPDEST PUSH2 0x2EE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x74D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1820 JUMP JUMPDEST PUSH2 0x47F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x77B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x184B JUMP JUMPDEST PUSH1 0x37 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x827 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7FC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x827 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x80A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x846 PUSH2 0x83F PUSH2 0x191C JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1920 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x85C DUP4 PUSH2 0x1A0C JUMP JUMPDEST PUSH2 0x864 PUSH2 0x1A27 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x889 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x937 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x929 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0x943 DUP6 PUSH2 0x1A0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x951 DUP6 DUP6 PUSH2 0x1A2D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1A9B PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0x9B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH2 0x9C4 DUP7 DUP3 PUSH2 0x1B34 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP ISZERO SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA4B PUSH2 0x1A27 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xA5C JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x82F JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x3E SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0xAE4 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xD15E0053 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAC5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xADB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 SWAP1 PUSH2 0x1C85 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAF4 PUSH2 0x1D43 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 PUSH2 0xB0B JUMPI POP PUSH2 0xB0B PUSH2 0x1D48 JUMP JUMPDEST DUP1 PUSH2 0xB17 JUMPI POP PUSH1 0x0 SLOAD DUP2 GT JUMPDEST PUSH2 0xB52 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x26E6 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0xB71 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 OR SWAP1 SSTORE PUSH1 0x0 DUP3 SWAP1 SSTORE JUMPDEST PUSH1 0x0 CHAINID SWAP1 POP PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP10 DUP10 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP4 ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x3B DUP2 SWAP1 SSTORE POP PUSH2 0xC69 DUP10 DUP10 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1D4E SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xCA8 DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1D61 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xCB1 DUP11 PUSH2 0x1D74 JUMP JUMPDEST DUP14 PUSH1 0x3C PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP13 PUSH1 0x3D PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP12 PUSH1 0x3E PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP11 PUSH1 0x3F PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xB19E051F8AF41150CCCCB3FC2C2D8D15F4A4CF434F32A559BA75FE73D6EEA20B DUP16 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP1 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP11 DUP11 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD DUP6 DUP2 SUB DUP5 MSTORE DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 POP DUP9 DUP9 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD DUP6 DUP2 SUB DUP4 MSTORE DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 POP DUP7 DUP7 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP15 POP SWAP1 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP LOG3 POP DUP1 ISZERO PUSH2 0xE58 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x84A DUP3 PUSH2 0x1A0C JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE7F DUP5 DUP5 DUP5 PUSH2 0x1D8A JUMP JUMPDEST PUSH2 0xEEF DUP5 PUSH2 0xE8B PUSH2 0x191C JUMP JUMPDEST PUSH2 0xEEA DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x26BE PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0xEC9 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH2 0x1920 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x39 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x3B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x846 PUSH2 0xF72 PUSH2 0x191C JUMP JUMPDEST DUP5 PUSH2 0xEEA DUP6 PUSH1 0x35 PUSH1 0x0 PUSH2 0xF83 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xFCA PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x103B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH1 0x3E SLOAD PUSH2 0x1053 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH2 0x1E52 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x3E SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 PUSH2 0x84A SWAP4 AND SWAP2 PUSH4 0xD15E0053 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10C1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x10E2 DUP5 PUSH2 0x1A0C JUMP JUMPDEST SWAP1 PUSH2 0x1C85 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1101 PUSH2 0x1EA4 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1137 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x11A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP DUP2 PUSH2 0x11B3 JUMPI PUSH2 0x1246 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11D2 DUP2 PUSH2 0x11CD DUP6 DUP6 PUSH2 0x1A2D JUMP JUMPDEST PUSH2 0x1B34 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH1 0x0 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x125E PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x12CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x38 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x827 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7FC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x827 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x846 PUSH2 0x1342 PUSH2 0x191C JUMP JUMPDEST DUP5 PUSH2 0xEEA DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x27C8 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x35 PUSH1 0x0 PUSH2 0x136C PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13B1 PUSH2 0x13AA PUSH2 0x191C JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1D8A JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13C3 PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1101 PUSH2 0x1A27 JUMP JUMPDEST PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x147F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x24A72B20A624A22FA7ABA722A9 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x14C9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x24A72B20A624A22FA2AC2824A920AA24A7A7 PUSH1 0x71 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x3B SLOAD DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP13 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP12 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP1 DUP7 ADD DUP12 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP8 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP7 ADD DUP4 MSTORE DUP1 MLOAD SWAP1 DUP5 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH2 0x100 DUP8 ADD MSTORE PUSH2 0x102 DUP7 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP7 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP6 ADD DUP1 DUP4 MSTORE DUP7 MLOAD SWAP7 DUP5 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP4 SWAP1 SWAP6 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP4 SWAP1 MSTORE PUSH1 0xFF DUP9 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP8 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP7 SWAP1 MSTORE MLOAD SWAP2 SWAP3 PUSH1 0x1 SWAP3 PUSH2 0x1E2 DUP1 DUP4 ADD SWAP4 SWAP3 PUSH1 0x1F NOT DUP4 ADD SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15DE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1641 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x494E56414C49445F5349474E4154555245 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x164C DUP3 PUSH1 0x1 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x1670 DUP10 DUP10 DUP10 PUSH2 0x1920 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x168F PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1700 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x170D DUP4 DUP4 PUSH2 0x1A2D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x6A7 PUSH1 0xF3 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0x1775 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH2 0x1780 DUP6 DUP3 PUSH2 0x1EB3 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH2 0x1797 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 PUSH2 0x1E52 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x5D624AA9C148153AB3446C1B154F660EE7701E549FE9B62DAB7171B1C80E6FA2 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x185F PUSH2 0x191C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x18D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH2 0x18DE DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x1F57 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2714 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1965 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x277A PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x19AA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2676 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x36 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x1A95 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x1B11 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x1B2B JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1B8F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1B9B PUSH1 0x0 DUP4 DUP4 PUSH2 0x12CF JUMP JUMPDEST PUSH1 0x36 SLOAD PUSH2 0x1BA8 DUP2 DUP4 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x36 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1BCE DUP2 DUP5 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1BF2 PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1C7F JUMPI PUSH2 0x1C08 PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP6 DUP5 DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C7A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x1C92 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x1C9F JUMPI POP PUSH1 0x0 PUSH2 0x84A JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x1CB5 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1D20 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP POP PUSH12 0x33B2E3C9FD0803CE8000000 SWAP2 MUL PUSH12 0x19D971E4FE8401E74000000 ADD DIV SWAP1 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1246 SWAP1 PUSH1 0x37 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x259D JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1246 SWAP1 PUSH1 0x38 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x259D JUMP JUMPDEST PUSH1 0x39 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x12CF DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1F57 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1DE9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x8FC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8E4 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1E4B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x12CF SWAP1 DUP5 SWAP1 PUSH2 0x2100 JUMP JUMPDEST PUSH1 0x3F SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1EF8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2734 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1F04 DUP3 PUSH1 0x0 DUP4 PUSH2 0x12CF JUMP JUMPDEST PUSH1 0x36 SLOAD PUSH2 0x1F11 DUP2 DUP4 PUSH2 0x22B8 JUMP JUMPDEST PUSH1 0x36 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x22 DUP1 DUP5 MSTORE SWAP1 SWAP3 PUSH2 0x1BCE SWAP3 DUP7 SWAP3 SWAP1 PUSH2 0x2654 SWAP1 DUP4 ADD CODECOPY DUP4 SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP4 SWAP1 SWAP3 AND SWAP2 PUSH1 0x0 SWAP2 DUP4 SWAP2 PUSH4 0xD15E0053 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FC3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1FD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x1FEC DUP3 PUSH2 0x10E2 DUP11 PUSH2 0x1A0C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1FFD DUP4 PUSH2 0x10E2 DUP11 PUSH2 0x1A0C JUMP JUMPDEST SWAP1 POP PUSH2 0x2013 DUP10 DUP10 PUSH2 0x200E DUP11 DUP8 PUSH2 0x1A2D JUMP JUMPDEST PUSH2 0x22FA JUMP JUMPDEST DUP6 ISZERO PUSH2 0x20A2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH4 0xD5ED3933 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP11 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP11 SWAP1 MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0xA4 DUP3 ADD DUP5 SWAP1 MSTORE SWAP2 MLOAD SWAP2 DUP7 AND SWAP2 PUSH4 0xD5ED3933 SWAP2 PUSH1 0xC4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2089 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x209D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4BECCB90F994C31ACED7A23B5611020728A23D8EC5CDDD1A3E9D97B96FDA8666 DUP10 DUP7 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2112 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2561 JUMP JUMPDEST PUSH2 0x2163 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x21A1 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2182 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2203 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2208 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x225F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1C7F JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x227B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1C7F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x279E PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1E4B DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x233F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2755 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2384 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2631 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x238F DUP4 DUP4 DUP4 PUSH2 0x12CF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x34 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH2 0x23DE DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2698 PUSH1 0x26 SWAP2 CODECOPY DUP4 SWAP2 SWAP1 PUSH2 0x1D97 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP6 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x240D DUP2 DUP5 PUSH2 0x1DF1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x2431 PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x255A JUMPI PUSH1 0x36 SLOAD PUSH2 0x244A PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP8 DUP4 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2558 JUMPI PUSH2 0x24E1 PUSH2 0x1EA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP7 DUP4 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x253F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2553 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2595 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x25DE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x260B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x260B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x260B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x25F0 JUMP JUMPDEST POP PUSH2 0x2617 SWAP3 SWAP2 POP PUSH2 0x261B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2617 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x261C JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E6365436F6E74726163742069 PUSH15 0x7374616E63652068617320616C7265 PUSH2 0x6479 KECCAK256 PUSH3 0x65656E KECCAK256 PUSH10 0x6E697469616C697A6564 0xDD CALLCODE MSTORE 0xAD SHL 0xE2 0xC8 SWAP12 PUSH10 0xC2B068FC378DAA952BA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A207472616E7366657220 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 MSTORE8 PUSH2 0x6665 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x75636365656445524332303A2064656372656173 PUSH6 0x6420616C6C6F PUSH24 0x616E63652062656C6F77207A65726FA26469706673582212 KECCAK256 CALLDATACOPY 0x29 0x23 0x2B DUP2 0x49 DUP16 EXP 0xEA 0xBA 0xB5 PUSH24 0x14B9DAE0A68FBCD6FC72E75051FC236FE4DC42CE64736F6C PUSH4 0x4300060C STOP CALLER ",
              "sourceMap": "834:12379:88:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1168:84:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3230:156;;;;;;;;;;;;;;;;-1:-1:-1;3230:156:90;;-1:-1:-1;;;;;3230:156:90;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;7903:183:88;;;;;;;;;;;;;;;;-1:-1:-1;7903:183:88;-1:-1:-1;;;;;7903:183:88;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1355:45;;;:::i;:::-;;;;;;;;;;;;;;;;4876:442;;;;;;;;;;;;;;;;-1:-1:-1;4876:442:88;;-1:-1:-1;;;;;4876:442:88;;;;;;;;;;;:::i;8304:300::-;;;:::i;2534:1035::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2534:1035:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2534:1035:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2534:1035:88;;-1:-1:-1;2534:1035:88;-1:-1:-1;2534:1035:88;:::i;:::-;;7544:119;;;;;;;;;;;;;;;;-1:-1:-1;7544:119:88;-1:-1:-1;;;;;7544:119:88;;:::i;3719:389:90:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3719:389:90;;;;;;;;;;;;;;;;;:::i;1209:141:88:-;;;:::i;1450:84:90:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1513:31:88;;;:::i;4354:205:90:-;;;;;;;;;;;;;;;;-1:-1:-1;4354:205:90;;-1:-1:-1;;;;;4354:205:90;;;;;;:::i;10198:215:88:-;;;;;;;;;;;;;;;;-1:-1:-1;10198:215:88;;-1:-1:-1;;;;;10198:215:88;;;;;;:::i;7026:::-;;;;;;;;;;;;;;;;-1:-1:-1;7026:215:88;-1:-1:-1;;;;;7026:215:88;;:::i;9374:74::-;;;:::i;:::-;;;;-1:-1:-1;;;;;9374:74:88;;;;;;;;;;;;;;9767:138;;;:::i;1010:50::-;;;:::i;5534:612::-;;;;;;;;;;;;;;;;-1:-1:-1;5534:612:88;;;;;;;:::i;10600:91::-;;;;;;;;;;;;;;;;-1:-1:-1;10600:91:88;;-1:-1:-1;;;;;10600:91:88;;;;;;:::i;1306:88:90:-;;;:::i;4815:318::-;;;;;;;;;;;;;;;;-1:-1:-1;4815:318:90;;-1:-1:-1;;;;;4815:318:90;;;;;;:::i;2413:214::-;;;;;;;;;;;;;;;;-1:-1:-1;2413:214:90;;-1:-1:-1;;;;;2413:214:90;;;;;;:::i;8971:93:88:-;;;:::i;9172:109::-;;;:::i;8755:113::-;;;:::i;1466:42::-;;;;;;;;;;;;;;;;-1:-1:-1;1466:42:88;-1:-1:-1;;;;;1466:42:88;;:::i;11128:741::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11128:741:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11128:741:88;;;;;;;;:::i;4024:469::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4024:469:88;;;;;;;;;;;;;;;;;;;;;;:::i;2893:165:90:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2893:165:90;;;;;;;;;;:::i;6484:332:88:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6484:332:88;;;;;;;;;;;;;;;;;:::i;1168:84:90:-;1242:5;1235:12;;;;;;;;;;;;;-1:-1:-1;;1235:12:90;;;;;;;;;;;;;;;;;;;;;;;;;;1214:13;;1235:12;;1242:5;;1235:12;;;1242:5;1235:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1168:84;;:::o;3230:156::-;3313:4;3325:39;3334:12;:10;:12::i;:::-;3348:7;3357:6;3325:8;:39::i;:::-;-1:-1:-1;3377:4:90;3230:156;;;;;:::o;7903:183:88:-;8004:7;8013;8038:21;8054:4;8038:15;:21::i;:::-;8061:19;:17;:19::i;:::-;8030:51;;;;7903:183;;;:::o;1355:45::-;1397:3;1355:45;:::o;4876:442::-;1771:5;;4994:4;;-1:-1:-1;;;;;1771:5:88;1747:12;:10;:12::i;:::-;1779:37;;;;;;;;;;;;-1:-1:-1;;;1779:37:88;;;;;-1:-1:-1;;;;;1747:30:88;;;;;1739:78;;;;-1:-1:-1;;;1739:78:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5006:23:::1;5032:21;5048:4;5032:15;:21::i;:::-;5006:47:::0;-1:-1:-1;5060:20:88::1;5083;:6:::0;5097:5;5083:13:::1;:20::i;:::-;5136:29;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;5136:29:88::1;::::0;::::1;::::0;5060:43;;-1:-1:-1;5060:43:88;5109:57:::1;;;::::0;-1:-1:-1;;;5109:57:88;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;::::1;::::0;;;;-1:-1:-1;5109:57:88;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;5172:25;5178:4;5184:12;5172:5;:25::i;:::-;5209:34;::::0;;;;;;;5226:1:::1;-1:-1:-1::0;;;;;;;5209:34:88;::::1;::::0;5226:1;;5209:34;5226:1;;-1:-1:-1;;5226:1:88;-1:-1:-1;;;;;5209:34:88;;;;::::1;::::0;;::::1;5254:25;::::0;;;;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;5254:25:88;::::1;::::0;::::1;::::0;;;;;;::::1;-1:-1:-1::0;5293:20:88;;4876:442;-1:-1:-1;;;;4876:442:88:o;8304:300::-;8384:7;8399:27;8429:19;:17;:19::i;:::-;8399:49;-1:-1:-1;8459:24:88;8455:53;;8500:1;8493:8;;;;;8455:53;8548:5;;8581:16;;8548:50;;;-1:-1:-1;;;8548:50:88;;-1:-1:-1;;;;;8581:16:88;;;8548:50;;;;;;8521:78;;8548:5;;;;;-1:-1:-1;;8548:50:88;;;;;;;;;;;;;;;:5;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8548:50:88;8521:19;;:26;:78::i;:::-;8514:85;;;8304:300;:::o;2534:1035::-;1162:16:74;1181:13;:11;:13::i;:::-;1215:12;;1162:32;;-1:-1:-1;1215:12:74;;;:31;;;1231:15;:13;:15::i;:::-;1215:69;;;;1261:23;;1250:8;:34;1215:69;1200:146;;;;-1:-1:-1;;;1200:146:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1376:12;;;;1375:13;1394:96;;;;1437:4;1422:19;;-1:-1:-1;;1422:19:74;;;;;-1:-1:-1;1449:34:74;;;1394:96;2839:15:88::1;2920:9;2909:20;;1110:95;3036:10;;3020:28;;;;;;;;;;;;;;;;;;;;;;;;;;;1050:10;;;;;;;;;;;;;-1:-1:-1::0;;;1050:10:88::1;;::::0;3058:26:::1;;;;;;3094:7;3119:4;2977:155;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;2977:155:88::1;;;;;;;;;;;;;;;;;;;;;;;;2960:178;;;;;;2941:16;:197;;;;3145:20;3154:10;;3145:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;3145:8:88::1;::::0;-1:-1:-1;;;3145:20:88:i:1;:::-;3171:24;3182:12;;3171:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;3171:10:88::1;::::0;-1:-1:-1;;;3171:24:88:i:1;:::-;3201:28;3214:14;3201:12;:28::i;:::-;3244:4;3236:5;;:12;;;;;-1:-1:-1::0;;;;;3236:12:88::1;;;;;-1:-1:-1::0;;;;;3236:12:88::1;;;;;;3266:8;3254:9;;:20;;;;;-1:-1:-1::0;;;;;3254:20:88::1;;;;;-1:-1:-1::0;;;;;3254:20:88::1;;;;;;3299:15;3280:16;;:34;;;;;-1:-1:-1::0;;;;;3280:34:88::1;;;;;-1:-1:-1::0;;;;;3280:34:88::1;;;;;;3344:20;3320:21;;:44;;;;;-1:-1:-1::0;;;;;3320:44:88::1;;;;;-1:-1:-1::0;;;;;3320:44:88::1;;;;;;3426:4;-1:-1:-1::0;;;;;3376:188:88::1;3395:15;-1:-1:-1::0;;;;;3376:188:88::1;;3439:8;3463:20;3492:14;3514:10;;3532:12;;3552:6;;3376:188;;;;-1:-1:-1::0;;;;;3376:188:88::1;;;;;;-1:-1:-1::0;;;;;3376:188:88::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;;-1:-1:-1::0;;3376:188:88::1;::::0;;::::1;::::0;;::::1;::::0;;;;;::::1;;::::0;-1:-1:-1;3376:188:88;;;;;::::1;;::::0;;::::1;::::0;::::1;;-1:-1:-1::0;;3376:188:88::1;::::0;;::::1;::::0;;::::1;::::0;;;;;::::1;;::::0;-1:-1:-1;3376:188:88;;;;;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;3376:188:88::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;3376:188:88;;-1:-1:-1;;;;;;;;;;;;;3376:188:88::1;1496:1:74;1508:14:::0;1504:55;;;1532:12;:20;;-1:-1:-1;;1532:20:74;;;1504:55;2534:1035:88;;;;;;;;;;;;;:::o;7544:119::-;7615:7;7637:21;7653:4;7637:15;:21::i;3719:389:90:-;3841:4;3853:36;3863:6;3871:9;3882:6;3853:9;:36::i;:::-;3895:145;3911:6;3925:12;:10;:12::i;:::-;3945:89;3983:6;3945:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3945:19:90;;;;;;:11;:19;;;;;;3965:12;:10;:12::i;:::-;-1:-1:-1;;;;;3945:33:90;;;;;;;;;;;;-1:-1:-1;3945:33:90;;;;:37;:89::i;:::-;3895:8;:145::i;:::-;-1:-1:-1;;;;;;;;4051:35:90;;;;;;;;-1:-1:-1;;;;;;;;4051:35:90;;;;;;;;;;;;;;;;-1:-1:-1;4099:4:90;3719:389;;;;;:::o;1209:141:88:-;1255:95;1209:141;:::o;1450:84:90:-;1520:9;;;;1450:84;:::o;1513:31:88:-;;;;:::o;4354:205:90:-;4442:4;4454:83;4463:12;:10;:12::i;:::-;4477:7;4486:50;4525:10;4486:11;:25;4498:12;:10;:12::i;:::-;-1:-1:-1;;;;;4486:25:90;;;;;;;;;;;;;;;;;-1:-1:-1;4486:25:90;;;:34;;;;;;;;;;;:38;:50::i;10198:215:88:-;1771:5;;10319:7;;-1:-1:-1;;;;;1771:5:88;1747:12;:10;:12::i;:::-;1779:37;;;;;;;;;;;;-1:-1:-1;;;1779:37:88;;;;;-1:-1:-1;;;;;1747:30:88;;;;;1739:78;;;;-1:-1:-1;;;1739:78:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1739:78:88;;;;;;;;;;;;;;;;;-1:-1:-1;10343:16:88::1;::::0;10336:53:::1;::::0;-1:-1:-1;;;;;10343:16:88::1;10374:6:::0;10382;10336:37:::1;:53::i;:::-;-1:-1:-1::0;10402:6:88;10198:215;-1:-1:-1;10198:215:88:o;7026:::-;7185:5;;7218:16;;7185:50;;;-1:-1:-1;;;7185:50:88;;-1:-1:-1;;;;;7218:16:88;;;7185:50;;;;;;-1:-1:-1;;7156:80:88;;7185:5;;-1:-1:-1;;7185:50:88;;;;;;;;;;;;;;:5;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7185:50:88;7156:21;7172:4;7156:15;:21::i;:::-;:28;;:80::i;9374:74::-;9438:5;;-1:-1:-1;;;;;9438:5:88;;9374:74::o;9767:138::-;9834:25;9874:26;:24;:26::i;:::-;9867:33;;9767:138;:::o;1010:50::-;1050:10;;;;;;;;;;;;-1:-1:-1;;;1050:10:88;;;;1010:50;:::o;5534:612::-;1771:5;;-1:-1:-1;;;;;1771:5:88;1747:12;:10;:12::i;:::-;1779:37;;;;;;;;;;;;-1:-1:-1;;;1779:37:88;;;;;-1:-1:-1;;;;;1747:30:88;;;;;1739:78;;;;-1:-1:-1;;;1739:78:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1739:78:88;;;;;;;;;;;;;;;;;-1:-1:-1;5633:11:88;5629:38:::1;;5654:7;;5629:38;5692:9;::::0;-1:-1:-1;;;;;5692:9:88::1;6014:37;5692:9:::0;6030:20:::1;:6:::0;6044:5;6030:13:::1;:20::i;:::-;6014:5;:37::i;:::-;6063:38;::::0;;;;;;;6080:1:::1;-1:-1:-1::0;;;;;;;6063:38:88;::::1;::::0;6080:1;;6063:38;6080:1;;-1:-1:-1;;6080:1:88;-1:-1:-1;;;;;6063:38:88;;;;::::1;::::0;;::::1;6112:29;::::0;;;;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;6112:29:88;::::1;::::0;::::1;::::0;;;;;;::::1;1823:1;;5534:612:::0;;:::o;10600:91::-;1771:5;;-1:-1:-1;;;;;1771:5:88;1747:12;:10;:12::i;:::-;1779:37;;;;;;;;;;;;-1:-1:-1;;;1779:37:88;;;;;-1:-1:-1;;;;;1747:30:88;;;;;1739:78;;;;-1:-1:-1;;;1739:78:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1739:78:88;;;;;;;;;;;;;;;;;;10600:91;;:::o;1306:88:90:-;1382:7;1375:14;;;;;;;;;;;;;-1:-1:-1;;1375:14:90;;;;;;;;;;;;;;;;;;;;;;;;;;1354:13;;1375:14;;1382:7;;1375:14;;;1382:7;1375:14;;;;;;;;;;;;;;;;;;;;;;;;4815:318;4920:4;4934:177;4950:12;:10;:12::i;:::-;4970:7;4985:120;5033:15;4985:120;;;;;;;;;;;;;;;;;:11;:25;4997:12;:10;:12::i;:::-;-1:-1:-1;;;;;4985:25:90;;;;;;;;;;;;;;;;;-1:-1:-1;4985:25:90;;;:34;;;;;;;;;;;;:38;:120::i;2413:214::-;2499:4;2511:42;2521:12;:10;:12::i;:::-;2535:9;2546:6;2511:9;:42::i;:::-;-1:-1:-1;;;;;2564:41:90;;2573:12;:10;:12::i;:::-;-1:-1:-1;;;;;2564:41:90;-1:-1:-1;;;;;;;;;;;2564:41:90;;;;;;;;;;;;;;;;-1:-1:-1;2618:4:90;2413:214;;;;:::o;8971:93:88:-;9050:9;;-1:-1:-1;;;;;9050:9:88;;8971:93::o;9172:109::-;9260:16;;-1:-1:-1;;;;;9260:16:88;;9172:109::o;8755:113::-;8822:7;8844:19;:17;:19::i;1466:42::-;;;;;;;;;;;;;:::o;11128:741::-;-1:-1:-1;;;;;11295:19:88;;11287:45;;;;;-1:-1:-1;;;11287:45:88;;;;;;;;;;;;-1:-1:-1;;;11287:45:88;;;;;;;;;;;;;;;11396:8;11377:15;:27;;11369:58;;;;;-1:-1:-1;;;11369:58:88;;;;;;;;;;;;-1:-1:-1;;;11369:58:88;;;;;;;;;;;;;;;-1:-1:-1;;;;;11461:14:88;;;11433:25;11461:14;;;:7;:14;;;;;;;;;11573:16;;11611:79;;1255:95;11611:79;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11611:79:88;;;;;;;;;;;;;;;;;;;;;;;;;;;11601:90;;;;;;-1:-1:-1;;;11523:178:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11504:205;;;;;;;;;11732:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11504:205;;-1:-1:-1;;11732:26:88;;;;;11461:14;-1:-1:-1;;11732:26:88;;;;;;;;;;;-1:-1:-1;11732:26:88;;;;;;;;;;;;;;;-1:-1:-1;;11732:26:88;;-1:-1:-1;;11732:26:88;;-1:-1:-1;;;;;11723:35:88;;;;;;;-1:-1:-1;11715:65:88;;;;;-1:-1:-1;;;11715:65:88;;;;;;;;;;;;-1:-1:-1;;;11715:65:88;;;;;;;;;;;;;;;11803:24;:17;11825:1;11803:21;:24::i;:::-;-1:-1:-1;;;;;11786:14:88;;;;;;:7;:14;;;;;:41;11833:31;11786:14;11849:7;11858:5;11833:8;:31::i;:::-;11128:741;;;;;;;;;:::o;4024:469::-;1771:5;;-1:-1:-1;;;;;1771:5:88;1747:12;:10;:12::i;:::-;1779:37;;;;;;;;;;;;-1:-1:-1;;;1779:37:88;;;;;-1:-1:-1;;;;;1747:30:88;;;;;1739:78;;;;-1:-1:-1;;;1739:78:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1739:78:88;;;;;;;;;;;;;;;;;-1:-1:-1;4173:20:88::1;4196;:6:::0;4210:5;4196:13:::1;:20::i;:::-;4249:29;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;4249:29:88::1;::::0;::::1;::::0;4173:43;;-1:-1:-1;4173:43:88;4222:57:::1;;;::::0;-1:-1:-1;;;4222:57:88;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;::::1;::::0;;;;-1:-1:-1;4222:57:88;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;4285:25;4291:4;4297:12;4285:5;:25::i;:::-;4324:16;::::0;4317:67:::1;::::0;-1:-1:-1;;;;;4324:16:88::1;4355:20:::0;4377:6;4317:37:::1;:67::i;:::-;4396:34;::::0;;;;;;;4419:1:::1;::::0;-1:-1:-1;;;;;4396:34:88;::::1;::::0;-1:-1:-1;;;;;;;;;;;4396:34:88;;;;::::1;::::0;;::::1;4441:47;::::0;;;;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;4441:47:88;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;1823:1;4024:469:::0;;;;:::o;2893:165:90:-;-1:-1:-1;;;;;3026:18:90;;;3002:7;3026:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2893:165::o;6484:332:88:-;1771:5;;-1:-1:-1;;;;;1771:5:88;1747:12;:10;:12::i;:::-;1779:37;;;;;;;;;;;;-1:-1:-1;;;1779:37:88;;;;;-1:-1:-1;;;;;1747:30:88;;;;;1739:78;;;;-1:-1:-1;;;1739:78:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1739:78:88;;;;;;;;;;;;;;;;;;6741:33:::1;6751:4;6757:2;6761:5;6768;6741:9;:33::i;:::-;-1:-1:-1::0;;;;;;;;6786:25:88;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;;;;6786:25:88::1;::::0;;;;;;;;;;;::::1;::::0;;::::1;6484:332:::0;;;:::o;587:98:7:-;670:10;587:98;:::o;7232:338:90:-;-1:-1:-1;;;;;7345:19:90;;7337:68;;;;-1:-1:-1;;;7337:68:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7419:21:90;;7411:68;;;;-1:-1:-1;;;7411:68:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7486:18:90;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7533:32;;;;;;;;;;;;;;;;;7232:338;;;:::o;1749:119::-;-1:-1:-1;;;;;1845:18:90;1823:7;1845:18;;;:9;:18;;;;;;;1749:119::o;1594:100::-;1677:12;;1594:100;:::o;2416:279:86:-;2508:28;;;;;;;;;;;;-1:-1:-1;;;2508:28:86;;;;-1:-1:-1;;2500:6:86;2492:45;;;;-1:-1:-1;;;2492:45:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2492:45:86;;;;;;;;;;;;;;;;;-1:-1:-1;2619:35:86;;;;;;;;;2563:1;2619:35;;;-1:-1:-1;;;2619:35:86;;;;2559:5;;;432:4;2585:25;;2584:33;2579:38;;;2571:84;;;;-1:-1:-1;;;2571:84:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2571:84:86;;;;;;;;;;;;;;;;;;2689:1;2680:5;432:4;2670:1;:7;:15;2669:21;;;;;;;2416:279;-1:-1:-1;;;;2416:279:86:o;6072:556:90:-;-1:-1:-1;;;;;6151:21:90;;6143:65;;;;;-1:-1:-1;;;6143:65:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;6215:49;6244:1;6248:7;6257:6;6215:20;:49::i;:::-;6296:12;;6329:26;6296:12;6348:6;6329:18;:26::i;:::-;6314:12;:41;-1:-1:-1;;;;;6390:18:90;;6362:25;6390:18;;;:9;:18;;;;;;6435:29;6390:18;6457:6;6435:21;:29::i;:::-;-1:-1:-1;;;;;6414:18:90;;;;;;:9;:18;;;;;:50;;;;6483:26;:24;:26::i;:::-;-1:-1:-1;;;;;6475:49:90;;6471:153;;6534:26;:24;:26::i;:::-;:83;;;-1:-1:-1;;;6534:83:90;;-1:-1:-1;;;;;6534:83:90;;;;;;;;;;;;;;;;;;;;;:39;;;;;;;:83;;;;;-1:-1:-1;;6534:83:90;;;;;;;;-1:-1:-1;6534:39:90;:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6471:153;6072:556;;;;:::o;2008:253:86:-;2069:7;2088:6;;;:16;;-1:-1:-1;2098:6:86;;2088:16;2084:45;;;-1:-1:-1;2121:1:86;2114:8;;2084:45;2180:1;-1:-1:-1;;2180:1:86;2148:33;;;;2183:35;;;;;;;;;;;;-1:-1:-1;;;2183:35:86;;;;;2148:33;;2143:38;;;2135:84;;;;-1:-1:-1;;;2135:84:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2135:84:86;;;;;;;;;;;;;;;;;-1:-1:-1;;432:4:86;2234:5;;476:7;2234:15;2233:23;;2008:253::o;1833:105:88:-;1397:3;1833:105;:::o;1858:510:74:-;2328:9;2316:22;2356:7;1858:510;:::o;7574:76:90:-;7630:15;;;;:5;;:15;;;;;:::i;7654:84::-;7714:19;;;;:7;;:19;;;;;:::i;7742:84::-;7798:9;:23;;-1:-1:-1;;7798:23:90;;;;;;;;;;;;7742:84::o;13072:139:88:-;13173:33;13183:4;13189:2;13193:6;13201:4;13173:9;:33::i;1649:189:13:-;1751:7;1782:12;1774:6;;;;1766:29;;;;-1:-1:-1;;;1766:29:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1766:29:13;;;;;;;;;;;;;;;;;-1:-1:-1;;;1813:5:13;;;1649:189::o;851:162::-;909:7;936:5;;;955:6;;;;947:46;;;;;-1:-1:-1;;;947:46:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;1007:1;851:162;-1:-1:-1;;;851:162:13:o;716:184:12:-;836:58;;;-1:-1:-1;;;;;836:58:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;836:58:12;-1:-1:-1;;;836:58:12;;;810:85;;829:5;;810:18;:85::i;9548:134:88:-;9656:21;;-1:-1:-1;;;;;9656:21:88;;9548:134::o;6632:596:90:-;-1:-1:-1;;;;;6711:21:90;;6703:67;;;;-1:-1:-1;;;6703:67:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6777:49;6798:7;6815:1;6819:6;6777:20;:49::i;:::-;6858:12;;6891:26;6858:12;6910:6;6891:18;:26::i;:::-;6876:12;:41;-1:-1:-1;;;;;6952:18:90;;6924:25;6952:18;;;:9;:18;;;;;;;;;;6997:67;;;;;;;;;;;;6952:18;;6997:67;;7019:6;;6997:67;;;;;;:17;;:67;:21;:67::i;12212:628:88:-;12349:16;;12391:5;;12419:48;;;-1:-1:-1;;;12419:48:88;;-1:-1:-1;;;;;12349:16:88;;;12419:48;;;;;;;;12349:16;;12391:5;;;;-1:-1:-1;;12391:5:88;;-1:-1:-1;;12419:48:88;;;;;;;;;;;;;;12391:5;12419:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12419:48:88;;-1:-1:-1;12474:25:88;12502:35;12419:48;12502:21;12518:4;12502:15;:21::i;:35::-;12474:63;;12543:23;12569:33;12596:5;12569:19;12585:2;12569:15;:19::i;:33::-;12543:59;-1:-1:-1;12609:47:88;12625:4;12631:2;12635:20;:6;12649:5;12635:13;:20::i;:::-;12609:15;:47::i;:::-;12667:8;12663:121;;;12685:92;;;-1:-1:-1;;;12685:92:88;;-1:-1:-1;;;;;12685:92:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;;-1:-1:-1;;12685:92:88;;;;;-1:-1:-1;;12685:92:88;;;;;;;;-1:-1:-1;12685:21:88;:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12663:121;12795:40;;;;;;;;;;;;;;-1:-1:-1;;;;;12795:40:88;;;;;;;;;;;;;;;;;;;12212:628;;;;;;;;;:::o;1473:555:12:-;1556:27;-1:-1:-1;;;;;1556:25:12;;;:27::i;:::-;1548:71;;;;;-1:-1:-1;;;1548:71:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;1682:12;1696:23;1731:5;-1:-1:-1;;;;;1723:19:12;1743:4;1723:25;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1723:25:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1681:67;;;;1762:7;1754:52;;;;;-1:-1:-1;;;1754:52:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1817:17;;:21;1813:211;;1951:10;1940:30;;;;;;;;;;;;;;;-1:-1:-1;1940:30:12;1932:85;;;;-1:-1:-1;;;1932:85:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1257:128:13;1315:7;1337:43;1341:1;1344;1337:43;;;;;;;;;;;;;;;;;:3;:43::i;5137:931:90:-;-1:-1:-1;;;;;5254:20:90;;5246:70;;;;-1:-1:-1;;;5246:70:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5330:23:90;;5322:71;;;;-1:-1:-1;;;5322:71:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5400:47;5421:6;5429:9;5440:6;5400:20;:47::i;:::-;-1:-1:-1;;;;;5481:17:90;;5454:24;5481:17;;;:9;:17;;;;;;;;;;5524:70;;;;;;;;;;;;5481:17;;5524:70;;5545:6;;5524:70;;;;;;:16;;:70;:20;:70::i;:::-;-1:-1:-1;;;;;5504:17:90;;;;;;;:9;:17;;;;;;:90;;;;5630:20;;;;;;;5679:32;5630:20;5704:6;5679:24;:32::i;:::-;-1:-1:-1;;;;;5656:20:90;;;;;;:9;:20;;;;;:55;;;;5730:26;:24;:26::i;:::-;-1:-1:-1;;;;;5722:49:90;;5718:346;;5810:12;;5830:26;:24;:26::i;:::-;:85;;;-1:-1:-1;;;5830:85:90;;-1:-1:-1;;;;;5830:85:90;;;;;;;;;;;;;;;;;;;;;:39;;;;;;;:85;;;;;-1:-1:-1;;5830:85:90;;;;;;;;-1:-1:-1;5830:39:90;:85;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;5927:19:90;;;;;;;5923:135;;5958:26;:24;:26::i;:::-;:91;;;-1:-1:-1;;;5958:91:90;;-1:-1:-1;;;;;5958:91:90;;;;;;;;;;;;;;;;;;;;;:39;;;;;;;:91;;;;;-1:-1:-1;;5958:91:90;;;;;;;;-1:-1:-1;5958:39:90;:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5923:135;5718:346;;5137:931;;;;;:::o;686:586:6:-;746:4;1185:20;;1032:66;1224:23;;;;;;:42;;-1:-1:-1;1251:15:6;;;1224:42;1216:51;686:586;-1:-1:-1;;;;686:586:6:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;"
            },
            "methodIdentifiers": {
              "ATOKEN_REVISION()": "0bd7ad3b",
              "DOMAIN_SEPARATOR()": "3644e515",
              "EIP712_REVISION()": "78160376",
              "PERMIT_TYPEHASH()": "30adf81f",
              "POOL()": "7535d246",
              "RESERVE_TREASURY_ADDRESS()": "ae167335",
              "UNDERLYING_ASSET_ADDRESS()": "b16a19de",
              "_nonces(address)": "b9844d8d",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "burn(address,address,uint256,uint256)": "d7020d0a",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "getIncentivesController()": "75d26413",
              "getScaledUserBalanceAndSupply(address)": "0afbcdc9",
              "handleRepayment(address,uint256)": "88dd91a1",
              "increaseAllowance(address,uint256)": "39509351",
              "initialize(address,address,address,address,uint8,string,string,bytes)": "183fb413",
              "mint(address,uint256,uint256)": "156e29f6",
              "mintToTreasury(uint256,uint256)": "7df5bd3b",
              "name()": "06fdde03",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "scaledBalanceOf(address)": "1da24f3e",
              "scaledTotalSupply()": "b1bf962d",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOnLiquidation(address,address,uint256)": "f866c319",
              "transferUnderlyingTo(address,uint256)": "4efecaa5"
            }
          }
        }
      },
      "contracts/protocol/tokenization/DelegationAwareAToken.sol": {
        "DelegationAwareAToken": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "BalanceTransfer",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "underlyingAsset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "treasury",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "incentivesController",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "aTokenDecimals",
                  "type": "uint8"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "aTokenName",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "aTokenSymbol",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "Mint",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "ATOKEN_REVISION",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "EIP712_REVISION",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PERMIT_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "POOL",
              "outputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "RESERVE_TREASURY_ADDRESS",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "UNDERLYING_ASSET_ADDRESS",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "_nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiverOfUnderlying",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "burn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "subtractedValue",
                  "type": "uint256"
                }
              ],
              "name": "decreaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                }
              ],
              "name": "delegateUnderlyingTo",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getIncentivesController",
              "outputs": [
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getScaledUserBalanceAndSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "handleRepayment",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "addedValue",
                  "type": "uint256"
                }
              ],
              "name": "increaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "treasury",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "underlyingAsset",
                  "type": "address"
                },
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "incentivesController",
                  "type": "address"
                },
                {
                  "internalType": "uint8",
                  "name": "aTokenDecimals",
                  "type": "uint8"
                },
                {
                  "internalType": "string",
                  "name": "aTokenName",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "aTokenSymbol",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "mintToTreasury",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "scaledBalanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "scaledTotalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferOnLiquidation",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferUnderlyingTo",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052600080553480156200001557600080fd5b50604080518082018252600b8082526a105513d2d15397d253541360aa1b60208084018281528551808701909652928552840152815191929160009162000060916037919062000094565b5081516200007690603890602085019062000094565b506039805460ff191660ff9290921691909117905550620001309050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000d757805160ff191683800117855562000107565b8280016001018555821562000107579182015b8281111562000107578251825591602001919060010190620000ea565b506200011592915062000119565b5090565b5b808211156200011557600081556001016200011a565b612a2680620001406000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637535d2461161010f578063ae167335116100a2578063d505accf11610071578063d505accf146106db578063d7020d0a1461072c578063dd62ed3e14610768578063f866c31914610796576101f0565b8063ae1673351461069d578063b16a19de146106a5578063b1bf962d146106ad578063b9844d8d146106b5576101f0565b806388dd91a1116100de57806388dd91a11461061157806395d89b411461063d578063a457c2d714610645578063a9059cbb14610671576101f0565b80637535d246146105ba57806375d26413146105de57806378160376146105e65780637df5bd3b146105ee576101f0565b806323b872dd116101875780633644e515116101565780633644e51514610534578063395093511461053c5780634efecaa51461056857806370a0823114610594576101f0565b806323b872dd146104b25780632f114618146104e857806330adf81f1461050e578063313ce56714610516576101f0565b8063156e29f6116101c3578063156e29f61461030b57806318160ddd1461033d578063183fb413146103455780631da24f3e1461048c576101f0565b806306fdde03146101f5578063095ea7b3146102725780630afbcdc9146102b25780630bd7ad3b146102f1575b600080fd5b6101fd6107cc565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023757818101518382015260200161021f565b50505050905090810190601f1680156102645780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61029e6004803603604081101561028857600080fd5b506001600160a01b038135169060200135610863565b604080519115158252519081900360200190f35b6102d8600480360360208110156102c857600080fd5b50356001600160a01b0316610881565b6040805192835260208301919091528051918290030190f35b6102f961089e565b60408051918252519081900360200190f35b61029e6004803603606081101561032157600080fd5b506001600160a01b0381351690602081013590604001356108a3565b6102f9610a71565b61048a600480360361010081101561035c57600080fd5b6001600160a01b038235811692602081013582169260408201358316926060830135169160ff6080820135169181019060c0810160a08201356401000000008111156103a757600080fd5b8201836020820111156103b957600080fd5b803590602001918460018302840111640100000000831117156103db57600080fd5b9193909290916020810190356401000000008111156103f957600080fd5b82018360208201111561040b57600080fd5b8035906020019184600183028401116401000000008311171561042d57600080fd5b91939092909160208101903564010000000081111561044b57600080fd5b82018360208201111561045d57600080fd5b8035906020019184600183028401116401000000008311171561047f57600080fd5b509092509050610b1b565b005b6102f9600480360360208110156104a257600080fd5b50356001600160a01b0316610e98565b61029e600480360360608110156104c857600080fd5b506001600160a01b03813581169160208101359091169060400135610ea3565b61048a600480360360208110156104fe57600080fd5b50356001600160a01b0316610f63565b6102f9611137565b61051e61115b565b6040805160ff9092168252519081900360200190f35b6102f9611164565b61029e6004803603604081101561055257600080fd5b506001600160a01b03813516906020013561116a565b6102f96004803603604081101561057e57600080fd5b506001600160a01b0381351690602001356111b8565b6102f9600480360360208110156105aa57600080fd5b50356001600160a01b031661125e565b6105c26112ed565b604080516001600160a01b039092168252519081900360200190f35b6105c26112fc565b6101fd61130b565b61048a6004803603604081101561060457600080fd5b5080359060200135611328565b61048a6004803603604081101561062757600080fd5b506001600160a01b03813516906020013561144f565b6101fd6114d9565b61029e6004803603604081101561065b57600080fd5b506001600160a01b03813516906020013561153a565b61029e6004803603604081101561068757600080fd5b506001600160a01b0381351690602001356115a2565b6105c26115ff565b6105c261160e565b6102f961161d565b6102f9600480360360208110156106cb57600080fd5b50356001600160a01b0316611627565b61048a600480360360e08110156106f157600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611639565b61048a6004803603608081101561074257600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611880565b6102f96004803603604081101561077e57600080fd5b506001600160a01b0381358116916020013516611a25565b61048a600480360360608110156107ac57600080fd5b506001600160a01b03813581169160208101359091169060400135611a50565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108585780601f1061082d57610100808354040283529160200191610858565b820191906000526020600020905b81548152906001019060200180831161083b57829003601f168201915b505050505090505b90565b6000610877610870611b21565b8484611b25565b5060015b92915050565b60008061088d83611c11565b610895611c2c565b91509150915091565b600181565b603c546000906001600160a01b03166108ba611b21565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906109685760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561092d578181015183820152602001610915565b50505050905090810190601f16801561095a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600061097485611c11565b905060006109828585611c32565b6040805180820190915260028152611a9b60f11b6020820152909150816109ea5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b506109f58682611d39565b6040805186815290516001600160a01b038816916000916000805160206129188339815191529181900360200190a3604080518681526020810186905281516001600160a01b038916927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25015949350505050565b600080610a7c611c2c565b905080610a8d576000915050610860565b603c54603e546040805163d15e005360e01b81526001600160a01b0392831660048201529051610b1593929092169163d15e005391602480820192602092909190829003018186803b158015610ae257600080fd5b505afa158015610af6573d6000803e3d6000fd5b505050506040513d6020811015610b0c57600080fd5b50518290611e8a565b91505090565b6000610b25611f48565b60015490915060ff1680610b3c5750610b3c611f4d565b80610b48575060005481115b610b835760405162461bcd60e51b815260040180806020018281038252602e8152602001806128ea602e913960400191505060405180910390fd5b60015460ff16158015610ba2576001805460ff19168117905560008290555b60004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f89896040518083838082843780830192505050925050506040518091039020604051806040016040528060018152602001603160f81b81525080519060200120833060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120603b81905550610c9a89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f5392505050565b610cd987878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f6692505050565b610ce28a611f79565b8d603c60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c603d60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b603e60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a603f60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508d6001600160a01b03168c6001600160a01b03167fb19e051f8af41150ccccb3fc2c2d8d15f4a4cf434f32a559ba75fe73d6eea20b8f8e8e8e8e8e8e8e8e604051808a6001600160a01b03168152602001896001600160a01b031681526020018860ff16815260200180602001806020018060200184810384528a8a82818152602001925080828437600083820152601f01601f191690910185810384528881526020019050888880828437600083820152601f01601f191690910185810383528681526020019050868680828437600083820152604051601f909101601f19169092018290039e50909c50505050505050505050505050a3508015610e89576001805460ff191690555b50505050505050505050505050565b600061087b82611c11565b6000610eb0848484611f8f565b610f2084610ebc611b21565b610f1b856040518060600160405280602881526020016128c2602891396001600160a01b038a16600090815260356020526040812090610efa611b21565b6001600160a01b031681526020810191909152604001600020549190611f9c565b611b25565b826001600160a01b0316846001600160a01b0316600080516020612918833981519152846040518082815260200191505060405180910390a35060019392505050565b603c60009054906101000a90046001600160a01b03166001600160a01b031663fe65acfe6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fb157600080fd5b505afa158015610fc5573d6000803e3d6000fd5b505050506040513d6020811015610fdb57600080fd5b5051604080516315d9b46f60e31b815290516001600160a01b039092169163aecda37891600480820192602092909190829003018186803b15801561101f57600080fd5b505afa158015611033573d6000803e3d6000fd5b505050506040513d602081101561104957600080fd5b50516001600160a01b031661105c611b21565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906110cd5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b50603e54604080516317066a5760e21b81526001600160a01b03848116600483015291519190921691635c19a95c91602480830192600092919082900301818387803b15801561111c57600080fd5b505af1158015611130573d6000803e3d6000fd5b5050505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60395460ff1690565b603b5481565b6000610877611177611b21565b84610f1b8560356000611188611b21565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611ff6565b603c546000906001600160a01b03166111cf611b21565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906112405760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b50603e54611258906001600160a01b03168484612057565b50919050565b603c54603e546040805163d15e005360e01b81526001600160a01b039283166004820152905160009361087b93169163d15e0053916024808301926020929190829003018186803b1580156112b257600080fd5b505afa1580156112c6573d6000803e3d6000fd5b505050506040513d60208110156112dc57600080fd5b50516112e784611c11565b90611e8a565b603c546001600160a01b031690565b60006113066120a9565b905090565b604051806040016040528060018152602001603160f81b81525081565b603c546001600160a01b031661133c611b21565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906113ad5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b50816113b85761144b565b603d546001600160a01b03166113d7816113d28585611c32565b611d39565b6040805184815290516001600160a01b038316916000916000805160206129188339815191529181900360200190a3604080518481526020810184905281516001600160a01b038416927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a2505b5050565b603c546001600160a01b0316611463611b21565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906114d45760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b505050565b60388054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108585780601f1061082d57610100808354040283529160200191610858565b6000610877611547611b21565b84610f1b856040518060600160405280602581526020016129cc6025913960356000611571611b21565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611f9c565b60006115b66115af611b21565b8484611f8f565b826001600160a01b03166115c8611b21565b6001600160a01b0316600080516020612918833981519152846040518082815260200191505060405180910390a350600192915050565b603d546001600160a01b031690565b603e546001600160a01b031690565b6000611306611c2c565b603a6020526000908152604090205481565b6001600160a01b038716611684576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa7aba722a960991b604482015290519081900360640190fd5b834211156116ce576040805162461bcd60e51b815260206004820152601260248201527124a72b20a624a22fa2ac2824a920aa24a7a760711b604482015290519081900360640190fd5b6001600160a01b038088166000818152603a6020908152604080832054603b5482517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a0850181905260c08086018b90528251808703909101815260e08601835280519084012061190160f01b6101008701526101028601969096526101228086019690965281518086039096018652610142850180835286519684019690962093909552610162840180825283905260ff88166101828501526101a284018790526101c284018690525191926001926101e28083019392601f198301929081900390910190855afa1580156117e3573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614611846576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b611851826001611ff6565b6001600160a01b038a166000908152603a6020526040902055611875898989611b25565b505050505050505050565b603c546001600160a01b0316611894611b21565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906119055760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b5060006119128383611c32565b60408051808201909152600281526106a760f31b60208201529091508161197a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b5061198585826120b8565b603e5461199c906001600160a01b03168585612057565b6040805184815290516000916001600160a01b038816916000805160206129188339815191529181900360200190a3836001600160a01b0316856001600160a01b03167f5d624aa9c148153ab3446c1b154f660ee7701e549fe9b62dab7171b1c80e6fa28585604051808381526020018281526020019250505060405180910390a35050505050565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b603c546001600160a01b0316611a64611b21565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090611ad55760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b50611ae3838383600061215c565b816001600160a01b0316836001600160a01b0316600080516020612918833981519152836040518082815260200191505060405180910390a3505050565b3390565b6001600160a01b038316611b6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061297e6024913960400191505060405180910390fd5b6001600160a01b038216611baf5760405162461bcd60e51b815260040180806020018281038252602281526020018061287a6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260356020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b031660009081526034602052604090205490565b60365490565b604080518082019091526002815261035360f41b602082015260009082611c9a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce8000000821904851115611d165760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b5082816b033b2e3c9fd0803ce800000086020181611d3057fe5b04949350505050565b6001600160a01b038216611d94576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611da0600083836114d4565b603654611dad8183611ff6565b6036556001600160a01b038316600090815260346020526040902054611dd38184611ff6565b6001600160a01b038516600090815260346020526040812091909155611df76120a9565b6001600160a01b031614611e8457611e0d6120a9565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015611e6b57600080fd5b505af1158015611e7f573d6000803e3d6000fd5b505050505b50505050565b6000821580611e97575081155b15611ea45750600061087b565b816b019d971e4fe8401e740000001981611eba57fe5b0483111560405180604001604052806002815260200161068760f31b81525090611f255760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b600190565b303b1590565b805161144b9060379060208401906127a1565b805161144b9060389060208401906127a1565b6039805460ff191660ff92909216919091179055565b6114d4838383600161215c565b60008184841115611fee5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b505050900390565b600082820183811015612050576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526114d4908490612305565b603f546001600160a01b031690565b6001600160a01b0382166120fd5760405162461bcd60e51b81526004018080602001828103825260218152602001806129386021913960400191505060405180910390fd5b612109826000836114d4565b60365461211681836124bd565b6036556001600160a01b0383166000908152603460209081526040918290205482516060810190935260228084529092611dd39286929061285890830139839190611f9c565b603e54603c546040805163d15e005360e01b81526001600160a01b03938416600482018190529151919390921691600091839163d15e0053916024808301926020929190829003018186803b1580156121b457600080fd5b505afa1580156121c8573d6000803e3d6000fd5b505050506040513d60208110156121de57600080fd5b5051905060006121f1826112e78a611c11565b90506000612202836112e78a611c11565b905061221889896122138a87611c32565b6124ff565b85156122a7576040805163d5ed393360e01b81526001600160a01b0387811660048301528b811660248301528a81166044830152606482018a90526084820185905260a4820184905291519186169163d5ed39339160c48082019260009290919082900301818387803b15801561228e57600080fd5b505af11580156122a2573d6000803e3d6000fd5b505050505b876001600160a01b0316896001600160a01b03167f4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda86668986604051808381526020018281526020019250505060405180910390a3505050505050505050565b612317826001600160a01b0316612765565b612368576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106123a65780518252601f199092019160209182019101612387565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612408576040519150601f19603f3d011682016040523d82523d6000602084013e61240d565b606091505b509150915081612464576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611e845780806020019051602081101561248057600080fd5b5051611e845760405162461bcd60e51b815260040180806020018281038252602a8152602001806129a2602a913960400191505060405180910390fd5b600061205083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f9c565b6001600160a01b0383166125445760405162461bcd60e51b81526004018080602001828103825260258152602001806129596025913960400191505060405180910390fd5b6001600160a01b0382166125895760405162461bcd60e51b81526004018080602001828103825260238152602001806128356023913960400191505060405180910390fd5b6125948383836114d4565b600060346000856001600160a01b03166001600160a01b031681526020019081526020016000205490506125e38260405180606001604052806026815260200161289c60269139839190611f9c565b6001600160a01b0380861660009081526034602052604080822093909355908516815220546126128184611ff6565b6001600160a01b0385166000908152603460205260408120919091556126366120a9565b6001600160a01b0316146111305760365461264f6120a9565b6001600160a01b03166331873e2e8783866040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b1580156126ad57600080fd5b505af11580156126c1573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03161461275d576126e66120a9565b6001600160a01b03166331873e2e8683856040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561274457600080fd5b505af1158015612758573d6000803e3d6000fd5b505050505b505050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061279957508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106127e257805160ff191683800117855561280f565b8280016001018555821561280f579182015b8281111561280f5782518255916020019190600101906127f4565b5061281b92915061281f565b5090565b5b8082111561281b576000815560010161282056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204c96198658c4d202eafe387a873e0e1a911bcca29f7b25dc78a87baa406031c664736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xB DUP1 DUP3 MSTORE PUSH11 0x105513D2D15397D2535413 PUSH1 0xAA SHL PUSH1 0x20 DUP1 DUP5 ADD DUP3 DUP2 MSTORE DUP6 MLOAD DUP1 DUP8 ADD SWAP1 SWAP7 MSTORE SWAP3 DUP6 MSTORE DUP5 ADD MSTORE DUP2 MLOAD SWAP2 SWAP3 SWAP2 PUSH1 0x0 SWAP2 PUSH3 0x60 SWAP2 PUSH1 0x37 SWAP2 SWAP1 PUSH3 0x94 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0x76 SWAP1 PUSH1 0x38 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x94 JUMP JUMPDEST POP PUSH1 0x39 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0x130 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0xD7 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x107 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x107 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x107 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xEA JUMP JUMPDEST POP PUSH3 0x115 SWAP3 SWAP2 POP PUSH3 0x119 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x115 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x11A JUMP JUMPDEST PUSH2 0x2A26 DUP1 PUSH3 0x140 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1F0 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7535D246 GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xAE167335 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x6DB JUMPI DUP1 PUSH4 0xD7020D0A EQ PUSH2 0x72C JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x768 JUMPI DUP1 PUSH4 0xF866C319 EQ PUSH2 0x796 JUMPI PUSH2 0x1F0 JUMP JUMPDEST DUP1 PUSH4 0xAE167335 EQ PUSH2 0x69D JUMPI DUP1 PUSH4 0xB16A19DE EQ PUSH2 0x6A5 JUMPI DUP1 PUSH4 0xB1BF962D EQ PUSH2 0x6AD JUMPI DUP1 PUSH4 0xB9844D8D EQ PUSH2 0x6B5 JUMPI PUSH2 0x1F0 JUMP JUMPDEST DUP1 PUSH4 0x88DD91A1 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x88DD91A1 EQ PUSH2 0x611 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x63D JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x645 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x671 JUMPI PUSH2 0x1F0 JUMP JUMPDEST DUP1 PUSH4 0x7535D246 EQ PUSH2 0x5BA JUMPI DUP1 PUSH4 0x75D26413 EQ PUSH2 0x5DE JUMPI DUP1 PUSH4 0x78160376 EQ PUSH2 0x5E6 JUMPI DUP1 PUSH4 0x7DF5BD3B EQ PUSH2 0x5EE JUMPI PUSH2 0x1F0 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x187 JUMPI DUP1 PUSH4 0x3644E515 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x534 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x53C JUMPI DUP1 PUSH4 0x4EFECAA5 EQ PUSH2 0x568 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x594 JUMPI PUSH2 0x1F0 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x4B2 JUMPI DUP1 PUSH4 0x2F114618 EQ PUSH2 0x4E8 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x50E JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x516 JUMPI PUSH2 0x1F0 JUMP JUMPDEST DUP1 PUSH4 0x156E29F6 GT PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x156E29F6 EQ PUSH2 0x30B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x33D JUMPI DUP1 PUSH4 0x183FB413 EQ PUSH2 0x345 JUMPI DUP1 PUSH4 0x1DA24F3E EQ PUSH2 0x48C JUMPI PUSH2 0x1F0 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1F5 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x272 JUMPI DUP1 PUSH4 0xAFBCDC9 EQ PUSH2 0x2B2 JUMPI DUP1 PUSH4 0xBD7AD3B EQ PUSH2 0x2F1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1FD PUSH2 0x7CC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x237 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x21F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x264 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x29E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x288 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2D8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x881 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x2F9 PUSH2 0x89E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x29E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x321 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x8A3 JUMP JUMPDEST PUSH2 0x2F9 PUSH2 0xA71 JUMP JUMPDEST PUSH2 0x48A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x35C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP4 AND SWAP3 PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP2 DUP2 ADD SWAP1 PUSH1 0xC0 DUP2 ADD PUSH1 0xA0 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x40B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x42D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x44B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x47F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xB1B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE98 JUMP JUMPDEST PUSH2 0x29E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x4C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xEA3 JUMP JUMPDEST PUSH2 0x48A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF63 JUMP JUMPDEST PUSH2 0x2F9 PUSH2 0x1137 JUMP JUMPDEST PUSH2 0x51E PUSH2 0x115B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2F9 PUSH2 0x1164 JUMP JUMPDEST PUSH2 0x29E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x552 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x116A JUMP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x57E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x11B8 JUMP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x125E JUMP JUMPDEST PUSH2 0x5C2 PUSH2 0x12ED JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x5C2 PUSH2 0x12FC JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x130B JUMP JUMPDEST PUSH2 0x48A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x604 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1328 JUMP JUMPDEST PUSH2 0x48A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x627 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x144F JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x14D9 JUMP JUMPDEST PUSH2 0x29E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x65B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x153A JUMP JUMPDEST PUSH2 0x29E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x687 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x15A2 JUMP JUMPDEST PUSH2 0x5C2 PUSH2 0x15FF JUMP JUMPDEST PUSH2 0x5C2 PUSH2 0x160E JUMP JUMPDEST PUSH2 0x2F9 PUSH2 0x161D JUMP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1627 JUMP JUMPDEST PUSH2 0x48A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x6F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1639 JUMP JUMPDEST PUSH2 0x48A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x742 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x1880 JUMP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x77E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1A25 JUMP JUMPDEST PUSH2 0x48A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x7AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1A50 JUMP JUMPDEST PUSH1 0x37 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x858 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x82D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x858 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x83B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x877 PUSH2 0x870 PUSH2 0x1B21 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1B25 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x88D DUP4 PUSH2 0x1C11 JUMP JUMPDEST PUSH2 0x895 PUSH2 0x1C2C JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8BA PUSH2 0x1B21 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x968 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x92D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x915 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x95A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0x974 DUP6 PUSH2 0x1C11 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x982 DUP6 DUP6 PUSH2 0x1C32 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1A9B PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0x9EA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x92D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x915 JUMP JUMPDEST POP PUSH2 0x9F5 DUP7 DUP3 PUSH2 0x1D39 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2918 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP ISZERO SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA7C PUSH2 0x1C2C JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xA8D JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x860 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x3E SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0xB15 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xD15E0053 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 SWAP1 PUSH2 0x1E8A JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB25 PUSH2 0x1F48 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 PUSH2 0xB3C JUMPI POP PUSH2 0xB3C PUSH2 0x1F4D JUMP JUMPDEST DUP1 PUSH2 0xB48 JUMPI POP PUSH1 0x0 SLOAD DUP2 GT JUMPDEST PUSH2 0xB83 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x28EA PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0xBA2 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 OR SWAP1 SSTORE PUSH1 0x0 DUP3 SWAP1 SSTORE JUMPDEST PUSH1 0x0 CHAINID SWAP1 POP PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP10 DUP10 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP4 ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x3B DUP2 SWAP1 SSTORE POP PUSH2 0xC9A DUP10 DUP10 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1F53 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xCD9 DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1F66 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xCE2 DUP11 PUSH2 0x1F79 JUMP JUMPDEST DUP14 PUSH1 0x3C PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP13 PUSH1 0x3D PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP12 PUSH1 0x3E PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP11 PUSH1 0x3F PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xB19E051F8AF41150CCCCB3FC2C2D8D15F4A4CF434F32A559BA75FE73D6EEA20B DUP16 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP1 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP11 DUP11 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD DUP6 DUP2 SUB DUP5 MSTORE DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 POP DUP9 DUP9 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD DUP6 DUP2 SUB DUP4 MSTORE DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 POP DUP7 DUP7 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP15 POP SWAP1 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP LOG3 POP DUP1 ISZERO PUSH2 0xE89 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x87B DUP3 PUSH2 0x1C11 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEB0 DUP5 DUP5 DUP5 PUSH2 0x1F8F JUMP JUMPDEST PUSH2 0xF20 DUP5 PUSH2 0xEBC PUSH2 0x1B21 JUMP JUMPDEST PUSH2 0xF1B DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28C2 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0xEFA PUSH2 0x1B21 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1F9C JUMP JUMPDEST PUSH2 0x1B25 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2918 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x3C PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFE65ACFE PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFC5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x101F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1033 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1049 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x105C PUSH2 0x1B21 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x10CD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x92D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x915 JUMP JUMPDEST POP PUSH1 0x3E SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x17066A57 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x5C19A95C SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x111C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1130 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x39 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x3B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x877 PUSH2 0x1177 PUSH2 0x1B21 JUMP JUMPDEST DUP5 PUSH2 0xF1B DUP6 PUSH1 0x35 PUSH1 0x0 PUSH2 0x1188 PUSH2 0x1B21 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x1FF6 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11CF PUSH2 0x1B21 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1240 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x92D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x915 JUMP JUMPDEST POP PUSH1 0x3E SLOAD PUSH2 0x1258 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH2 0x2057 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x3E SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 PUSH2 0x87B SWAP4 AND SWAP2 PUSH4 0xD15E0053 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12C6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x12E7 DUP5 PUSH2 0x1C11 JUMP JUMPDEST SWAP1 PUSH2 0x1E8A JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1306 PUSH2 0x20A9 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x133C PUSH2 0x1B21 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x13AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x92D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x915 JUMP JUMPDEST POP DUP2 PUSH2 0x13B8 JUMPI PUSH2 0x144B JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13D7 DUP2 PUSH2 0x13D2 DUP6 DUP6 PUSH2 0x1C32 JUMP JUMPDEST PUSH2 0x1D39 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH1 0x0 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2918 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1463 PUSH2 0x1B21 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x14D4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x92D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x915 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x38 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x858 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x82D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x858 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x877 PUSH2 0x1547 PUSH2 0x1B21 JUMP JUMPDEST DUP5 PUSH2 0xF1B DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x29CC PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x35 PUSH1 0x0 PUSH2 0x1571 PUSH2 0x1B21 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1F9C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15B6 PUSH2 0x15AF PUSH2 0x1B21 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1F8F JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x15C8 PUSH2 0x1B21 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2918 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1306 PUSH2 0x1C2C JUMP JUMPDEST PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x1684 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x24A72B20A624A22FA7ABA722A9 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x16CE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x24A72B20A624A22FA2AC2824A920AA24A7A7 PUSH1 0x71 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x3B SLOAD DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP13 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP12 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP1 DUP7 ADD DUP12 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP8 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP7 ADD DUP4 MSTORE DUP1 MLOAD SWAP1 DUP5 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH2 0x100 DUP8 ADD MSTORE PUSH2 0x102 DUP7 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP7 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP6 ADD DUP1 DUP4 MSTORE DUP7 MLOAD SWAP7 DUP5 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP4 SWAP1 SWAP6 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP4 SWAP1 MSTORE PUSH1 0xFF DUP9 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP8 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP7 SWAP1 MSTORE MLOAD SWAP2 SWAP3 PUSH1 0x1 SWAP3 PUSH2 0x1E2 DUP1 DUP4 ADD SWAP4 SWAP3 PUSH1 0x1F NOT DUP4 ADD SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17E3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1846 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x494E56414C49445F5349474E4154555245 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1851 DUP3 PUSH1 0x1 PUSH2 0x1FF6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x1875 DUP10 DUP10 DUP10 PUSH2 0x1B25 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1894 PUSH2 0x1B21 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1905 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x92D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x915 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x1912 DUP4 DUP4 PUSH2 0x1C32 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x6A7 PUSH1 0xF3 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0x197A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x92D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x915 JUMP JUMPDEST POP PUSH2 0x1985 DUP6 DUP3 PUSH2 0x20B8 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH2 0x199C SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 PUSH2 0x2057 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2918 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x5D624AA9C148153AB3446C1B154F660EE7701E549FE9B62DAB7171B1C80E6FA2 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A64 PUSH2 0x1B21 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1AD5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x92D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x915 JUMP JUMPDEST POP PUSH2 0x1AE3 DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x215C JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2918 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1B6A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x297E PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1BAF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x287A PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x36 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x1C9A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x92D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x915 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x1D16 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x92D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x915 JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x1D30 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1D94 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1DA0 PUSH1 0x0 DUP4 DUP4 PUSH2 0x14D4 JUMP JUMPDEST PUSH1 0x36 SLOAD PUSH2 0x1DAD DUP2 DUP4 PUSH2 0x1FF6 JUMP JUMPDEST PUSH1 0x36 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1DD3 DUP2 DUP5 PUSH2 0x1FF6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1DF7 PUSH2 0x20A9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1E84 JUMPI PUSH2 0x1E0D PUSH2 0x20A9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP6 DUP5 DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1E7F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x1E97 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x1EA4 JUMPI POP PUSH1 0x0 PUSH2 0x87B JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x1EBA JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1F25 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x92D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x915 JUMP JUMPDEST POP POP PUSH12 0x33B2E3C9FD0803CE8000000 SWAP2 MUL PUSH12 0x19D971E4FE8401E74000000 ADD DIV SWAP1 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x144B SWAP1 PUSH1 0x37 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x27A1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x144B SWAP1 PUSH1 0x38 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x27A1 JUMP JUMPDEST PUSH1 0x39 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x14D4 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x215C JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1FEE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x92D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x915 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x2050 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x14D4 SWAP1 DUP5 SWAP1 PUSH2 0x2305 JUMP JUMPDEST PUSH1 0x3F SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x20FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2938 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2109 DUP3 PUSH1 0x0 DUP4 PUSH2 0x14D4 JUMP JUMPDEST PUSH1 0x36 SLOAD PUSH2 0x2116 DUP2 DUP4 PUSH2 0x24BD JUMP JUMPDEST PUSH1 0x36 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x22 DUP1 DUP5 MSTORE SWAP1 SWAP3 PUSH2 0x1DD3 SWAP3 DUP7 SWAP3 SWAP1 PUSH2 0x2858 SWAP1 DUP4 ADD CODECOPY DUP4 SWAP2 SWAP1 PUSH2 0x1F9C JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP4 SWAP1 SWAP3 AND SWAP2 PUSH1 0x0 SWAP2 DUP4 SWAP2 PUSH4 0xD15E0053 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x21B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x21C8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x21F1 DUP3 PUSH2 0x12E7 DUP11 PUSH2 0x1C11 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2202 DUP4 PUSH2 0x12E7 DUP11 PUSH2 0x1C11 JUMP JUMPDEST SWAP1 POP PUSH2 0x2218 DUP10 DUP10 PUSH2 0x2213 DUP11 DUP8 PUSH2 0x1C32 JUMP JUMPDEST PUSH2 0x24FF JUMP JUMPDEST DUP6 ISZERO PUSH2 0x22A7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH4 0xD5ED3933 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP11 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP11 SWAP1 MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0xA4 DUP3 ADD DUP5 SWAP1 MSTORE SWAP2 MLOAD SWAP2 DUP7 AND SWAP2 PUSH4 0xD5ED3933 SWAP2 PUSH1 0xC4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x228E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x22A2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4BECCB90F994C31ACED7A23B5611020728A23D8EC5CDDD1A3E9D97B96FDA8666 DUP10 DUP7 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2317 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2765 JUMP JUMPDEST PUSH2 0x2368 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x23A6 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2387 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2408 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x240D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2464 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1E84 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2480 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1E84 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x29A2 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2050 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1F9C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2544 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2959 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2589 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2835 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2594 DUP4 DUP4 DUP4 PUSH2 0x14D4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x34 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH2 0x25E3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x289C PUSH1 0x26 SWAP2 CODECOPY DUP4 SWAP2 SWAP1 PUSH2 0x1F9C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP6 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x2612 DUP2 DUP5 PUSH2 0x1FF6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x2636 PUSH2 0x20A9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1130 JUMPI PUSH1 0x36 SLOAD PUSH2 0x264F PUSH2 0x20A9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP8 DUP4 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26C1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x275D JUMPI PUSH2 0x26E6 PUSH2 0x20A9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP7 DUP4 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2744 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2758 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2799 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x27E2 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x280F JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x280F JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x280F JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x27F4 JUMP JUMPDEST POP PUSH2 0x281B SWAP3 SWAP2 POP PUSH2 0x281F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x281B JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2820 JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E6365436F6E74726163742069 PUSH15 0x7374616E63652068617320616C7265 PUSH2 0x6479 KECCAK256 PUSH3 0x65656E KECCAK256 PUSH10 0x6E697469616C697A6564 0xDD CALLCODE MSTORE 0xAD SHL 0xE2 0xC8 SWAP12 PUSH10 0xC2B068FC378DAA952BA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A207472616E7366657220 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 MSTORE8 PUSH2 0x6665 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x75636365656445524332303A2064656372656173 PUSH6 0x6420616C6C6F PUSH24 0x616E63652062656C6F77207A65726FA26469706673582212 KECCAK256 0x4C SWAP7 NOT DUP7 PC 0xC4 0xD2 MUL 0xEA INVALID CODESIZE PUSH27 0x873E0E1A911BCCA29F7B25DC78A87BAA406031C664736F6C634300 MOD 0xC STOP CALLER ",
              "sourceMap": "505:521:89:-:0;;;926:1:74;884:43;;505:521:89;;;;;;;;;-1:-1:-1;952:164:90;;;;;;;;;;;;-1:-1:-1;;;952:164:90;;;;;;;;;;;;;;;;;;;;;1051:12;;952:164;;;-1:-1:-1;;1051:12:90;;:5;;952:164;1051:12;:::i;:::-;-1:-1:-1;1069:16:90;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;1091:9:90;:20;;-1:-1:-1;;1091:20:90;;;;;;;;;;;;-1:-1:-1;505:521:89;;-1:-1:-1;505:521:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;505:521:89;;;-1:-1:-1;505:521:89;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101f05760003560e01c80637535d2461161010f578063ae167335116100a2578063d505accf11610071578063d505accf146106db578063d7020d0a1461072c578063dd62ed3e14610768578063f866c31914610796576101f0565b8063ae1673351461069d578063b16a19de146106a5578063b1bf962d146106ad578063b9844d8d146106b5576101f0565b806388dd91a1116100de57806388dd91a11461061157806395d89b411461063d578063a457c2d714610645578063a9059cbb14610671576101f0565b80637535d246146105ba57806375d26413146105de57806378160376146105e65780637df5bd3b146105ee576101f0565b806323b872dd116101875780633644e515116101565780633644e51514610534578063395093511461053c5780634efecaa51461056857806370a0823114610594576101f0565b806323b872dd146104b25780632f114618146104e857806330adf81f1461050e578063313ce56714610516576101f0565b8063156e29f6116101c3578063156e29f61461030b57806318160ddd1461033d578063183fb413146103455780631da24f3e1461048c576101f0565b806306fdde03146101f5578063095ea7b3146102725780630afbcdc9146102b25780630bd7ad3b146102f1575b600080fd5b6101fd6107cc565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023757818101518382015260200161021f565b50505050905090810190601f1680156102645780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61029e6004803603604081101561028857600080fd5b506001600160a01b038135169060200135610863565b604080519115158252519081900360200190f35b6102d8600480360360208110156102c857600080fd5b50356001600160a01b0316610881565b6040805192835260208301919091528051918290030190f35b6102f961089e565b60408051918252519081900360200190f35b61029e6004803603606081101561032157600080fd5b506001600160a01b0381351690602081013590604001356108a3565b6102f9610a71565b61048a600480360361010081101561035c57600080fd5b6001600160a01b038235811692602081013582169260408201358316926060830135169160ff6080820135169181019060c0810160a08201356401000000008111156103a757600080fd5b8201836020820111156103b957600080fd5b803590602001918460018302840111640100000000831117156103db57600080fd5b9193909290916020810190356401000000008111156103f957600080fd5b82018360208201111561040b57600080fd5b8035906020019184600183028401116401000000008311171561042d57600080fd5b91939092909160208101903564010000000081111561044b57600080fd5b82018360208201111561045d57600080fd5b8035906020019184600183028401116401000000008311171561047f57600080fd5b509092509050610b1b565b005b6102f9600480360360208110156104a257600080fd5b50356001600160a01b0316610e98565b61029e600480360360608110156104c857600080fd5b506001600160a01b03813581169160208101359091169060400135610ea3565b61048a600480360360208110156104fe57600080fd5b50356001600160a01b0316610f63565b6102f9611137565b61051e61115b565b6040805160ff9092168252519081900360200190f35b6102f9611164565b61029e6004803603604081101561055257600080fd5b506001600160a01b03813516906020013561116a565b6102f96004803603604081101561057e57600080fd5b506001600160a01b0381351690602001356111b8565b6102f9600480360360208110156105aa57600080fd5b50356001600160a01b031661125e565b6105c26112ed565b604080516001600160a01b039092168252519081900360200190f35b6105c26112fc565b6101fd61130b565b61048a6004803603604081101561060457600080fd5b5080359060200135611328565b61048a6004803603604081101561062757600080fd5b506001600160a01b03813516906020013561144f565b6101fd6114d9565b61029e6004803603604081101561065b57600080fd5b506001600160a01b03813516906020013561153a565b61029e6004803603604081101561068757600080fd5b506001600160a01b0381351690602001356115a2565b6105c26115ff565b6105c261160e565b6102f961161d565b6102f9600480360360208110156106cb57600080fd5b50356001600160a01b0316611627565b61048a600480360360e08110156106f157600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611639565b61048a6004803603608081101561074257600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611880565b6102f96004803603604081101561077e57600080fd5b506001600160a01b0381358116916020013516611a25565b61048a600480360360608110156107ac57600080fd5b506001600160a01b03813581169160208101359091169060400135611a50565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108585780601f1061082d57610100808354040283529160200191610858565b820191906000526020600020905b81548152906001019060200180831161083b57829003601f168201915b505050505090505b90565b6000610877610870611b21565b8484611b25565b5060015b92915050565b60008061088d83611c11565b610895611c2c565b91509150915091565b600181565b603c546000906001600160a01b03166108ba611b21565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906109685760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561092d578181015183820152602001610915565b50505050905090810190601f16801561095a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600061097485611c11565b905060006109828585611c32565b6040805180820190915260028152611a9b60f11b6020820152909150816109ea5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b506109f58682611d39565b6040805186815290516001600160a01b038816916000916000805160206129188339815191529181900360200190a3604080518681526020810186905281516001600160a01b038916927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25015949350505050565b600080610a7c611c2c565b905080610a8d576000915050610860565b603c54603e546040805163d15e005360e01b81526001600160a01b0392831660048201529051610b1593929092169163d15e005391602480820192602092909190829003018186803b158015610ae257600080fd5b505afa158015610af6573d6000803e3d6000fd5b505050506040513d6020811015610b0c57600080fd5b50518290611e8a565b91505090565b6000610b25611f48565b60015490915060ff1680610b3c5750610b3c611f4d565b80610b48575060005481115b610b835760405162461bcd60e51b815260040180806020018281038252602e8152602001806128ea602e913960400191505060405180910390fd5b60015460ff16158015610ba2576001805460ff19168117905560008290555b60004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f89896040518083838082843780830192505050925050506040518091039020604051806040016040528060018152602001603160f81b81525080519060200120833060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120603b81905550610c9a89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f5392505050565b610cd987878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f6692505050565b610ce28a611f79565b8d603c60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c603d60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b603e60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a603f60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508d6001600160a01b03168c6001600160a01b03167fb19e051f8af41150ccccb3fc2c2d8d15f4a4cf434f32a559ba75fe73d6eea20b8f8e8e8e8e8e8e8e8e604051808a6001600160a01b03168152602001896001600160a01b031681526020018860ff16815260200180602001806020018060200184810384528a8a82818152602001925080828437600083820152601f01601f191690910185810384528881526020019050888880828437600083820152601f01601f191690910185810383528681526020019050868680828437600083820152604051601f909101601f19169092018290039e50909c50505050505050505050505050a3508015610e89576001805460ff191690555b50505050505050505050505050565b600061087b82611c11565b6000610eb0848484611f8f565b610f2084610ebc611b21565b610f1b856040518060600160405280602881526020016128c2602891396001600160a01b038a16600090815260356020526040812090610efa611b21565b6001600160a01b031681526020810191909152604001600020549190611f9c565b611b25565b826001600160a01b0316846001600160a01b0316600080516020612918833981519152846040518082815260200191505060405180910390a35060019392505050565b603c60009054906101000a90046001600160a01b03166001600160a01b031663fe65acfe6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fb157600080fd5b505afa158015610fc5573d6000803e3d6000fd5b505050506040513d6020811015610fdb57600080fd5b5051604080516315d9b46f60e31b815290516001600160a01b039092169163aecda37891600480820192602092909190829003018186803b15801561101f57600080fd5b505afa158015611033573d6000803e3d6000fd5b505050506040513d602081101561104957600080fd5b50516001600160a01b031661105c611b21565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906110cd5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b50603e54604080516317066a5760e21b81526001600160a01b03848116600483015291519190921691635c19a95c91602480830192600092919082900301818387803b15801561111c57600080fd5b505af1158015611130573d6000803e3d6000fd5b5050505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60395460ff1690565b603b5481565b6000610877611177611b21565b84610f1b8560356000611188611b21565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611ff6565b603c546000906001600160a01b03166111cf611b21565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906112405760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b50603e54611258906001600160a01b03168484612057565b50919050565b603c54603e546040805163d15e005360e01b81526001600160a01b039283166004820152905160009361087b93169163d15e0053916024808301926020929190829003018186803b1580156112b257600080fd5b505afa1580156112c6573d6000803e3d6000fd5b505050506040513d60208110156112dc57600080fd5b50516112e784611c11565b90611e8a565b603c546001600160a01b031690565b60006113066120a9565b905090565b604051806040016040528060018152602001603160f81b81525081565b603c546001600160a01b031661133c611b21565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906113ad5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b50816113b85761144b565b603d546001600160a01b03166113d7816113d28585611c32565b611d39565b6040805184815290516001600160a01b038316916000916000805160206129188339815191529181900360200190a3604080518481526020810184905281516001600160a01b038416927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a2505b5050565b603c546001600160a01b0316611463611b21565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906114d45760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b505050565b60388054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108585780601f1061082d57610100808354040283529160200191610858565b6000610877611547611b21565b84610f1b856040518060600160405280602581526020016129cc6025913960356000611571611b21565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611f9c565b60006115b66115af611b21565b8484611f8f565b826001600160a01b03166115c8611b21565b6001600160a01b0316600080516020612918833981519152846040518082815260200191505060405180910390a350600192915050565b603d546001600160a01b031690565b603e546001600160a01b031690565b6000611306611c2c565b603a6020526000908152604090205481565b6001600160a01b038716611684576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa7aba722a960991b604482015290519081900360640190fd5b834211156116ce576040805162461bcd60e51b815260206004820152601260248201527124a72b20a624a22fa2ac2824a920aa24a7a760711b604482015290519081900360640190fd5b6001600160a01b038088166000818152603a6020908152604080832054603b5482517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a0850181905260c08086018b90528251808703909101815260e08601835280519084012061190160f01b6101008701526101028601969096526101228086019690965281518086039096018652610142850180835286519684019690962093909552610162840180825283905260ff88166101828501526101a284018790526101c284018690525191926001926101e28083019392601f198301929081900390910190855afa1580156117e3573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614611846576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b611851826001611ff6565b6001600160a01b038a166000908152603a6020526040902055611875898989611b25565b505050505050505050565b603c546001600160a01b0316611894611b21565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906119055760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b5060006119128383611c32565b60408051808201909152600281526106a760f31b60208201529091508161197a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b5061198585826120b8565b603e5461199c906001600160a01b03168585612057565b6040805184815290516000916001600160a01b038816916000805160206129188339815191529181900360200190a3836001600160a01b0316856001600160a01b03167f5d624aa9c148153ab3446c1b154f660ee7701e549fe9b62dab7171b1c80e6fa28585604051808381526020018281526020019250505060405180910390a35050505050565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b603c546001600160a01b0316611a64611b21565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090611ad55760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b50611ae3838383600061215c565b816001600160a01b0316836001600160a01b0316600080516020612918833981519152836040518082815260200191505060405180910390a3505050565b3390565b6001600160a01b038316611b6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061297e6024913960400191505060405180910390fd5b6001600160a01b038216611baf5760405162461bcd60e51b815260040180806020018281038252602281526020018061287a6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260356020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b031660009081526034602052604090205490565b60365490565b604080518082019091526002815261035360f41b602082015260009082611c9a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce8000000821904851115611d165760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b5082816b033b2e3c9fd0803ce800000086020181611d3057fe5b04949350505050565b6001600160a01b038216611d94576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611da0600083836114d4565b603654611dad8183611ff6565b6036556001600160a01b038316600090815260346020526040902054611dd38184611ff6565b6001600160a01b038516600090815260346020526040812091909155611df76120a9565b6001600160a01b031614611e8457611e0d6120a9565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015611e6b57600080fd5b505af1158015611e7f573d6000803e3d6000fd5b505050505b50505050565b6000821580611e97575081155b15611ea45750600061087b565b816b019d971e4fe8401e740000001981611eba57fe5b0483111560405180604001604052806002815260200161068760f31b81525090611f255760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b600190565b303b1590565b805161144b9060379060208401906127a1565b805161144b9060389060208401906127a1565b6039805460ff191660ff92909216919091179055565b6114d4838383600161215c565b60008184841115611fee5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b505050900390565b600082820183811015612050576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526114d4908490612305565b603f546001600160a01b031690565b6001600160a01b0382166120fd5760405162461bcd60e51b81526004018080602001828103825260218152602001806129386021913960400191505060405180910390fd5b612109826000836114d4565b60365461211681836124bd565b6036556001600160a01b0383166000908152603460209081526040918290205482516060810190935260228084529092611dd39286929061285890830139839190611f9c565b603e54603c546040805163d15e005360e01b81526001600160a01b03938416600482018190529151919390921691600091839163d15e0053916024808301926020929190829003018186803b1580156121b457600080fd5b505afa1580156121c8573d6000803e3d6000fd5b505050506040513d60208110156121de57600080fd5b5051905060006121f1826112e78a611c11565b90506000612202836112e78a611c11565b905061221889896122138a87611c32565b6124ff565b85156122a7576040805163d5ed393360e01b81526001600160a01b0387811660048301528b811660248301528a81166044830152606482018a90526084820185905260a4820184905291519186169163d5ed39339160c48082019260009290919082900301818387803b15801561228e57600080fd5b505af11580156122a2573d6000803e3d6000fd5b505050505b876001600160a01b0316896001600160a01b03167f4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda86668986604051808381526020018281526020019250505060405180910390a3505050505050505050565b612317826001600160a01b0316612765565b612368576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106123a65780518252601f199092019160209182019101612387565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612408576040519150601f19603f3d011682016040523d82523d6000602084013e61240d565b606091505b509150915081612464576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611e845780806020019051602081101561248057600080fd5b5051611e845760405162461bcd60e51b815260040180806020018281038252602a8152602001806129a2602a913960400191505060405180910390fd5b600061205083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f9c565b6001600160a01b0383166125445760405162461bcd60e51b81526004018080602001828103825260258152602001806129596025913960400191505060405180910390fd5b6001600160a01b0382166125895760405162461bcd60e51b81526004018080602001828103825260238152602001806128356023913960400191505060405180910390fd5b6125948383836114d4565b600060346000856001600160a01b03166001600160a01b031681526020019081526020016000205490506125e38260405180606001604052806026815260200161289c60269139839190611f9c565b6001600160a01b0380861660009081526034602052604080822093909355908516815220546126128184611ff6565b6001600160a01b0385166000908152603460205260408120919091556126366120a9565b6001600160a01b0316146111305760365461264f6120a9565b6001600160a01b03166331873e2e8783866040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b1580156126ad57600080fd5b505af11580156126c1573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03161461275d576126e66120a9565b6001600160a01b03166331873e2e8683856040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561274457600080fd5b505af1158015612758573d6000803e3d6000fd5b505050505b505050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061279957508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106127e257805160ff191683800117855561280f565b8280016001018555821561280f579182015b8281111561280f5782518255916020019190600101906127f4565b5061281b92915061281f565b5090565b5b8082111561281b576000815560010161282056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204c96198658c4d202eafe387a873e0e1a911bcca29f7b25dc78a87baa406031c664736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1F0 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7535D246 GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xAE167335 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x6DB JUMPI DUP1 PUSH4 0xD7020D0A EQ PUSH2 0x72C JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x768 JUMPI DUP1 PUSH4 0xF866C319 EQ PUSH2 0x796 JUMPI PUSH2 0x1F0 JUMP JUMPDEST DUP1 PUSH4 0xAE167335 EQ PUSH2 0x69D JUMPI DUP1 PUSH4 0xB16A19DE EQ PUSH2 0x6A5 JUMPI DUP1 PUSH4 0xB1BF962D EQ PUSH2 0x6AD JUMPI DUP1 PUSH4 0xB9844D8D EQ PUSH2 0x6B5 JUMPI PUSH2 0x1F0 JUMP JUMPDEST DUP1 PUSH4 0x88DD91A1 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x88DD91A1 EQ PUSH2 0x611 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x63D JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x645 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x671 JUMPI PUSH2 0x1F0 JUMP JUMPDEST DUP1 PUSH4 0x7535D246 EQ PUSH2 0x5BA JUMPI DUP1 PUSH4 0x75D26413 EQ PUSH2 0x5DE JUMPI DUP1 PUSH4 0x78160376 EQ PUSH2 0x5E6 JUMPI DUP1 PUSH4 0x7DF5BD3B EQ PUSH2 0x5EE JUMPI PUSH2 0x1F0 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x187 JUMPI DUP1 PUSH4 0x3644E515 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x534 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x53C JUMPI DUP1 PUSH4 0x4EFECAA5 EQ PUSH2 0x568 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x594 JUMPI PUSH2 0x1F0 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x4B2 JUMPI DUP1 PUSH4 0x2F114618 EQ PUSH2 0x4E8 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x50E JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x516 JUMPI PUSH2 0x1F0 JUMP JUMPDEST DUP1 PUSH4 0x156E29F6 GT PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x156E29F6 EQ PUSH2 0x30B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x33D JUMPI DUP1 PUSH4 0x183FB413 EQ PUSH2 0x345 JUMPI DUP1 PUSH4 0x1DA24F3E EQ PUSH2 0x48C JUMPI PUSH2 0x1F0 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1F5 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x272 JUMPI DUP1 PUSH4 0xAFBCDC9 EQ PUSH2 0x2B2 JUMPI DUP1 PUSH4 0xBD7AD3B EQ PUSH2 0x2F1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1FD PUSH2 0x7CC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x237 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x21F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x264 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x29E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x288 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2D8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x881 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x2F9 PUSH2 0x89E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x29E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x321 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x8A3 JUMP JUMPDEST PUSH2 0x2F9 PUSH2 0xA71 JUMP JUMPDEST PUSH2 0x48A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x35C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP4 AND SWAP3 PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP2 DUP2 ADD SWAP1 PUSH1 0xC0 DUP2 ADD PUSH1 0xA0 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x40B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x42D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x44B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x47F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xB1B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xE98 JUMP JUMPDEST PUSH2 0x29E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x4C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xEA3 JUMP JUMPDEST PUSH2 0x48A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF63 JUMP JUMPDEST PUSH2 0x2F9 PUSH2 0x1137 JUMP JUMPDEST PUSH2 0x51E PUSH2 0x115B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2F9 PUSH2 0x1164 JUMP JUMPDEST PUSH2 0x29E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x552 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x116A JUMP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x57E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x11B8 JUMP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x125E JUMP JUMPDEST PUSH2 0x5C2 PUSH2 0x12ED JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x5C2 PUSH2 0x12FC JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x130B JUMP JUMPDEST PUSH2 0x48A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x604 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1328 JUMP JUMPDEST PUSH2 0x48A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x627 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x144F JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x14D9 JUMP JUMPDEST PUSH2 0x29E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x65B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x153A JUMP JUMPDEST PUSH2 0x29E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x687 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x15A2 JUMP JUMPDEST PUSH2 0x5C2 PUSH2 0x15FF JUMP JUMPDEST PUSH2 0x5C2 PUSH2 0x160E JUMP JUMPDEST PUSH2 0x2F9 PUSH2 0x161D JUMP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1627 JUMP JUMPDEST PUSH2 0x48A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x6F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1639 JUMP JUMPDEST PUSH2 0x48A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x742 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x1880 JUMP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x77E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1A25 JUMP JUMPDEST PUSH2 0x48A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x7AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1A50 JUMP JUMPDEST PUSH1 0x37 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x858 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x82D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x858 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x83B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x877 PUSH2 0x870 PUSH2 0x1B21 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1B25 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x88D DUP4 PUSH2 0x1C11 JUMP JUMPDEST PUSH2 0x895 PUSH2 0x1C2C JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8BA PUSH2 0x1B21 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x968 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x92D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x915 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x95A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0x974 DUP6 PUSH2 0x1C11 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x982 DUP6 DUP6 PUSH2 0x1C32 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1A9B PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0x9EA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x92D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x915 JUMP JUMPDEST POP PUSH2 0x9F5 DUP7 DUP3 PUSH2 0x1D39 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2918 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP ISZERO SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA7C PUSH2 0x1C2C JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xA8D JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x860 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x3E SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0xB15 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0xD15E0053 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 SWAP1 PUSH2 0x1E8A JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB25 PUSH2 0x1F48 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 PUSH2 0xB3C JUMPI POP PUSH2 0xB3C PUSH2 0x1F4D JUMP JUMPDEST DUP1 PUSH2 0xB48 JUMPI POP PUSH1 0x0 SLOAD DUP2 GT JUMPDEST PUSH2 0xB83 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x28EA PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0xBA2 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 OR SWAP1 SSTORE PUSH1 0x0 DUP3 SWAP1 SSTORE JUMPDEST PUSH1 0x0 CHAINID SWAP1 POP PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP10 DUP10 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP4 ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x3B DUP2 SWAP1 SSTORE POP PUSH2 0xC9A DUP10 DUP10 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1F53 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xCD9 DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1F66 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xCE2 DUP11 PUSH2 0x1F79 JUMP JUMPDEST DUP14 PUSH1 0x3C PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP13 PUSH1 0x3D PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP12 PUSH1 0x3E PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP11 PUSH1 0x3F PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xB19E051F8AF41150CCCCB3FC2C2D8D15F4A4CF434F32A559BA75FE73D6EEA20B DUP16 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP1 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP11 DUP11 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD DUP6 DUP2 SUB DUP5 MSTORE DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 POP DUP9 DUP9 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD DUP6 DUP2 SUB DUP4 MSTORE DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 POP DUP7 DUP7 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP15 POP SWAP1 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP LOG3 POP DUP1 ISZERO PUSH2 0xE89 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x87B DUP3 PUSH2 0x1C11 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEB0 DUP5 DUP5 DUP5 PUSH2 0x1F8F JUMP JUMPDEST PUSH2 0xF20 DUP5 PUSH2 0xEBC PUSH2 0x1B21 JUMP JUMPDEST PUSH2 0xF1B DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28C2 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0xEFA PUSH2 0x1B21 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1F9C JUMP JUMPDEST PUSH2 0x1B25 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2918 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x3C PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFE65ACFE PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFC5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x15D9B46F PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xAECDA378 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x101F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1033 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1049 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x105C PUSH2 0x1B21 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3333 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x10CD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x92D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x915 JUMP JUMPDEST POP PUSH1 0x3E SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x17066A57 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x5C19A95C SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x111C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1130 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x39 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x3B SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x877 PUSH2 0x1177 PUSH2 0x1B21 JUMP JUMPDEST DUP5 PUSH2 0xF1B DUP6 PUSH1 0x35 PUSH1 0x0 PUSH2 0x1188 PUSH2 0x1B21 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x1FF6 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11CF PUSH2 0x1B21 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1240 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x92D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x915 JUMP JUMPDEST POP PUSH1 0x3E SLOAD PUSH2 0x1258 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH2 0x2057 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x3E SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 PUSH2 0x87B SWAP4 AND SWAP2 PUSH4 0xD15E0053 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12C6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x12E7 DUP5 PUSH2 0x1C11 JUMP JUMPDEST SWAP1 PUSH2 0x1E8A JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1306 PUSH2 0x20A9 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x133C PUSH2 0x1B21 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x13AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x92D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x915 JUMP JUMPDEST POP DUP2 PUSH2 0x13B8 JUMPI PUSH2 0x144B JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x13D7 DUP2 PUSH2 0x13D2 DUP6 DUP6 PUSH2 0x1C32 JUMP JUMPDEST PUSH2 0x1D39 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH1 0x0 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2918 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1463 PUSH2 0x1B21 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x14D4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x92D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x915 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x38 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x858 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x82D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x858 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x877 PUSH2 0x1547 PUSH2 0x1B21 JUMP JUMPDEST DUP5 PUSH2 0xF1B DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x29CC PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x35 PUSH1 0x0 PUSH2 0x1571 PUSH2 0x1B21 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1F9C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15B6 PUSH2 0x15AF PUSH2 0x1B21 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1F8F JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x15C8 PUSH2 0x1B21 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2918 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1306 PUSH2 0x1C2C JUMP JUMPDEST PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x1684 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x24A72B20A624A22FA7ABA722A9 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x16CE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x24A72B20A624A22FA2AC2824A920AA24A7A7 PUSH1 0x71 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x3B SLOAD DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP13 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP12 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 DUP1 DUP7 ADD DUP12 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP8 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP7 ADD DUP4 MSTORE DUP1 MLOAD SWAP1 DUP5 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH2 0x100 DUP8 ADD MSTORE PUSH2 0x102 DUP7 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP7 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP6 ADD DUP1 DUP4 MSTORE DUP7 MLOAD SWAP7 DUP5 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP4 SWAP1 SWAP6 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP4 SWAP1 MSTORE PUSH1 0xFF DUP9 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP8 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP7 SWAP1 MSTORE MLOAD SWAP2 SWAP3 PUSH1 0x1 SWAP3 PUSH2 0x1E2 DUP1 DUP4 ADD SWAP4 SWAP3 PUSH1 0x1F NOT DUP4 ADD SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17E3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1846 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x494E56414C49445F5349474E4154555245 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1851 DUP3 PUSH1 0x1 PUSH2 0x1FF6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x1875 DUP10 DUP10 DUP10 PUSH2 0x1B25 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1894 PUSH2 0x1B21 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1905 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x92D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x915 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x1912 DUP4 DUP4 PUSH2 0x1C32 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x6A7 PUSH1 0xF3 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0x197A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x92D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x915 JUMP JUMPDEST POP PUSH2 0x1985 DUP6 DUP3 PUSH2 0x20B8 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH2 0x199C SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 PUSH2 0x2057 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2918 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x5D624AA9C148153AB3446C1B154F660EE7701E549FE9B62DAB7171B1C80E6FA2 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A64 PUSH2 0x1B21 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1AD5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x92D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x915 JUMP JUMPDEST POP PUSH2 0x1AE3 DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x215C JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x2918 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1B6A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x297E PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1BAF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x287A PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x36 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x1C9A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x92D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x915 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x1D16 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x92D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x915 JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x1D30 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1D94 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1DA0 PUSH1 0x0 DUP4 DUP4 PUSH2 0x14D4 JUMP JUMPDEST PUSH1 0x36 SLOAD PUSH2 0x1DAD DUP2 DUP4 PUSH2 0x1FF6 JUMP JUMPDEST PUSH1 0x36 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1DD3 DUP2 DUP5 PUSH2 0x1FF6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1DF7 PUSH2 0x20A9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1E84 JUMPI PUSH2 0x1E0D PUSH2 0x20A9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP6 DUP5 DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1E7F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x1E97 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x1EA4 JUMPI POP PUSH1 0x0 PUSH2 0x87B JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x1EBA JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1F25 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x92D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x915 JUMP JUMPDEST POP POP PUSH12 0x33B2E3C9FD0803CE8000000 SWAP2 MUL PUSH12 0x19D971E4FE8401E74000000 ADD DIV SWAP1 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x144B SWAP1 PUSH1 0x37 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x27A1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x144B SWAP1 PUSH1 0x38 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x27A1 JUMP JUMPDEST PUSH1 0x39 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x14D4 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x215C JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1FEE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x92D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x915 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x2050 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x14D4 SWAP1 DUP5 SWAP1 PUSH2 0x2305 JUMP JUMPDEST PUSH1 0x3F SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x20FD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2938 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2109 DUP3 PUSH1 0x0 DUP4 PUSH2 0x14D4 JUMP JUMPDEST PUSH1 0x36 SLOAD PUSH2 0x2116 DUP2 DUP4 PUSH2 0x24BD JUMP JUMPDEST PUSH1 0x36 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x22 DUP1 DUP5 MSTORE SWAP1 SWAP3 PUSH2 0x1DD3 SWAP3 DUP7 SWAP3 SWAP1 PUSH2 0x2858 SWAP1 DUP4 ADD CODECOPY DUP4 SWAP2 SWAP1 PUSH2 0x1F9C JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP4 SWAP1 SWAP3 AND SWAP2 PUSH1 0x0 SWAP2 DUP4 SWAP2 PUSH4 0xD15E0053 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x21B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x21C8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x21F1 DUP3 PUSH2 0x12E7 DUP11 PUSH2 0x1C11 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2202 DUP4 PUSH2 0x12E7 DUP11 PUSH2 0x1C11 JUMP JUMPDEST SWAP1 POP PUSH2 0x2218 DUP10 DUP10 PUSH2 0x2213 DUP11 DUP8 PUSH2 0x1C32 JUMP JUMPDEST PUSH2 0x24FF JUMP JUMPDEST DUP6 ISZERO PUSH2 0x22A7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH4 0xD5ED3933 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP11 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP11 SWAP1 MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0xA4 DUP3 ADD DUP5 SWAP1 MSTORE SWAP2 MLOAD SWAP2 DUP7 AND SWAP2 PUSH4 0xD5ED3933 SWAP2 PUSH1 0xC4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x228E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x22A2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4BECCB90F994C31ACED7A23B5611020728A23D8EC5CDDD1A3E9D97B96FDA8666 DUP10 DUP7 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2317 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2765 JUMP JUMPDEST PUSH2 0x2368 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x23A6 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2387 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2408 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x240D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2464 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1E84 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2480 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1E84 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x29A2 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2050 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1F9C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2544 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2959 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2589 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2835 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2594 DUP4 DUP4 DUP4 PUSH2 0x14D4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x34 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH2 0x25E3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x289C PUSH1 0x26 SWAP2 CODECOPY DUP4 SWAP2 SWAP1 PUSH2 0x1F9C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP6 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x2612 DUP2 DUP5 PUSH2 0x1FF6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x2636 PUSH2 0x20A9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1130 JUMPI PUSH1 0x36 SLOAD PUSH2 0x264F PUSH2 0x20A9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP8 DUP4 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26C1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x275D JUMPI PUSH2 0x26E6 PUSH2 0x20A9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP7 DUP4 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2744 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2758 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2799 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x27E2 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x280F JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x280F JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x280F JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x27F4 JUMP JUMPDEST POP PUSH2 0x281B SWAP3 SWAP2 POP PUSH2 0x281F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x281B JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2820 JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E6365436F6E74726163742069 PUSH15 0x7374616E63652068617320616C7265 PUSH2 0x6479 KECCAK256 PUSH3 0x65656E KECCAK256 PUSH10 0x6E697469616C697A6564 0xDD CALLCODE MSTORE 0xAD SHL 0xE2 0xC8 SWAP12 PUSH10 0xC2B068FC378DAA952BA7 CALL PUSH4 0xC4A11628 CREATE2 GAS 0x4D CREATE2 0x23 0xB3 0xEF GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A207472616E7366657220 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F206164647265737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 MSTORE8 PUSH2 0x6665 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x75636365656445524332303A2064656372656173 PUSH6 0x6420616C6C6F PUSH24 0x616E63652062656C6F77207A65726FA26469706673582212 KECCAK256 0x4C SWAP7 NOT DUP7 PC 0xC4 0xD2 MUL 0xEA INVALID CODESIZE PUSH27 0x873E0E1A911BCCA29F7B25DC78A87BAA406031C664736F6C634300 MOD 0xC STOP CALLER ",
              "sourceMap": "505:521:89:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1168:84:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3230:156;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3230:156:90;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;7903:183:88;;;;;;;;;;;;;;;;-1:-1:-1;7903:183:88;-1:-1:-1;;;;;7903:183:88;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1355:45;;;:::i;:::-;;;;;;;;;;;;;;;;4876:442;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4876:442:88;;;;;;;;;;;;;:::i;8304:300::-;;;:::i;2534:1035::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2534:1035:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2534:1035:88;;-1:-1:-1;2534:1035:88;-1:-1:-1;2534:1035:88;:::i;:::-;;7544:119;;;;;;;;;;;;;;;;-1:-1:-1;7544:119:88;-1:-1:-1;;;;;7544:119:88;;:::i;3719:389:90:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3719:389:90;;;;;;;;;;;;;;;;;:::i;887:137:89:-;;;;;;;;;;;;;;;;-1:-1:-1;887:137:89;-1:-1:-1;;;;;887:137:89;;:::i;1209:141:88:-;;;:::i;1450:84:90:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1513:31:88;;;:::i;4354:205:90:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4354:205:90;;;;;;;;:::i;10198:215:88:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10198:215:88;;;;;;;;:::i;7026:::-;;;;;;;;;;;;;;;;-1:-1:-1;7026:215:88;-1:-1:-1;;;;;7026:215:88;;:::i;9374:74::-;;;:::i;:::-;;;;-1:-1:-1;;;;;9374:74:88;;;;;;;;;;;;;;9767:138;;;:::i;1010:50::-;;;:::i;5534:612::-;;;;;;;;;;;;;;;;-1:-1:-1;5534:612:88;;;;;;;:::i;10600:91::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10600:91:88;;;;;;;;:::i;1306:88:90:-;;;:::i;4815:318::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4815:318:90;;;;;;;;:::i;2413:214::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2413:214:90;;;;;;;;:::i;8971:93:88:-;;;:::i;9172:109::-;;;:::i;8755:113::-;;;:::i;1466:42::-;;;;;;;;;;;;;;;;-1:-1:-1;1466:42:88;-1:-1:-1;;;;;1466:42:88;;:::i;11128:741::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11128:741:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4024:469::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4024:469:88;;;;;;;;;;;;;;;;;;;;;;:::i;2893:165:90:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2893:165:90;;;;;;;;;;:::i;6484:332:88:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6484:332:88;;;;;;;;;;;;;;;;;:::i;1168:84:90:-;1242:5;1235:12;;;;;;;;-1:-1:-1;;1235:12:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1214:13;;1235:12;;1242:5;;1235:12;;1242:5;1235:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1168:84;;:::o;3230:156::-;3313:4;3325:39;3334:12;:10;:12::i;:::-;3348:7;3357:6;3325:8;:39::i;:::-;-1:-1:-1;3377:4:90;3230:156;;;;;:::o;7903:183:88:-;8004:7;8013;8038:21;8054:4;8038:15;:21::i;:::-;8061:19;:17;:19::i;:::-;8030:51;;;;7903:183;;;:::o;1355:45::-;1397:3;1355:45;:::o;4876:442::-;1771:5;;4994:4;;-1:-1:-1;;;;;1771:5:88;1747:12;:10;:12::i;:::-;-1:-1:-1;;;;;1747:30:88;;1779:37;;;;;;;;;;;;;-1:-1:-1;;;1779:37:88;;;1739:78;;;;;-1:-1:-1;;;1739:78:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5006:23:::1;5032:21;5048:4;5032:15;:21::i;:::-;5006:47:::0;-1:-1:-1;5060:20:88::1;5083;:6:::0;5097:5;5083:13:::1;:20::i;:::-;5136:29;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;5136:29:88::1;::::0;::::1;::::0;5060:43;;-1:-1:-1;5117:17:88;5109:57:::1;;;::::0;-1:-1:-1;;;5109:57:88;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;5172:25;5178:4;5184:12;5172:5;:25::i;:::-;5209:34;::::0;;;;;;;-1:-1:-1;;;;;5209:34:88;::::1;::::0;5226:1:::1;::::0;-1:-1:-1;;;;;;;;;;;5209:34:88;;;;::::1;::::0;;::::1;5254:25;::::0;;;;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;5254:25:88;::::1;::::0;::::1;::::0;;;;;;::::1;-1:-1:-1::0;5293:20:88;;4876:442;-1:-1:-1;;;;4876:442:88:o;8304:300::-;8384:7;8399:27;8429:19;:17;:19::i;:::-;8399:49;-1:-1:-1;8459:24:88;8455:53;;8500:1;8493:8;;;;;8455:53;8548:5;;8581:16;;8548:50;;;-1:-1:-1;;;8548:50:88;;-1:-1:-1;;;;;8581:16:88;;;8548:50;;;;;;8521:78;;8548:5;;;;;:32;;:50;;;;;;;;;;;;;;;:5;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8548:50:88;8521:19;;:26;:78::i;:::-;8514:85;;;8304:300;:::o;2534:1035::-;1162:16:74;1181:13;:11;:13::i;:::-;1215:12;;1162:32;;-1:-1:-1;1215:12:74;;;:31;;;1231:15;:13;:15::i;:::-;1215:69;;;;1261:23;;1250:8;:34;1215:69;1200:146;;;;-1:-1:-1;;;1200:146:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1376:12;;;;1375:13;1394:96;;;;1437:4;1422:19;;-1:-1:-1;;1422:19:74;;;;;:12;1449:34;;;1394:96;2839:15:88::1;2920:9;2909:20;;1110:95;3036:10;;3020:28;;;;;;;;;;;;;;;;;;;;;;;;;;;1050:10;;;;;;;;;;;;;-1:-1:-1::0;;;1050:10:88::1;;::::0;3058:26:::1;;;;;;3094:7;3119:4;2977:155;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;2977:155:88::1;;;;;;;;;;;;;;;;;;;;;;;;2960:178;;;;;;2941:16;:197;;;;3145:20;3154:10;;3145:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;3145:8:88::1;::::0;-1:-1:-1;;;3145:20:88:i:1;:::-;3171:24;3182:12;;3171:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;3171:10:88::1;::::0;-1:-1:-1;;;3171:24:88:i:1;:::-;3201:28;3214:14;3201:12;:28::i;:::-;3244:4;3236:5;;:12;;;;;-1:-1:-1::0;;;;;3236:12:88::1;;;;;-1:-1:-1::0;;;;;3236:12:88::1;;;;;;3266:8;3254:9;;:20;;;;;-1:-1:-1::0;;;;;3254:20:88::1;;;;;-1:-1:-1::0;;;;;3254:20:88::1;;;;;;3299:15;3280:16;;:34;;;;;-1:-1:-1::0;;;;;3280:34:88::1;;;;;-1:-1:-1::0;;;;;3280:34:88::1;;;;;;3344:20;3320:21;;:44;;;;;-1:-1:-1::0;;;;;3320:44:88::1;;;;;-1:-1:-1::0;;;;;3320:44:88::1;;;;;;3426:4;-1:-1:-1::0;;;;;3376:188:88::1;3395:15;-1:-1:-1::0;;;;;3376:188:88::1;;3439:8;3463:20;3492:14;3514:10;;3532:12;;3552:6;;3376:188;;;;-1:-1:-1::0;;;;;3376:188:88::1;;;;;;-1:-1:-1::0;;;;;3376:188:88::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;;-1:-1:-1::0;;3376:188:88::1;::::0;;::::1;::::0;;::::1;::::0;;;;;::::1;;::::0;-1:-1:-1;3376:188:88;;;;;::::1;;::::0;;::::1;::::0;::::1;;-1:-1:-1::0;;3376:188:88::1;::::0;;::::1;::::0;;::::1;::::0;;;;;::::1;;::::0;-1:-1:-1;3376:188:88;;;;;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;3376:188:88::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;3376:188:88;;-1:-1:-1;;;;;;;;;;;;;3376:188:88::1;1496:1:74;1508:14:::0;1504:55;;;1532:12;:20;;-1:-1:-1;;1532:20:74;;;1504:55;2534:1035:88;;;;;;;;;;;;;:::o;7544:119::-;7615:7;7637:21;7653:4;7637:15;:21::i;3719:389:90:-;3841:4;3853:36;3863:6;3871:9;3882:6;3853:9;:36::i;:::-;3895:145;3911:6;3925:12;:10;:12::i;:::-;3945:89;3983:6;3945:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3945:19:90;;;;;;:11;:19;;;;;;3965:12;:10;:12::i;:::-;-1:-1:-1;;;;;3945:33:90;;;;;;;;;;;;-1:-1:-1;3945:33:90;;;:89;:37;:89::i;:::-;3895:8;:145::i;:::-;4068:9;-1:-1:-1;;;;;4051:35:90;4060:6;-1:-1:-1;;;;;4051:35:90;-1:-1:-1;;;;;;;;;;;4079:6:90;4051:35;;;;;;;;;;;;;;;;;;-1:-1:-1;4099:4:90;3719:389;;;;;:::o;887:137:89:-;623:5;;;;;;;;;-1:-1:-1;;;;;623:5:89;-1:-1:-1;;;;;610:40:89;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;610:42:89;:57;;;-1:-1:-1;;;610:57:89;;;;-1:-1:-1;;;;;610:55:89;;;;;;:57;;;;;:42;;:57;;;;;;;;:55;:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;610:57:89;-1:-1:-1;;;;;594:73:89;:12;:10;:12::i;:::-;-1:-1:-1;;;;;594:73:89;;675:28;;;;;;;;;;;;;-1:-1:-1;;;675:28:89;;;579:130;;;;;-1:-1:-1;;;579:130:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;982:16:89::1;::::0;965:54:::1;::::0;;-1:-1:-1;;;965:54:89;;-1:-1:-1;;;;;965:54:89;;::::1;;::::0;::::1;::::0;;;982:16;;;::::1;::::0;965:43:::1;::::0;:54;;;;;982:16:::1;::::0;965:54;;;;;;;982:16;;965:54;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;887:137:::0;:::o;1209:141:88:-;1255:95;1209:141;:::o;1450:84:90:-;1520:9;;;;1450:84;:::o;1513:31:88:-;;;;:::o;4354:205:90:-;4442:4;4454:83;4463:12;:10;:12::i;:::-;4477:7;4486:50;4525:10;4486:11;:25;4498:12;:10;:12::i;:::-;-1:-1:-1;;;;;4486:25:90;;;;;;;;;;;;;;;;;-1:-1:-1;4486:25:90;;;:34;;;;;;;;;;;:38;:50::i;10198:215:88:-;1771:5;;10319:7;;-1:-1:-1;;;;;1771:5:88;1747:12;:10;:12::i;:::-;-1:-1:-1;;;;;1747:30:88;;1779:37;;;;;;;;;;;;;-1:-1:-1;;;1779:37:88;;;1739:78;;;;;-1:-1:-1;;;1739:78:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10343:16:88::1;::::0;10336:53:::1;::::0;-1:-1:-1;;;;;10343:16:88::1;10374:6:::0;10382;10336:37:::1;:53::i;:::-;-1:-1:-1::0;10402:6:88;10198:215;-1:-1:-1;10198:215:88:o;7026:::-;7185:5;;7218:16;;7185:50;;;-1:-1:-1;;;7185:50:88;;-1:-1:-1;;;;;7218:16:88;;;7185:50;;;;;;7132:7;;7156:80;;7185:5;;:32;;:50;;;;;;;;;;;;;;:5;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7185:50:88;7156:21;7172:4;7156:15;:21::i;:::-;:28;;:80::i;9374:74::-;9438:5;;-1:-1:-1;;;;;9438:5:88;9374:74;:::o;9767:138::-;9834:25;9874:26;:24;:26::i;:::-;9867:33;;9767:138;:::o;1010:50::-;1050:10;;;;;;;;;;;;;-1:-1:-1;;;1050:10:88;;;1010:50;:::o;5534:612::-;1771:5;;-1:-1:-1;;;;;1771:5:88;1747:12;:10;:12::i;:::-;-1:-1:-1;;;;;1747:30:88;;1779:37;;;;;;;;;;;;;-1:-1:-1;;;1779:37:88;;;1739:78;;;;;-1:-1:-1;;;1739:78:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5633:11:88;5629:38:::1;;5654:7;;5629:38;5692:9;::::0;-1:-1:-1;;;;;5692:9:88::1;6014:37;5692:9:::0;6030:20:::1;:6:::0;6044:5;6030:13:::1;:20::i;:::-;6014:5;:37::i;:::-;6063:38;::::0;;;;;;;-1:-1:-1;;;;;6063:38:88;::::1;::::0;6080:1:::1;::::0;-1:-1:-1;;;;;;;;;;;6063:38:88;;;;::::1;::::0;;::::1;6112:29;::::0;;;;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;6112:29:88;::::1;::::0;::::1;::::0;;;;;;::::1;1823:1;;5534:612:::0;;:::o;10600:91::-;1771:5;;-1:-1:-1;;;;;1771:5:88;1747:12;:10;:12::i;:::-;-1:-1:-1;;;;;1747:30:88;;1779:37;;;;;;;;;;;;;-1:-1:-1;;;1779:37:88;;;1739:78;;;;;-1:-1:-1;;;1739:78:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10600:91;;:::o;1306:88:90:-;1382:7;1375:14;;;;;;;;-1:-1:-1;;1375:14:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1354:13;;1375:14;;1382:7;;1375:14;;1382:7;1375:14;;;;;;;;;;;;;;;;;;;;;;;;4815:318;4920:4;4934:177;4950:12;:10;:12::i;:::-;4970:7;4985:120;5033:15;4985:120;;;;;;;;;;;;;;;;;:11;:25;4997:12;:10;:12::i;:::-;-1:-1:-1;;;;;4985:25:90;;;;;;;;;;;;;;;;;-1:-1:-1;4985:25:90;;;:34;;;;;;;;;;;:120;:38;:120::i;2413:214::-;2499:4;2511:42;2521:12;:10;:12::i;:::-;2535:9;2546:6;2511:9;:42::i;:::-;2587:9;-1:-1:-1;;;;;2564:41:90;2573:12;:10;:12::i;:::-;-1:-1:-1;;;;;2564:41:90;-1:-1:-1;;;;;;;;;;;2598:6:90;2564:41;;;;;;;;;;;;;;;;;;-1:-1:-1;2618:4:90;2413:214;;;;:::o;8971:93:88:-;9050:9;;-1:-1:-1;;;;;9050:9:88;8971:93;:::o;9172:109::-;9260:16;;-1:-1:-1;;;;;9260:16:88;9172:109;:::o;8755:113::-;8822:7;8844:19;:17;:19::i;1466:42::-;;;;;;;;;;;;;:::o;11128:741::-;-1:-1:-1;;;;;11295:19:88;;11287:45;;;;;-1:-1:-1;;;11287:45:88;;;;;;;;;;;;-1:-1:-1;;;11287:45:88;;;;;;;;;;;;;;;11396:8;11377:15;:27;;11369:58;;;;;-1:-1:-1;;;11369:58:88;;;;;;;;;;;;-1:-1:-1;;;11369:58:88;;;;;;;;;;;;;;;-1:-1:-1;;;;;11461:14:88;;;11433:25;11461:14;;;:7;:14;;;;;;;;;11573:16;;11611:79;;1255:95;11611:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11601:90;;;;;;-1:-1:-1;;;11523:178:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11504:205;;;;;;;;;11732:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11504:205;;11732:26;;;;;;;11461:14;-1:-1:-1;;11732:26:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11723:35:88;:5;-1:-1:-1;;;;;11723:35:88;;11715:65;;;;;-1:-1:-1;;;11715:65:88;;;;;;;;;;;;-1:-1:-1;;;11715:65:88;;;;;;;;;;;;;;;11803:24;:17;11825:1;11803:21;:24::i;:::-;-1:-1:-1;;;;;11786:14:88;;;;;;:7;:14;;;;;:41;11833:31;11794:5;11849:7;11858:5;11833:8;:31::i;:::-;11128:741;;;;;;;;;:::o;4024:469::-;1771:5;;-1:-1:-1;;;;;1771:5:88;1747:12;:10;:12::i;:::-;-1:-1:-1;;;;;1747:30:88;;1779:37;;;;;;;;;;;;;-1:-1:-1;;;1779:37:88;;;1739:78;;;;;-1:-1:-1;;;1739:78:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4173:20:88::1;4196;:6:::0;4210:5;4196:13:::1;:20::i;:::-;4249:29;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;4249:29:88::1;::::0;::::1;::::0;4173:43;;-1:-1:-1;4230:17:88;4222:57:::1;;;::::0;-1:-1:-1;;;4222:57:88;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;4285:25;4291:4;4297:12;4285:5;:25::i;:::-;4324:16;::::0;4317:67:::1;::::0;-1:-1:-1;;;;;4324:16:88::1;4355:20:::0;4377:6;4317:37:::1;:67::i;:::-;4396:34;::::0;;;;;;;4419:1:::1;::::0;-1:-1:-1;;;;;4396:34:88;::::1;::::0;-1:-1:-1;;;;;;;;;;;4396:34:88;;;;::::1;::::0;;::::1;4452:20;-1:-1:-1::0;;;;;4441:47:88::1;4446:4;-1:-1:-1::0;;;;;4441:47:88::1;;4474:6;4482:5;4441:47;;;;;;;;;;;;;;;;;;;;;;;;1823:1;4024:469:::0;;;;:::o;2893:165:90:-;-1:-1:-1;;;;;3026:18:90;;;3002:7;3026:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2893:165::o;6484:332:88:-;1771:5;;-1:-1:-1;;;;;1771:5:88;1747:12;:10;:12::i;:::-;-1:-1:-1;;;;;1747:30:88;;1779:37;;;;;;;;;;;;;-1:-1:-1;;;1779:37:88;;;1739:78;;;;;-1:-1:-1;;;1739:78:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6741:33:::1;6751:4;6757:2;6761:5;6768;6741:9;:33::i;:::-;6801:2;-1:-1:-1::0;;;;;6786:25:88::1;6795:4;-1:-1:-1::0;;;;;6786:25:88::1;-1:-1:-1::0;;;;;;;;;;;6805:5:88::1;6786:25;;;;;;;;;;;;;;;;;;6484:332:::0;;;:::o;587:98:7:-;670:10;587:98;:::o;7232:338:90:-;-1:-1:-1;;;;;7345:19:90;;7337:68;;;;-1:-1:-1;;;7337:68:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7419:21:90;;7411:68;;;;-1:-1:-1;;;7411:68:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7486:18:90;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7533:32;;;;;;;;;;;;;;;;;7232:338;;;:::o;1749:119::-;-1:-1:-1;;;;;1845:18:90;1823:7;1845:18;;;:9;:18;;;;;;;1749:119::o;1594:100::-;1677:12;;1594:100;:::o;2416:279:86:-;2508:28;;;;;;;;;;;;-1:-1:-1;;;2508:28:86;;;;2477:7;;2500:6;2492:45;;;;-1:-1:-1;;;2492:45:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2619:35:86;;;;;;;;;2563:1;2619:35;;;-1:-1:-1;;;2619:35:86;;;;2559:5;;;432:4;2585:25;;2584:33;2579:38;;;2571:84;;;;-1:-1:-1;;;2571:84:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:1;2680:5;432:4;2670:1;:7;:15;2669:21;;;;;;;2416:279;-1:-1:-1;;;;2416:279:86:o;6072:556:90:-;-1:-1:-1;;;;;6151:21:90;;6143:65;;;;;-1:-1:-1;;;6143:65:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;6215:49;6244:1;6248:7;6257:6;6215:20;:49::i;:::-;6296:12;;6329:26;6296:12;6348:6;6329:18;:26::i;:::-;6314:12;:41;-1:-1:-1;;;;;6390:18:90;;6362:25;6390:18;;;:9;:18;;;;;;6435:29;6390:18;6457:6;6435:21;:29::i;:::-;-1:-1:-1;;;;;6414:18:90;;;;;;:9;:18;;;;;:50;;;;6483:26;:24;:26::i;:::-;-1:-1:-1;;;;;6475:49:90;;6471:153;;6534:26;:24;:26::i;:::-;-1:-1:-1;;;;;6534:39:90;;6574:7;6583:14;6599:17;6534:83;;;;;;;;;;;;;-1:-1:-1;;;;;6534:83:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6471:153;6072:556;;;;:::o;2008:253:86:-;2069:7;2088:6;;;:16;;-1:-1:-1;2098:6:86;;2088:16;2084:45;;;-1:-1:-1;2121:1:86;2114:8;;2084:45;2180:1;-1:-1:-1;;2180:1:86;2148:33;;;;;2143:1;:38;;2183:35;;;;;;;;;;;;;-1:-1:-1;;;2183:35:86;;;2135:84;;;;;-1:-1:-1;;;2135:84:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;432:4:86;2234:5;;476:7;2234:15;2233:23;;2008:253::o;1833:105:88:-;1397:3;1833:105;:::o;1858:510:74:-;2328:9;2316:22;2356:7;1858:510;:::o;7574:76:90:-;7630:15;;;;:5;;:15;;;;;:::i;7654:84::-;7714:19;;;;:7;;:19;;;;;:::i;7742:84::-;7798:9;:23;;-1:-1:-1;;7798:23:90;;;;;;;;;;;;7742:84::o;13072:139:88:-;13173:33;13183:4;13189:2;13193:6;13201:4;13173:9;:33::i;1649:189:13:-;1751:7;1782:12;1774:6;;;;1766:29;;;;-1:-1:-1;;;1766:29:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1813:5:13;;;1649:189::o;851:162::-;909:7;936:5;;;955:6;;;;947:46;;;;;-1:-1:-1;;;947:46:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;1007:1;851:162;-1:-1:-1;;;851:162:13:o;716:184:12:-;836:58;;;-1:-1:-1;;;;;836:58:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;836:58:12;-1:-1:-1;;;836:58:12;;;810:85;;829:5;;810:18;:85::i;9548:134:88:-;9656:21;;-1:-1:-1;;;;;9656:21:88;9548:134;:::o;6632:596:90:-;-1:-1:-1;;;;;6711:21:90;;6703:67;;;;-1:-1:-1;;;6703:67:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6777:49;6798:7;6815:1;6819:6;6777:20;:49::i;:::-;6858:12;;6891:26;6858:12;6910:6;6891:18;:26::i;:::-;6876:12;:41;-1:-1:-1;;;;;6952:18:90;;6924:25;6952:18;;;:9;:18;;;;;;;;;;6997:67;;;;;;;;;;;;6952:18;;6997:67;;7019:6;;6997:67;;;;;;:17;;:67;:21;:67::i;12212:628:88:-;12349:16;;12391:5;;12419:48;;;-1:-1:-1;;;12419:48:88;;-1:-1:-1;;;;;12349:16:88;;;12419:48;;;;;;;;12349:16;;12391:5;;;;-1:-1:-1;;12391:5:88;;12419:31;;:48;;;;;;;;;;;;;;12391:5;12419:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12419:48:88;;-1:-1:-1;12474:25:88;12502:35;12419:48;12502:21;12518:4;12502:15;:21::i;:35::-;12474:63;;12543:23;12569:33;12596:5;12569:19;12585:2;12569:15;:19::i;:33::-;12543:59;-1:-1:-1;12609:47:88;12625:4;12631:2;12635:20;:6;12649:5;12635:13;:20::i;:::-;12609:15;:47::i;:::-;12667:8;12663:121;;;12685:92;;;-1:-1:-1;;;12685:92:88;;-1:-1:-1;;;;;12685:92:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;;;;:92;;;;;-1:-1:-1;;12685:92:88;;;;;;;;-1:-1:-1;12685:21:88;:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12663:121;12817:2;-1:-1:-1;;;;;12795:40:88;12811:4;-1:-1:-1;;;;;12795:40:88;;12821:6;12829:5;12795:40;;;;;;;;;;;;;;;;;;;;;;;;12212:628;;;;;;;;;:::o;1473:555:12:-;1556:27;1564:5;-1:-1:-1;;;;;1556:25:12;;:27::i;:::-;1548:71;;;;;-1:-1:-1;;;1548:71:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;1682:12;1696:23;1731:5;-1:-1:-1;;;;;1723:19:12;1743:4;1723:25;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1723:25:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1681:67;;;;1762:7;1754:52;;;;;-1:-1:-1;;;1754:52:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1817:17;;:21;1813:211;;1951:10;1940:30;;;;;;;;;;;;;;;-1:-1:-1;1940:30:12;1932:85;;;;-1:-1:-1;;;1932:85:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1257:128:13;1315:7;1337:43;1341:1;1344;1337:43;;;;;;;;;;;;;;;;;:3;:43::i;5137:931:90:-;-1:-1:-1;;;;;5254:20:90;;5246:70;;;;-1:-1:-1;;;5246:70:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5330:23:90;;5322:71;;;;-1:-1:-1;;;5322:71:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5400:47;5421:6;5429:9;5440:6;5400:20;:47::i;:::-;5454:24;5481:9;:17;5491:6;-1:-1:-1;;;;;5481:17:90;-1:-1:-1;;;;;5481:17:90;;;;;;;;;;;;;5454:44;;5524:70;5545:6;5524:70;;;;;;;;;;;;;;;;;:16;;:70;:20;:70::i;:::-;-1:-1:-1;;;;;5504:17:90;;;;;;;:9;:17;;;;;;:90;;;;5630:20;;;;;;;5679:32;5630:20;5704:6;5679:24;:32::i;:::-;-1:-1:-1;;;;;5656:20:90;;;;;;:9;:20;;;;;:55;;;;5730:26;:24;:26::i;:::-;-1:-1:-1;;;;;5722:49:90;;5718:346;;5810:12;;5830:26;:24;:26::i;:::-;-1:-1:-1;;;;;5830:39:90;;5870:6;5878:18;5898:16;5830:85;;;;;;;;;;;;;-1:-1:-1;;;;;5830:85:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5937:9;-1:-1:-1;;;;;5927:19:90;:6;-1:-1:-1;;;;;5927:19:90;;5923:135;;5958:26;:24;:26::i;:::-;-1:-1:-1;;;;;5958:39:90;;5998:9;6009:18;6029:19;5958:91;;;;;;;;;;;;;-1:-1:-1;;;;;5958:91:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5923:135;5718:346;5137:931;;;;;:::o;686:586:6:-;746:4;1185:20;;1032:66;1224:23;;;;;;:42;;-1:-1:-1;1251:15:6;;;1224:42;1216:51;686:586;-1:-1:-1;;;;686:586:6:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;"
            },
            "methodIdentifiers": {
              "ATOKEN_REVISION()": "0bd7ad3b",
              "DOMAIN_SEPARATOR()": "3644e515",
              "EIP712_REVISION()": "78160376",
              "PERMIT_TYPEHASH()": "30adf81f",
              "POOL()": "7535d246",
              "RESERVE_TREASURY_ADDRESS()": "ae167335",
              "UNDERLYING_ASSET_ADDRESS()": "b16a19de",
              "_nonces(address)": "b9844d8d",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "burn(address,address,uint256,uint256)": "d7020d0a",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "delegateUnderlyingTo(address)": "2f114618",
              "getIncentivesController()": "75d26413",
              "getScaledUserBalanceAndSupply(address)": "0afbcdc9",
              "handleRepayment(address,uint256)": "88dd91a1",
              "increaseAllowance(address,uint256)": "39509351",
              "initialize(address,address,address,address,uint8,string,string,bytes)": "183fb413",
              "mint(address,uint256,uint256)": "156e29f6",
              "mintToTreasury(uint256,uint256)": "7df5bd3b",
              "name()": "06fdde03",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "scaledBalanceOf(address)": "1da24f3e",
              "scaledTotalSupply()": "b1bf962d",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "transferOnLiquidation(address,address,uint256)": "f866c319",
              "transferUnderlyingTo(address,uint256)": "4efecaa5"
            }
          }
        }
      },
      "contracts/protocol/tokenization/IncentivizedERC20.sol": {
        "IncentivizedERC20": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "symbol",
                  "type": "string"
                },
                {
                  "internalType": "uint8",
                  "name": "decimals",
                  "type": "uint8"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "subtractedValue",
                  "type": "uint256"
                }
              ],
              "name": "decreaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "addedValue",
                  "type": "uint256"
                }
              ],
              "name": "increaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "increaseAllowance(address,uint256)": "39509351",
              "name()": "06fdde03",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "contracts/protocol/tokenization/StableDebtToken.sol": {
        "StableDebtToken": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "fromUser",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "toUser",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "BorrowAllowanceDelegated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "currentBalance",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "balanceIncrease",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "avgStableRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newTotalSupply",
                  "type": "uint256"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "underlyingAsset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "incentivesController",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "debtTokenDecimals",
                  "type": "uint8"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "debtTokenName",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "debtTokenSymbol",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "currentBalance",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "balanceIncrease",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "avgStableRate",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newTotalSupply",
                  "type": "uint256"
                }
              ],
              "name": "Mint",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "DEBT_TOKEN_REVISION",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "POOL",
              "outputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "UNDERLYING_ASSET_ADDRESS",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approveDelegation",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "fromUser",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "toUser",
                  "type": "address"
                }
              ],
              "name": "borrowAllowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "burn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "subtractedValue",
                  "type": "uint256"
                }
              ],
              "name": "decreaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAverageStableRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getIncentivesController",
              "outputs": [
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getSupplyData",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint40",
                  "name": "",
                  "type": "uint40"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getTotalSupplyAndAvgRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getTotalSupplyLastUpdated",
              "outputs": [
                {
                  "internalType": "uint40",
                  "name": "",
                  "type": "uint40"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getUserLastUpdated",
              "outputs": [
                {
                  "internalType": "uint40",
                  "name": "",
                  "type": "uint40"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getUserStableRate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "addedValue",
                  "type": "uint256"
                }
              ],
              "name": "increaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "underlyingAsset",
                  "type": "address"
                },
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "incentivesController",
                  "type": "address"
                },
                {
                  "internalType": "uint8",
                  "name": "debtTokenDecimals",
                  "type": "uint8"
                },
                {
                  "internalType": "string",
                  "name": "debtTokenName",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "debtTokenSymbol",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "rate",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "principalBalanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405260006006553480156200001657600080fd5b50604080518082018252600e8082526d111150951513d2d15397d253541360921b60208084018281528551808701909652928552840152815191929160009162000064916003919062000098565b5081516200007a90600490602085019062000098565b506005805460ff191660ff9290921691909117905550620001349050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000db57805160ff19168380011785556200010b565b828001600101855582156200010b579182015b828111156200010b578251825591602001919060010190620000ee565b50620001199291506200011d565b5090565b5b808211156200011957600081556001016200011e565b611d2080620001446000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806395d89b41116100f9578063c04a8a1011610097578063dd62ed3e11610071578063dd62ed3e146106ab578063e7484890146106d9578063e78c9b3b146106e1578063f731e9be14610707576101a9565b8063c04a8a10146104b0578063c222ec8a146104dc578063c634dfaa14610685576101a9565b8063a9059cbb116100d3578063a9059cbb14610438578063b16a19de14610464578063b3f1c93d1461046c578063b9a7b622146104a8576101a9565b806395d89b41146104025780639dc29fac1461040a578063a457c2d7146102d9576101a9565b80636bd76d241161016657806375d264131161014057806375d264131461037d578063797743381461038557806379ce6b8c146103ba57806390f6fcf2146103fa576101a9565b80636bd76d241461030557806370a08231146103335780637535d24614610359576101a9565b806306fdde03146101ae578063095ea7b31461022b57806318160ddd1461026b57806323b872dd14610285578063313ce567146102bb57806339509351146102d9575b600080fd5b6101b6610728565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f05781810151838201526020016101d8565b50505050905090810190601f16801561021d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102576004803603604081101561024157600080fd5b506001600160a01b0381351690602001356107be565b604080519115158252519081900360200190f35b610273610806565b60408051918252519081900360200190f35b6102576004803603606081101561029b57600080fd5b506001600160a01b03813581169160208101359091169060400135610818565b6102c3610860565b6040805160ff9092168252519081900360200190f35b610257600480360360408110156102ef57600080fd5b506001600160a01b038135169060200135610869565b6102736004803603604081101561031b57600080fd5b506001600160a01b03813581169160200135166108b8565b6102736004803603602081101561034957600080fd5b50356001600160a01b03166108e5565b61036161095f565b604080516001600160a01b039092168252519081900360200190f35b610361610977565b61038d610981565b6040805194855260208501939093528383019190915264ffffffffff166060830152519081900360800190f35b6103e0600480360360208110156103d057600080fd5b50356001600160a01b03166109b7565b6040805164ffffffffff9092168252519081900360200190f35b6102736109d9565b6101b66109df565b6104366004803603604081101561042057600080fd5b506001600160a01b038135169060200135610a40565b005b6102576004803603604081101561044e57600080fd5b506001600160a01b038135169060200135610818565b610361610da6565b6102576004803603608081101561048257600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610db5565b61027361110d565b610436600480360360408110156104c657600080fd5b506001600160a01b038135169060200135611112565b610436600480360360e08110156104f257600080fd5b6001600160a01b038235811692602081013582169260408201359092169160ff606083013516919081019060a08101608082013564010000000081111561053857600080fd5b82018360208201111561054a57600080fd5b8035906020019184600183028401116401000000008311171561056c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105bf57600080fd5b8201836020820111156105d157600080fd5b803590602001918460018302840111640100000000831117156105f357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561064657600080fd5b82018360208201111561065857600080fd5b8035906020019184600183028401116401000000008311171561067a57600080fd5b5090925090506111ae565b6102736004803603602081101561069b57600080fd5b50356001600160a01b0316611412565b610273600480360360408110156106c157600080fd5b506001600160a01b0381358116916020013516610869565b6103e061141d565b610273600480360360208110156106f757600080fd5b50356001600160a01b031661142a565b61070f611445565b6040805192835260208301919091528051918290030190f35b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b45780601f10610789576101008083540402835291602001916107b4565b820191906000526020600020905b81548152906001019060200180831161079757829003601f168201915b5050505050905090565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b6000610813603b5461145e565b905090565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60055460ff1690565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b038083166000908152603a60209081526040808320938516835292905220545b92915050565b6000806108f1836114a6565b6001600160a01b0384166000908152603d60205260409020549091508161091d5760009250505061095a565b6001600160a01b0384166000908152603c602052604081205461094890839064ffffffffff166114c1565b905061095483826114d5565b93505050505b919050565b603e546501000000000090046001600160a01b031690565b6000610813611593565b6000806000806000603b5490506109966115a2565b61099f8261145e565b603e54919790965091945064ffffffffff1692509050565b6001600160a01b03166000908152603c602052604090205464ffffffffff1690565b603b5490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b45780601f10610789576101008083540402835291602001916107b4565b610a4861095f565b6001600160a01b0316610a596115a8565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610b075760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610acc578181015183820152602001610ab4565b50505050905090810190601f168015610af95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600080610b14846115ac565b92509250506000610b23610806565b6001600160a01b0386166000908152603d6020526040812054919250908190868411610b58576000603b819055600255610bda565b610b628488611605565b600281905591506000610b80610b7786611647565b603b54906114d5565b90506000610b97610b908a611647565b84906114d5565b9050818110610bb35760006002819055603b8190559450610bd7565b610bcf610bbf85611647565b610bc98484611605565b906116c5565b603b81905594505b50505b85871415610c18576001600160a01b0388166000908152603d60209081526040808320839055603c9091529020805464ffffffffff19169055610c46565b6001600160a01b0388166000908152603c60205260409020805464ffffffffff19164264ffffffffff161790555b603e805464ffffffffff19164264ffffffffff1617905586851115610ce6576000610c718689611605565b9050610c7e8982876117cc565b6040805182815260208101899052808201889052606081018490526080810186905260a0810185905290516001600160a01b038b169182917fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f9181900360c00190a350610d5b565b6000610cf28887611605565b9050610cff898287611891565b6040805182815260208101899052808201889052606081018690526080810185905290516001600160a01b038b16917f44bd20a79e993bdcc7cbedf54a3b4d19fb78490124b6b90d04fe3242eea579e8919081900360a00190a2505b6040805188815290516000916001600160a01b038b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050505050505050565b603f546001600160a01b031690565b6000610dbf61095f565b6001600160a01b0316610dd06115a8565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610e415760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b50610e4a611bd9565b846001600160a01b0316866001600160a01b031614610e6e57610e6e8587866118d3565b600080610e7a876115ac565b9250925050610e87610806565b808452603b546080850152610e9c908761199b565b60028190556020840152610eaf86611647565b6040840152610f0d610ec9610ec4848961199b565b611647565b6040850151610bc990610edc90896114d5565b610f07610ee887611647565b6001600160a01b038d166000908152603d6020526040902054906114d5565b9061199b565b60608401819052604080518082019091526002815261373960f01b6020820152906fffffffffffffffffffffffffffffffff1015610f8c5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5060608301516001600160a01b0388166000908152603d6020908152604080832093909355603c8152919020805464ffffffffff421664ffffffffff199182168117909255603e8054909116909117905583015161102290610fed90611647565b610bc96110078660400151896114d590919063ffffffff16565b610f076110178860000151611647565b6080890151906114d5565b603b81905560808401526110418761103a888461199b565b85516117cc565b6040805187815290516001600160a01b038916916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3866001600160a01b0316886001600160a01b03167fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f888585886060015189608001518a6020015160405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a350159695505050505050565b600181565b80603a600061111f6115a8565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120919091556111576115a8565b6001600160a01b03167fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1611189610da6565b604080516001600160a01b039092168252602082018690528051918290030190a35050565b60006111b86119f5565b60075490915060ff16806111cf57506111cf6119fa565b806111db575060065481115b6112165760405162461bcd60e51b815260040180806020018281038252602e815260200180611cbd602e913960400191505060405180910390fd5b60075460ff16158015611236576007805460ff1916600117905560068290555b61123f86611a00565b61124885611a17565b61125187611a2a565b603e805465010000000000600160c81b031916650100000000006001600160a01b038d811691820292909217909255603f80546001600160a01b03199081168d841690811790925560408054909116928c169283178155805192835260ff8b1660208085019190915260a09184018281528b51928501929092528a5192937f40251fbfb6656cfa65a00d7879029fec1fad21d28fdcff2f4f68f52795b74f2c938e938e938e938e938e938e9390916060840191608085019160c08601918a019080838360005b8381101561132f578181015183820152602001611317565b50505050905090810190601f16801561135c5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b8381101561138f578181015183820152602001611377565b50505050905090810190601f1680156113bc5780820380516001836020036101000a031916815260200191505b508481038252858152602001868680828437600083820152604051601f909101601f19169092018290039b50909950505050505050505050a38015611406576007805460ff191690555b50505050505050505050565b60006108df826114a6565b603e5464ffffffffff1690565b6001600160a01b03166000908152603d602052604090205490565b603b5460009081906114568161145e565b925090509091565b6000806114696115a2565b90508061147a57600091505061095a565b603e5460009061149290859064ffffffffff166114c1565b905061149e82826114d5565b949350505050565b6001600160a01b031660009081526020819052604090205490565b60006114ce838342611a40565b9392505050565b60008215806114e2575081155b156114ef575060006108df565b816b019d971e4fe8401e74000000198161150557fe5b0483111560405180604001604052806002815260200161068760f31b815250906115705760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b6040546001600160a01b031690565b60025490565b3390565b6000806000806115bb856114a6565b9050806115d3576000806000935093509350506115fe565b60006115e8826115e2886108e5565b90611605565b9050816115f5818361199b565b90955093509150505b9193909250565b60006114ce83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b16565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b815250906116be5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5092915050565b604080518082019091526002815261035360f41b60208201526000908261172d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156117a95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5082816b033b2e3c9fd0803ce8000000860201816117c357fe5b04949350505050565b6001600160a01b0383166000908152602081905260409020546117ef818461199b565b6001600160a01b0380861660009081526020819052604090819020929092559054161561188b576040805481516318c39f1760e11b81526001600160a01b0387811660048301526024820186905260448201859052925192909116916331873e2e9160648082019260009290919082900301818387803b15801561187257600080fd5b505af1158015611886573d6000803e3d6000fd5b505050505b50505050565b6001600160a01b038316600090815260208181526040918290205482518084019093526002835261038360f41b91830191909152906117ef9082908590611b16565b6040805180820182526002815261353960f01b6020808301919091526001600160a01b038087166000908152603a8352848120918716815291529182205461191c918490611b16565b6001600160a01b038086166000818152603a60209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1611974610da6565b604080516001600160a01b039092168252602082018690528051918290030190a350505050565b6000828201838110156114ce576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600190565b303b1590565b8051611a13906003906020840190611c08565b5050565b8051611a13906004906020840190611c08565b6005805460ff191660ff92909216919091179055565b600080611a548364ffffffffff8616611605565b905080611a6b57611a63611b70565b9150506114ce565b6000198101600060028311611a81576000611a86565b600283035b90506301e1338087046000611a9b82806114d5565b90506000611aa982846114d5565b905060006002611ac384611abd8a8a611b80565b90611b80565b81611aca57fe5b04905060006006611ae184611abd89818d8d611b80565b81611ae857fe5b049050611b0681610f078481611afe8a8e611b80565b610f07611b70565b9c9b505050505050505050505050565b60008184841115611b685760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b505050900390565b6b033b2e3c9fd0803ce800000090565b600082611b8f575060006108df565b82820282848281611b9c57fe5b04146114ce5760405162461bcd60e51b8152600401808060200182810382526021815260200180611c9c6021913960400191505060405180910390fd5b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c4957805160ff1916838001178555611c76565b82800160010185558215611c76579182015b82811115611c76578251825591602001919060010190611c5b565b50611c82929150611c86565b5090565b5b80821115611c825760008155600101611c8756fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a264697066735822122063d412b63d506f7b4a899605458ceab29096a3c1cd95312481c64230a0cb12f864736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0x6 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP1 DUP3 MSTORE PUSH14 0x111150951513D2D15397D2535413 PUSH1 0x92 SHL PUSH1 0x20 DUP1 DUP5 ADD DUP3 DUP2 MSTORE DUP6 MLOAD DUP1 DUP8 ADD SWAP1 SWAP7 MSTORE SWAP3 DUP6 MSTORE DUP5 ADD MSTORE DUP2 MLOAD SWAP2 SWAP3 SWAP2 PUSH1 0x0 SWAP2 PUSH3 0x64 SWAP2 PUSH1 0x3 SWAP2 SWAP1 PUSH3 0x98 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0x7A SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x98 JUMP JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0x134 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0xDB JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x10B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x10B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x10B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xEE JUMP JUMPDEST POP PUSH3 0x119 SWAP3 SWAP2 POP PUSH3 0x11D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x119 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x11E JUMP JUMPDEST PUSH2 0x1D20 DUP1 PUSH3 0x144 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1A9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x95D89B41 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xC04A8A10 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x6AB JUMPI DUP1 PUSH4 0xE7484890 EQ PUSH2 0x6D9 JUMPI DUP1 PUSH4 0xE78C9B3B EQ PUSH2 0x6E1 JUMPI DUP1 PUSH4 0xF731E9BE EQ PUSH2 0x707 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0xC04A8A10 EQ PUSH2 0x4B0 JUMPI DUP1 PUSH4 0xC222EC8A EQ PUSH2 0x4DC JUMPI DUP1 PUSH4 0xC634DFAA EQ PUSH2 0x685 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0xA9059CBB GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x438 JUMPI DUP1 PUSH4 0xB16A19DE EQ PUSH2 0x464 JUMPI DUP1 PUSH4 0xB3F1C93D EQ PUSH2 0x46C JUMPI DUP1 PUSH4 0xB9A7B622 EQ PUSH2 0x4A8 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x402 JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x40A JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x2D9 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x6BD76D24 GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x75D26413 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x75D26413 EQ PUSH2 0x37D JUMPI DUP1 PUSH4 0x79774338 EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0x79CE6B8C EQ PUSH2 0x3BA JUMPI DUP1 PUSH4 0x90F6FCF2 EQ PUSH2 0x3FA JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x6BD76D24 EQ PUSH2 0x305 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x333 JUMPI DUP1 PUSH4 0x7535D246 EQ PUSH2 0x359 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x26B JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2D9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B6 PUSH2 0x728 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1D8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x21D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x241 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7BE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x273 PUSH2 0x806 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x818 JUMP JUMPDEST PUSH2 0x2C3 PUSH2 0x860 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x869 JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x31B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x8B8 JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x349 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8E5 JUMP JUMPDEST PUSH2 0x361 PUSH2 0x95F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x361 PUSH2 0x977 JUMP JUMPDEST PUSH2 0x38D PUSH2 0x981 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH5 0xFFFFFFFFFF AND PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9B7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH5 0xFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x273 PUSH2 0x9D9 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x9DF JUMP JUMPDEST PUSH2 0x436 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA40 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x44E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x818 JUMP JUMPDEST PUSH2 0x361 PUSH2 0xDA6 JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0xDB5 JUMP JUMPDEST PUSH2 0x273 PUSH2 0x110D JUMP JUMPDEST PUSH2 0x436 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1112 JUMP JUMPDEST PUSH2 0x436 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x4F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 PUSH1 0xFF PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x538 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x54A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x56C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x658 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x67A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x11AE JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x69B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1412 JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x869 JUMP JUMPDEST PUSH2 0x3E0 PUSH2 0x141D JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x142A JUMP JUMPDEST PUSH2 0x70F PUSH2 0x1445 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7B4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x789 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7B4 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x797 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1054141493D5905317D393D517D4D5541413D4951151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x813 PUSH1 0x3B SLOAD PUSH2 0x145E JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1514905394D1915497D393D517D4D5541413D4951151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x414C4C4F57414E43455F4E4F545F535550504F52544544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8F1 DUP4 PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 PUSH2 0x91D JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x95A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x948 SWAP1 DUP4 SWAP1 PUSH5 0xFFFFFFFFFF AND PUSH2 0x14C1 JUMP JUMPDEST SWAP1 POP PUSH2 0x954 DUP4 DUP3 PUSH2 0x14D5 JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH6 0x10000000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x813 PUSH2 0x1593 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x3B SLOAD SWAP1 POP PUSH2 0x996 PUSH2 0x15A2 JUMP JUMPDEST PUSH2 0x99F DUP3 PUSH2 0x145E JUMP JUMPDEST PUSH1 0x3E SLOAD SWAP2 SWAP8 SWAP1 SWAP7 POP SWAP2 SWAP5 POP PUSH5 0xFFFFFFFFFF AND SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH5 0xFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x3B SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7B4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x789 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7B4 JUMP JUMPDEST PUSH2 0xA48 PUSH2 0x95F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA59 PUSH2 0x15A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xB07 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xAF9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 PUSH2 0xB14 DUP5 PUSH2 0x15AC JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH1 0x0 PUSH2 0xB23 PUSH2 0x806 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 DUP2 SWAP1 DUP7 DUP5 GT PUSH2 0xB58 JUMPI PUSH1 0x0 PUSH1 0x3B DUP2 SWAP1 SSTORE PUSH1 0x2 SSTORE PUSH2 0xBDA JUMP JUMPDEST PUSH2 0xB62 DUP5 DUP9 PUSH2 0x1605 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE SWAP2 POP PUSH1 0x0 PUSH2 0xB80 PUSH2 0xB77 DUP7 PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x3B SLOAD SWAP1 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB97 PUSH2 0xB90 DUP11 PUSH2 0x1647 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT PUSH2 0xBB3 JUMPI PUSH1 0x0 PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x3B DUP2 SWAP1 SSTORE SWAP5 POP PUSH2 0xBD7 JUMP JUMPDEST PUSH2 0xBCF PUSH2 0xBBF DUP6 PUSH2 0x1647 JUMP JUMPDEST PUSH2 0xBC9 DUP5 DUP5 PUSH2 0x1605 JUMP JUMPDEST SWAP1 PUSH2 0x16C5 JUMP JUMPDEST PUSH1 0x3B DUP2 SWAP1 SSTORE SWAP5 POP JUMPDEST POP POP JUMPDEST DUP6 DUP8 EQ ISZERO PUSH2 0xC18 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE PUSH1 0x3C SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0xFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH2 0xC46 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0xFFFFFFFFFF NOT AND TIMESTAMP PUSH5 0xFFFFFFFFFF AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x3E DUP1 SLOAD PUSH5 0xFFFFFFFFFF NOT AND TIMESTAMP PUSH5 0xFFFFFFFFFF AND OR SWAP1 SSTORE DUP7 DUP6 GT ISZERO PUSH2 0xCE6 JUMPI PUSH1 0x0 PUSH2 0xC71 DUP7 DUP10 PUSH2 0x1605 JUMP JUMPDEST SWAP1 POP PUSH2 0xC7E DUP10 DUP3 DUP8 PUSH2 0x17CC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP10 SWAP1 MSTORE DUP1 DUP3 ADD DUP9 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 DUP3 SWAP2 PUSH32 0xC16F4E4CA34D790DE4C656C72FD015C667D688F20BE64EEA360618545C4C530F SWAP2 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 LOG3 POP PUSH2 0xD5B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCF2 DUP9 DUP8 PUSH2 0x1605 JUMP JUMPDEST SWAP1 POP PUSH2 0xCFF DUP10 DUP3 DUP8 PUSH2 0x1891 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP10 SWAP1 MSTORE DUP1 DUP3 ADD DUP9 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 PUSH32 0x44BD20A79E993BDCC7CBEDF54A3B4D19FB78490124B6B90D04FE3242EEA579E8 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3F SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDBF PUSH2 0x95F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDD0 PUSH2 0x15A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xE41 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP PUSH2 0xE4A PUSH2 0x1BD9 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xE6E JUMPI PUSH2 0xE6E DUP6 DUP8 DUP7 PUSH2 0x18D3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xE7A DUP8 PUSH2 0x15AC JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0xE87 PUSH2 0x806 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x3B SLOAD PUSH1 0x80 DUP6 ADD MSTORE PUSH2 0xE9C SWAP1 DUP8 PUSH2 0x199B JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xEAF DUP7 PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0xF0D PUSH2 0xEC9 PUSH2 0xEC4 DUP5 DUP10 PUSH2 0x199B JUMP JUMPDEST PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD PUSH2 0xBC9 SWAP1 PUSH2 0xEDC SWAP1 DUP10 PUSH2 0x14D5 JUMP JUMPDEST PUSH2 0xF07 PUSH2 0xEE8 DUP8 PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 PUSH2 0x199B JUMP JUMPDEST PUSH1 0x60 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3739 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF LT ISZERO PUSH2 0xF8C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x3C DUP2 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0xFFFFFFFFFF TIMESTAMP AND PUSH5 0xFFFFFFFFFF NOT SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x3E DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SWAP2 OR SWAP1 SSTORE DUP4 ADD MLOAD PUSH2 0x1022 SWAP1 PUSH2 0xFED SWAP1 PUSH2 0x1647 JUMP JUMPDEST PUSH2 0xBC9 PUSH2 0x1007 DUP7 PUSH1 0x40 ADD MLOAD DUP10 PUSH2 0x14D5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0xF07 PUSH2 0x1017 DUP9 PUSH1 0x0 ADD MLOAD PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x80 DUP10 ADD MLOAD SWAP1 PUSH2 0x14D5 JUMP JUMPDEST PUSH1 0x3B DUP2 SWAP1 SSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x1041 DUP8 PUSH2 0x103A DUP9 DUP5 PUSH2 0x199B JUMP JUMPDEST DUP6 MLOAD PUSH2 0x17CC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC16F4E4CA34D790DE4C656C72FD015C667D688F20BE64EEA360618545C4C530F DUP9 DUP6 DUP6 DUP9 PUSH1 0x60 ADD MLOAD DUP10 PUSH1 0x80 ADD MLOAD DUP11 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP ISZERO SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST DUP1 PUSH1 0x3A PUSH1 0x0 PUSH2 0x111F PUSH2 0x15A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1157 PUSH2 0x15A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDA919360433220E13B51E8C211E490D148E61A3BD53DE8C097194E458B97F3E1 PUSH2 0x1189 PUSH2 0xDA6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11B8 PUSH2 0x19F5 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 PUSH2 0x11CF JUMPI POP PUSH2 0x11CF PUSH2 0x19FA JUMP JUMPDEST DUP1 PUSH2 0x11DB JUMPI POP PUSH1 0x6 SLOAD DUP2 GT JUMPDEST PUSH2 0x1216 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1CBD PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x1236 JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x6 DUP3 SWAP1 SSTORE JUMPDEST PUSH2 0x123F DUP7 PUSH2 0x1A00 JUMP JUMPDEST PUSH2 0x1248 DUP6 PUSH2 0x1A17 JUMP JUMPDEST PUSH2 0x1251 DUP8 PUSH2 0x1A2A JUMP JUMPDEST PUSH1 0x3E DUP1 SLOAD PUSH6 0x10000000000 PUSH1 0x1 PUSH1 0xC8 SHL SUB NOT AND PUSH6 0x10000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x3F DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND DUP14 DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 SLOAD SWAP1 SWAP2 AND SWAP3 DUP13 AND SWAP3 DUP4 OR DUP2 SSTORE DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0xFF DUP12 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 SWAP2 DUP5 ADD DUP3 DUP2 MSTORE DUP12 MLOAD SWAP3 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP11 MLOAD SWAP3 SWAP4 PUSH32 0x40251FBFB6656CFA65A00D7879029FEC1FAD21D28FDCFF2F4F68F52795B74F2C SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 SWAP1 SWAP2 PUSH1 0x60 DUP5 ADD SWAP2 PUSH1 0x80 DUP6 ADD SWAP2 PUSH1 0xC0 DUP7 ADD SWAP2 DUP11 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x132F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1317 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x135C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP5 DUP2 SUB DUP4 MSTORE DUP8 MLOAD DUP2 MSTORE DUP8 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP10 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x138F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1377 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13BC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP7 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP12 POP SWAP1 SWAP10 POP POP POP POP POP POP POP POP POP POP LOG3 DUP1 ISZERO PUSH2 0x1406 JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8DF DUP3 PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH5 0xFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH2 0x1456 DUP2 PUSH2 0x145E JUMP JUMPDEST SWAP3 POP SWAP1 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1469 PUSH2 0x15A2 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x147A JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x95A JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1492 SWAP1 DUP6 SWAP1 PUSH5 0xFFFFFFFFFF AND PUSH2 0x14C1 JUMP JUMPDEST SWAP1 POP PUSH2 0x149E DUP3 DUP3 PUSH2 0x14D5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CE DUP4 DUP4 TIMESTAMP PUSH2 0x1A40 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x14E2 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x14EF JUMPI POP PUSH1 0x0 PUSH2 0x8DF JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x1505 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1570 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP POP PUSH12 0x33B2E3C9FD0803CE8000000 SWAP2 MUL PUSH12 0x19D971E4FE8401E74000000 ADD DIV SWAP1 JUMP JUMPDEST PUSH1 0x40 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x15BB DUP6 PUSH2 0x14A6 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x15D3 JUMPI PUSH1 0x0 DUP1 PUSH1 0x0 SWAP4 POP SWAP4 POP SWAP4 POP POP PUSH2 0x15FE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15E8 DUP3 PUSH2 0x15E2 DUP9 PUSH2 0x8E5 JUMP JUMPDEST SWAP1 PUSH2 0x1605 JUMP JUMPDEST SWAP1 POP DUP2 PUSH2 0x15F5 DUP2 DUP4 PUSH2 0x199B JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP SWAP2 POP POP JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CE DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1B16 JUMP JUMPDEST PUSH1 0x0 PUSH4 0x3B9ACA00 DUP3 DUP2 MUL SWAP1 DUP4 SWAP1 DUP3 DIV EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x16BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x172D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x17A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x17C3 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x17EF DUP2 DUP5 PUSH2 0x199B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE SWAP1 SLOAD AND ISZERO PUSH2 0x188B JUMPI PUSH1 0x40 DUP1 SLOAD DUP2 MLOAD PUSH4 0x18C39F17 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP3 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH4 0x31873E2E SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1872 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1886 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x2 DUP4 MSTORE PUSH2 0x383 PUSH1 0xF4 SHL SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 PUSH2 0x17EF SWAP1 DUP3 SWAP1 DUP6 SWAP1 PUSH2 0x1B16 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3539 PUSH1 0xF0 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A DUP4 MSTORE DUP5 DUP2 KECCAK256 SWAP2 DUP8 AND DUP2 MSTORE SWAP2 MSTORE SWAP2 DUP3 KECCAK256 SLOAD PUSH2 0x191C SWAP2 DUP5 SWAP1 PUSH2 0x1B16 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP10 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP4 SWAP1 SSTORE SWAP2 SWAP3 POP SWAP1 PUSH32 0xDA919360433220E13B51E8C211E490D148E61A3BD53DE8C097194E458B97F3E1 PUSH2 0x1974 PUSH2 0xDA6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x14CE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1A13 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1C08 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1A13 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1C08 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1A54 DUP4 PUSH5 0xFFFFFFFFFF DUP7 AND PUSH2 0x1605 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1A6B JUMPI PUSH2 0x1A63 PUSH2 0x1B70 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x14CE JUMP JUMPDEST PUSH1 0x0 NOT DUP2 ADD PUSH1 0x0 PUSH1 0x2 DUP4 GT PUSH2 0x1A81 JUMPI PUSH1 0x0 PUSH2 0x1A86 JUMP JUMPDEST PUSH1 0x2 DUP4 SUB JUMPDEST SWAP1 POP PUSH4 0x1E13380 DUP8 DIV PUSH1 0x0 PUSH2 0x1A9B DUP3 DUP1 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1AA9 DUP3 DUP5 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x2 PUSH2 0x1AC3 DUP5 PUSH2 0x1ABD DUP11 DUP11 PUSH2 0x1B80 JUMP JUMPDEST SWAP1 PUSH2 0x1B80 JUMP JUMPDEST DUP2 PUSH2 0x1ACA JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x6 PUSH2 0x1AE1 DUP5 PUSH2 0x1ABD DUP10 DUP2 DUP14 DUP14 PUSH2 0x1B80 JUMP JUMPDEST DUP2 PUSH2 0x1AE8 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x1B06 DUP2 PUSH2 0xF07 DUP5 DUP2 PUSH2 0x1AFE DUP11 DUP15 PUSH2 0x1B80 JUMP JUMPDEST PUSH2 0xF07 PUSH2 0x1B70 JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1B68 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1B8F JUMPI POP PUSH1 0x0 PUSH2 0x8DF JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1B9C JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x14CE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1C9C PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x1C49 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x1C76 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x1C76 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1C76 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1C5B JUMP JUMPDEST POP PUSH2 0x1C82 SWAP3 SWAP2 POP PUSH2 0x1C86 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1C82 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1C87 JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77436F6E747261637420 PUSH10 0x6E7374616E6365206861 PUSH20 0x20616C7265616479206265656E20696E69746961 PUSH13 0x697A6564A26469706673582212 KECCAK256 PUSH4 0xD412B63D POP PUSH16 0x7B4A899605458CEAB29096A3C1CD9531 0x24 DUP2 0xC6 TIMESTAMP ADDRESS LOG0 0xCB SLT 0xF8 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "679:13148:91:-:0;;;926:1:74;884:43;;679:13148:91;;;;;;;;;-1:-1:-1;952:164:90;;;;;;;;;;;;-1:-1:-1;;;952:164:90;;;;;;;;;;;;;;;;;;;;;1051:12;;952:164;;;-1:-1:-1;;1051:12:90;;:5;;952:164;1051:12;:::i;:::-;-1:-1:-1;1069:16:90;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;1091:9:90;:20;;-1:-1:-1;;1091:20:90;;;;;;;;;;;;-1:-1:-1;679:13148:91;;-1:-1:-1;679:13148:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;679:13148:91;;;-1:-1:-1;679:13148:91;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101a95760003560e01c806395d89b41116100f9578063c04a8a1011610097578063dd62ed3e11610071578063dd62ed3e146106ab578063e7484890146106d9578063e78c9b3b146106e1578063f731e9be14610707576101a9565b8063c04a8a10146104b0578063c222ec8a146104dc578063c634dfaa14610685576101a9565b8063a9059cbb116100d3578063a9059cbb14610438578063b16a19de14610464578063b3f1c93d1461046c578063b9a7b622146104a8576101a9565b806395d89b41146104025780639dc29fac1461040a578063a457c2d7146102d9576101a9565b80636bd76d241161016657806375d264131161014057806375d264131461037d578063797743381461038557806379ce6b8c146103ba57806390f6fcf2146103fa576101a9565b80636bd76d241461030557806370a08231146103335780637535d24614610359576101a9565b806306fdde03146101ae578063095ea7b31461022b57806318160ddd1461026b57806323b872dd14610285578063313ce567146102bb57806339509351146102d9575b600080fd5b6101b6610728565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f05781810151838201526020016101d8565b50505050905090810190601f16801561021d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102576004803603604081101561024157600080fd5b506001600160a01b0381351690602001356107be565b604080519115158252519081900360200190f35b610273610806565b60408051918252519081900360200190f35b6102576004803603606081101561029b57600080fd5b506001600160a01b03813581169160208101359091169060400135610818565b6102c3610860565b6040805160ff9092168252519081900360200190f35b610257600480360360408110156102ef57600080fd5b506001600160a01b038135169060200135610869565b6102736004803603604081101561031b57600080fd5b506001600160a01b03813581169160200135166108b8565b6102736004803603602081101561034957600080fd5b50356001600160a01b03166108e5565b61036161095f565b604080516001600160a01b039092168252519081900360200190f35b610361610977565b61038d610981565b6040805194855260208501939093528383019190915264ffffffffff166060830152519081900360800190f35b6103e0600480360360208110156103d057600080fd5b50356001600160a01b03166109b7565b6040805164ffffffffff9092168252519081900360200190f35b6102736109d9565b6101b66109df565b6104366004803603604081101561042057600080fd5b506001600160a01b038135169060200135610a40565b005b6102576004803603604081101561044e57600080fd5b506001600160a01b038135169060200135610818565b610361610da6565b6102576004803603608081101561048257600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610db5565b61027361110d565b610436600480360360408110156104c657600080fd5b506001600160a01b038135169060200135611112565b610436600480360360e08110156104f257600080fd5b6001600160a01b038235811692602081013582169260408201359092169160ff606083013516919081019060a08101608082013564010000000081111561053857600080fd5b82018360208201111561054a57600080fd5b8035906020019184600183028401116401000000008311171561056c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105bf57600080fd5b8201836020820111156105d157600080fd5b803590602001918460018302840111640100000000831117156105f357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561064657600080fd5b82018360208201111561065857600080fd5b8035906020019184600183028401116401000000008311171561067a57600080fd5b5090925090506111ae565b6102736004803603602081101561069b57600080fd5b50356001600160a01b0316611412565b610273600480360360408110156106c157600080fd5b506001600160a01b0381358116916020013516610869565b6103e061141d565b610273600480360360208110156106f757600080fd5b50356001600160a01b031661142a565b61070f611445565b6040805192835260208301919091528051918290030190f35b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b45780601f10610789576101008083540402835291602001916107b4565b820191906000526020600020905b81548152906001019060200180831161079757829003601f168201915b5050505050905090565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b6000610813603b5461145e565b905090565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60055460ff1690565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b038083166000908152603a60209081526040808320938516835292905220545b92915050565b6000806108f1836114a6565b6001600160a01b0384166000908152603d60205260409020549091508161091d5760009250505061095a565b6001600160a01b0384166000908152603c602052604081205461094890839064ffffffffff166114c1565b905061095483826114d5565b93505050505b919050565b603e546501000000000090046001600160a01b031690565b6000610813611593565b6000806000806000603b5490506109966115a2565b61099f8261145e565b603e54919790965091945064ffffffffff1692509050565b6001600160a01b03166000908152603c602052604090205464ffffffffff1690565b603b5490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b45780601f10610789576101008083540402835291602001916107b4565b610a4861095f565b6001600160a01b0316610a596115a8565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610b075760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610acc578181015183820152602001610ab4565b50505050905090810190601f168015610af95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600080610b14846115ac565b92509250506000610b23610806565b6001600160a01b0386166000908152603d6020526040812054919250908190868411610b58576000603b819055600255610bda565b610b628488611605565b600281905591506000610b80610b7786611647565b603b54906114d5565b90506000610b97610b908a611647565b84906114d5565b9050818110610bb35760006002819055603b8190559450610bd7565b610bcf610bbf85611647565b610bc98484611605565b906116c5565b603b81905594505b50505b85871415610c18576001600160a01b0388166000908152603d60209081526040808320839055603c9091529020805464ffffffffff19169055610c46565b6001600160a01b0388166000908152603c60205260409020805464ffffffffff19164264ffffffffff161790555b603e805464ffffffffff19164264ffffffffff1617905586851115610ce6576000610c718689611605565b9050610c7e8982876117cc565b6040805182815260208101899052808201889052606081018490526080810186905260a0810185905290516001600160a01b038b169182917fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f9181900360c00190a350610d5b565b6000610cf28887611605565b9050610cff898287611891565b6040805182815260208101899052808201889052606081018690526080810185905290516001600160a01b038b16917f44bd20a79e993bdcc7cbedf54a3b4d19fb78490124b6b90d04fe3242eea579e8919081900360a00190a2505b6040805188815290516000916001600160a01b038b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050505050505050565b603f546001600160a01b031690565b6000610dbf61095f565b6001600160a01b0316610dd06115a8565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610e415760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b50610e4a611bd9565b846001600160a01b0316866001600160a01b031614610e6e57610e6e8587866118d3565b600080610e7a876115ac565b9250925050610e87610806565b808452603b546080850152610e9c908761199b565b60028190556020840152610eaf86611647565b6040840152610f0d610ec9610ec4848961199b565b611647565b6040850151610bc990610edc90896114d5565b610f07610ee887611647565b6001600160a01b038d166000908152603d6020526040902054906114d5565b9061199b565b60608401819052604080518082019091526002815261373960f01b6020820152906fffffffffffffffffffffffffffffffff1015610f8c5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5060608301516001600160a01b0388166000908152603d6020908152604080832093909355603c8152919020805464ffffffffff421664ffffffffff199182168117909255603e8054909116909117905583015161102290610fed90611647565b610bc96110078660400151896114d590919063ffffffff16565b610f076110178860000151611647565b6080890151906114d5565b603b81905560808401526110418761103a888461199b565b85516117cc565b6040805187815290516001600160a01b038916916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3866001600160a01b0316886001600160a01b03167fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f888585886060015189608001518a6020015160405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a350159695505050505050565b600181565b80603a600061111f6115a8565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120919091556111576115a8565b6001600160a01b03167fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1611189610da6565b604080516001600160a01b039092168252602082018690528051918290030190a35050565b60006111b86119f5565b60075490915060ff16806111cf57506111cf6119fa565b806111db575060065481115b6112165760405162461bcd60e51b815260040180806020018281038252602e815260200180611cbd602e913960400191505060405180910390fd5b60075460ff16158015611236576007805460ff1916600117905560068290555b61123f86611a00565b61124885611a17565b61125187611a2a565b603e805465010000000000600160c81b031916650100000000006001600160a01b038d811691820292909217909255603f80546001600160a01b03199081168d841690811790925560408054909116928c169283178155805192835260ff8b1660208085019190915260a09184018281528b51928501929092528a5192937f40251fbfb6656cfa65a00d7879029fec1fad21d28fdcff2f4f68f52795b74f2c938e938e938e938e938e938e9390916060840191608085019160c08601918a019080838360005b8381101561132f578181015183820152602001611317565b50505050905090810190601f16801561135c5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b8381101561138f578181015183820152602001611377565b50505050905090810190601f1680156113bc5780820380516001836020036101000a031916815260200191505b508481038252858152602001868680828437600083820152604051601f909101601f19169092018290039b50909950505050505050505050a38015611406576007805460ff191690555b50505050505050505050565b60006108df826114a6565b603e5464ffffffffff1690565b6001600160a01b03166000908152603d602052604090205490565b603b5460009081906114568161145e565b925090509091565b6000806114696115a2565b90508061147a57600091505061095a565b603e5460009061149290859064ffffffffff166114c1565b905061149e82826114d5565b949350505050565b6001600160a01b031660009081526020819052604090205490565b60006114ce838342611a40565b9392505050565b60008215806114e2575081155b156114ef575060006108df565b816b019d971e4fe8401e74000000198161150557fe5b0483111560405180604001604052806002815260200161068760f31b815250906115705760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b6040546001600160a01b031690565b60025490565b3390565b6000806000806115bb856114a6565b9050806115d3576000806000935093509350506115fe565b60006115e8826115e2886108e5565b90611605565b9050816115f5818361199b565b90955093509150505b9193909250565b60006114ce83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b16565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b815250906116be5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5092915050565b604080518082019091526002815261035360f41b60208201526000908261172d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156117a95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5082816b033b2e3c9fd0803ce8000000860201816117c357fe5b04949350505050565b6001600160a01b0383166000908152602081905260409020546117ef818461199b565b6001600160a01b0380861660009081526020819052604090819020929092559054161561188b576040805481516318c39f1760e11b81526001600160a01b0387811660048301526024820186905260448201859052925192909116916331873e2e9160648082019260009290919082900301818387803b15801561187257600080fd5b505af1158015611886573d6000803e3d6000fd5b505050505b50505050565b6001600160a01b038316600090815260208181526040918290205482518084019093526002835261038360f41b91830191909152906117ef9082908590611b16565b6040805180820182526002815261353960f01b6020808301919091526001600160a01b038087166000908152603a8352848120918716815291529182205461191c918490611b16565b6001600160a01b038086166000818152603a60209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1611974610da6565b604080516001600160a01b039092168252602082018690528051918290030190a350505050565b6000828201838110156114ce576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600190565b303b1590565b8051611a13906003906020840190611c08565b5050565b8051611a13906004906020840190611c08565b6005805460ff191660ff92909216919091179055565b600080611a548364ffffffffff8616611605565b905080611a6b57611a63611b70565b9150506114ce565b6000198101600060028311611a81576000611a86565b600283035b90506301e1338087046000611a9b82806114d5565b90506000611aa982846114d5565b905060006002611ac384611abd8a8a611b80565b90611b80565b81611aca57fe5b04905060006006611ae184611abd89818d8d611b80565b81611ae857fe5b049050611b0681610f078481611afe8a8e611b80565b610f07611b70565b9c9b505050505050505050505050565b60008184841115611b685760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b505050900390565b6b033b2e3c9fd0803ce800000090565b600082611b8f575060006108df565b82820282848281611b9c57fe5b04146114ce5760405162461bcd60e51b8152600401808060200182810382526021815260200180611c9c6021913960400191505060405180910390fd5b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c4957805160ff1916838001178555611c76565b82800160010185558215611c76579182015b82811115611c76578251825591602001919060010190611c5b565b50611c82929150611c86565b5090565b5b80821115611c825760008155600101611c8756fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a264697066735822122063d412b63d506f7b4a899605458ceab29096a3c1cd95312481c64230a0cb12f864736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1A9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x95D89B41 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xC04A8A10 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x6AB JUMPI DUP1 PUSH4 0xE7484890 EQ PUSH2 0x6D9 JUMPI DUP1 PUSH4 0xE78C9B3B EQ PUSH2 0x6E1 JUMPI DUP1 PUSH4 0xF731E9BE EQ PUSH2 0x707 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0xC04A8A10 EQ PUSH2 0x4B0 JUMPI DUP1 PUSH4 0xC222EC8A EQ PUSH2 0x4DC JUMPI DUP1 PUSH4 0xC634DFAA EQ PUSH2 0x685 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0xA9059CBB GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x438 JUMPI DUP1 PUSH4 0xB16A19DE EQ PUSH2 0x464 JUMPI DUP1 PUSH4 0xB3F1C93D EQ PUSH2 0x46C JUMPI DUP1 PUSH4 0xB9A7B622 EQ PUSH2 0x4A8 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x402 JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x40A JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x2D9 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x6BD76D24 GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x75D26413 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x75D26413 EQ PUSH2 0x37D JUMPI DUP1 PUSH4 0x79774338 EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0x79CE6B8C EQ PUSH2 0x3BA JUMPI DUP1 PUSH4 0x90F6FCF2 EQ PUSH2 0x3FA JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x6BD76D24 EQ PUSH2 0x305 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x333 JUMPI DUP1 PUSH4 0x7535D246 EQ PUSH2 0x359 JUMPI PUSH2 0x1A9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x26B JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2D9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B6 PUSH2 0x728 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1D8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x21D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x241 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7BE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x273 PUSH2 0x806 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x818 JUMP JUMPDEST PUSH2 0x2C3 PUSH2 0x860 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x869 JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x31B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x8B8 JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x349 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8E5 JUMP JUMPDEST PUSH2 0x361 PUSH2 0x95F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x361 PUSH2 0x977 JUMP JUMPDEST PUSH2 0x38D PUSH2 0x981 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH5 0xFFFFFFFFFF AND PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9B7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH5 0xFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x273 PUSH2 0x9D9 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x9DF JUMP JUMPDEST PUSH2 0x436 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA40 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x44E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x818 JUMP JUMPDEST PUSH2 0x361 PUSH2 0xDA6 JUMP JUMPDEST PUSH2 0x257 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0xDB5 JUMP JUMPDEST PUSH2 0x273 PUSH2 0x110D JUMP JUMPDEST PUSH2 0x436 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1112 JUMP JUMPDEST PUSH2 0x436 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x4F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 PUSH1 0xFF PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x538 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x54A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x56C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x658 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x67A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x11AE JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x69B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1412 JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x869 JUMP JUMPDEST PUSH2 0x3E0 PUSH2 0x141D JUMP JUMPDEST PUSH2 0x273 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x142A JUMP JUMPDEST PUSH2 0x70F PUSH2 0x1445 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7B4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x789 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7B4 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x797 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1054141493D5905317D393D517D4D5541413D4951151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x813 PUSH1 0x3B SLOAD PUSH2 0x145E JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1514905394D1915497D393D517D4D5541413D4951151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x414C4C4F57414E43455F4E4F545F535550504F52544544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8F1 DUP4 PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 PUSH2 0x91D JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x95A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0x948 SWAP1 DUP4 SWAP1 PUSH5 0xFFFFFFFFFF AND PUSH2 0x14C1 JUMP JUMPDEST SWAP1 POP PUSH2 0x954 DUP4 DUP3 PUSH2 0x14D5 JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH6 0x10000000000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x813 PUSH2 0x1593 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x3B SLOAD SWAP1 POP PUSH2 0x996 PUSH2 0x15A2 JUMP JUMPDEST PUSH2 0x99F DUP3 PUSH2 0x145E JUMP JUMPDEST PUSH1 0x3E SLOAD SWAP2 SWAP8 SWAP1 SWAP7 POP SWAP2 SWAP5 POP PUSH5 0xFFFFFFFFFF AND SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH5 0xFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x3B SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7B4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x789 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7B4 JUMP JUMPDEST PUSH2 0xA48 PUSH2 0x95F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA59 PUSH2 0x15A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xB07 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xAF9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 PUSH2 0xB14 DUP5 PUSH2 0x15AC JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH1 0x0 PUSH2 0xB23 PUSH2 0x806 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 DUP2 SWAP1 DUP7 DUP5 GT PUSH2 0xB58 JUMPI PUSH1 0x0 PUSH1 0x3B DUP2 SWAP1 SSTORE PUSH1 0x2 SSTORE PUSH2 0xBDA JUMP JUMPDEST PUSH2 0xB62 DUP5 DUP9 PUSH2 0x1605 JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE SWAP2 POP PUSH1 0x0 PUSH2 0xB80 PUSH2 0xB77 DUP7 PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x3B SLOAD SWAP1 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB97 PUSH2 0xB90 DUP11 PUSH2 0x1647 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT PUSH2 0xBB3 JUMPI PUSH1 0x0 PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x3B DUP2 SWAP1 SSTORE SWAP5 POP PUSH2 0xBD7 JUMP JUMPDEST PUSH2 0xBCF PUSH2 0xBBF DUP6 PUSH2 0x1647 JUMP JUMPDEST PUSH2 0xBC9 DUP5 DUP5 PUSH2 0x1605 JUMP JUMPDEST SWAP1 PUSH2 0x16C5 JUMP JUMPDEST PUSH1 0x3B DUP2 SWAP1 SSTORE SWAP5 POP JUMPDEST POP POP JUMPDEST DUP6 DUP8 EQ ISZERO PUSH2 0xC18 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE PUSH1 0x3C SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0xFFFFFFFFFF NOT AND SWAP1 SSTORE PUSH2 0xC46 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3C PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0xFFFFFFFFFF NOT AND TIMESTAMP PUSH5 0xFFFFFFFFFF AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x3E DUP1 SLOAD PUSH5 0xFFFFFFFFFF NOT AND TIMESTAMP PUSH5 0xFFFFFFFFFF AND OR SWAP1 SSTORE DUP7 DUP6 GT ISZERO PUSH2 0xCE6 JUMPI PUSH1 0x0 PUSH2 0xC71 DUP7 DUP10 PUSH2 0x1605 JUMP JUMPDEST SWAP1 POP PUSH2 0xC7E DUP10 DUP3 DUP8 PUSH2 0x17CC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP10 SWAP1 MSTORE DUP1 DUP3 ADD DUP9 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 DUP3 SWAP2 PUSH32 0xC16F4E4CA34D790DE4C656C72FD015C667D688F20BE64EEA360618545C4C530F SWAP2 DUP2 SWAP1 SUB PUSH1 0xC0 ADD SWAP1 LOG3 POP PUSH2 0xD5B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCF2 DUP9 DUP8 PUSH2 0x1605 JUMP JUMPDEST SWAP1 POP PUSH2 0xCFF DUP10 DUP3 DUP8 PUSH2 0x1891 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP10 SWAP1 MSTORE DUP1 DUP3 ADD DUP9 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 PUSH32 0x44BD20A79E993BDCC7CBEDF54A3B4D19FB78490124B6B90D04FE3242EEA579E8 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG2 POP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP9 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3F SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDBF PUSH2 0x95F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDD0 PUSH2 0x15A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xE41 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP PUSH2 0xE4A PUSH2 0x1BD9 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xE6E JUMPI PUSH2 0xE6E DUP6 DUP8 DUP7 PUSH2 0x18D3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xE7A DUP8 PUSH2 0x15AC JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0xE87 PUSH2 0x806 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x3B SLOAD PUSH1 0x80 DUP6 ADD MSTORE PUSH2 0xE9C SWAP1 DUP8 PUSH2 0x199B JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xEAF DUP7 PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0xF0D PUSH2 0xEC9 PUSH2 0xEC4 DUP5 DUP10 PUSH2 0x199B JUMP JUMPDEST PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD PUSH2 0xBC9 SWAP1 PUSH2 0xEDC SWAP1 DUP10 PUSH2 0x14D5 JUMP JUMPDEST PUSH2 0xF07 PUSH2 0xEE8 DUP8 PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 PUSH2 0x199B JUMP JUMPDEST PUSH1 0x60 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3739 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF LT ISZERO PUSH2 0xF8C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE PUSH1 0x3C DUP2 MSTORE SWAP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH5 0xFFFFFFFFFF TIMESTAMP AND PUSH5 0xFFFFFFFFFF NOT SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x3E DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SWAP2 OR SWAP1 SSTORE DUP4 ADD MLOAD PUSH2 0x1022 SWAP1 PUSH2 0xFED SWAP1 PUSH2 0x1647 JUMP JUMPDEST PUSH2 0xBC9 PUSH2 0x1007 DUP7 PUSH1 0x40 ADD MLOAD DUP10 PUSH2 0x14D5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0xF07 PUSH2 0x1017 DUP9 PUSH1 0x0 ADD MLOAD PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x80 DUP10 ADD MLOAD SWAP1 PUSH2 0x14D5 JUMP JUMPDEST PUSH1 0x3B DUP2 SWAP1 SSTORE PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x1041 DUP8 PUSH2 0x103A DUP9 DUP5 PUSH2 0x199B JUMP JUMPDEST DUP6 MLOAD PUSH2 0x17CC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC16F4E4CA34D790DE4C656C72FD015C667D688F20BE64EEA360618545C4C530F DUP9 DUP6 DUP6 DUP9 PUSH1 0x60 ADD MLOAD DUP10 PUSH1 0x80 ADD MLOAD DUP11 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP ISZERO SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST DUP1 PUSH1 0x3A PUSH1 0x0 PUSH2 0x111F PUSH2 0x15A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1157 PUSH2 0x15A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDA919360433220E13B51E8C211E490D148E61A3BD53DE8C097194E458B97F3E1 PUSH2 0x1189 PUSH2 0xDA6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11B8 PUSH2 0x19F5 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 PUSH2 0x11CF JUMPI POP PUSH2 0x11CF PUSH2 0x19FA JUMP JUMPDEST DUP1 PUSH2 0x11DB JUMPI POP PUSH1 0x6 SLOAD DUP2 GT JUMPDEST PUSH2 0x1216 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1CBD PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x1236 JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x6 DUP3 SWAP1 SSTORE JUMPDEST PUSH2 0x123F DUP7 PUSH2 0x1A00 JUMP JUMPDEST PUSH2 0x1248 DUP6 PUSH2 0x1A17 JUMP JUMPDEST PUSH2 0x1251 DUP8 PUSH2 0x1A2A JUMP JUMPDEST PUSH1 0x3E DUP1 SLOAD PUSH6 0x10000000000 PUSH1 0x1 PUSH1 0xC8 SHL SUB NOT AND PUSH6 0x10000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x3F DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND DUP14 DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 SLOAD SWAP1 SWAP2 AND SWAP3 DUP13 AND SWAP3 DUP4 OR DUP2 SSTORE DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0xFF DUP12 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 SWAP2 DUP5 ADD DUP3 DUP2 MSTORE DUP12 MLOAD SWAP3 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP11 MLOAD SWAP3 SWAP4 PUSH32 0x40251FBFB6656CFA65A00D7879029FEC1FAD21D28FDCFF2F4F68F52795B74F2C SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 SWAP1 SWAP2 PUSH1 0x60 DUP5 ADD SWAP2 PUSH1 0x80 DUP6 ADD SWAP2 PUSH1 0xC0 DUP7 ADD SWAP2 DUP11 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x132F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1317 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x135C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP5 DUP2 SUB DUP4 MSTORE DUP8 MLOAD DUP2 MSTORE DUP8 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP10 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x138F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1377 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13BC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP7 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP12 POP SWAP1 SWAP10 POP POP POP POP POP POP POP POP POP POP LOG3 DUP1 ISZERO PUSH2 0x1406 JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8DF DUP3 PUSH2 0x14A6 JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH5 0xFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3D PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH2 0x1456 DUP2 PUSH2 0x145E JUMP JUMPDEST SWAP3 POP SWAP1 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1469 PUSH2 0x15A2 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x147A JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x95A JUMP JUMPDEST PUSH1 0x3E SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1492 SWAP1 DUP6 SWAP1 PUSH5 0xFFFFFFFFFF AND PUSH2 0x14C1 JUMP JUMPDEST SWAP1 POP PUSH2 0x149E DUP3 DUP3 PUSH2 0x14D5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CE DUP4 DUP4 TIMESTAMP PUSH2 0x1A40 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x14E2 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x14EF JUMPI POP PUSH1 0x0 PUSH2 0x8DF JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x1505 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1570 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP POP PUSH12 0x33B2E3C9FD0803CE8000000 SWAP2 MUL PUSH12 0x19D971E4FE8401E74000000 ADD DIV SWAP1 JUMP JUMPDEST PUSH1 0x40 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x15BB DUP6 PUSH2 0x14A6 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x15D3 JUMPI PUSH1 0x0 DUP1 PUSH1 0x0 SWAP4 POP SWAP4 POP SWAP4 POP POP PUSH2 0x15FE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15E8 DUP3 PUSH2 0x15E2 DUP9 PUSH2 0x8E5 JUMP JUMPDEST SWAP1 PUSH2 0x1605 JUMP JUMPDEST SWAP1 POP DUP2 PUSH2 0x15F5 DUP2 DUP4 PUSH2 0x199B JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP SWAP2 POP POP JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CE DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1B16 JUMP JUMPDEST PUSH1 0x0 PUSH4 0x3B9ACA00 DUP3 DUP2 MUL SWAP1 DUP4 SWAP1 DUP3 DIV EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x16BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x172D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x17A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x17C3 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x17EF DUP2 DUP5 PUSH2 0x199B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP3 SWAP1 SWAP3 SSTORE SWAP1 SLOAD AND ISZERO PUSH2 0x188B JUMPI PUSH1 0x40 DUP1 SLOAD DUP2 MLOAD PUSH4 0x18C39F17 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE SWAP3 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH4 0x31873E2E SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1872 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1886 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x2 DUP4 MSTORE PUSH2 0x383 PUSH1 0xF4 SHL SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 PUSH2 0x17EF SWAP1 DUP3 SWAP1 DUP6 SWAP1 PUSH2 0x1B16 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3539 PUSH1 0xF0 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A DUP4 MSTORE DUP5 DUP2 KECCAK256 SWAP2 DUP8 AND DUP2 MSTORE SWAP2 MSTORE SWAP2 DUP3 KECCAK256 SLOAD PUSH2 0x191C SWAP2 DUP5 SWAP1 PUSH2 0x1B16 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP10 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP4 SWAP1 SSTORE SWAP2 SWAP3 POP SWAP1 PUSH32 0xDA919360433220E13B51E8C211E490D148E61A3BD53DE8C097194E458B97F3E1 PUSH2 0x1974 PUSH2 0xDA6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x14CE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1A13 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1C08 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1A13 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1C08 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1A54 DUP4 PUSH5 0xFFFFFFFFFF DUP7 AND PUSH2 0x1605 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x1A6B JUMPI PUSH2 0x1A63 PUSH2 0x1B70 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x14CE JUMP JUMPDEST PUSH1 0x0 NOT DUP2 ADD PUSH1 0x0 PUSH1 0x2 DUP4 GT PUSH2 0x1A81 JUMPI PUSH1 0x0 PUSH2 0x1A86 JUMP JUMPDEST PUSH1 0x2 DUP4 SUB JUMPDEST SWAP1 POP PUSH4 0x1E13380 DUP8 DIV PUSH1 0x0 PUSH2 0x1A9B DUP3 DUP1 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1AA9 DUP3 DUP5 PUSH2 0x14D5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x2 PUSH2 0x1AC3 DUP5 PUSH2 0x1ABD DUP11 DUP11 PUSH2 0x1B80 JUMP JUMPDEST SWAP1 PUSH2 0x1B80 JUMP JUMPDEST DUP2 PUSH2 0x1ACA JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x6 PUSH2 0x1AE1 DUP5 PUSH2 0x1ABD DUP10 DUP2 DUP14 DUP14 PUSH2 0x1B80 JUMP JUMPDEST DUP2 PUSH2 0x1AE8 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x1B06 DUP2 PUSH2 0xF07 DUP5 DUP2 PUSH2 0x1AFE DUP11 DUP15 PUSH2 0x1B80 JUMP JUMPDEST PUSH2 0xF07 PUSH2 0x1B70 JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1B68 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xACC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAB4 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1B8F JUMPI POP PUSH1 0x0 PUSH2 0x8DF JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1B9C JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x14CE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1C9C PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x1C49 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x1C76 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x1C76 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1C76 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1C5B JUMP JUMPDEST POP PUSH2 0x1C82 SWAP3 SWAP2 POP PUSH2 0x1C86 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1C82 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1C87 JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77436F6E747261637420 PUSH10 0x6E7374616E6365206861 PUSH20 0x20616C7265616479206265656E20696E69746961 PUSH13 0x697A6564A26469706673582212 KECCAK256 PUSH4 0xD412B63D POP PUSH16 0x7B4A899605458CEAB29096A3C1CD9531 0x24 DUP2 0xC6 TIMESTAMP ADDRESS LOG0 0xCB SLT 0xF8 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "679:13148:91:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1168:84:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2539:157:95;;;;;;;;;;;;;;;;-1:-1:-1;2539:157:95;;-1:-1:-1;;;;;2539:157:95;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;10230:112:91;;;:::i;:::-;;;;;;;;;;;;;;;;2700:210:95;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2700:210:95;;;;;;;;;;;;;;;;;:::i;1450:84:90:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2914:194:95;;;;;;;;;;;;;;;;-1:-1:-1;2914:194:95;;-1:-1:-1;;;;;2914:194:95;;;;;;:::i;1855:171::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1855:171:95;;;;;;;;;;:::i;3457:412:91:-;;;;;;;;;;;;;;;;-1:-1:-1;3457:412:91;-1:-1:-1;;;;;3457:412:91;;:::i;11163:74::-;;;:::i;:::-;;;;-1:-1:-1;;;;;11163:74:91;;;;;;;;;;;;;;11322:138;;;:::i;9644:274::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2947:125;;;;;;;;;;;;;;;;-1:-1:-1;2947:125:91;-1:-1:-1;;;;;2947:125:91;;:::i;:::-;;;;;;;;;;;;;;;;;;;2722:113;;;:::i;1306:88:90:-;;;:::i;6403:2285:91:-;;;;;;;;;;;;;;;;-1:-1:-1;6403:2285:91;;-1:-1:-1;;;;;6403:2285:91;;;;;;:::i;:::-;;2181:162:95;;;;;;;;;;;;;;;;-1:-1:-1;2181:162:95;;-1:-1:-1;;;;;2181:162:95;;;;;;:::i;10970:100:91:-;;;:::i;4589:1641::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4589:1641:91;;;;;;;;;;;;;;;;;;;;;;:::i;776:49::-;;;:::i;1403:240:95:-;;;;;;;;;;;;;;;;-1:-1:-1;1403:240:95;;-1:-1:-1;;;;;1403:240:95;;;;;;:::i;1662:686:91:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1662:686:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1662:686:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1662:686:91;;;;;;;;-1:-1:-1;1662:686:91;;-1:-1:-1;;1662:686:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1662:686:91;;;;;;;;-1:-1:-1;1662:686:91;;-1:-1:-1;;1662:686:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1662:686:91;;-1:-1:-1;1662:686:91;-1:-1:-1;1662:686:91;:::i;10732:130::-;;;;;;;;;;;;;;;;-1:-1:-1;10732:130:91;-1:-1:-1;;;;;10732:130:91;;:::i;2347:188:95:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2347:188:95;;;;;;;;;;:::i;10429:114:91:-;;;:::i;3213:130::-;;;;;;;;;;;;;;;;-1:-1:-1;3213:130:91;-1:-1:-1;;;;;3213:130:91;;:::i;10002:176::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1168:84:90;1242:5;1235:12;;;;;;;;;;;;;-1:-1:-1;;1235:12:90;;;;;;;;;;;;;;;;;;;;;;;;;;1214:13;;1235:12;;1242:5;;1235:12;;;1242:5;1235:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1168:84;:::o;2539:157:95:-;2659:32;;;-1:-1:-1;;;2659:32:95;;;;;;;;;;;;-1:-1:-1;;;2659:32:95;;;;;;-1:-1:-1;;2659:32:95;;;;;;;10230:112:91;10283:7;10305:32;10322:14;;10305:16;:32::i;:::-;10298:39;;10230:112;:::o;2700:210:95:-;2873:32;;;-1:-1:-1;;;2873:32:95;;;;;;;;;;;;-1:-1:-1;;;2873:32:95;;;;;;-1:-1:-1;;2873:32:95;;;;;;;1450:84:90;1520:9;;;;1450:84;:::o;2914:194:95:-;3070:33;;;-1:-1:-1;;;3070:33:95;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3070:33:95;;;;;;;1855:171;-1:-1:-1;;;;;1986:27:95;;;1962:7;1986:27;;;:17;:27;;;;;;;;:35;;;;;;;;;;1855:171;;;;;:::o;3457:412:91:-;3531:7;3546:22;3571:24;3587:7;3571:15;:24::i;:::-;-1:-1:-1;;;;;3622:25:91;;3601:18;3622:25;;;:16;:25;;;;;;3546:49;;-1:-1:-1;3546:49:91;3653:48;;3693:1;3686:8;;;;;;3653:48;-1:-1:-1;;;;;3790:20:91;;3706:25;3790:20;;;:11;:20;;;;;;3740:71;;3778:10;;3790:20;;3740:37;:71::i;:::-;3706:105;-1:-1:-1;3824:40:91;:14;3706:105;3824:21;:40::i;:::-;3817:47;;;;;3457:412;;;;:::o;11163:74::-;11227:5;;;;;-1:-1:-1;;;;;11227:5:91;;11163:74::o;11322:138::-;11389:25;11429:26;:24;:26::i;9644:274::-;9722:7;9737;9752;9767:6;9788:15;9806:14;;9788:32;;9834:19;:17;:19::i;:::-;9855:25;9872:7;9855:16;:25::i;:::-;9891:21;;9826:87;;;;-1:-1:-1;9882:7:91;;-1:-1:-1;9891:21:91;;;-1:-1:-1;9644:274:91;-1:-1:-1;9644:274:91:o;2947:125::-;-1:-1:-1;;;;;3050:17:91;3029:6;3050:17;;;:11;:17;;;;;;;;;2947:125::o;2722:113::-;2816:14;;2722:113;:::o;1306:88:90:-;1382:7;1375:14;;;;;;;;;;;;;-1:-1:-1;;1375:14:90;;;;;;;;;;;;;;;;;;;;;;;;;;1354:13;;1375:14;;1382:7;;1375:14;;;1382:7;1375:14;;;;;;;;;;;;;;;;;;;;;;;;6403:2285:91;971:17:95;:15;:17::i;:::-;-1:-1:-1;;;;;947:42:95;:12;:10;:12::i;:::-;991:37;;;;;;;;;;;;-1:-1:-1;;;991:37:95;;;;;-1:-1:-1;;;;;947:42:95;;;;;939:90;;;;-1:-1:-1;;;939:90:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6490:22:91::1;6514:23:::0;6541:31:::1;6567:4;6541:25;:31::i;:::-;6487:85;;;;;6579:22;6604:13;:11;:13::i;:::-;-1:-1:-1::0;;;;;6710:22:91;::::1;6623:24;6710:22:::0;;;:16:::1;:22;::::0;;;;;6579:38;;-1:-1:-1;6623:24:91;;;7046;;::::1;7042:745;;7097:1;7080:14;:18:::0;;;7106:12:::1;:16:::0;7042:745:::1;;;7171:26;:14:::0;7190:6;7171:18:::1;:26::i;:::-;7156:12;:41;;;7143:54;;7205:17;7225:48;7247:25;:14;:23;:25::i;:::-;7225:14;::::0;;:21:::1;:48::i;:::-;7205:68;;7281:18;7302:40;7324:17;:6;:15;:17::i;:::-;7302:14:::0;;:21:::1;:40::i;:::-;7281:61;;7583:9;7569:10;:23;7565:216;;7655:1;7640:12;:16;;;7623:14;:33;;;7604:52;;7565:216;;;7717:55;7750:21;:10;:19;:21::i;:::-;7717:25;:9:::0;7731:10;7717:13:::1;:25::i;:::-;:32:::0;::::1;:55::i;:::-;7700:14;:72;;;7681:91;;7565:216;7042:745;;;7807:14;7797:6;:24;7793:197;;;-1:-1:-1::0;;;;;7831:22:91;::::1;7856:1;7831:22:::0;;;:16:::1;:22;::::0;;;;;;;:26;;;7865:11:::1;:17:::0;;;;;:21;;-1:-1:-1;;7865:21:91::1;::::0;;7793:197:::1;;;-1:-1:-1::0;;;;;7940:17:91;::::1;;::::0;;;:11:::1;:17;::::0;;;;:43;;-1:-1:-1;;7940:43:91::1;-1:-1:-1::0;7967:15:91::1;7940:43;;::::0;;7793:197:::1;8026:21;:47:::0;;-1:-1:-1;;8026:47:91::1;8057:15;8026:47;;;::::0;;8084:24;;::::1;8080:558;;;8118:20;8141:27;:15:::0;8161:6;8141:19:::1;:27::i;:::-;8118:50;;8176:41;8182:4;8188:12;8202:14;8176:5;:41::i;:::-;8230:181;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8230:181:91;::::1;::::0;;;::::1;::::0;;;;;;;::::1;8080:558;;;;8432:20;8455:27;:6:::0;8466:15;8455:10:::1;:27::i;:::-;8432:50;;8490:41;8496:4;8502:12;8516:14;8490:5;:41::i;:::-;8544:87;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8544:87:91;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;8544:87:91;;::::1;8080:558;;8649:34;::::0;;;;;;;8672:1:::1;::::0;-1:-1:-1;;;;;8649:34:91;::::1;::::0;::::1;::::0;;;;::::1;::::0;;::::1;1035:1:95;;;;;;6403:2285:91::0;;:::o;10970:100::-;11049:16;;-1:-1:-1;;;;;11049:16:91;;10970:100::o;4589:1641::-;4730:4;971:17:95;:15;:17::i;:::-;-1:-1:-1;;;;;947:42:95;:12;:10;:12::i;:::-;991:37;;;;;;;;;;;;-1:-1:-1;;;991:37:95;;;;;-1:-1:-1;;;;;947:42:95;;;;;939:90;;;;-1:-1:-1;;;939:90:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;939:90:95;;;;;;;;;;;;;;;;;;4742:25:91::1;;:::i;:::-;-1:-1:-1::0;;;;;4778:18:91;;::::1;::::0;;::::1;;4774:89;;4806:50;4831:10;4843:4;4849:6;4806:24;:50::i;:::-;4872:22;4896:23:::0;4923:37:::1;4949:10;4923:25;:37::i;:::-;4869:91;;;;;4989:13;:11;:13::i;:::-;4967:35:::0;;;5036:14:::1;::::0;5008:25:::1;::::0;::::1;:42:::0;5089:31:::1;::::0;5113:6;5089:23:::1;:31::i;:::-;5074:12;:46:::0;;;5056:15:::1;::::0;::::1;:64:::0;5146:17:::1;:6:::0;:15:::1;:17::i;:::-;5127:16;::::0;::::1;:36:::0;5191:164:::1;5317:37;:26;:14:::0;5336:6;5317:18:::1;:26::i;:::-;:35;:37::i;:::-;5272:16;::::0;::::1;::::0;5191:111:::1;::::0;5272:29:::1;::::0;5296:4;5272:23:::1;:29::i;:::-;5191:69;5234:25;:14;:23;:25::i;:::-;-1:-1:-1::0;;;;;5191:28:91;::::1;;::::0;;;:16:::1;:28;::::0;;;;;;:42:::1;:69::i;:::-;:80:::0;::::1;:111::i;:164::-;5170:18;::::0;::::1;:185:::0;;;5411:31:::1;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;5411:31:91;::::1;::::0;;5392:17:::1;-1:-1:-1::0;5370:39:91::1;5362:81;;;::::0;-1:-1:-1;;;5362:81:91;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;::::1;::::0;;;;-1:-1:-1;5362:81:91;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;-1:-1:-1::0;5480:18:91::1;::::0;::::1;::::0;-1:-1:-1;;;;;5449:28:91;::::1;;::::0;;;:16:::1;:28;::::0;;;;;;;:49;;;;5560:11:::1;:23:::0;;;;;:49;;::::1;5593:15;5560:49;-1:-1:-1::0;;5560:49:91;;::::1;::::0;::::1;::::0;;;5536:21:::1;:73:::0;;;;::::1;::::0;;::::1;::::0;;5846:15;::::1;::::0;5711:162:::1;::::0;5846:26:::1;::::0;:24:::1;:26::i;:::-;5711:120;5801:29;5813:4;:16;;;5801:4;:11;;:29;;;;:::i;:::-;5711:78;5758:30;:4;:19;;;:28;:30::i;:::-;5711:32;::::0;::::1;::::0;;:46:::1;:78::i;:162::-;5694:14;:179:::0;;;5666:25:::1;::::0;::::1;:207:::0;5880:67:::1;5886:10:::0;5898:27:::1;:6:::0;5909:15;5898:10:::1;:27::i;:::-;5927:19:::0;;5880:5:::1;:67::i;:::-;5959:40;::::0;;;;;;;-1:-1:-1;;;;;5959:40:91;::::1;::::0;5976:1:::1;::::0;5959:40:::1;::::0;;;;::::1;::::0;;::::1;6112:18;::::0;;::::1;::::0;6138:25:::1;::::0;;::::1;::::0;6171:15:::1;::::0;;::::1;::::0;6011:181:::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6011:181:91;;;;;;;;-1:-1:-1;;;;;6011:181:91;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;::::1;-1:-1:-1::0;6206:19:91;;4589:1641;-1:-1:-1;;;;;;4589:1641:91:o;776:49::-;822:3;776:49;:::o;1403:240:95:-;1534:6;1489:17;:31;1507:12;:10;:12::i;:::-;-1:-1:-1;;;;;1489:31:95;;;;;;;;;;;;;;;;;-1:-1:-1;1489:31:95;;;:42;;;;;;;;;;;;:51;;;;1576:12;:10;:12::i;:::-;-1:-1:-1;;;;;1551:87:95;;1601:28;:26;:28::i;:::-;1551:87;;;-1:-1:-1;;;;;1551:87:95;;;;;;;;;;;;;;;;;;;;;1403:240;;:::o;1662:686:91:-;1162:16:74;1181:13;:11;:13::i;:::-;1215:12;;1162:32;;-1:-1:-1;1215:12:74;;;:31;;;1231:15;:13;:15::i;:::-;1215:69;;;;1261:23;;1250:8;:34;1215:69;1200:146;;;;-1:-1:-1;;;1200:146:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1376:12;;;;1375:13;1394:96;;;;1422:12;:19;;-1:-1:-1;;1422:19:74;1437:4;1422:19;;;1449:23;:34;;;1394:96;1948:23:91::1;1957:13;1948:8;:23::i;:::-;1977:27;1988:15;1977:10;:27::i;:::-;2010:31;2023:17;2010:12;:31::i;:::-;2048:5;:12:::0;;-1:-1:-1;;;;;;2048:12:91::1;-1:-1:-1::0;;;;;;2048:12:91;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;2066:16:::1;:34:::0;;-1:-1:-1;;;;;;2066:34:91;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;2106:21:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;2162:181;;;;;::::1;::::0;::::1;;::::0;;::::1;::::0;;;;-1:-1:-1;2162:181:91;;;;;;;;;;;;;;;;;2066:34;;2162:181:::1;::::0;2106:44;;2162:181;;;;2308:15;;2331:6;;;;2162:181;;;;;;;;;;;;;;;::::1;::::0;;;;-1:-1:-1;2162:181:91::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;2162:181:91;;::::1;::::0;;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;::::1;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;2162:181:91;;::::1;::::0;;;;;::::1;;::::0;;;;;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;2162:181:91::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;2162:181:91;;-1:-1:-1;;;;;;;;;;2162:181:91::1;1508:14:74::0;1504:55;;;1532:12;:20;;-1:-1:-1;;1532:20:74;;;1504:55;1662:686:91;;;;;;;;;;:::o;10732:130::-;10814:7;10836:21;10852:4;10836:15;:21::i;10429:114::-;10517:21;;;;10429:114;:::o;3213:130::-;-1:-1:-1;;;;;3316:22:91;3294:7;3316:22;;;:16;:22;;;;;;;3213:130::o;10002:176::-;10110:14;;10068:7;;;;10138:25;10110:14;10138:16;:25::i;:::-;10130:43;-1:-1:-1;10165:7:91;-1:-1:-1;10002:176:91;;:::o;12254:359::-;12328:7;12343:23;12369:19;:17;:19::i;:::-;12343:45;-1:-1:-1;12399:20:91;12395:49;;12436:1;12429:8;;;;;12395:49;12531:21;;12450:25;;12484:69;;12522:7;;12531:21;;12484:37;:69::i;:::-;12450:103;-1:-1:-1;12567:41:91;:15;12450:103;12567:22;:41::i;:::-;12560:48;12254:359;-1:-1:-1;;;;12254:359:91:o;1749:119:90:-;-1:-1:-1;;;;;1845:18:90;1823:7;1845:18;;;;;;;;;;;;1749:119::o;2856:214:83:-;2970:7;2994:71;3022:4;3028:19;3049:15;2994:27;:71::i;:::-;2987:78;2856:214;-1:-1:-1;;;2856:214:83:o;2008:253:86:-;2069:7;2088:6;;;:16;;-1:-1:-1;2098:6:86;;2088:16;2084:45;;;-1:-1:-1;2121:1:86;2114:8;;2084:45;2180:1;-1:-1:-1;;2180:1:86;2148:33;;;;2183:35;;;;;;;;;;;;-1:-1:-1;;;2183:35:86;;;;;2148:33;;2143:38;;;2135:84;;;;-1:-1:-1;;;2135:84:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2135:84:86;;;;;;;;;;;;;;;;;-1:-1:-1;;432:4:86;2234:5;;476:7;2234:15;2233:23;;2008:253::o;11543:134:91:-;11651:21;;-1:-1:-1;;;;;11651:21:91;;11543:134::o;1594:100:90:-;1677:12;;1594:100;:::o;587:98:7:-;670:10;587:98;:::o;8963:553:91:-;9054:7;9069;9084;9106:32;9141:21;9157:4;9141:15;:21::i;:::-;9106:56;-1:-1:-1;9173:29:91;9169:66;;9220:1;9223;9226;9212:16;;;;;;;;;9169:66;9312:23;9338:45;9358:24;9338:15;9348:4;9338:9;:15::i;:::-;:19;;:45::i;:::-;9312:71;-1:-1:-1;9405:24:91;9437:45;9405:24;9312:71;9437:28;:45::i;:::-;9390:121;;-1:-1:-1;9390:121:91;-1:-1:-1;9490:15:91;-1:-1:-1;;8963:553:91;;;;;;:::o;1257:128:13:-;1315:7;1337:43;1341:1;1344;1337:43;;;;;;;;;;;;;;;;;:3;:43::i;3173:204:86:-;3317:35;;;;;;;;;;;;-1:-1:-1;;;3317:35:86;;;;3225:7;;530:3;3257:17;;;;3317:35;3288:22;;:27;;3280:73;;;;-1:-1:-1;;;3280:73:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3280:73:86;;;;;;;;;;;;;;;;;-1:-1:-1;3366:6:86;3173:204;-1:-1:-1;;3173:204:86:o;2416:279::-;2508:28;;;;;;;;;;;;-1:-1:-1;;;2508:28:86;;;;-1:-1:-1;;2500:6:86;2492:45;;;;-1:-1:-1;;;2492:45:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2492:45:86;;;;;;;;;;;;;;;;;-1:-1:-1;2619:35:86;;;;;;;;;2563:1;2619:35;;;-1:-1:-1;;;2619:35:86;;;;2559:5;;;432:4;2585:25;;2584:33;2579:38;;;2571:84;;;;-1:-1:-1;;;2571:84:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2571:84:86;;;;;;;;;;;;;;;;;;2689:1;2680:5;432:4;2670:1;:7;:15;2669:21;;;;;;;2416:279;-1:-1:-1;;;;2416:279:86:o;12846:359:91:-;-1:-1:-1;;;;;12977:18:91;;12949:25;12977:18;;;;;;;;;;;13022:29;12977:18;13044:6;13022:21;:29::i;:::-;-1:-1:-1;;;;;13001:18:91;;;:9;:18;;;;;;;;;;;;:50;;;;13070:21;;;13062:44;13058:143;;13116:21;;;:78;;-1:-1:-1;;;13116:78:91;;-1:-1:-1;;;;;13116:78:91;;;;;;;;;;;;;;;;;;;;;:21;;;;;:34;;:78;;;;;-1:-1:-1;;13116:78:91;;;;;;;;-1:-1:-1;13116:21:91;:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13058:143;12846:359;;;;:::o;13433:392::-;-1:-1:-1;;;;;13564:18:91;;13536:25;13564:18;;;;;;;;;;;;;13639:31;;;;;;;;;;;-1:-1:-1;;;13639:31:91;;;;;;;13564:18;13609:62;;13564:18;;13631:6;;13609:21;:62::i;3320:403:95:-;3520:34;;;;;;;;;;;-1:-1:-1;;;3520:34:95;;;;;;;;-1:-1:-1;;;;;3468:28:95;;;-1:-1:-1;3468:28:95;;;:17;:28;;;;;:39;;;;;;;;;;;:87;;3512:6;;3468:43;:87::i;:::-;-1:-1:-1;;;;;3562:28:95;;;;;;;:17;:28;;;;;;;;:39;;;;;;;;;;;;:54;;;;;-1:-1:-1;3562:39:95;3628:90;3675:28;:26;:28::i;:::-;3628:90;;;-1:-1:-1;;;;;3628:90:95;;;;;;;;;;;;;;;;;;;;;3320:403;;;;:::o;851:162:13:-;909:7;936:5;;;955:6;;;;947:46;;;;;-1:-1:-1;;;947:46:13;;;;;;;;;;;;;;;;;;;;;;;;;;;2485:109:91;822:3;2485:109;:::o;1858:510:74:-;2328:9;2316:22;2356:7;1858:510;:::o;7574:76:90:-;7630:15;;;;:5;;:15;;;;;:::i;:::-;;7574:76;:::o;7654:84::-;7714:19;;;;:7;;:19;;;;;:::i;7742:84::-;7798:9;:23;;-1:-1:-1;;7798:23:90;;;;;;;;;;;;7742:84::o;1738:833:83:-;1882:7;;1942:50;:16;1963:28;;;1942:20;:50::i;:::-;1928:64;-1:-1:-1;2003:8:83;1999:52;;2028:16;:14;:16::i;:::-;2021:23;;;;;1999:52;-1:-1:-1;;2079:7:83;;-1:-1:-1;2121:1:83;2115:7;;:21;;2135:1;2115:21;;;2131:1;2125:3;:7;2115:21;2093:43;-1:-1:-1;353:8:83;2167:23;;2143:21;2220:35;2167:23;;2220:20;:35::i;:::-;2197:58;-1:-1:-1;2261:22:83;2286:34;2197:58;2306:13;2286:19;:34::i;:::-;2261:59;-1:-1:-1;2327:18:83;2389:1;2348:38;2373:12;2348:20;:3;2356:11;2348:7;:20::i;:::-;:24;;:38::i;:::-;:42;;;;;;;-1:-1:-1;2396:17:83;2476:1;2416:57;2458:14;2416:37;2441:11;2416:37;:3;2424:11;2416:7;:20::i;:57::-;:61;;;;;;;-1:-1:-1;2491:75:83;2416:61;2491:60;2540:10;2491:60;2512:22;:13;2530:3;2512:17;:22::i;:::-;2491:16;:14;:16::i;:75::-;2484:82;1738:833;-1:-1:-1;;;;;;;;;;;;1738:833:83:o;1649:189:13:-;1751:7;1782:12;1774:6;;;;1766:29;;;;-1:-1:-1;;;1766:29:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1766:29:13;;;;;;;;;;;;;;;;;-1:-1:-1;;;1813:5:13;;;1649:189::o;578:68:86:-;432:4;578:68;:::o;2058:419:13:-;2116:7;2341:6;2337:35;;-1:-1:-1;2364:1:13;2357:8;;2337:35;2390:5;;;2394:1;2390;:5;:1;2409:5;;;;;:10;2401:56;;;;-1:-1:-1;;;2401:56:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;"
            },
            "methodIdentifiers": {
              "DEBT_TOKEN_REVISION()": "b9a7b622",
              "POOL()": "7535d246",
              "UNDERLYING_ASSET_ADDRESS()": "b16a19de",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "approveDelegation(address,uint256)": "c04a8a10",
              "balanceOf(address)": "70a08231",
              "borrowAllowance(address,address)": "6bd76d24",
              "burn(address,uint256)": "9dc29fac",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "getAverageStableRate()": "90f6fcf2",
              "getIncentivesController()": "75d26413",
              "getSupplyData()": "79774338",
              "getTotalSupplyAndAvgRate()": "f731e9be",
              "getTotalSupplyLastUpdated()": "e7484890",
              "getUserLastUpdated(address)": "79ce6b8c",
              "getUserStableRate(address)": "e78c9b3b",
              "increaseAllowance(address,uint256)": "39509351",
              "initialize(address,address,address,uint8,string,string,bytes)": "c222ec8a",
              "mint(address,address,uint256,uint256)": "b3f1c93d",
              "name()": "06fdde03",
              "principalBalanceOf(address)": "c634dfaa",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "contracts/protocol/tokenization/StaticAToken.sol": {
        "StaticAToken": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "lendingPool",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "aToken",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "wrappedTokenName",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "wrappedTokenSymbol",
                  "type": "string"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "ASSET",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "ATOKEN",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "EIP712_REVISION",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LENDING_POOL",
              "outputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "METADEPOSIT_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "METAWITHDRAWAL_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PERMIT_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "_nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "subtractedValue",
                  "type": "uint256"
                }
              ],
              "name": "decreaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint16",
                  "name": "referralCode",
                  "type": "uint16"
                },
                {
                  "internalType": "bool",
                  "name": "fromUnderlying",
                  "type": "bool"
                }
              ],
              "name": "deposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "dynamicBalanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "dynamicToStaticAmount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "chainId",
                  "type": "uint256"
                }
              ],
              "name": "getDomainSeparator",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "addedValue",
                  "type": "uint256"
                }
              ],
              "name": "increaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "depositor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint16",
                  "name": "referralCode",
                  "type": "uint16"
                },
                {
                  "internalType": "bool",
                  "name": "fromUnderlying",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "components": [
                    {
                      "internalType": "uint8",
                      "name": "v",
                      "type": "uint8"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "r",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "s",
                      "type": "bytes32"
                    }
                  ],
                  "internalType": "struct StaticAToken.SignatureParams",
                  "name": "sigParams",
                  "type": "tuple"
                },
                {
                  "internalType": "uint256",
                  "name": "chainId",
                  "type": "uint256"
                }
              ],
              "name": "metaDeposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "staticAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "dynamicAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "toUnderlying",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "components": [
                    {
                      "internalType": "uint8",
                      "name": "v",
                      "type": "uint8"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "r",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "s",
                      "type": "bytes32"
                    }
                  ],
                  "internalType": "struct StaticAToken.SignatureParams",
                  "name": "sigParams",
                  "type": "tuple"
                },
                {
                  "internalType": "uint256",
                  "name": "chainId",
                  "type": "uint256"
                }
              ],
              "name": "metaWithdraw",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "chainId",
                  "type": "uint256"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "rate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "staticToDynamicAmount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "toUnderlying",
                  "type": "bool"
                }
              ],
              "name": "withdraw",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "toUnderlying",
                  "type": "bool"
                }
              ],
              "name": "withdrawDynamicAmount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60e06040523480156200001157600080fd5b506040516200279e3803806200279e833981016040819052620000349162000341565b8151829082906200004d906003906020850190620001b6565b50805162000063906004906020840190620001b6565b50506005805460ff19166012179055506001600160601b0319606085811b821660805284901b1660a052604080516358b50cef60e11b815290516000916001600160a01b0386169163b16a19de91600480820192602092909190829003018186803b158015620000d257600080fd5b505afa158015620000e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200010d9190620002f9565b6001600160601b0319606082901b1660c05260405163095ea7b360e01b81529091506001600160a01b0382169063095ea7b3906200015490889060001990600401620003d3565b602060405180830381600087803b1580156200016f57600080fd5b505af115801562000184573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001aa91906200031f565b50505050505062000405565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001f957805160ff191683800117855562000229565b8280016001018555821562000229579182015b82811115620002295782518255916020019190600101906200020c565b50620002379291506200023b565b5090565b5b808211156200023757600081556001016200023c565b600082601f83011262000263578081fd5b81516001600160401b03808211156200027a578283fd5b6040516020601f8401601f19168201810183811183821017156200029c578586fd5b80604052508194508382528681858801011115620002b957600080fd5b600092505b83831015620002dd5785830181015182840182015291820191620002be565b83831115620002ef5760008185840101525b5050505092915050565b6000602082840312156200030b578081fd5b81516200031881620003ec565b9392505050565b60006020828403121562000331578081fd5b8151801515811462000318578182fd5b6000806000806080858703121562000357578283fd5b84516200036481620003ec565b60208601519094506200037781620003ec565b60408601519093506001600160401b038082111562000394578384fd5b620003a28883890162000252565b93506060870151915080821115620003b8578283fd5b50620003c78782880162000252565b91505092959194509250565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03811681146200040257600080fd5b50565b60805160601c60a05160601c60c05160601c612336620004686000398061059452806106c852806111d652806112d852806113445250806106ec528061126752806113b65250806105675280610e2e52806111a9528061131752506123366000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806369af0ddb1161010457806395d89b41116100a2578063b9844d8d11610071578063b9844d8d146103a3578063dd62ed3e146103b6578063ead5d359146103c9578063f57d0b40146103dc576101da565b806395d89b411461036d578063a457c2d714610375578063a9059cbb14610388578063b4dcfc771461039b576101da565b806381abdab3116100de57806381abdab31461032a5780638a127bfd1461033d5780638a3b3d6f146103525780638d94841514610365576101da565b806369af0ddb146102fc57806370a082311461030f5780637816037614610322576101da565b806330adf81f1161017c57806344b68c3f1161014b57806344b68c3f146102c45780634800d97f146102d757806351c0e061146102ec57806363210537146102f4576101da565b806330adf81f14610281578063313ce5671461028957806336a5a6d61461029e57806339509351146102b1576101da565b806323b872dd116101b857806323b872dd14610232578063288587ce146102455780632c4e722e146102665780632f2cab871461026e576101da565b806306fdde03146101df578063095ea7b3146101fd57806318160ddd1461021d575b600080fd5b6101e76103ef565b6040516101f49190611e6c565b60405180910390f35b61021061020b366004611b21565b610485565b6040516101f49190611d4e565b6102256104a3565b6040516101f49190611d59565b610210610240366004611987565b6104a9565b610258610253366004611b4b565b610530565b6040516101f49291906121fd565b61022561054d565b61022561027c366004611b8c565b610611565b610225610629565b61029161064d565b6040516101f4919061220b565b6102256102ac366004611bff565b610656565b6102106102bf366004611b21565b61066a565b6102256102d2366004611938565b6106b8565b6102df6106c6565b6040516101f49190611cad565b6102df6106ea565b61022561070e565b61025861030a366004611a56565b610732565b61022561031d366004611938565b6108ff565b6101e761091a565b6102256103383660046119c7565b610937565b61035061034b366004611aab565b610af6565b005b610225610360366004611bff565b610c93565b610225610d2b565b6101e7610d4f565b610210610383366004611b21565b610db0565b610210610396366004611b21565b610e18565b6102df610e2c565b6102256103b1366004611938565b610e50565b6102256103c4366004611953565b610e62565b6102586103d7366004611b4b565b610e8d565b6102256103ea366004611bff565b610e9e565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561047b5780601f106104505761010080835404028352916020019161047b565b820191906000526020600020905b81548152906001019060200180831161045e57829003601f168201915b5050505050905090565b6000610499610492610eb2565b8484610eb6565b5060015b92915050565b60025490565b60006104b6848484610f6a565b610526846104c2610eb2565b610521856040518060600160405280602881526020016122b4602891396001600160a01b038a16600090815260016020526040812090610500610eb2565b6001600160a01b03168152602081019190915260400160002054919061107f565b610eb6565b5060019392505050565b6000806105413386600087876110ab565b91509150935093915050565b60405163d15e005360e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d15e0053906105bc907f000000000000000000000000000000000000000000000000000000000000000090600401611cad565b60206040518083038186803b1580156105d457600080fd5b505afa1580156105e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060c9190611c17565b905090565b6000610620338686868661129d565b95945050505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055460ff1690565b600061049d61066361054d565b83906113ff565b6000610499610677610eb2565b846105218560016000610688610eb2565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906114aa565b600061049d6103ea836108ff565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f4dab0a5e832f103ac80c9c3e51e5742f8a24aa0a3d941fe91c64e1e3db50c74381565b6000806001600160a01b038a166107645760405162461bcd60e51b815260040161075b90611f70565b60405180910390fd5b844211156107845760405162461bcd60e51b815260040161075b90612028565b6001600160a01b038a16600090815260066020526040812054906107a785610c93565b7f10ab8743506cfd76acaa406d0788f01934bd03f14eadabf392640e43b01f976c8d8d8d8d8d888e6040516020016107e6989796959493929190611daa565b6040516020818303038152906040528051906020012060405160200161080d929190611c92565b60408051601f1981840301815291905280516020918201209150600190829061083890890189611c2f565b886020013589604001356040516000815260200160405260405161085f9493929190611e4e565b6020604051602081039080840390855afa158015610881573d6000803e3d6000fd5b505050602060405103516001600160a01b03168c6001600160a01b0316146108bb5760405162461bcd60e51b815260040161075b90611f9b565b6108c68260016114aa565b6001600160a01b038d166000908152600660205260409020556108ec8c8c8c8c8c6110ab565b9350935050509850989650505050505050565b6001600160a01b031660009081526020819052604090205490565b604051806040016040528060018152602001603160f81b81525081565b60006001600160a01b03891661095f5760405162461bcd60e51b815260040161075b90611f70565b8342111561097f5760405162461bcd60e51b815260040161075b90612028565b6001600160a01b038916600090815260066020526040812054906109a284610c93565b7f4dab0a5e832f103ac80c9c3e51e5742f8a24aa0a3d941fe91c64e1e3db50c7438c8c8c8c8c888d6040516020016109e1989796959493929190611d62565b60405160208183030381529060405280519060200120604051602001610a08929190611c92565b60408051601f19818403018152919052805160209182012091506001908290610a3390880188611c2f565b8760200135886040013560405160008152602001604052604051610a5a9493929190611e4e565b6020604051602081039080840390855afa158015610a7c573d6000803e3d6000fd5b505050602060405103516001600160a01b03168b6001600160a01b031614610ab65760405162461bcd60e51b815260040161075b90611f9b565b610ac18260016114aa565b6001600160a01b038c16600090815260066020526040902055610ae78b8b8b8b8b61129d565b50505098975050505050505050565b6001600160a01b038816610b1c5760405162461bcd60e51b815260040161075b90612054565b84421115610b3c5760405162461bcd60e51b815260040161075b90612028565b6001600160a01b03881660009081526006602052604081205490610b5f83610c93565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98b8b8b868c604051602001610b9a96959493929190611dee565b60405160208183030381529060405280519060200120604051602001610bc1929190611c92565b60405160208183030381529060405280519060200120905060018187878760405160008152602001604052604051610bfc9493929190611e4e565b6020604051602081039080840390855afa158015610c1e573d6000803e3d6000fd5b505050602060405103516001600160a01b03168a6001600160a01b031614610c585760405162461bcd60e51b815260040161075b90611f9b565b610c638260016114aa565b6001600160a01b038b16600090815260066020526040902055610c878a8a8a610eb6565b50505050505050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610cbe6103ef565b805160209182012060408051808201825260018152603160f81b9084015251610d0e93927fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6918791309101611e22565b604051602081830303815290604052805190602001209050919050565b7f10ab8743506cfd76acaa406d0788f01934bd03f14eadabf392640e43b01f976c81565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561047b5780601f106104505761010080835404028352916020019161047b565b6000610499610dbd610eb2565b84610521856040518060600160405280602581526020016122dc6025913960016000610de7610eb2565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061107f565b6000610499610e25610eb2565b8484610f6a565b7f000000000000000000000000000000000000000000000000000000000000000081565b60066020526000908152604090205481565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6000806105413386866000876110ab565b600061049d610eab61054d565b83906114d6565b3390565b6001600160a01b038316610edc5760405162461bcd60e51b815260040161075b90612101565b6001600160a01b038216610f025760405162461bcd60e51b815260040161075b90611ec2565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610f5d908590611d59565b60405180910390a3505050565b6001600160a01b038316610f905760405162461bcd60e51b815260040161075b906120bc565b6001600160a01b038216610fb65760405162461bcd60e51b815260040161075b90611e7f565b610fc1838383611566565b610ffe8160405180606001604052806026815260200161228e602691396001600160a01b038616600090815260208190526040902054919061107f565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461102d90826114aa565b6001600160a01b0380841660008181526020819052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f5d908590611d59565b600081848411156110a35760405162461bcd60e51b815260040161075b9190611e6c565b505050900390565b6000806001600160a01b0386166110d45760405162461bcd60e51b815260040161075b90611fc6565b8415806110df575083155b6110fb5760405162461bcd60e51b815260040161075b90611ff1565b6000611106886108ff565b9050600080600061111561054d565b905088156111555783891161112a578861112c565b835b91508389116111445761113f898261156b565b61114e565b61114e848261156b565b9250611182565b6000611161858361156b565b90508089116111705788611172565b805b935061117e8483611577565b9250505b61118c8b83611583565b861561125a57604051631a4ca37b60e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906369328dec90611202907f00000000000000000000000000000000000000000000000000000000000000009087908f90600401611cfe565b602060405180830381600087803b15801561121c57600080fd5b505af1158015611230573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112549190611c17565b5061128e565b61128e6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168b85611665565b50999098509650505050505050565b60006001600160a01b0385166112c55760405162461bcd60e51b815260040161075b90611fc6565b81156113a9576113006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168730876116bb565b60405163e8eda9df60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e8eda9df90611372907f000000000000000000000000000000000000000000000000000000000000000090889030908990600401611d21565b600060405180830381600087803b15801561138c57600080fd5b505af11580156113a0573d6000803e3d6000fd5b505050506113de565b6113de6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168730876116bb565b60006113e985610656565b90506113f586826116e2565b9695505050505050565b604080518082019091526002815261035360f41b6020820152600090826114395760405162461bcd60e51b815260040161075b9190611e6c565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156114875760405162461bcd60e51b815260040161075b9190611e6c565b5082816b033b2e3c9fd0803ce8000000860201816114a157fe5b04949350505050565b6000828201838110156114cf5760405162461bcd60e51b815260040161075b90611f04565b9392505050565b60008215806114e3575081155b156114f05750600061049d565b816b019d971e4fe8401e74000000198161150657fe5b0483111560405180604001604052806002815260200161068760f31b815250906115435760405162461bcd60e51b815260040161075b9190611e6c565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b505050565b60006114cf83836114d6565b60006114cf83836113ff565b6001600160a01b0382166115a95760405162461bcd60e51b815260040161075b9061207b565b6115b582600083611566565b6115f28160405180606001604052806022815260200161226c602291396001600160a01b038516600090815260208190526040902054919061107f565b6001600160a01b0383166000908152602081905260409020556002546116189082611796565b6002556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611659908590611d59565b60405180910390a35050565b6115668363a9059cbb60e01b8484604051602401611684929190611ce5565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526117d8565b6116dc846323b872dd60e01b85858560405160240161168493929190611cc1565b50505050565b6001600160a01b0382166117085760405162461bcd60e51b815260040161075b906121c6565b61171460008383611566565b60025461172190826114aa565b6002556001600160a01b03821660009081526020819052604090205461174790826114aa565b6001600160a01b0383166000818152602081905260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611659908590611d59565b60006114cf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061107f565b6117ea826001600160a01b03166118bd565b6118065760405162461bcd60e51b815260040161075b9061218f565b60006060836001600160a01b0316836040516118229190611c76565b6000604051808303816000865af19150503d806000811461185f576040519150601f19603f3d011682016040523d82523d6000602084013e611864565b606091505b5091509150816118865760405162461bcd60e51b815260040161075b90611f3b565b8051156116dc57808060200190518101906118a19190611be3565b6116dc5760405162461bcd60e51b815260040161075b90612145565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906118f157508115155b949350505050565b80356001600160a01b038116811461049d57600080fd5b600060608284031215611921578081fd5b50919050565b803560ff8116811461049d57600080fd5b600060208284031215611949578081fd5b6114cf83836118f9565b60008060408385031215611965578081fd5b61196f84846118f9565b915061197e84602085016118f9565b90509250929050565b60008060006060848603121561199b578081fd5b83356119a681612245565b925060208401356119b681612245565b929592945050506040919091013590565b600080600080600080600080610140898b0312156119e3578384fd5b6119ed8a8a6118f9565b97506119fc8a60208b016118f9565b965060408901359550606089013561ffff81168114611a19578485fd5b94506080890135611a298161225d565b935060a08901359250611a3f8a60c08b01611910565b915061012089013590509295985092959890939650565b600080600080600080600080610140898b031215611a72578384fd5b8835611a7d81612245565b97506020890135611a8d81612245565b965060408901359550606089013594506080890135611a298161225d565b600080600080600080600080610100898b031215611ac7578384fd5b8835611ad281612245565b97506020890135611ae281612245565b96506040890135955060608901359450611aff8a60808b01611927565b979a969950949793969560a0850135955060c08501359460e001359350915050565b60008060408385031215611b33578182fd5b611b3d84846118f9565b946020939093013593505050565b600080600060608486031215611b5f578283fd5b8335611b6a81612245565b9250602084013591506040840135611b818161225d565b809150509250925092565b60008060008060808587031215611ba1578182fd5b611bab86866118f9565b935060208501359250604085013561ffff81168114611bc8578283fd5b91506060850135611bd88161225d565b939692955090935050565b600060208284031215611bf4578081fd5b81516114cf8161225d565b600060208284031215611c10578081fd5b5035919050565b600060208284031215611c28578081fd5b5051919050565b600060208284031215611c40578081fd5b6114cf8383611927565b60008151808452611c62816020860160208601612219565b601f01601f19169290920160200192915050565b60008251611c88818460208701612219565b9190910192915050565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6001600160a01b03948516815260208101939093529216604082015261ffff909116606082015260800190565b901515815260200190565b90815260200190565b9788526001600160a01b039687166020890152949095166040870152606086019290925261ffff166080850152151560a084015260c083019190915260e08201526101000190565b9788526001600160a01b03968716602089015294909516604087015260608601929092526080850152151560a084015260c083019190915260e08201526101000190565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b93845260ff9290921660208401526040830152606082015260800190565b6000602082526114cf6020830184611c4a565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b60208082526011908201527024a72b20a624a22fa222a827a9a4aa27a960791b604082015260600190565b602080825260119082015270494e56414c49445f5349474e415455524560781b604082015260600190565b6020808252601190820152701253959053125117d49150d25412515395607a1b604082015260600190565b6020808252601e908201527f4f4e4c595f4f4e455f414d4f554e545f464f524d41545f414c4c4f5745440000604082015260600190565b60208082526012908201527124a72b20a624a22fa2ac2824a920aa24a7a760711b604082015260600190565b6020808252600d908201526c24a72b20a624a22fa7aba722a960991b604082015260600190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b918252602082015260400190565b60ff91909116815260200190565b60005b8381101561223457818101518382015260200161221c565b838111156116dc5750506000910152565b6001600160a01b038116811461225a57600080fd5b50565b801515811461225a57600080fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122075ccf7f7e7e021f90b9f3d864e0683c68402e6f50096d9fed656d2d740433e0864736f6c634300060c0033",
              "opcodes": "PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x279E CODESIZE SUB DUP1 PUSH3 0x279E DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x341 JUMP JUMPDEST DUP2 MLOAD DUP3 SWAP1 DUP3 SWAP1 PUSH3 0x4D SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x1B6 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x63 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x1B6 JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP6 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP5 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x58B50CEF PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0xB16A19DE SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xE7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x10D SWAP2 SWAP1 PUSH3 0x2F9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP3 SWAP1 SHL AND PUSH1 0xC0 MSTORE PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH3 0x154 SWAP1 DUP9 SWAP1 PUSH1 0x0 NOT SWAP1 PUSH1 0x4 ADD PUSH3 0x3D3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x16F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x184 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x1AA SWAP2 SWAP1 PUSH3 0x31F JUMP JUMPDEST POP POP POP POP POP POP PUSH3 0x405 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x1F9 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x229 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x229 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x229 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x20C JUMP JUMPDEST POP PUSH3 0x237 SWAP3 SWAP2 POP PUSH3 0x23B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x237 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x23C JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x263 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x27A JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 PUSH1 0x1F DUP5 ADD PUSH1 0x1F NOT AND DUP3 ADD DUP2 ADD DUP4 DUP2 GT DUP4 DUP3 LT OR ISZERO PUSH3 0x29C JUMPI DUP6 DUP7 REVERT JUMPDEST DUP1 PUSH1 0x40 MSTORE POP DUP2 SWAP5 POP DUP4 DUP3 MSTORE DUP7 DUP2 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0x2B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP3 POP JUMPDEST DUP4 DUP4 LT ISZERO PUSH3 0x2DD JUMPI DUP6 DUP4 ADD DUP2 ADD MLOAD DUP3 DUP5 ADD DUP3 ADD MSTORE SWAP2 DUP3 ADD SWAP2 PUSH3 0x2BE JUMP JUMPDEST DUP4 DUP4 GT ISZERO PUSH3 0x2EF JUMPI PUSH1 0x0 DUP2 DUP6 DUP5 ADD ADD MSTORE JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x30B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x318 DUP2 PUSH3 0x3EC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x331 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH3 0x318 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x357 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 MLOAD PUSH3 0x364 DUP2 PUSH3 0x3EC JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP PUSH3 0x377 DUP2 PUSH3 0x3EC JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x394 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH3 0x3A2 DUP9 DUP4 DUP10 ADD PUSH3 0x252 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x3B8 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH3 0x3C7 DUP8 DUP3 DUP9 ADD PUSH3 0x252 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x402 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x2336 PUSH3 0x468 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x594 MSTORE DUP1 PUSH2 0x6C8 MSTORE DUP1 PUSH2 0x11D6 MSTORE DUP1 PUSH2 0x12D8 MSTORE DUP1 PUSH2 0x1344 MSTORE POP DUP1 PUSH2 0x6EC MSTORE DUP1 PUSH2 0x1267 MSTORE DUP1 PUSH2 0x13B6 MSTORE POP DUP1 PUSH2 0x567 MSTORE DUP1 PUSH2 0xE2E MSTORE DUP1 PUSH2 0x11A9 MSTORE DUP1 PUSH2 0x1317 MSTORE POP PUSH2 0x2336 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1DA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x69AF0DDB GT PUSH2 0x104 JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xB9844D8D GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xB9844D8D EQ PUSH2 0x3A3 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x3B6 JUMPI DUP1 PUSH4 0xEAD5D359 EQ PUSH2 0x3C9 JUMPI DUP1 PUSH4 0xF57D0B40 EQ PUSH2 0x3DC JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x36D JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x375 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x388 JUMPI DUP1 PUSH4 0xB4DCFC77 EQ PUSH2 0x39B JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x81ABDAB3 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x81ABDAB3 EQ PUSH2 0x32A JUMPI DUP1 PUSH4 0x8A127BFD EQ PUSH2 0x33D JUMPI DUP1 PUSH4 0x8A3B3D6F EQ PUSH2 0x352 JUMPI DUP1 PUSH4 0x8D948415 EQ PUSH2 0x365 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x69AF0DDB EQ PUSH2 0x2FC JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x30F JUMPI DUP1 PUSH4 0x78160376 EQ PUSH2 0x322 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x30ADF81F GT PUSH2 0x17C JUMPI DUP1 PUSH4 0x44B68C3F GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x44B68C3F EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0x4800D97F EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x51C0E061 EQ PUSH2 0x2EC JUMPI DUP1 PUSH4 0x63210537 EQ PUSH2 0x2F4 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x281 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x289 JUMPI DUP1 PUSH4 0x36A5A6D6 EQ PUSH2 0x29E JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2B1 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0x288587CE EQ PUSH2 0x245 JUMPI DUP1 PUSH4 0x2C4E722E EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0x2F2CAB87 EQ PUSH2 0x26E JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1FD JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x21D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E7 PUSH2 0x3EF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F4 SWAP2 SWAP1 PUSH2 0x1E6C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x210 PUSH2 0x20B CALLDATASIZE PUSH1 0x4 PUSH2 0x1B21 JUMP JUMPDEST PUSH2 0x485 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F4 SWAP2 SWAP1 PUSH2 0x1D4E JUMP JUMPDEST PUSH2 0x225 PUSH2 0x4A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F4 SWAP2 SWAP1 PUSH2 0x1D59 JUMP JUMPDEST PUSH2 0x210 PUSH2 0x240 CALLDATASIZE PUSH1 0x4 PUSH2 0x1987 JUMP JUMPDEST PUSH2 0x4A9 JUMP JUMPDEST PUSH2 0x258 PUSH2 0x253 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B4B JUMP JUMPDEST PUSH2 0x530 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F4 SWAP3 SWAP2 SWAP1 PUSH2 0x21FD JUMP JUMPDEST PUSH2 0x225 PUSH2 0x54D JUMP JUMPDEST PUSH2 0x225 PUSH2 0x27C CALLDATASIZE PUSH1 0x4 PUSH2 0x1B8C JUMP JUMPDEST PUSH2 0x611 JUMP JUMPDEST PUSH2 0x225 PUSH2 0x629 JUMP JUMPDEST PUSH2 0x291 PUSH2 0x64D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F4 SWAP2 SWAP1 PUSH2 0x220B JUMP JUMPDEST PUSH2 0x225 PUSH2 0x2AC CALLDATASIZE PUSH1 0x4 PUSH2 0x1BFF JUMP JUMPDEST PUSH2 0x656 JUMP JUMPDEST PUSH2 0x210 PUSH2 0x2BF CALLDATASIZE PUSH1 0x4 PUSH2 0x1B21 JUMP JUMPDEST PUSH2 0x66A JUMP JUMPDEST PUSH2 0x225 PUSH2 0x2D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1938 JUMP JUMPDEST PUSH2 0x6B8 JUMP JUMPDEST PUSH2 0x2DF PUSH2 0x6C6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F4 SWAP2 SWAP1 PUSH2 0x1CAD JUMP JUMPDEST PUSH2 0x2DF PUSH2 0x6EA JUMP JUMPDEST PUSH2 0x225 PUSH2 0x70E JUMP JUMPDEST PUSH2 0x258 PUSH2 0x30A CALLDATASIZE PUSH1 0x4 PUSH2 0x1A56 JUMP JUMPDEST PUSH2 0x732 JUMP JUMPDEST PUSH2 0x225 PUSH2 0x31D CALLDATASIZE PUSH1 0x4 PUSH2 0x1938 JUMP JUMPDEST PUSH2 0x8FF JUMP JUMPDEST PUSH2 0x1E7 PUSH2 0x91A JUMP JUMPDEST PUSH2 0x225 PUSH2 0x338 CALLDATASIZE PUSH1 0x4 PUSH2 0x19C7 JUMP JUMPDEST PUSH2 0x937 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x34B CALLDATASIZE PUSH1 0x4 PUSH2 0x1AAB JUMP JUMPDEST PUSH2 0xAF6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x225 PUSH2 0x360 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BFF JUMP JUMPDEST PUSH2 0xC93 JUMP JUMPDEST PUSH2 0x225 PUSH2 0xD2B JUMP JUMPDEST PUSH2 0x1E7 PUSH2 0xD4F JUMP JUMPDEST PUSH2 0x210 PUSH2 0x383 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B21 JUMP JUMPDEST PUSH2 0xDB0 JUMP JUMPDEST PUSH2 0x210 PUSH2 0x396 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B21 JUMP JUMPDEST PUSH2 0xE18 JUMP JUMPDEST PUSH2 0x2DF PUSH2 0xE2C JUMP JUMPDEST PUSH2 0x225 PUSH2 0x3B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1938 JUMP JUMPDEST PUSH2 0xE50 JUMP JUMPDEST PUSH2 0x225 PUSH2 0x3C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1953 JUMP JUMPDEST PUSH2 0xE62 JUMP JUMPDEST PUSH2 0x258 PUSH2 0x3D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B4B JUMP JUMPDEST PUSH2 0xE8D JUMP JUMPDEST PUSH2 0x225 PUSH2 0x3EA CALLDATASIZE PUSH1 0x4 PUSH2 0x1BFF JUMP JUMPDEST PUSH2 0xE9E JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x47B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x450 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x47B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x45E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x499 PUSH2 0x492 PUSH2 0xEB2 JUMP JUMPDEST DUP5 DUP5 PUSH2 0xEB6 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B6 DUP5 DUP5 DUP5 PUSH2 0xF6A JUMP JUMPDEST PUSH2 0x526 DUP5 PUSH2 0x4C2 PUSH2 0xEB2 JUMP JUMPDEST PUSH2 0x521 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x22B4 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x500 PUSH2 0xEB2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x107F JUMP JUMPDEST PUSH2 0xEB6 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x541 CALLER DUP7 PUSH1 0x0 DUP8 DUP8 PUSH2 0x10AB JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xD15E0053 SWAP1 PUSH2 0x5BC SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x1CAD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x60C SWAP2 SWAP1 PUSH2 0x1C17 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x620 CALLER DUP7 DUP7 DUP7 DUP7 PUSH2 0x129D JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49D PUSH2 0x663 PUSH2 0x54D JUMP JUMPDEST DUP4 SWAP1 PUSH2 0x13FF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x499 PUSH2 0x677 PUSH2 0xEB2 JUMP JUMPDEST DUP5 PUSH2 0x521 DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x688 PUSH2 0xEB2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x14AA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49D PUSH2 0x3EA DUP4 PUSH2 0x8FF JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x4DAB0A5E832F103AC80C9C3E51E5742F8A24AA0A3D941FE91C64E1E3DB50C743 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH2 0x764 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x1F70 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 TIMESTAMP GT ISZERO PUSH2 0x784 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x2028 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH2 0x7A7 DUP6 PUSH2 0xC93 JUMP JUMPDEST PUSH32 0x10AB8743506CFD76ACAA406D0788F01934BD03F14EADABF392640E43B01F976C DUP14 DUP14 DUP14 DUP14 DUP14 DUP9 DUP15 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x7E6 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1DAA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x80D SWAP3 SWAP2 SWAP1 PUSH2 0x1C92 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 SWAP2 POP PUSH1 0x1 SWAP1 DUP3 SWAP1 PUSH2 0x838 SWAP1 DUP10 ADD DUP10 PUSH2 0x1C2F JUMP JUMPDEST DUP9 PUSH1 0x20 ADD CALLDATALOAD DUP10 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x85F SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1E4E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x881 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x8BB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x1F9B JUMP JUMPDEST PUSH2 0x8C6 DUP3 PUSH1 0x1 PUSH2 0x14AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x8EC DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x10AB JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP9 POP SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH2 0x95F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x1F70 JUMP JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x97F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x2028 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH2 0x9A2 DUP5 PUSH2 0xC93 JUMP JUMPDEST PUSH32 0x4DAB0A5E832F103AC80C9C3E51E5742F8A24AA0A3D941FE91C64E1E3DB50C743 DUP13 DUP13 DUP13 DUP13 DUP13 DUP9 DUP14 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x9E1 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1D62 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA08 SWAP3 SWAP2 SWAP1 PUSH2 0x1C92 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 SWAP2 POP PUSH1 0x1 SWAP1 DUP3 SWAP1 PUSH2 0xA33 SWAP1 DUP9 ADD DUP9 PUSH2 0x1C2F JUMP JUMPDEST DUP8 PUSH1 0x20 ADD CALLDATALOAD DUP9 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0xA5A SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1E4E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA7C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xAB6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x1F9B JUMP JUMPDEST PUSH2 0xAC1 DUP3 PUSH1 0x1 PUSH2 0x14AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xAE7 DUP12 DUP12 DUP12 DUP12 DUP12 PUSH2 0x129D JUMP JUMPDEST POP POP POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH2 0xB1C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x2054 JUMP JUMPDEST DUP5 TIMESTAMP GT ISZERO PUSH2 0xB3C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x2028 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH2 0xB5F DUP4 PUSH2 0xC93 JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP12 DUP12 DUP12 DUP7 DUP13 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB9A SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1DEE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xBC1 SWAP3 SWAP2 SWAP1 PUSH2 0x1C92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x1 DUP2 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0xBFC SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1E4E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC1E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xC58 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x1F9B JUMP JUMPDEST PUSH2 0xC63 DUP3 PUSH1 0x1 PUSH2 0x14AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xC87 DUP11 DUP11 DUP11 PUSH2 0xEB6 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH2 0xCBE PUSH2 0x3EF JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP5 ADD MSTORE MLOAD PUSH2 0xD0E SWAP4 SWAP3 PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 SWAP2 DUP8 SWAP2 ADDRESS SWAP2 ADD PUSH2 0x1E22 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x10AB8743506CFD76ACAA406D0788F01934BD03F14EADABF392640E43B01F976C DUP2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x47B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x450 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x47B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x499 PUSH2 0xDBD PUSH2 0xEB2 JUMP JUMPDEST DUP5 PUSH2 0x521 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x22DC PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0xDE7 PUSH2 0xEB2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x107F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x499 PUSH2 0xE25 PUSH2 0xEB2 JUMP JUMPDEST DUP5 DUP5 PUSH2 0xF6A JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x541 CALLER DUP7 DUP7 PUSH1 0x0 DUP8 PUSH2 0x10AB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49D PUSH2 0xEAB PUSH2 0x54D JUMP JUMPDEST DUP4 SWAP1 PUSH2 0x14D6 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xEDC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x2101 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xF02 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x1EC2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0xF5D SWAP1 DUP6 SWAP1 PUSH2 0x1D59 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xF90 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x20BC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xFB6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x1E7F JUMP JUMPDEST PUSH2 0xFC1 DUP4 DUP4 DUP4 PUSH2 0x1566 JUMP JUMPDEST PUSH2 0xFFE DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x228E PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x107F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x102D SWAP1 DUP3 PUSH2 0x14AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xF5D SWAP1 DUP6 SWAP1 PUSH2 0x1D59 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x10A3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP2 SWAP1 PUSH2 0x1E6C JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x10D4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x1FC6 JUMP JUMPDEST DUP5 ISZERO DUP1 PUSH2 0x10DF JUMPI POP DUP4 ISZERO JUMPDEST PUSH2 0x10FB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x1FF1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1106 DUP9 PUSH2 0x8FF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1115 PUSH2 0x54D JUMP JUMPDEST SWAP1 POP DUP9 ISZERO PUSH2 0x1155 JUMPI DUP4 DUP10 GT PUSH2 0x112A JUMPI DUP9 PUSH2 0x112C JUMP JUMPDEST DUP4 JUMPDEST SWAP2 POP DUP4 DUP10 GT PUSH2 0x1144 JUMPI PUSH2 0x113F DUP10 DUP3 PUSH2 0x156B JUMP JUMPDEST PUSH2 0x114E JUMP JUMPDEST PUSH2 0x114E DUP5 DUP3 PUSH2 0x156B JUMP JUMPDEST SWAP3 POP PUSH2 0x1182 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1161 DUP6 DUP4 PUSH2 0x156B JUMP JUMPDEST SWAP1 POP DUP1 DUP10 GT PUSH2 0x1170 JUMPI DUP9 PUSH2 0x1172 JUMP JUMPDEST DUP1 JUMPDEST SWAP4 POP PUSH2 0x117E DUP5 DUP4 PUSH2 0x1577 JUMP JUMPDEST SWAP3 POP POP JUMPDEST PUSH2 0x118C DUP12 DUP4 PUSH2 0x1583 JUMP JUMPDEST DUP7 ISZERO PUSH2 0x125A JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH2 0x1202 SWAP1 PUSH32 0x0 SWAP1 DUP8 SWAP1 DUP16 SWAP1 PUSH1 0x4 ADD PUSH2 0x1CFE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x121C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1230 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1254 SWAP2 SWAP1 PUSH2 0x1C17 JUMP JUMPDEST POP PUSH2 0x128E JUMP JUMPDEST PUSH2 0x128E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP12 DUP6 PUSH2 0x1665 JUMP JUMPDEST POP SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x12C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x1FC6 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x13A9 JUMPI PUSH2 0x1300 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP8 ADDRESS DUP8 PUSH2 0x16BB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xE8EDA9DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xE8EDA9DF SWAP1 PUSH2 0x1372 SWAP1 PUSH32 0x0 SWAP1 DUP9 SWAP1 ADDRESS SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x1D21 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x138C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x13A0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x13DE JUMP JUMPDEST PUSH2 0x13DE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP8 ADDRESS DUP8 PUSH2 0x16BB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13E9 DUP6 PUSH2 0x656 JUMP JUMPDEST SWAP1 POP PUSH2 0x13F5 DUP7 DUP3 PUSH2 0x16E2 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x1439 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP2 SWAP1 PUSH2 0x1E6C JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x1487 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP2 SWAP1 PUSH2 0x1E6C JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x14A1 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x14CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x1F04 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x14E3 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x14F0 JUMPI POP PUSH1 0x0 PUSH2 0x49D JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x1506 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1543 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP2 SWAP1 PUSH2 0x1E6C JUMP JUMPDEST POP POP PUSH12 0x33B2E3C9FD0803CE8000000 SWAP2 MUL PUSH12 0x19D971E4FE8401E74000000 ADD DIV SWAP1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CF DUP4 DUP4 PUSH2 0x14D6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CF DUP4 DUP4 PUSH2 0x13FF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x15A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x207B JUMP JUMPDEST PUSH2 0x15B5 DUP3 PUSH1 0x0 DUP4 PUSH2 0x1566 JUMP JUMPDEST PUSH2 0x15F2 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x226C PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x107F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x2 SLOAD PUSH2 0x1618 SWAP1 DUP3 PUSH2 0x1796 JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x1659 SWAP1 DUP6 SWAP1 PUSH2 0x1D59 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x1566 DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1684 SWAP3 SWAP2 SWAP1 PUSH2 0x1CE5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x17D8 JUMP JUMPDEST PUSH2 0x16DC DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1684 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1CC1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1708 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x21C6 JUMP JUMPDEST PUSH2 0x1714 PUSH1 0x0 DUP4 DUP4 PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x1721 SWAP1 DUP3 PUSH2 0x14AA JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1747 SWAP1 DUP3 PUSH2 0x14AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x1659 SWAP1 DUP6 SWAP1 PUSH2 0x1D59 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CF DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x107F JUMP JUMPDEST PUSH2 0x17EA DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x18BD JUMP JUMPDEST PUSH2 0x1806 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x218F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x1822 SWAP2 SWAP1 PUSH2 0x1C76 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x185F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1864 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1886 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x1F3B JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x16DC JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x18A1 SWAP2 SWAP1 PUSH2 0x1BE3 JUMP JUMPDEST PUSH2 0x16DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x2145 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x18F1 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x49D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1921 JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x49D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1949 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x14CF DUP4 DUP4 PUSH2 0x18F9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1965 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x196F DUP5 DUP5 PUSH2 0x18F9 JUMP JUMPDEST SWAP2 POP PUSH2 0x197E DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x18F9 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x199B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x19A6 DUP2 PUSH2 0x2245 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x19B6 DUP2 PUSH2 0x2245 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x140 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x19E3 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x19ED DUP11 DUP11 PUSH2 0x18F9 JUMP JUMPDEST SWAP8 POP PUSH2 0x19FC DUP11 PUSH1 0x20 DUP12 ADD PUSH2 0x18F9 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x1A19 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH2 0x1A29 DUP2 PUSH2 0x225D JUMP JUMPDEST SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD SWAP3 POP PUSH2 0x1A3F DUP11 PUSH1 0xC0 DUP12 ADD PUSH2 0x1910 JUMP JUMPDEST SWAP2 POP PUSH2 0x120 DUP10 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x140 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x1A72 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x1A7D DUP2 PUSH2 0x2245 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x1A8D DUP2 PUSH2 0x2245 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH2 0x1A29 DUP2 PUSH2 0x225D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x1AC7 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x1AD2 DUP2 PUSH2 0x2245 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x1AE2 DUP2 PUSH2 0x2245 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH2 0x1AFF DUP11 PUSH1 0x80 DUP12 ADD PUSH2 0x1927 JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 SWAP4 SWAP7 SWAP6 PUSH1 0xA0 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0xC0 DUP6 ADD CALLDATALOAD SWAP5 PUSH1 0xE0 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1B33 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1B3D DUP5 DUP5 PUSH2 0x18F9 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1B5F JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1B6A DUP2 PUSH2 0x2245 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x1B81 DUP2 PUSH2 0x225D JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1BA1 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1BAB DUP7 DUP7 PUSH2 0x18F9 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x1BC8 JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x1BD8 DUP2 PUSH2 0x225D JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BF4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x14CF DUP2 PUSH2 0x225D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C10 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C28 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C40 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x14CF DUP4 DUP4 PUSH2 0x1927 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1C62 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2219 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1C88 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2219 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1901 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP3 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0xFFFF SWAP1 SWAP2 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP8 DUP9 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND PUSH1 0x20 DUP10 ADD MSTORE SWAP5 SWAP1 SWAP6 AND PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x60 DUP7 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0xFFFF AND PUSH1 0x80 DUP6 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST SWAP8 DUP9 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND PUSH1 0x20 DUP10 ADD MSTORE SWAP5 SWAP1 SWAP6 AND PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x60 DUP7 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP6 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST SWAP6 DUP7 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x20 DUP8 ADD MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x14CF PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1C4A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x40 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x22 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x11 SWAP1 DUP3 ADD MSTORE PUSH17 0x24A72B20A624A22FA222A827A9A4AA27A9 PUSH1 0x79 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x11 SWAP1 DUP3 ADD MSTORE PUSH17 0x494E56414C49445F5349474E4154555245 PUSH1 0x78 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x11 SWAP1 DUP3 ADD MSTORE PUSH17 0x1253959053125117D49150D25412515395 PUSH1 0x7A SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x4F4E4C595F4F4E455F414D4F554E545F464F524D41545F414C4C4F5745440000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH18 0x24A72B20A624A22FA2AC2824A920AA24A7A7 PUSH1 0x71 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xD SWAP1 DUP3 ADD MSTORE PUSH13 0x24A72B20A624A22FA7ABA722A9 PUSH1 0x99 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x73 PUSH1 0xF8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x25 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x40 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x40 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x40 DUP3 ADD MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2234 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x221C JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x16DC JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x225A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x225A JUMPI PUSH1 0x0 DUP1 REVERT INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x2062616C616E636545524332303A207472616E73 PUSH7 0x657220616D6F75 PUSH15 0x74206578636565647320616C6C6F77 PUSH2 0x6E63 PUSH6 0x45524332303A KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x735822122075CC 0xF7 0xF7 0xE7 0xE0 0x21 0xF9 SIGNEXTEND SWAP16 RETURNDATASIZE DUP7 0x4E MOD DUP4 0xC6 DUP5 MUL 0xE6 CREATE2 STOP SWAP7 0xD9 INVALID 0xD6 JUMP 0xD2 0xD7 BLOCKHASH NUMBER RETURNDATACOPY ADDMOD PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "801:14052:92:-:0;;;2107:438;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2016:12:8;;2260:16:92;;2278:18;;2016:12:8;;:5;;:12;;;;;:::i;:::-;-1:-1:-1;2034:16:8;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;;2056:9:8;:14;;-1:-1:-1;;2056:14:8;2068:2;2056:14;;;-1:-1:-1;;;;;;;2304:26:92::1;::::0;;;;;::::1;::::0;2336:23;;;;::::1;::::0;2398:42:::1;::::0;;-1:-1:-1;;;2398:42:92;;;;2056:9:8;;-1:-1:-1;;;;;2336:23:92;::::1;::::0;2398:40:::1;::::0;:42:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;2336:23;2398:42;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;2447:23:92::1;::::0;;;;::::1;::::0;2476:64:::1;::::0;-1:-1:-1;;;2476:64:92;;2366:75;;-1:-1:-1;;;;;;2447:23:92;::::1;::::0;2476::::1;::::0;:64:::1;::::0;2508:11;;-1:-1:-1;;2522:17:92;2476:64:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2107:438;::::0;;;;801:14052;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;801:14052:92;;;-1:-1:-1;801:14052:92;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;465:444:-1;;578:3;571:4;563:6;559:17;555:27;545:2;;-1:-1;;586:12;545:2;620:13;;-1:-1;;;;;3346:30;;;3343:2;;;-1:-1;;3379:12;3343:2;3012;3006:9;3520:4;3452:9;3433:17;;-1:-1;;3429:33;3038:17;;;;3098:34;;;3134:22;;;3095:62;3092:2;;;-1:-1;;3160:12;3092:2;3190:10;3012:2;3179:22;;639:74;;;733:6;726:5;719:21;837:3;3520:4;828:6;761;819:16;;816:25;813:2;;;854:1;;844:12;813:2;4124:1;4115:10;;4131:101;4145:6;4142:1;4139:13;4131:101;;;4212:11;;;;;4206:18;4193:11;;;;;4186:39;4160:10;;;;4131:101;;;4247:6;4244:1;4241:13;4238:2;;;4124:1;3520:4;4303:6;795:5;4294:16;;4287:27;4238:2;;;;;538:371;;;;:::o;917:263::-;;1032:2;1020:9;1011:7;1007:23;1003:32;1000:2;;;-1:-1;;1038:12;1000:2;89:6;83:13;101:33;128:5;101:33;:::i;:::-;1090:74;994:186;-1:-1;;;994:186::o;1187:257::-;;1299:2;1287:9;1278:7;1274:23;1270:32;1267:2;;;-1:-1;;1305:12;1267:2;227:6;221:13;4540:5;3706:13;3699:21;4518:5;4515:32;4505:2;;-1:-1;;4551:12;1451:912;;;;;1658:3;1646:9;1637:7;1633:23;1629:33;1626:2;;;-1:-1;;1665:12;1626:2;386:6;380:13;398:54;446:5;398:54;:::i;:::-;1849:2;1899:22;;83:13;1717:95;;-1:-1;101:33;83:13;101:33;:::i;:::-;1989:2;1974:18;;1968:25;1857:74;;-1:-1;;;;;;2002:30;;;1999:2;;;-1:-1;;2035:12;1999:2;2065:74;2131:7;2122:6;2111:9;2107:22;2065:74;:::i;:::-;2055:84;;2197:2;2186:9;2182:18;2176:25;2162:39;;2013:18;2213:6;2210:30;2207:2;;;-1:-1;;2243:12;2207:2;;2273:74;2339:7;2330:6;2319:9;2315:22;2273:74;:::i;:::-;2263:84;;;1620:743;;;;;;;:::o;2610:333::-;-1:-1;;;;;3913:54;;;;2441:37;;2929:2;2914:18;;2561:37;2765:2;2750:18;;2736:207::o;4335:117::-;-1:-1;;;;;3913:54;;4394:35;;4384:2;;4443:1;;4433:12;4384:2;4378:74;:::o;:::-;801:14052:92;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "22963": [
                  {
                    "length": 32,
                    "start": 1383
                  },
                  {
                    "length": 32,
                    "start": 3630
                  },
                  {
                    "length": 32,
                    "start": 4521
                  },
                  {
                    "length": 32,
                    "start": 4887
                  }
                ],
                "22965": [
                  {
                    "length": 32,
                    "start": 1772
                  },
                  {
                    "length": 32,
                    "start": 4711
                  },
                  {
                    "length": 32,
                    "start": 5046
                  }
                ],
                "22967": [
                  {
                    "length": 32,
                    "start": 1428
                  },
                  {
                    "length": 32,
                    "start": 1736
                  },
                  {
                    "length": 32,
                    "start": 4566
                  },
                  {
                    "length": 32,
                    "start": 4824
                  },
                  {
                    "length": 32,
                    "start": 4932
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101da5760003560e01c806369af0ddb1161010457806395d89b41116100a2578063b9844d8d11610071578063b9844d8d146103a3578063dd62ed3e146103b6578063ead5d359146103c9578063f57d0b40146103dc576101da565b806395d89b411461036d578063a457c2d714610375578063a9059cbb14610388578063b4dcfc771461039b576101da565b806381abdab3116100de57806381abdab31461032a5780638a127bfd1461033d5780638a3b3d6f146103525780638d94841514610365576101da565b806369af0ddb146102fc57806370a082311461030f5780637816037614610322576101da565b806330adf81f1161017c57806344b68c3f1161014b57806344b68c3f146102c45780634800d97f146102d757806351c0e061146102ec57806363210537146102f4576101da565b806330adf81f14610281578063313ce5671461028957806336a5a6d61461029e57806339509351146102b1576101da565b806323b872dd116101b857806323b872dd14610232578063288587ce146102455780632c4e722e146102665780632f2cab871461026e576101da565b806306fdde03146101df578063095ea7b3146101fd57806318160ddd1461021d575b600080fd5b6101e76103ef565b6040516101f49190611e6c565b60405180910390f35b61021061020b366004611b21565b610485565b6040516101f49190611d4e565b6102256104a3565b6040516101f49190611d59565b610210610240366004611987565b6104a9565b610258610253366004611b4b565b610530565b6040516101f49291906121fd565b61022561054d565b61022561027c366004611b8c565b610611565b610225610629565b61029161064d565b6040516101f4919061220b565b6102256102ac366004611bff565b610656565b6102106102bf366004611b21565b61066a565b6102256102d2366004611938565b6106b8565b6102df6106c6565b6040516101f49190611cad565b6102df6106ea565b61022561070e565b61025861030a366004611a56565b610732565b61022561031d366004611938565b6108ff565b6101e761091a565b6102256103383660046119c7565b610937565b61035061034b366004611aab565b610af6565b005b610225610360366004611bff565b610c93565b610225610d2b565b6101e7610d4f565b610210610383366004611b21565b610db0565b610210610396366004611b21565b610e18565b6102df610e2c565b6102256103b1366004611938565b610e50565b6102256103c4366004611953565b610e62565b6102586103d7366004611b4b565b610e8d565b6102256103ea366004611bff565b610e9e565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561047b5780601f106104505761010080835404028352916020019161047b565b820191906000526020600020905b81548152906001019060200180831161045e57829003601f168201915b5050505050905090565b6000610499610492610eb2565b8484610eb6565b5060015b92915050565b60025490565b60006104b6848484610f6a565b610526846104c2610eb2565b610521856040518060600160405280602881526020016122b4602891396001600160a01b038a16600090815260016020526040812090610500610eb2565b6001600160a01b03168152602081019190915260400160002054919061107f565b610eb6565b5060019392505050565b6000806105413386600087876110ab565b91509150935093915050565b60405163d15e005360e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d15e0053906105bc907f000000000000000000000000000000000000000000000000000000000000000090600401611cad565b60206040518083038186803b1580156105d457600080fd5b505afa1580156105e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060c9190611c17565b905090565b6000610620338686868661129d565b95945050505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055460ff1690565b600061049d61066361054d565b83906113ff565b6000610499610677610eb2565b846105218560016000610688610eb2565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906114aa565b600061049d6103ea836108ff565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f4dab0a5e832f103ac80c9c3e51e5742f8a24aa0a3d941fe91c64e1e3db50c74381565b6000806001600160a01b038a166107645760405162461bcd60e51b815260040161075b90611f70565b60405180910390fd5b844211156107845760405162461bcd60e51b815260040161075b90612028565b6001600160a01b038a16600090815260066020526040812054906107a785610c93565b7f10ab8743506cfd76acaa406d0788f01934bd03f14eadabf392640e43b01f976c8d8d8d8d8d888e6040516020016107e6989796959493929190611daa565b6040516020818303038152906040528051906020012060405160200161080d929190611c92565b60408051601f1981840301815291905280516020918201209150600190829061083890890189611c2f565b886020013589604001356040516000815260200160405260405161085f9493929190611e4e565b6020604051602081039080840390855afa158015610881573d6000803e3d6000fd5b505050602060405103516001600160a01b03168c6001600160a01b0316146108bb5760405162461bcd60e51b815260040161075b90611f9b565b6108c68260016114aa565b6001600160a01b038d166000908152600660205260409020556108ec8c8c8c8c8c6110ab565b9350935050509850989650505050505050565b6001600160a01b031660009081526020819052604090205490565b604051806040016040528060018152602001603160f81b81525081565b60006001600160a01b03891661095f5760405162461bcd60e51b815260040161075b90611f70565b8342111561097f5760405162461bcd60e51b815260040161075b90612028565b6001600160a01b038916600090815260066020526040812054906109a284610c93565b7f4dab0a5e832f103ac80c9c3e51e5742f8a24aa0a3d941fe91c64e1e3db50c7438c8c8c8c8c888d6040516020016109e1989796959493929190611d62565b60405160208183030381529060405280519060200120604051602001610a08929190611c92565b60408051601f19818403018152919052805160209182012091506001908290610a3390880188611c2f565b8760200135886040013560405160008152602001604052604051610a5a9493929190611e4e565b6020604051602081039080840390855afa158015610a7c573d6000803e3d6000fd5b505050602060405103516001600160a01b03168b6001600160a01b031614610ab65760405162461bcd60e51b815260040161075b90611f9b565b610ac18260016114aa565b6001600160a01b038c16600090815260066020526040902055610ae78b8b8b8b8b61129d565b50505098975050505050505050565b6001600160a01b038816610b1c5760405162461bcd60e51b815260040161075b90612054565b84421115610b3c5760405162461bcd60e51b815260040161075b90612028565b6001600160a01b03881660009081526006602052604081205490610b5f83610c93565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98b8b8b868c604051602001610b9a96959493929190611dee565b60405160208183030381529060405280519060200120604051602001610bc1929190611c92565b60405160208183030381529060405280519060200120905060018187878760405160008152602001604052604051610bfc9493929190611e4e565b6020604051602081039080840390855afa158015610c1e573d6000803e3d6000fd5b505050602060405103516001600160a01b03168a6001600160a01b031614610c585760405162461bcd60e51b815260040161075b90611f9b565b610c638260016114aa565b6001600160a01b038b16600090815260066020526040902055610c878a8a8a610eb6565b50505050505050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610cbe6103ef565b805160209182012060408051808201825260018152603160f81b9084015251610d0e93927fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6918791309101611e22565b604051602081830303815290604052805190602001209050919050565b7f10ab8743506cfd76acaa406d0788f01934bd03f14eadabf392640e43b01f976c81565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561047b5780601f106104505761010080835404028352916020019161047b565b6000610499610dbd610eb2565b84610521856040518060600160405280602581526020016122dc6025913960016000610de7610eb2565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061107f565b6000610499610e25610eb2565b8484610f6a565b7f000000000000000000000000000000000000000000000000000000000000000081565b60066020526000908152604090205481565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6000806105413386866000876110ab565b600061049d610eab61054d565b83906114d6565b3390565b6001600160a01b038316610edc5760405162461bcd60e51b815260040161075b90612101565b6001600160a01b038216610f025760405162461bcd60e51b815260040161075b90611ec2565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610f5d908590611d59565b60405180910390a3505050565b6001600160a01b038316610f905760405162461bcd60e51b815260040161075b906120bc565b6001600160a01b038216610fb65760405162461bcd60e51b815260040161075b90611e7f565b610fc1838383611566565b610ffe8160405180606001604052806026815260200161228e602691396001600160a01b038616600090815260208190526040902054919061107f565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461102d90826114aa565b6001600160a01b0380841660008181526020819052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f5d908590611d59565b600081848411156110a35760405162461bcd60e51b815260040161075b9190611e6c565b505050900390565b6000806001600160a01b0386166110d45760405162461bcd60e51b815260040161075b90611fc6565b8415806110df575083155b6110fb5760405162461bcd60e51b815260040161075b90611ff1565b6000611106886108ff565b9050600080600061111561054d565b905088156111555783891161112a578861112c565b835b91508389116111445761113f898261156b565b61114e565b61114e848261156b565b9250611182565b6000611161858361156b565b90508089116111705788611172565b805b935061117e8483611577565b9250505b61118c8b83611583565b861561125a57604051631a4ca37b60e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906369328dec90611202907f00000000000000000000000000000000000000000000000000000000000000009087908f90600401611cfe565b602060405180830381600087803b15801561121c57600080fd5b505af1158015611230573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112549190611c17565b5061128e565b61128e6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168b85611665565b50999098509650505050505050565b60006001600160a01b0385166112c55760405162461bcd60e51b815260040161075b90611fc6565b81156113a9576113006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168730876116bb565b60405163e8eda9df60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e8eda9df90611372907f000000000000000000000000000000000000000000000000000000000000000090889030908990600401611d21565b600060405180830381600087803b15801561138c57600080fd5b505af11580156113a0573d6000803e3d6000fd5b505050506113de565b6113de6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168730876116bb565b60006113e985610656565b90506113f586826116e2565b9695505050505050565b604080518082019091526002815261035360f41b6020820152600090826114395760405162461bcd60e51b815260040161075b9190611e6c565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156114875760405162461bcd60e51b815260040161075b9190611e6c565b5082816b033b2e3c9fd0803ce8000000860201816114a157fe5b04949350505050565b6000828201838110156114cf5760405162461bcd60e51b815260040161075b90611f04565b9392505050565b60008215806114e3575081155b156114f05750600061049d565b816b019d971e4fe8401e74000000198161150657fe5b0483111560405180604001604052806002815260200161068760f31b815250906115435760405162461bcd60e51b815260040161075b9190611e6c565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b505050565b60006114cf83836114d6565b60006114cf83836113ff565b6001600160a01b0382166115a95760405162461bcd60e51b815260040161075b9061207b565b6115b582600083611566565b6115f28160405180606001604052806022815260200161226c602291396001600160a01b038516600090815260208190526040902054919061107f565b6001600160a01b0383166000908152602081905260409020556002546116189082611796565b6002556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611659908590611d59565b60405180910390a35050565b6115668363a9059cbb60e01b8484604051602401611684929190611ce5565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526117d8565b6116dc846323b872dd60e01b85858560405160240161168493929190611cc1565b50505050565b6001600160a01b0382166117085760405162461bcd60e51b815260040161075b906121c6565b61171460008383611566565b60025461172190826114aa565b6002556001600160a01b03821660009081526020819052604090205461174790826114aa565b6001600160a01b0383166000818152602081905260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611659908590611d59565b60006114cf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061107f565b6117ea826001600160a01b03166118bd565b6118065760405162461bcd60e51b815260040161075b9061218f565b60006060836001600160a01b0316836040516118229190611c76565b6000604051808303816000865af19150503d806000811461185f576040519150601f19603f3d011682016040523d82523d6000602084013e611864565b606091505b5091509150816118865760405162461bcd60e51b815260040161075b90611f3b565b8051156116dc57808060200190518101906118a19190611be3565b6116dc5760405162461bcd60e51b815260040161075b90612145565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906118f157508115155b949350505050565b80356001600160a01b038116811461049d57600080fd5b600060608284031215611921578081fd5b50919050565b803560ff8116811461049d57600080fd5b600060208284031215611949578081fd5b6114cf83836118f9565b60008060408385031215611965578081fd5b61196f84846118f9565b915061197e84602085016118f9565b90509250929050565b60008060006060848603121561199b578081fd5b83356119a681612245565b925060208401356119b681612245565b929592945050506040919091013590565b600080600080600080600080610140898b0312156119e3578384fd5b6119ed8a8a6118f9565b97506119fc8a60208b016118f9565b965060408901359550606089013561ffff81168114611a19578485fd5b94506080890135611a298161225d565b935060a08901359250611a3f8a60c08b01611910565b915061012089013590509295985092959890939650565b600080600080600080600080610140898b031215611a72578384fd5b8835611a7d81612245565b97506020890135611a8d81612245565b965060408901359550606089013594506080890135611a298161225d565b600080600080600080600080610100898b031215611ac7578384fd5b8835611ad281612245565b97506020890135611ae281612245565b96506040890135955060608901359450611aff8a60808b01611927565b979a969950949793969560a0850135955060c08501359460e001359350915050565b60008060408385031215611b33578182fd5b611b3d84846118f9565b946020939093013593505050565b600080600060608486031215611b5f578283fd5b8335611b6a81612245565b9250602084013591506040840135611b818161225d565b809150509250925092565b60008060008060808587031215611ba1578182fd5b611bab86866118f9565b935060208501359250604085013561ffff81168114611bc8578283fd5b91506060850135611bd88161225d565b939692955090935050565b600060208284031215611bf4578081fd5b81516114cf8161225d565b600060208284031215611c10578081fd5b5035919050565b600060208284031215611c28578081fd5b5051919050565b600060208284031215611c40578081fd5b6114cf8383611927565b60008151808452611c62816020860160208601612219565b601f01601f19169290920160200192915050565b60008251611c88818460208701612219565b9190910192915050565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6001600160a01b03948516815260208101939093529216604082015261ffff909116606082015260800190565b901515815260200190565b90815260200190565b9788526001600160a01b039687166020890152949095166040870152606086019290925261ffff166080850152151560a084015260c083019190915260e08201526101000190565b9788526001600160a01b03968716602089015294909516604087015260608601929092526080850152151560a084015260c083019190915260e08201526101000190565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b93845260ff9290921660208401526040830152606082015260800190565b6000602082526114cf6020830184611c4a565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b60208082526011908201527024a72b20a624a22fa222a827a9a4aa27a960791b604082015260600190565b602080825260119082015270494e56414c49445f5349474e415455524560781b604082015260600190565b6020808252601190820152701253959053125117d49150d25412515395607a1b604082015260600190565b6020808252601e908201527f4f4e4c595f4f4e455f414d4f554e545f464f524d41545f414c4c4f5745440000604082015260600190565b60208082526012908201527124a72b20a624a22fa2ac2824a920aa24a7a760711b604082015260600190565b6020808252600d908201526c24a72b20a624a22fa7aba722a960991b604082015260600190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b918252602082015260400190565b60ff91909116815260200190565b60005b8381101561223457818101518382015260200161221c565b838111156116dc5750506000910152565b6001600160a01b038116811461225a57600080fd5b50565b801515811461225a57600080fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122075ccf7f7e7e021f90b9f3d864e0683c68402e6f50096d9fed656d2d740433e0864736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1DA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x69AF0DDB GT PUSH2 0x104 JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xB9844D8D GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xB9844D8D EQ PUSH2 0x3A3 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x3B6 JUMPI DUP1 PUSH4 0xEAD5D359 EQ PUSH2 0x3C9 JUMPI DUP1 PUSH4 0xF57D0B40 EQ PUSH2 0x3DC JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x36D JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x375 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x388 JUMPI DUP1 PUSH4 0xB4DCFC77 EQ PUSH2 0x39B JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x81ABDAB3 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x81ABDAB3 EQ PUSH2 0x32A JUMPI DUP1 PUSH4 0x8A127BFD EQ PUSH2 0x33D JUMPI DUP1 PUSH4 0x8A3B3D6F EQ PUSH2 0x352 JUMPI DUP1 PUSH4 0x8D948415 EQ PUSH2 0x365 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x69AF0DDB EQ PUSH2 0x2FC JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x30F JUMPI DUP1 PUSH4 0x78160376 EQ PUSH2 0x322 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x30ADF81F GT PUSH2 0x17C JUMPI DUP1 PUSH4 0x44B68C3F GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x44B68C3F EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0x4800D97F EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x51C0E061 EQ PUSH2 0x2EC JUMPI DUP1 PUSH4 0x63210537 EQ PUSH2 0x2F4 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x281 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x289 JUMPI DUP1 PUSH4 0x36A5A6D6 EQ PUSH2 0x29E JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2B1 JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0x288587CE EQ PUSH2 0x245 JUMPI DUP1 PUSH4 0x2C4E722E EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0x2F2CAB87 EQ PUSH2 0x26E JUMPI PUSH2 0x1DA JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1FD JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x21D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E7 PUSH2 0x3EF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F4 SWAP2 SWAP1 PUSH2 0x1E6C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x210 PUSH2 0x20B CALLDATASIZE PUSH1 0x4 PUSH2 0x1B21 JUMP JUMPDEST PUSH2 0x485 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F4 SWAP2 SWAP1 PUSH2 0x1D4E JUMP JUMPDEST PUSH2 0x225 PUSH2 0x4A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F4 SWAP2 SWAP1 PUSH2 0x1D59 JUMP JUMPDEST PUSH2 0x210 PUSH2 0x240 CALLDATASIZE PUSH1 0x4 PUSH2 0x1987 JUMP JUMPDEST PUSH2 0x4A9 JUMP JUMPDEST PUSH2 0x258 PUSH2 0x253 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B4B JUMP JUMPDEST PUSH2 0x530 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F4 SWAP3 SWAP2 SWAP1 PUSH2 0x21FD JUMP JUMPDEST PUSH2 0x225 PUSH2 0x54D JUMP JUMPDEST PUSH2 0x225 PUSH2 0x27C CALLDATASIZE PUSH1 0x4 PUSH2 0x1B8C JUMP JUMPDEST PUSH2 0x611 JUMP JUMPDEST PUSH2 0x225 PUSH2 0x629 JUMP JUMPDEST PUSH2 0x291 PUSH2 0x64D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F4 SWAP2 SWAP1 PUSH2 0x220B JUMP JUMPDEST PUSH2 0x225 PUSH2 0x2AC CALLDATASIZE PUSH1 0x4 PUSH2 0x1BFF JUMP JUMPDEST PUSH2 0x656 JUMP JUMPDEST PUSH2 0x210 PUSH2 0x2BF CALLDATASIZE PUSH1 0x4 PUSH2 0x1B21 JUMP JUMPDEST PUSH2 0x66A JUMP JUMPDEST PUSH2 0x225 PUSH2 0x2D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1938 JUMP JUMPDEST PUSH2 0x6B8 JUMP JUMPDEST PUSH2 0x2DF PUSH2 0x6C6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F4 SWAP2 SWAP1 PUSH2 0x1CAD JUMP JUMPDEST PUSH2 0x2DF PUSH2 0x6EA JUMP JUMPDEST PUSH2 0x225 PUSH2 0x70E JUMP JUMPDEST PUSH2 0x258 PUSH2 0x30A CALLDATASIZE PUSH1 0x4 PUSH2 0x1A56 JUMP JUMPDEST PUSH2 0x732 JUMP JUMPDEST PUSH2 0x225 PUSH2 0x31D CALLDATASIZE PUSH1 0x4 PUSH2 0x1938 JUMP JUMPDEST PUSH2 0x8FF JUMP JUMPDEST PUSH2 0x1E7 PUSH2 0x91A JUMP JUMPDEST PUSH2 0x225 PUSH2 0x338 CALLDATASIZE PUSH1 0x4 PUSH2 0x19C7 JUMP JUMPDEST PUSH2 0x937 JUMP JUMPDEST PUSH2 0x350 PUSH2 0x34B CALLDATASIZE PUSH1 0x4 PUSH2 0x1AAB JUMP JUMPDEST PUSH2 0xAF6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x225 PUSH2 0x360 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BFF JUMP JUMPDEST PUSH2 0xC93 JUMP JUMPDEST PUSH2 0x225 PUSH2 0xD2B JUMP JUMPDEST PUSH2 0x1E7 PUSH2 0xD4F JUMP JUMPDEST PUSH2 0x210 PUSH2 0x383 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B21 JUMP JUMPDEST PUSH2 0xDB0 JUMP JUMPDEST PUSH2 0x210 PUSH2 0x396 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B21 JUMP JUMPDEST PUSH2 0xE18 JUMP JUMPDEST PUSH2 0x2DF PUSH2 0xE2C JUMP JUMPDEST PUSH2 0x225 PUSH2 0x3B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1938 JUMP JUMPDEST PUSH2 0xE50 JUMP JUMPDEST PUSH2 0x225 PUSH2 0x3C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1953 JUMP JUMPDEST PUSH2 0xE62 JUMP JUMPDEST PUSH2 0x258 PUSH2 0x3D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B4B JUMP JUMPDEST PUSH2 0xE8D JUMP JUMPDEST PUSH2 0x225 PUSH2 0x3EA CALLDATASIZE PUSH1 0x4 PUSH2 0x1BFF JUMP JUMPDEST PUSH2 0xE9E JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x47B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x450 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x47B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x45E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x499 PUSH2 0x492 PUSH2 0xEB2 JUMP JUMPDEST DUP5 DUP5 PUSH2 0xEB6 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B6 DUP5 DUP5 DUP5 PUSH2 0xF6A JUMP JUMPDEST PUSH2 0x526 DUP5 PUSH2 0x4C2 PUSH2 0xEB2 JUMP JUMPDEST PUSH2 0x521 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x22B4 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x500 PUSH2 0xEB2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x107F JUMP JUMPDEST PUSH2 0xEB6 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x541 CALLER DUP7 PUSH1 0x0 DUP8 DUP8 PUSH2 0x10AB JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xD15E0053 SWAP1 PUSH2 0x5BC SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x1CAD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x60C SWAP2 SWAP1 PUSH2 0x1C17 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x620 CALLER DUP7 DUP7 DUP7 DUP7 PUSH2 0x129D JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49D PUSH2 0x663 PUSH2 0x54D JUMP JUMPDEST DUP4 SWAP1 PUSH2 0x13FF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x499 PUSH2 0x677 PUSH2 0xEB2 JUMP JUMPDEST DUP5 PUSH2 0x521 DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x688 PUSH2 0xEB2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x14AA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49D PUSH2 0x3EA DUP4 PUSH2 0x8FF JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x4DAB0A5E832F103AC80C9C3E51E5742F8A24AA0A3D941FE91C64E1E3DB50C743 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH2 0x764 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x1F70 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 TIMESTAMP GT ISZERO PUSH2 0x784 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x2028 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH2 0x7A7 DUP6 PUSH2 0xC93 JUMP JUMPDEST PUSH32 0x10AB8743506CFD76ACAA406D0788F01934BD03F14EADABF392640E43B01F976C DUP14 DUP14 DUP14 DUP14 DUP14 DUP9 DUP15 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x7E6 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1DAA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x80D SWAP3 SWAP2 SWAP1 PUSH2 0x1C92 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 SWAP2 POP PUSH1 0x1 SWAP1 DUP3 SWAP1 PUSH2 0x838 SWAP1 DUP10 ADD DUP10 PUSH2 0x1C2F JUMP JUMPDEST DUP9 PUSH1 0x20 ADD CALLDATALOAD DUP10 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x85F SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1E4E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x881 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x8BB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x1F9B JUMP JUMPDEST PUSH2 0x8C6 DUP3 PUSH1 0x1 PUSH2 0x14AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x8EC DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x10AB JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP9 POP SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH2 0x95F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x1F70 JUMP JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x97F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x2028 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH2 0x9A2 DUP5 PUSH2 0xC93 JUMP JUMPDEST PUSH32 0x4DAB0A5E832F103AC80C9C3E51E5742F8A24AA0A3D941FE91C64E1E3DB50C743 DUP13 DUP13 DUP13 DUP13 DUP13 DUP9 DUP14 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x9E1 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1D62 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA08 SWAP3 SWAP2 SWAP1 PUSH2 0x1C92 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 SWAP2 POP PUSH1 0x1 SWAP1 DUP3 SWAP1 PUSH2 0xA33 SWAP1 DUP9 ADD DUP9 PUSH2 0x1C2F JUMP JUMPDEST DUP8 PUSH1 0x20 ADD CALLDATALOAD DUP9 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0xA5A SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1E4E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA7C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xAB6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x1F9B JUMP JUMPDEST PUSH2 0xAC1 DUP3 PUSH1 0x1 PUSH2 0x14AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xAE7 DUP12 DUP12 DUP12 DUP12 DUP12 PUSH2 0x129D JUMP JUMPDEST POP POP POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH2 0xB1C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x2054 JUMP JUMPDEST DUP5 TIMESTAMP GT ISZERO PUSH2 0xB3C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x2028 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH2 0xB5F DUP4 PUSH2 0xC93 JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP12 DUP12 DUP12 DUP7 DUP13 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB9A SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1DEE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xBC1 SWAP3 SWAP2 SWAP1 PUSH2 0x1C92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x1 DUP2 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0xBFC SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1E4E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC1E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xC58 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x1F9B JUMP JUMPDEST PUSH2 0xC63 DUP3 PUSH1 0x1 PUSH2 0x14AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xC87 DUP11 DUP11 DUP11 PUSH2 0xEB6 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH2 0xCBE PUSH2 0x3EF JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP5 ADD MSTORE MLOAD PUSH2 0xD0E SWAP4 SWAP3 PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 SWAP2 DUP8 SWAP2 ADDRESS SWAP2 ADD PUSH2 0x1E22 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x10AB8743506CFD76ACAA406D0788F01934BD03F14EADABF392640E43B01F976C DUP2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x47B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x450 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x47B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x499 PUSH2 0xDBD PUSH2 0xEB2 JUMP JUMPDEST DUP5 PUSH2 0x521 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x22DC PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0xDE7 PUSH2 0xEB2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x107F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x499 PUSH2 0xE25 PUSH2 0xEB2 JUMP JUMPDEST DUP5 DUP5 PUSH2 0xF6A JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x541 CALLER DUP7 DUP7 PUSH1 0x0 DUP8 PUSH2 0x10AB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49D PUSH2 0xEAB PUSH2 0x54D JUMP JUMPDEST DUP4 SWAP1 PUSH2 0x14D6 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xEDC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x2101 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xF02 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x1EC2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0xF5D SWAP1 DUP6 SWAP1 PUSH2 0x1D59 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xF90 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x20BC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xFB6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x1E7F JUMP JUMPDEST PUSH2 0xFC1 DUP4 DUP4 DUP4 PUSH2 0x1566 JUMP JUMPDEST PUSH2 0xFFE DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x228E PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x107F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x102D SWAP1 DUP3 PUSH2 0x14AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xF5D SWAP1 DUP6 SWAP1 PUSH2 0x1D59 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x10A3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP2 SWAP1 PUSH2 0x1E6C JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x10D4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x1FC6 JUMP JUMPDEST DUP5 ISZERO DUP1 PUSH2 0x10DF JUMPI POP DUP4 ISZERO JUMPDEST PUSH2 0x10FB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x1FF1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1106 DUP9 PUSH2 0x8FF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1115 PUSH2 0x54D JUMP JUMPDEST SWAP1 POP DUP9 ISZERO PUSH2 0x1155 JUMPI DUP4 DUP10 GT PUSH2 0x112A JUMPI DUP9 PUSH2 0x112C JUMP JUMPDEST DUP4 JUMPDEST SWAP2 POP DUP4 DUP10 GT PUSH2 0x1144 JUMPI PUSH2 0x113F DUP10 DUP3 PUSH2 0x156B JUMP JUMPDEST PUSH2 0x114E JUMP JUMPDEST PUSH2 0x114E DUP5 DUP3 PUSH2 0x156B JUMP JUMPDEST SWAP3 POP PUSH2 0x1182 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1161 DUP6 DUP4 PUSH2 0x156B JUMP JUMPDEST SWAP1 POP DUP1 DUP10 GT PUSH2 0x1170 JUMPI DUP9 PUSH2 0x1172 JUMP JUMPDEST DUP1 JUMPDEST SWAP4 POP PUSH2 0x117E DUP5 DUP4 PUSH2 0x1577 JUMP JUMPDEST SWAP3 POP POP JUMPDEST PUSH2 0x118C DUP12 DUP4 PUSH2 0x1583 JUMP JUMPDEST DUP7 ISZERO PUSH2 0x125A JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x69328DEC SWAP1 PUSH2 0x1202 SWAP1 PUSH32 0x0 SWAP1 DUP8 SWAP1 DUP16 SWAP1 PUSH1 0x4 ADD PUSH2 0x1CFE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x121C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1230 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1254 SWAP2 SWAP1 PUSH2 0x1C17 JUMP JUMPDEST POP PUSH2 0x128E JUMP JUMPDEST PUSH2 0x128E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP12 DUP6 PUSH2 0x1665 JUMP JUMPDEST POP SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x12C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x1FC6 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x13A9 JUMPI PUSH2 0x1300 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP8 ADDRESS DUP8 PUSH2 0x16BB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xE8EDA9DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xE8EDA9DF SWAP1 PUSH2 0x1372 SWAP1 PUSH32 0x0 SWAP1 DUP9 SWAP1 ADDRESS SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x1D21 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x138C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x13A0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x13DE JUMP JUMPDEST PUSH2 0x13DE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP8 ADDRESS DUP8 PUSH2 0x16BB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13E9 DUP6 PUSH2 0x656 JUMP JUMPDEST SWAP1 POP PUSH2 0x13F5 DUP7 DUP3 PUSH2 0x16E2 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x1439 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP2 SWAP1 PUSH2 0x1E6C JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x1487 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP2 SWAP1 PUSH2 0x1E6C JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x14A1 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x14CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x1F04 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x14E3 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x14F0 JUMPI POP PUSH1 0x0 PUSH2 0x49D JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x1506 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1543 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP2 SWAP1 PUSH2 0x1E6C JUMP JUMPDEST POP POP PUSH12 0x33B2E3C9FD0803CE8000000 SWAP2 MUL PUSH12 0x19D971E4FE8401E74000000 ADD DIV SWAP1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CF DUP4 DUP4 PUSH2 0x14D6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CF DUP4 DUP4 PUSH2 0x13FF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x15A9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x207B JUMP JUMPDEST PUSH2 0x15B5 DUP3 PUSH1 0x0 DUP4 PUSH2 0x1566 JUMP JUMPDEST PUSH2 0x15F2 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x226C PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x107F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x2 SLOAD PUSH2 0x1618 SWAP1 DUP3 PUSH2 0x1796 JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x1659 SWAP1 DUP6 SWAP1 PUSH2 0x1D59 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x1566 DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1684 SWAP3 SWAP2 SWAP1 PUSH2 0x1CE5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x17D8 JUMP JUMPDEST PUSH2 0x16DC DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1684 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1CC1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1708 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x21C6 JUMP JUMPDEST PUSH2 0x1714 PUSH1 0x0 DUP4 DUP4 PUSH2 0x1566 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x1721 SWAP1 DUP3 PUSH2 0x14AA JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x1747 SWAP1 DUP3 PUSH2 0x14AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x1659 SWAP1 DUP6 SWAP1 PUSH2 0x1D59 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CF DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x107F JUMP JUMPDEST PUSH2 0x17EA DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x18BD JUMP JUMPDEST PUSH2 0x1806 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x218F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x1822 SWAP2 SWAP1 PUSH2 0x1C76 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x185F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1864 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1886 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x1F3B JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x16DC JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x18A1 SWAP2 SWAP1 PUSH2 0x1BE3 JUMP JUMPDEST PUSH2 0x16DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75B SWAP1 PUSH2 0x2145 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x18F1 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x49D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1921 JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x49D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1949 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x14CF DUP4 DUP4 PUSH2 0x18F9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1965 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x196F DUP5 DUP5 PUSH2 0x18F9 JUMP JUMPDEST SWAP2 POP PUSH2 0x197E DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0x18F9 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x199B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x19A6 DUP2 PUSH2 0x2245 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x19B6 DUP2 PUSH2 0x2245 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x140 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x19E3 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x19ED DUP11 DUP11 PUSH2 0x18F9 JUMP JUMPDEST SWAP8 POP PUSH2 0x19FC DUP11 PUSH1 0x20 DUP12 ADD PUSH2 0x18F9 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x1A19 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH2 0x1A29 DUP2 PUSH2 0x225D JUMP JUMPDEST SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD SWAP3 POP PUSH2 0x1A3F DUP11 PUSH1 0xC0 DUP12 ADD PUSH2 0x1910 JUMP JUMPDEST SWAP2 POP PUSH2 0x120 DUP10 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x140 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x1A72 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x1A7D DUP2 PUSH2 0x2245 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x1A8D DUP2 PUSH2 0x2245 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH2 0x1A29 DUP2 PUSH2 0x225D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x1AC7 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x1AD2 DUP2 PUSH2 0x2245 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x1AE2 DUP2 PUSH2 0x2245 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH2 0x1AFF DUP11 PUSH1 0x80 DUP12 ADD PUSH2 0x1927 JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 SWAP4 SWAP7 SWAP6 PUSH1 0xA0 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0xC0 DUP6 ADD CALLDATALOAD SWAP5 PUSH1 0xE0 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1B33 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1B3D DUP5 DUP5 PUSH2 0x18F9 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1B5F JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1B6A DUP2 PUSH2 0x2245 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x1B81 DUP2 PUSH2 0x225D JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1BA1 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1BAB DUP7 DUP7 PUSH2 0x18F9 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x1BC8 JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x1BD8 DUP2 PUSH2 0x225D JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BF4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x14CF DUP2 PUSH2 0x225D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C10 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C28 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C40 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x14CF DUP4 DUP4 PUSH2 0x1927 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1C62 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2219 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1C88 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2219 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1901 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP3 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0xFFFF SWAP1 SWAP2 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP8 DUP9 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND PUSH1 0x20 DUP10 ADD MSTORE SWAP5 SWAP1 SWAP6 AND PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x60 DUP7 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0xFFFF AND PUSH1 0x80 DUP6 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST SWAP8 DUP9 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND PUSH1 0x20 DUP10 ADD MSTORE SWAP5 SWAP1 SWAP6 AND PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x60 DUP7 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP6 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST SWAP6 DUP7 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x20 DUP8 ADD MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x14CF PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1C4A JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x40 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x22 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x11 SWAP1 DUP3 ADD MSTORE PUSH17 0x24A72B20A624A22FA222A827A9A4AA27A9 PUSH1 0x79 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x11 SWAP1 DUP3 ADD MSTORE PUSH17 0x494E56414C49445F5349474E4154555245 PUSH1 0x78 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x11 SWAP1 DUP3 ADD MSTORE PUSH17 0x1253959053125117D49150D25412515395 PUSH1 0x7A SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x4F4E4C595F4F4E455F414D4F554E545F464F524D41545F414C4C4F5745440000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x12 SWAP1 DUP3 ADD MSTORE PUSH18 0x24A72B20A624A22FA2AC2824A920AA24A7A7 PUSH1 0x71 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xD SWAP1 DUP3 ADD MSTORE PUSH13 0x24A72B20A624A22FA7ABA722A9 PUSH1 0x99 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x73 PUSH1 0xF8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x25 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x40 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x40 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x40 DUP3 ADD MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2234 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x221C JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x16DC JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x225A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x225A JUMPI PUSH1 0x0 DUP1 REVERT INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x2062616C616E636545524332303A207472616E73 PUSH7 0x657220616D6F75 PUSH15 0x74206578636565647320616C6C6F77 PUSH2 0x6E63 PUSH6 0x45524332303A KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x735822122075CC 0xF7 0xF7 0xE7 0xE0 0x21 0xF9 SIGNEXTEND SWAP16 RETURNDATASIZE DUP7 0x4E MOD DUP4 0xC6 DUP5 MUL 0xE6 CREATE2 STOP SWAP7 0xD9 INVALID 0xD6 JUMP 0xD2 0xD7 BLOCKHASH NUMBER RETURNDATACOPY ADDMOD PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "801:14052:92:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2132:75:8;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4048:156;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3111:92::-;;;:::i;:::-;;;;;;;:::i;4638:343::-;;;;;;:::i;:::-;;:::i;4918:212:92:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;12076:119::-;;;:::i;3251:228::-;;;;;;:::i;:::-;;:::i;1173:141::-;;;:::i;2984:75:8:-;;;:::i;:::-;;;;;;;:::i;11745:116:92:-;;;;;;:::i;:::-;;:::i;5350:205:8:-;;;;;;:::i;:::-;;:::i;10972:134:92:-;;;;;;:::i;:::-;;:::i;1827:29::-;;;:::i;:::-;;;;;;;:::i;1793:30::-;;;:::i;1318:205::-;;;:::i;9632:1138::-;;;;;;:::i;:::-;;:::i;3253:111:8:-;;;;;;:::i;:::-;;:::i;974:50:92:-;;;:::i;7460:1144::-;;;;;;:::i;:::-;;:::i;5638:773::-;;;;;;:::i;:::-;;:::i;:::-;;12398:289;;;;;;:::i;:::-;;:::i;1527:215::-;;;:::i;2310:79:8:-;;;:::i;6012:318::-;;;;;;:::i;:::-;;:::i;3549:162::-;;;;;;:::i;:::-;;:::i;1747:42:92:-;;;:::i;2060:::-;;;;;;:::i;:::-;;:::i;3761:165:8:-;;;;;;:::i;:::-;;:::i;4093:199:92:-;;;;;;:::i;:::-;;:::i;11350:116::-;;;;;;:::i;:::-;;:::i;2132:75:8:-;2197:5;2190:12;;;;;;;;-1:-1:-1;;2190:12:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2169:13;;2190:12;;2197:5;;2190:12;;2197:5;2190:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2132:75;:::o;4048:156::-;4131:4;4143:39;4152:12;:10;:12::i;:::-;4166:7;4175:6;4143:8;:39::i;:::-;-1:-1:-1;4195:4:8;4048:156;;;;;:::o;3111:92::-;3186:12;;3111:92;:::o;4638:343::-;4760:4;4772:36;4782:6;4790:9;4801:6;4772:9;:36::i;:::-;4814:145;4830:6;4844:12;:10;:12::i;:::-;4864:89;4902:6;4864:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4864:19:8;;;;;;:11;:19;;;;;;4884:12;:10;:12::i;:::-;-1:-1:-1;;;;;4864:33:8;;;;;;;;;;;;-1:-1:-1;4864:33:8;;;:89;:37;:89::i;:::-;4814:8;:145::i;:::-;-1:-1:-1;4972:4:8;4638:343;;;;;:::o;4918:212:92:-;5037:7;5046;5068:57;5078:10;5090:9;5101:1;5104:6;5112:12;5068:9;:57::i;:::-;5061:64;;;;4918:212;;;;;;:::o;12076:119::-;12135:55;;-1:-1:-1;;;12135:55:92;;12113:7;;-1:-1:-1;;;;;12135:12:92;:39;;;;:55;;12183:5;;12135:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12128:62;;12076:119;:::o;3251:228::-;3383:7;3405:69;3414:10;3426:9;3437:6;3445:12;3459:14;3405:8;:69::i;:::-;3398:76;3251:228;-1:-1:-1;;;;;3251:228:92:o;1173:141::-;1219:95;1173:141;:::o;2984:75:8:-;3045:9;;;;2984:75;:::o;11745:116:92:-;11813:7;11835:21;11849:6;:4;:6::i;:::-;11835;;:13;:21::i;5350:205:8:-;5438:4;5450:83;5459:12;:10;:12::i;:::-;5473:7;5482:50;5521:10;5482:11;:25;5494:12;:10;:12::i;:::-;-1:-1:-1;;;;;5482:25:8;;;;;;;;;;;;;;;;;-1:-1:-1;5482:25:8;;;:34;;;;;;;;;;;:38;:50::i;10972:134:92:-;11038:7;11060:41;11082:18;11092:7;11082:9;:18::i;1827:29::-;;;:::o;1793:30::-;;;:::o;1318:205::-;1369:154;1318:205;:::o;9632:1138::-;9877:7;;-1:-1:-1;;;;;9909:19:92;;9901:49;;;;-1:-1:-1;;;9901:49:92;;;;;;;:::i;:::-;;;;;;;;;10014:8;9995:15;:27;;9987:58;;;;-1:-1:-1;;;9987:58:92;;;;;;;:::i;:::-;-1:-1:-1;;;;;10079:14:92;;10051:25;10079:14;;;:7;:14;;;;;;;10191:27;10210:7;10191:18;:27::i;:::-;1581:161;10318:5;10339:9;10364:12;10392:13;10421:12;10449:17;10482:8;10253:251;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10230:286;;;;;;10141:385;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;10141:385:92;;;;;;;;;10122:412;;10141:385;10122:412;;;;;-1:-1:-1;10557:56:92;;10122:412;;10575:11;;;;:9;:11;:::i;:::-;10588:9;:11;;;10601:9;:11;;;10557:56;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10548:65:92;:5;-1:-1:-1;;;;;10548:65:92;;10540:95;;;;-1:-1:-1;;;10540:95:92;;;;;;;:::i;:::-;10658:24;:17;10680:1;10658:21;:24::i;:::-;-1:-1:-1;;;;;10641:14:92;;;;;;:7;:14;;;;;:41;10695:70;10649:5;10712:9;10723:12;10737:13;10752:12;10695:9;:70::i;:::-;10688:77;;;;;;9632:1138;;;;;;;;;;;:::o;3253:111:8:-;-1:-1:-1;;;;;3341:18:8;3319:7;3341:18;;;;;;;;;;;;3253:111::o;974:50:92:-;1014:10;;;;;;;;;;;;;-1:-1:-1;;;1014:10:92;;;974:50;:::o;7460:1144::-;7701:7;-1:-1:-1;;;;;7724:23:92;;7716:53;;;;-1:-1:-1;;;7716:53:92;;;;;;;:::i;:::-;7833:8;7814:15;:27;;7806:58;;;;-1:-1:-1;;;7806:58:92;;;;;;;:::i;:::-;-1:-1:-1;;;;;7898:18:92;;7870:25;7898:18;;;:7;:18;;;;;;;8014:27;8033:7;8014:18;:27::i;:::-;1369:154;8138:9;8163;8188:5;8209:12;8237:14;8267:17;8300:8;8076:246;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;8053:281;;;;;;7964:380;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;7964:380:92;;;;;;;;;7945:407;;7964:380;7945:407;;;;;-1:-1:-1;8386:56:92;;7945:407;;8404:11;;;;:9;:11;:::i;:::-;8417:9;:11;;;8430:9;:11;;;8386:56;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8373:69:92;:9;-1:-1:-1;;;;;8373:69:92;;8358:117;;;;-1:-1:-1;;;8358:117:92;;;;;;;:::i;:::-;8502:24;:17;8524:1;8502:21;:24::i;:::-;-1:-1:-1;;;;;8481:18:92;;;;;;:7;:18;;;;;:45;8532:67;8489:9;8552;8563:5;8570:12;8584:14;8532:8;:67::i;:::-;;7460:1144;;;;;;;;;;;;:::o;5638:773::-;-1:-1:-1;;;;;5826:19:92;;5818:45;;;;-1:-1:-1;;;5818:45:92;;;;;;;:::i;:::-;5927:8;5908:15;:27;;5900:58;;;;-1:-1:-1;;;5900:58:92;;;;;;;:::i;:::-;-1:-1:-1;;;;;5992:14:92;;5964:25;5992:14;;;:7;:14;;;;;;;6104:27;6123:7;6104:18;:27::i;:::-;1219:95;6181:5;6188:7;6197:5;6204:17;6223:8;6153:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6143:90;;;;;;6054:189;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6035:216;;;;;;6012:239;;6274:26;6284:6;6292:1;6295;6298;6274:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6265:35:92;:5;-1:-1:-1;;;;;6265:35:92;;6257:65;;;;-1:-1:-1;;;6257:65:92;;;;;;;:::i;:::-;6345:24;:17;6367:1;6345:21;:24::i;:::-;-1:-1:-1;;;;;6328:14:92;;;;;;:7;:14;;;;;:41;6375:31;6336:5;6391:7;6400:5;6375:8;:31::i;:::-;5638:773;;;;;;;;;;:::o;12398:289::-;12464:7;1074:95;12574:6;:4;:6::i;:::-;12558:24;;;;;;;1014:10;;;;;;;;;;;-1:-1:-1;;;1014:10:92;;;;12511:163;;;;12594:26;;12632:7;;12659:4;;12511:163;;:::i;:::-;;;;;;;;;;;;;12492:190;;;;;;12479:203;;12398:289;;;:::o;1527:215::-;1581:161;1527:215;:::o;2310:79:8:-;2377:7;2370:14;;;;;;;;-1:-1:-1;;2370:14:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2349:13;;2370:14;;2377:7;;2370:14;;2377:7;2370:14;;;;;;;;;;;;;;;;;;;;;;;;6012:318;6117:4;6131:177;6147:12;:10;:12::i;:::-;6167:7;6182:120;6230:15;6182:120;;;;;;;;;;;;;;;;;:11;:25;6194:12;:10;:12::i;:::-;-1:-1:-1;;;;;6182:25:8;;;;;;;;;;;;;;;;;-1:-1:-1;6182:25:8;;;:34;;;;;;;;;;;:120;:38;:120::i;3549:162::-;3635:4;3647:42;3657:12;:10;:12::i;:::-;3671:9;3682:6;3647:9;:42::i;1747::92:-;;;:::o;2060:::-;;;;;;;;;;;;;:::o;3761:165:8:-;-1:-1:-1;;;;;3894:18:8;;;3870:7;3894:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3761:165::o;4093:199:92:-;4199:7;4208;4230:57;4240:10;4252:9;4263:6;4271:1;4274:12;4230:9;:57::i;11350:116::-;11418:7;11440:21;11454:6;:4;:6::i;:::-;11440;;:13;:21::i;587:98:7:-;670:10;587:98;:::o;8972:338:8:-;-1:-1:-1;;;;;9085:19:8;;9077:68;;;;-1:-1:-1;;;9077:68:8;;;;;;;:::i;:::-;-1:-1:-1;;;;;9159:21:8;;9151:68;;;;-1:-1:-1;;;9151:68:8;;;;;;;:::i;:::-;-1:-1:-1;;;;;9226:18:8;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;9273:32;;;;;9256:6;;9273:32;:::i;:::-;;;;;;;;8972:338;;;:::o;6774:520::-;-1:-1:-1;;;;;6891:20:8;;6883:70;;;;-1:-1:-1;;;6883:70:8;;;;;;;:::i;:::-;-1:-1:-1;;;;;6967:23:8;;6959:71;;;;-1:-1:-1;;;6959:71:8;;;;;;;:::i;:::-;7037:47;7058:6;7066:9;7077:6;7037:20;:47::i;:::-;7111:71;7133:6;7111:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7111:17:8;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;7091:17:8;;;:9;:17;;;;;;;;;;;:91;;;;7211:20;;;;;;;:32;;7236:6;7211:24;:32::i;:::-;-1:-1:-1;;;;;7188:20:8;;;:9;:20;;;;;;;;;;;;:55;;;;7254:35;;;;;;;;;;7282:6;;7254:35;:::i;1649:189:13:-;1751:7;1782:12;1774:6;;;;1766:29;;;;-1:-1:-1;;;1766:29:13;;;;;;;;:::i;:::-;-1:-1:-1;;;1813:5:13;;;1649:189::o;13300:1281:92:-;13459:7;;-1:-1:-1;;;;;13491:23:92;;13483:53;;;;-1:-1:-1;;;13483:53:92;;;;;;;:::i;:::-;13550:17;;;:39;;-1:-1:-1;13571:18:92;;13550:39;13542:82;;;;-1:-1:-1;;;13542:82:92;;;;;;;:::i;:::-;13631:19;13653:16;13663:5;13653:9;:16::i;:::-;13631:38;;13676:24;13706:20;13733:19;13755:6;:4;:6::i;:::-;13733:28;-1:-1:-1;13771:16:92;;13767:557;;13828:11;13813:12;:26;13812:57;;13857:12;13812:57;;;13843:11;13812:57;13797:72;;13912:11;13897:12;:26;13896:147;;13994:49;14017:12;14031:11;13994:22;:49::i;:::-;13896:147;;;13935:48;13958:11;13971;13935:22;:48::i;:::-;13877:166;;13767:557;;;14064:26;14093:48;14116:11;14129;14093:22;:48::i;:::-;14064:77;;14185:18;14169:13;:34;14168:73;;14228:13;14168:73;;;14207:18;14168:73;14149:92;;14264:53;14287:16;14305:11;14264:22;:53::i;:::-;14249:68;;13767:557;;14330:26;14336:5;14343:12;14330:5;:26::i;:::-;14367:12;14363:168;;;14389:66;;-1:-1:-1;;;14389:66:92;;-1:-1:-1;;;;;14389:12:92;:21;;;;:66;;14419:5;;14427:16;;14445:9;;14389:66;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14363:168;;;14476:48;-1:-1:-1;;;;;14476:6:92;:19;14496:9;14507:16;14476:19;:48::i;:::-;-1:-1:-1;14545:12:92;14559:16;;-1:-1:-1;13300:1281:92;-1:-1:-1;;;;;;;13300:1281:92:o;12691:605::-;12847:7;-1:-1:-1;;;;;12870:23:92;;12862:53;;;;-1:-1:-1;;;12862:53:92;;;;;;;:::i;:::-;12926:14;12922:250;;;12950:56;-1:-1:-1;;;;;12950:5:92;:22;12973:9;12992:4;12999:6;12950:22;:56::i;:::-;13014:73;;-1:-1:-1;;;13014:73:92;;-1:-1:-1;;;;;13014:12:92;:20;;;;:73;;13043:5;;13051:6;;13067:4;;13074:12;;13014:73;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12922:250;;;13108:57;-1:-1:-1;;;;;13108:6:92;:23;13132:9;13151:4;13158:6;13108:23;:57::i;:::-;13178:20;13201:29;13223:6;13201:21;:29::i;:::-;13178:52;;13236:30;13242:9;13253:12;13236:5;:30::i;:::-;13279:12;12691:605;-1:-1:-1;;;;;;12691:605:92:o;2416:279:86:-;2508:28;;;;;;;;;;;;-1:-1:-1;;;2508:28:86;;;;2477:7;;2500:6;2492:45;;;;-1:-1:-1;;;2492:45:86;;;;;;;;:::i;:::-;-1:-1:-1;2619:35:86;;;;;;;;;2563:1;2619:35;;;-1:-1:-1;;;2619:35:86;;;;2559:5;;;432:4;2585:25;;2584:33;2579:38;;;2571:84;;;;-1:-1:-1;;;2571:84:86;;;;;;;;:::i;:::-;;2689:1;2680:5;432:4;2670:1;:7;:15;2669:21;;;;;;;2416:279;-1:-1:-1;;;;2416:279:86:o;851:162:13:-;909:7;936:5;;;955:6;;;;947:46;;;;-1:-1:-1;;;947:46:13;;;;;;;:::i;:::-;1007:1;851:162;-1:-1:-1;;;851:162:13:o;2008:253:86:-;2069:7;2088:6;;;:16;;-1:-1:-1;2098:6:86;;2088:16;2084:45;;;-1:-1:-1;2121:1:86;2114:8;;2084:45;2180:1;-1:-1:-1;;2180:1:86;2148:33;;;;;2143:1;:38;;2183:35;;;;;;;;;;;;;-1:-1:-1;;;2183:35:86;;;2135:84;;;;;-1:-1:-1;;;2135:84:86;;;;;;;;:::i;:::-;-1:-1:-1;;432:4:86;2234:5;;476:7;2234:15;2233:23;;2008:253::o;10256:107:8:-;;;;:::o;14720:131:92:-;14805:7;14827:19;:6;14841:4;14827:13;:19::i;14585:131::-;14670:7;14692:19;:6;14706:4;14692:13;:19::i;8187:388:8:-;-1:-1:-1;;;;;8266:21:8;;8258:67;;;;-1:-1:-1;;;8258:67:8;;;;;;;:::i;:::-;8332:49;8353:7;8370:1;8374:6;8332:20;:49::i;:::-;8409:68;8432:6;8409:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8409:18:8;;:9;:18;;;;;;;;;;;;:68;:22;:68::i;:::-;-1:-1:-1;;;;;8388:18:8;;:9;:18;;;;;;;;;;:89;8498:12;;:24;;8515:6;8498:16;:24::i;:::-;8483:12;:39;8533:37;;8559:1;;-1:-1:-1;;;;;8533:37:8;;;;;;;8563:6;;8533:37;:::i;:::-;;;;;;;;8187:388;;:::o;716:184:12:-;810:85;829:5;859:23;;;884:2;888:5;836:58;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;836:58:12;;;;;;;;;;;;;;-1:-1:-1;;;;;836:58:12;-1:-1:-1;;;;;;836:58:12;;;;;;;;;;810:18;:85::i;904:216::-;1020:95;1039:5;1069:27;;;1098:4;1104:2;1108:5;1046:68;;;;;;;;;;:::i;1020:95::-;904:216;;;;:::o;7544:348:8:-;-1:-1:-1;;;;;7623:21:8;;7615:65;;;;-1:-1:-1;;;7615:65:8;;;;;;;:::i;:::-;7687:49;7716:1;7720:7;7729:6;7687:20;:49::i;:::-;7758:12;;:24;;7775:6;7758:16;:24::i;:::-;7743:12;:39;-1:-1:-1;;;;;7809:18:8;;:9;:18;;;;;;;;;;;:30;;7832:6;7809:22;:30::i;:::-;-1:-1:-1;;;;;7788:18:8;;:9;:18;;;;;;;;;;;:51;;;;7850:37;;7788:18;;:9;7850:37;;;;7880:6;;7850:37;:::i;1257:128:13:-;1315:7;1337:43;1341:1;1344;1337:43;;;;;;;;;;;;;;;;;:3;:43::i;1473:555:12:-;1556:27;1564:5;-1:-1:-1;;;;;1556:25:12;;:27::i;:::-;1548:71;;;;-1:-1:-1;;;1548:71:12;;;;;;;:::i;:::-;1682:12;1696:23;1731:5;-1:-1:-1;;;;;1723:19:12;1743:4;1723:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1681:67;;;;1762:7;1754:52;;;;-1:-1:-1;;;1754:52:12;;;;;;;:::i;:::-;1817:17;;:21;1813:211;;1951:10;1940:30;;;;;;;;;;;;:::i;:::-;1932:85;;;;-1:-1:-1;;;1932:85:12;;;;;;;:::i;686:586:6:-;746:4;1185:20;;1032:66;1224:23;;;;;;:42;;-1:-1:-1;1251:15:6;;;1224:42;1216:51;686:586;-1:-1:-1;;;;686:586:6:o;5:130:-1:-;72:20;;-1:-1;;;;;34212:54;;35561:35;;35551:2;;35610:1;;35600:12;589:167;;709:2;700:6;695:3;691:16;687:25;684:2;;;-1:-1;;715:12;684:2;-1:-1;735:15;677:79;-1:-1;677:79::o;1176:126::-;1241:20;;34428:4;34417:16;;36171:33;;36161:2;;36218:1;;36208:12;1309:241;;1413:2;1401:9;1392:7;1388:23;1384:32;1381:2;;;-1:-1;;1419:12;1381:2;1481:53;1526:7;1502:22;1481:53;:::i;1557:366::-;;;1678:2;1666:9;1657:7;1653:23;1649:32;1646:2;;;-1:-1;;1684:12;1646:2;1746:53;1791:7;1767:22;1746:53;:::i;:::-;1736:63;;1854:53;1899:7;1836:2;1879:9;1875:22;1854:53;:::i;:::-;1844:63;;1640:283;;;;;:::o;1930:491::-;;;;2068:2;2056:9;2047:7;2043:23;2039:32;2036:2;;;-1:-1;;2074:12;2036:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;2126:63;-1:-1;2226:2;2265:22;;72:20;97:33;72:20;97:33;:::i;:::-;2030:391;;2234:63;;-1:-1;;;2334:2;2373:22;;;;965:20;;2030:391::o;2428:1185::-;;;;;;;;;2683:3;2671:9;2662:7;2658:23;2654:33;2651:2;;;-1:-1;;2690:12;2651:2;2752:53;2797:7;2773:22;2752:53;:::i;:::-;2742:63;;2860:53;2905:7;2842:2;2885:9;2881:22;2860:53;:::i;:::-;2850:63;;2950:2;2993:9;2989:22;965:20;2958:63;;3058:2;3100:9;3096:22;829:20;34131:6;35953:5;34120:18;35929:5;35926:34;35916:2;;-1:-1;;35964:12;35916:2;3066:62;-1:-1;3165:3;3202:22;;206:20;231:30;206:20;231:30;:::i;:::-;3174:60;-1:-1;3271:3;3311:22;;965:20;;-1:-1;3399:89;3480:7;3380:3;3456:22;;3399:89;:::i;:::-;3389:99;;3525:3;3569:9;3565:22;965:20;3534:63;;2645:968;;;;;;;;;;;:::o;3620:1187::-;;;;;;;;;3876:3;3864:9;3855:7;3851:23;3847:33;3844:2;;;-1:-1;;3883:12;3844:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3935:63;-1:-1;4035:2;4074:22;;72:20;97:33;72:20;97:33;:::i;:::-;4043:63;-1:-1;4143:2;4182:22;;965:20;;-1:-1;4251:2;4290:22;;965:20;;-1:-1;4359:3;4396:22;;206:20;231:30;206:20;231:30;:::i;4814:1117::-;;;;;;;;;5035:3;5023:9;5014:7;5010:23;5006:33;5003:2;;;-1:-1;;5042:12;5003:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;5094:63;-1:-1;5194:2;5233:22;;72:20;97:33;72:20;97:33;:::i;:::-;5202:63;-1:-1;5302:2;5341:22;;965:20;;-1:-1;5410:2;5449:22;;965:20;;-1:-1;5537:51;5580:7;5518:3;5556:22;;5537:51;:::i;:::-;4997:934;;;;-1:-1;4997:934;;;;5527:61;5625:3;5665:22;;475:20;;-1:-1;5734:3;5774:22;;475:20;;5843:3;5883:22;965:20;;-1:-1;4997:934;-1:-1;;4997:934::o;5938:366::-;;;6059:2;6047:9;6038:7;6034:23;6030:32;6027:2;;;-1:-1;;6065:12;6027:2;6127:53;6172:7;6148:22;6127:53;:::i;:::-;6117:63;6217:2;6256:22;;;;965:20;;-1:-1;;;6021:283::o;6311:485::-;;;;6446:2;6434:9;6425:7;6421:23;6417:32;6414:2;;;-1:-1;;6452:12;6414:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;6504:63;-1:-1;6604:2;6643:22;;965:20;;-1:-1;6712:2;6748:22;;206:20;231:30;206:20;231:30;:::i;:::-;6720:60;;;;6408:388;;;;;:::o;6803:609::-;;;;;6954:3;6942:9;6933:7;6929:23;6925:33;6922:2;;;-1:-1;;6961:12;6922:2;7023:53;7068:7;7044:22;7023:53;:::i;:::-;7013:63;;7113:2;7156:9;7152:22;965:20;7121:63;;7221:2;7263:9;7259:22;829:20;34131:6;35953:5;34120:18;35929:5;35926:34;35916:2;;-1:-1;;35964:12;35916:2;7229:62;-1:-1;7328:2;7364:22;;206:20;231:30;206:20;231:30;:::i;:::-;6916:496;;;;-1:-1;6916:496;;-1:-1;;6916:496::o;7419:257::-;;7531:2;7519:9;7510:7;7506:23;7502:32;7499:2;;;-1:-1;;7537:12;7499:2;354:6;348:13;366:30;390:5;366:30;:::i;7683:241::-;;7787:2;7775:9;7766:7;7762:23;7758:32;7755:2;;;-1:-1;;7793:12;7755:2;-1:-1;965:20;;7749:175;-1:-1;7749:175::o;7931:263::-;;8046:2;8034:9;8025:7;8021:23;8017:32;8014:2;;;-1:-1;;8052:12;8014:2;-1:-1;1113:13;;8008:186;-1:-1;8008:186::o;8201:237::-;;8303:2;8291:9;8282:7;8278:23;8274:32;8271:2;;;-1:-1;;8309:12;8271:2;8371:51;8414:7;8390:22;8371:51;:::i;8955:343::-;;9097:5;32970:12;33255:6;33250:3;33243:19;9190:52;9235:6;33292:4;33287:3;33283:14;33292:4;9216:5;9212:16;9190:52;:::i;:::-;35481:7;35465:14;-1:-1;;35461:28;9254:39;;;;33292:4;9254:39;;9045:253;-1:-1;;9045:253::o;16734:271::-;;9465:5;32970:12;9576:52;9621:6;9616:3;9609:4;9602:5;9598:16;9576:52;:::i;:::-;9640:16;;;;;16868:137;-1:-1;;16868:137::o;17012:659::-;-1:-1;;;11397:87;;11382:1;11503:11;;8747:37;;;;17523:12;;;8747:37;17634:12;;;17257:414::o;17678:222::-;-1:-1;;;;;34212:54;;;;8516:37;;17805:2;17790:18;;17776:124::o;17907:444::-;-1:-1;;;;;34212:54;;;8516:37;;34212:54;;;;18254:2;18239:18;;8516:37;18337:2;18322:18;;8747:37;;;;18090:2;18075:18;;18061:290::o;18358:333::-;-1:-1;;;;;34212:54;;;;8516:37;;18677:2;18662:18;;8747:37;18513:2;18498:18;;18484:207::o;18698:444::-;-1:-1;;;;;34212:54;;;8516:37;;19045:2;19030:18;;8747:37;;;;34212:54;;;19128:2;19113:18;;8516:37;18881:2;18866:18;;18852:290::o;19149:552::-;-1:-1;;;;;34212:54;;;8516:37;;19523:2;19508:18;;8747:37;;;;34212:54;;19606:2;19591:18;;8516:37;34131:6;34120:18;;;19687:2;19672:18;;16452:36;19358:3;19343:19;;19329:372::o;19708:210::-;33954:13;;33947:21;8630:34;;19829:2;19814:18;;19800:118::o;19925:222::-;8747:37;;;20052:2;20037:18;;20023:124::o;20154:988::-;8747:37;;;-1:-1;;;;;34212:54;;;20634:2;20619:18;;8516:37;34212:54;;;;20717:2;20702:18;;8516:37;20800:2;20785:18;;8747:37;;;;34131:6;34120:18;20881:3;20866:19;;16452:36;33954:13;33947:21;34223:42;20944:19;;8630:34;21043:3;21028:19;;8747:37;;;;21127:3;21112:19;;8747:37;20469:3;20454:19;;20440:702::o;21149:992::-;8747:37;;;-1:-1;;;;;34212:54;;;21631:2;21616:18;;8516:37;34212:54;;;;21714:2;21699:18;;8516:37;21797:2;21782:18;;8747:37;;;;21880:3;21865:19;;8747:37;33954:13;33947:21;34223:42;21943:19;;8630:34;22042:3;22027:19;;8747:37;;;;22126:3;22111:19;;8747:37;21466:3;21451:19;;21437:704::o;22148:780::-;8747:37;;;-1:-1;;;;;34212:54;;;22580:2;22565:18;;8516:37;34212:54;;;;22663:2;22648:18;;8516:37;22746:2;22731:18;;8747:37;22829:3;22814:19;;8747:37;;;;34223:42;22898:19;;8747:37;22415:3;22400:19;;22386:542::o;22935:668::-;8747:37;;;23339:2;23324:18;;8747:37;;;;23422:2;23407:18;;8747:37;;;;23505:2;23490:18;;8747:37;-1:-1;;;;;34212:54;23588:3;23573:19;;8516:37;23174:3;23159:19;;23145:458::o;23610:548::-;8747:37;;;34428:4;34417:16;;;;23978:2;23963:18;;16687:35;24061:2;24046:18;;8747:37;24144:2;24129:18;;8747:37;23817:3;23802:19;;23788:370::o;24165:306::-;;24310:2;24331:17;24324:47;24385:76;24310:2;24299:9;24295:18;24447:6;24385:76;:::i;25325:416::-;25525:2;25539:47;;;10585:2;25510:18;;;33243:19;10621:34;33283:14;;;10601:55;-1:-1;;;10676:12;;;10669:27;10715:12;;;25496:245::o;25748:416::-;25948:2;25962:47;;;10966:2;25933:18;;;33243:19;11002:34;33283:14;;;10982:55;-1:-1;;;11057:12;;;11050:26;11095:12;;;25919:245::o;26171:416::-;26371:2;26385:47;;;11753:2;26356:18;;;33243:19;11789:29;33283:14;;;11769:50;11838:12;;;26342:245::o;26594:416::-;26794:2;26808:47;;;26779:18;;;33243:19;12125:34;33283:14;;;12105:55;12179:12;;;26765:245::o;27017:416::-;27217:2;27231:47;;;12430:2;27202:18;;;33243:19;-1:-1;;;33283:14;;;12446:40;12505:12;;;27188:245::o;27440:416::-;27640:2;27654:47;;;12756:2;27625:18;;;33243:19;-1:-1;;;33283:14;;;12772:40;12831:12;;;27611:245::o;27863:416::-;28063:2;28077:47;;;13082:2;28048:18;;;33243:19;-1:-1;;;33283:14;;;13098:40;13157:12;;;28034:245::o;28286:416::-;28486:2;28500:47;;;13408:2;28471:18;;;33243:19;13444:32;33283:14;;;13424:53;13496:12;;;28457:245::o;28709:416::-;28909:2;28923:47;;;13747:2;28894:18;;;33243:19;-1:-1;;;33283:14;;;13763:41;13823:12;;;28880:245::o;29132:416::-;29332:2;29346:47;;;14074:2;29317:18;;;33243:19;-1:-1;;;33283:14;;;14090:36;14145:12;;;29303:245::o;29555:416::-;29755:2;29769:47;;;14396:2;29740:18;;;33243:19;14432:34;33283:14;;;14412:55;-1:-1;;;14487:12;;;14480:25;14524:12;;;29726:245::o;29978:416::-;30178:2;30192:47;;;14775:2;30163:18;;;33243:19;14811:34;33283:14;;;14791:55;-1:-1;;;14866:12;;;14859:29;14907:12;;;30149:245::o;30401:416::-;30601:2;30615:47;;;15158:2;30586:18;;;33243:19;15194:34;33283:14;;;15174:55;-1:-1;;;15249:12;;;15242:28;15289:12;;;30572:245::o;30824:416::-;31024:2;31038:47;;;15540:2;31009:18;;;33243:19;15576:34;33283:14;;;15556:55;-1:-1;;;15631:12;;;15624:34;15677:12;;;30995:245::o;31247:416::-;31447:2;31461:47;;;15928:2;31432:18;;;33243:19;15964:33;33283:14;;;15944:54;16017:12;;;31418:245::o;31670:416::-;31870:2;31884:47;;;16268:2;31855:18;;;33243:19;16304:33;33283:14;;;16284:54;16357:12;;;31841:245::o;32322:333::-;8747:37;;;32641:2;32626:18;;8747:37;32477:2;32462:18;;32448:207::o;32662:214::-;34428:4;34417:16;;;;16687:35;;32785:2;32770:18;;32756:120::o;35040:268::-;35105:1;35112:101;35126:6;35123:1;35120:13;35112:101;;;35193:11;;;35187:18;35174:11;;;35167:39;35148:2;35141:10;35112:101;;;35228:6;35225:1;35222:13;35219:2;;;-1:-1;;35105:1;35275:16;;35268:27;35089:219::o;35502:117::-;-1:-1;;;;;34212:54;;35561:35;;35551:2;;35610:1;;35600:12;35551:2;35545:74;:::o;35626:111::-;35707:5;33954:13;33947:21;35685:5;35682:32;35672:2;;35728:1;;35718:12"
            },
            "methodIdentifiers": {
              "ASSET()": "4800d97f",
              "ATOKEN()": "51c0e061",
              "EIP712_REVISION()": "78160376",
              "LENDING_POOL()": "b4dcfc77",
              "METADEPOSIT_TYPEHASH()": "63210537",
              "METAWITHDRAWAL_TYPEHASH()": "8d948415",
              "PERMIT_TYPEHASH()": "30adf81f",
              "_nonces(address)": "b9844d8d",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "deposit(address,uint256,uint16,bool)": "2f2cab87",
              "dynamicBalanceOf(address)": "44b68c3f",
              "dynamicToStaticAmount(uint256)": "36a5a6d6",
              "getDomainSeparator(uint256)": "8a3b3d6f",
              "increaseAllowance(address,uint256)": "39509351",
              "metaDeposit(address,address,uint256,uint16,bool,uint256,(uint8,bytes32,bytes32),uint256)": "81abdab3",
              "metaWithdraw(address,address,uint256,uint256,bool,uint256,(uint8,bytes32,bytes32),uint256)": "69af0ddb",
              "name()": "06fdde03",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32,uint256)": "8a127bfd",
              "rate()": "2c4e722e",
              "staticToDynamicAmount(uint256)": "f57d0b40",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "withdraw(address,uint256,bool)": "ead5d359",
              "withdrawDynamicAmount(address,uint256,bool)": "288587ce"
            }
          }
        }
      },
      "contracts/protocol/tokenization/StaticATokenLM.sol": {
        "ITokenBridge": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "sendMessageStaticAToken",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "sendMessageStaticAToken(uint256)": "06e0ad45"
            }
          }
        },
        "StaticATokenLM": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "aToken",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "staticATokenName",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "staticATokenSymbol",
                  "type": "string"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "ASSET",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "ATOKEN",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "EIP712_REVISION",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "INCENTIVES_CONTROLLER",
              "outputs": [
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "LENDING_POOL",
              "outputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "METADEPOSIT_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "METAWITHDRAWAL_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PERMIT_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "REWARD_TOKEN",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "STATIC_ATOKEN_LM_REVISION",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "UNDERLYING_ASSET_ADDRESS",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "_nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "claimRewards",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "claimRewardsOnBehalf",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "claimRewardsToSelf",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "collectAndUpdateRewards",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "subtractedValue",
                  "type": "uint256"
                }
              ],
              "name": "decreaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint16",
                  "name": "referralCode",
                  "type": "uint16"
                },
                {
                  "internalType": "bool",
                  "name": "fromUnderlying",
                  "type": "bool"
                }
              ],
              "name": "deposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "dynamicBalanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "dynamicToStaticAmount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getClaimableRewards",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getCurrentRewardsIndex",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getDomainSeparator",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getIncentivesController",
              "outputs": [
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getTotalClaimableRewards",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getUnclaimedRewards",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "addedValue",
                  "type": "uint256"
                }
              ],
              "name": "increaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "aToken",
                  "type": "address"
                },
                {
                  "internalType": "string",
                  "name": "staticATokenName",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "staticATokenSymbol",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "l1TokenBridge",
                  "type": "address"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "depositor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint16",
                  "name": "referralCode",
                  "type": "uint16"
                },
                {
                  "internalType": "bool",
                  "name": "fromUnderlying",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "components": [
                    {
                      "internalType": "uint8",
                      "name": "v",
                      "type": "uint8"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "r",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "s",
                      "type": "bytes32"
                    }
                  ],
                  "internalType": "struct IStaticATokenLM.SignatureParams",
                  "name": "sigParams",
                  "type": "tuple"
                }
              ],
              "name": "metaDeposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "staticAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "dynamicAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "toUnderlying",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "components": [
                    {
                      "internalType": "uint8",
                      "name": "v",
                      "type": "uint8"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "r",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "s",
                      "type": "bytes32"
                    }
                  ],
                  "internalType": "struct IStaticATokenLM.SignatureParams",
                  "name": "sigParams",
                  "type": "tuple"
                }
              ],
              "name": "metaWithdraw",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "rate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "staticToDynamicAmount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "toUnderlying",
                  "type": "bool"
                }
              ],
              "name": "withdraw",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "toUnderlying",
                  "type": "bool"
                }
              ],
              "name": "withdrawDynamicAmount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "6080604052600080553480156200001557600080fd5b5060408051808201825260128082527114d510551250d7d05513d2d15397d253541360721b60208084018281528551808701909652928552840152815191929162000063916037916200008f565b508051620000799060389060208401906200008f565b50506039805460ff19166012179055506200012b565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000d257805160ff191683800117855562000102565b8280016001018555821562000102579182015b8281111562000102578251825591602001919060010190620000e5565b506200011092915062000114565b5090565b5b8082111562000110576000815560010162000115565b6136fa806200013b6000396000f3fe608060405234801561001057600080fd5b50600436106102745760003560e01c806369a69e2911610151578063a9059cbb116100c3578063d505accf11610087578063d505accf146104be578063dd62ed3e146104d1578063ead5d359146104e4578063ed24911d146104f7578063ef5cfb8c146104ff578063f57d0b401461051257610274565b8063a9059cbb14610475578063b16a19de14610488578063b4dcfc7714610490578063b9844d8d14610498578063c485852b146104ab57610274565b80638ba2855d116101155780638ba2855d1461042f5780638d9484151461044257806395d89b411461044a57806399248ea714610452578063a457c2d71461045a578063a868dd5d1461046d57610274565b806369a69e29146103f157806370a082311461040457806375d2641314610417578063781603761461041f5780637f372cff1461042757610274565b8063313ce567116101ea57806344b68c3f116101ae57806344b68c3f146103ab5780634800d97f146103be57806351c0e061146103c657806360266557146103ce57806361d0494d146103e157806363210537146103e957610274565b8063313ce56714610353578063362925c21461036857806336a5a6d61461037d57806339509351146103905780633eb2eba6146103a357610274565b806323b872dd1161023c57806323b872dd146102e9578063288587ce146102fc5780632c4e722e1461031d5780632f2cab8714610325578063308e401e1461033857806330adf81f1461034b57610274565b806306fdde0314610279578063095ea7b31461029757806310d0ab22146102b757806318160ddd146102cc578063189956a2146102e1575b600080fd5b610281610525565b60405161028e9190613225565b60405180910390f35b6102aa6102a5366004612cb1565b6105bc565b60405161028e9190613107565b6102bf6105da565b60405161028e9190612fab565b6102d46105e9565b60405161028e9190613112565b6102d46105ef565b6102aa6102f7366004612b2c565b610838565b61030f61030a366004612cdc565b6108c0565b60405161028e929190613590565b6102d46108dd565b6102d4610333366004612d1d565b61096f565b6102d4610346366004612abc565b610987565b6102d46109a3565b61035b6109c7565b60405161028e919061359e565b61037b610376366004612d8b565b6109d0565b005b6102d461038b366004612e73565b610d59565b6102aa61039e366004612cb1565b610d6c565b6102d4610dba565b6102d46103b9366004612abc565b610eac565b6102bf610ec7565b6102bf610ed6565b61030f6103dc366004612bed565b610ee5565b6102d46110fd565b6102d4611102565b6102d46103ff366004612abc565b611126565b6102d4610412366004612abc565b611148565b6102bf611163565b610281611172565b6102d461118f565b61037b61043d366004612af4565b611308565b6102d461140b565b61028161142f565b6102bf611490565b6102aa610468366004612cb1565b61149f565b61037b611507565b6102aa610483366004612cb1565b611528565b6102bf61153c565b6102bf61154b565b6102d46104a6366004612abc565b61155f565b6102d46104b9366004612b6c565b611571565b61037b6104cc366004612c41565b611783565b6102d46104df366004612af4565b611967565b61030f6104f2366004612cdc565b611992565b6102d46119a3565b61037b61050d366004612abc565b611a3b565b6102d4610520366004612e73565b611a5d565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105b15780601f10610586576101008083540402835291602001916105b1565b820191906000526020600020905b81548152906001019060200180831161059457829003601f168201915b505050505090505b90565b60006105d06105c9611a6b565b8484611a6f565b5060015b92915050565b603a546001600160a01b031681565b60365490565b603a54603b54604051631652e7b760e01b81526000928392839283926001600160a01b0390811692631652e7b79261062d9290911690600401612fab565b60606040518083038186803b15801561064557600080fd5b505afa158015610659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067d9190612e31565b92506001600160801b031692506001600160801b031692506000603a60009054906101000a90046001600160a01b03166001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106e557600080fd5b505afa1580156106f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071d9190612e8b565b90506000603b60009054906101000a90046001600160a01b03166001600160a01b031663b1bf962d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561076f57600080fd5b505afa158015610783573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a79190612e8b565b90508315806107b4575080155b806107be57504283145b806107c95750818310155b156107db5784955050505050506105b9565b60008242116107ea57426107ec565b825b905060006107fa8286611b23565b905061082c8761082685610820670de0b6b3a764000061081a8c88611b65565b90611b65565b90611b9f565b90611be1565b97505050505050505090565b6000610845848484611c06565b6108b584610851611a6b565b6108b085604051806060016040528060288152602001613678602891396001600160a01b038a1660009081526035602052604081209061088f611a6b565b6001600160a01b031681526020810191909152604001600020549190611d1b565b611a6f565b5060015b9392505050565b6000806108d1338660008787611d47565b91509150935093915050565b603954603c5460405163d15e005360e01b815260009261010090046001600160a01b039081169263d15e00539261091a9290911690600401612fab565b60206040518083038186803b15801561093257600080fd5b505afa158015610946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096a9190612e8b565b905090565b600061097e3386868686611f0c565b95945050505050565b60006105d48261099684611148565b61099e6105ef565b61201f565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60395460ff1690565b60006109da61204f565b60015490915060ff16806109f157506109f1612054565b806109fd575060005481115b610a225760405162461bcd60e51b8152600401610a199061336a565b60405180910390fd5b60015460ff16158015610a41576001805460ff19168117905560008290555b604180546001600160a01b038086166001600160a01b031992831617909255603980548c841661010002610100600160a81b0319909116179055603b8054928b1692909116919091179055610a98603788886129cb565b50610aa5603886866129cb565b50610b1f886001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610ae257600080fd5b505afa158015610af6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1a9190612ebf565b61205a565b876001600160a01b031663b16a19de6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b5857600080fd5b505afa158015610b6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b909190612ad8565b603c80546001600160a01b0319166001600160a01b039283161790819055610bbc91168a600019612070565b876001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b158015610bf557600080fd5b505afa925050508015610c25575060408051601f3d908101601f19168201909252610c2291810190612ad8565b60015b610c2e57610cf4565b6001600160a01b03811615610cf257603a80546001600160a01b0319166001600160a01b038381169190911791829055604080516399248ea760e01b8152905192909116916399248ea791600480820192602092909190829003018186803b158015610c9957600080fd5b505afa158015610cad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd19190612ad8565b603d80546001600160a01b0319166001600160a01b03929092169190911790555b505b886001600160a01b03167f45705fbd98b82017a03e6b75118b5900c6a3e840d26142e2d30214c0dd7a92df8989898989604051610d35959493929190612ffd565b60405180910390a28015610d4e576001805460ff191690555b505050505050505050565b60006105d482610d676108dd565b61216f565b60006105d0610d79611a6b565b846108b08560356000610d8a611a6b565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611be1565b603a546000906001600160a01b0316610dd5575060006105b9565b604080516001808252818301909252606091602080830190803683375050603b5482519293506001600160a01b031691839150600090610e1157fe5b6001600160a01b039283166020918202929092010152603a54604051633111e7b360e01b8152911690633111e7b390610e549084906000199030906004016130d4565b602060405180830381600087803b158015610e6e57600080fd5b505af1158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612e8b565b91505090565b60006105d4610eba83611148565b610ec26108dd565b61217b565b603c546001600160a01b031681565b603b546001600160a01b031681565b6040805180820190915260018152603160f81b602082015260009081906001600160a01b038a16610f295760405162461bcd60e51b8152600401610a199190613225565b5083421115604051806040016040528060018152602001601960f91b81525090610f665760405162461bcd60e51b8152600401610a199190613225565b506001600160a01b0389166000908152603e602052604081205490610f896119a3565b7fce21806401473655533a882461ca5036529d194f238d3c1793817a552bd133a58c8c8c8c8c888d604051602001610fc8989796959493929190613163565b60405160208183030381529060405280519060200120604051602001610fef929190612f90565b60408051601f1981840301815291905280516020918201209150600190829061101a90880188612ea3565b87602001358860400135604051600081526020016040526040516110419493929190613207565b6020604051602081039080840390855afa158015611063573d6000803e3d6000fd5b505050602060405103516001600160a01b03168b6001600160a01b031614604051806040016040528060018152602001603360f81b815250906110b95760405162461bcd60e51b8152600401610a199190613225565b506110c5826001611be1565b6001600160a01b038c166000908152603e60205260409020556110eb8b8b8b8b8b611d47565b93509350505097509795505050505050565b600181565b7f4dab0a5e832f103ac80c9c3e51e5742f8a24aa0a3d941fe91c64e1e3db50c74381565b6001600160a01b0381166000908152604060208190528120546105d490612187565b6001600160a01b031660009081526034602052604090205490565b603a546001600160a01b031690565b604051806040016040528060018152602001603160f81b81525081565b603a546000906001600160a01b03166111aa575060006105b9565b604080516001808252818301909252606091602080830190803683375050603b5482519293506001600160a01b0316918391506000906111e657fe5b6001600160a01b039283166020918202929092010152603a546040516345accf9360e11b81526000929190911690638b599f269061122a90859030906004016130aa565b60206040518083038186803b15801561124257600080fd5b505afa158015611256573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127a9190612e8b565b603d546040516370a0823160e01b81529192506113019183916001600160a01b0316906370a08231906112b1903090600401612fab565b60206040518083038186803b1580156112c957600080fd5b505afa1580156112dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108269190612e8b565b9250505090565b603a546001600160a01b031661131d57611407565b336001600160a01b03831614806113c45750603a54604051631d36517b60e21b81526001600160a01b03909116906374d945ec9061135f908590600401612fab565b60206040518083038186803b15801561137757600080fd5b505afa15801561138b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113af9190612ad8565b6001600160a01b0316336001600160a01b0316145b604051806040016040528060018152602001601b60f91b815250906113fc5760405162461bcd60e51b8152600401610a199190613225565b506114078282612191565b5050565b7fce21806401473655533a882461ca5036529d194f238d3c1793817a552bd133a581565b60388054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105b15780601f10610586576101008083540402835291602001916105b1565b603d546001600160a01b031681565b60006105d06114ac611a6b565b846108b0856040518060600160405280602581526020016136a060259139603560006114d6611a6b565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611d1b565b603a546001600160a01b031661151c57611526565b6115263333612191565b565b60006105d0611535611a6b565b8484611c06565b603c546001600160a01b031690565b60395461010090046001600160a01b031681565b603e6020526000908152604090205481565b6040805180820190915260018152600d60fa1b60208201526000906001600160a01b0389166115b35760405162461bcd60e51b8152600401610a199190613225565b5082421115604051806040016040528060018152602001601960f91b815250906115f05760405162461bcd60e51b8152600401610a199190613225565b506001600160a01b0388166000908152603e6020526040812054906116136119a3565b7f4dab0a5e832f103ac80c9c3e51e5742f8a24aa0a3d941fe91c64e1e3db50c7438b8b8b8b8b888c60405160200161165298979695949392919061311b565b60405160208183030381529060405280519060200120604051602001611679929190612f90565b60408051601f198184030181529190528051602091820120915060019082906116a490870187612ea3565b86602001358760400135604051600081526020016040526040516116cb9493929190613207565b6020604051602081039080840390855afa1580156116ed573d6000803e3d6000fd5b505050602060405103516001600160a01b03168a6001600160a01b031614604051806040016040528060018152602001603360f81b815250906117435760405162461bcd60e51b8152600401610a199190613225565b5061174f826001611be1565b6001600160a01b038b166000908152603e60205260409020556117758a8a8a8a8a611f0c565b9a9950505050505050505050565b6040805180820190915260018152603160f81b60208201526001600160a01b0388166117c25760405162461bcd60e51b8152600401610a199190613225565b5083421115604051806040016040528060018152602001601960f91b815250906117ff5760405162461bcd60e51b8152600401610a199190613225565b506001600160a01b0387166000908152603e6020526040812054906118226119a3565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a868b60405160200161185d969594939291906131a7565b60405160208183030381529060405280519060200120604051602001611884929190612f90565b604051602081830303815290604052805190602001209050600181868686604051600081526020016040526040516118bf9493929190613207565b6020604051602081039080840390855afa1580156118e1573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614604051806040016040528060018152602001603360f81b815250906119375760405162461bcd60e51b8152600401610a199190613225565b50611943826001611be1565b6001600160a01b038a166000908152603e6020526040902055610d4e898989611a6f565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b6000806108d1338686600087611d47565b6000467f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6119cf610525565b805160209182012060408051808201825260018152603160f81b9084015251611a1f93927fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69186913091016131db565b6040516020818303038152906040528051906020012091505090565b603a546001600160a01b0316611a5057611a5a565b611a5a3382612191565b50565b60006105d482610ec26108dd565b3390565b6001600160a01b038316611a955760405162461bcd60e51b8152600401610a199061343e565b6001600160a01b038216611abb5760405162461bcd60e51b8152600401610a199061327b565b6001600160a01b0380841660008181526035602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611b16908590613112565b60405180910390a3505050565b60006108b983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d1b565b600082611b74575060006105d4565b82820282848281611b8157fe5b04146108b95760405162461bcd60e51b8152600401610a1990613329565b60006108b983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122b1565b6000828201838110156108b95760405162461bcd60e51b8152600401610a19906132bd565b6001600160a01b038316611c2c5760405162461bcd60e51b8152600401610a19906133f9565b6001600160a01b038216611c525760405162461bcd60e51b8152600401610a1990613238565b611c5d8383836122e8565b611c9a81604051806060016040528060268152602001613652602691396001600160a01b0386166000908152603460205260409020549190611d1b565b6001600160a01b038085166000908152603460205260408082209390935590841681522054611cc99082611be1565b6001600160a01b0380841660008181526034602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b16908590613112565b60008184841115611d3f5760405162461bcd60e51b8152600401610a199190613225565b505050900390565b6040805180820190915260018152603560f81b602082015260009081906001600160a01b038716611d8b5760405162461bcd60e51b8152600401610a199190613225565b50841580611d97575083155b604051806040016040528060018152602001603760f81b81525090611dcf5760405162461bcd60e51b8152600401610a199190613225565b506000611ddb88611148565b90506000806000611dea6108dd565b90508815611e1457838911611dff5788611e01565b835b9150611e0d828261217b565b9250611e41565b6000611e20858361217b565b9050808911611e2f5788611e31565b805b9350611e3d848361216f565b9250505b611e4b8b8361237b565b8615611ee657603954603c54604051631a4ca37b60e21b81526001600160a01b036101009093048316926369328dec92611e8e9291169087908f9060040161305a565b602060405180830381600087803b158015611ea857600080fd5b505af1158015611ebc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee09190612e8b565b50611efd565b603b54611efd906001600160a01b03168b8561245d565b50999098509650505050505050565b6040805180820190915260018152603560f81b60208201526000906001600160a01b038616611f4e5760405162461bcd60e51b8152600401610a199190613225565b508115611fe357603c54611f6d906001600160a01b031687308761247c565b603954603c5460405163e8eda9df60e01b81526001600160a01b0361010090930483169263e8eda9df92611fac9291169088903090899060040161307d565b600060405180830381600087803b158015611fc657600080fd5b505af1158015611fda573d6000803e3d6000fd5b50505050611ffb565b603b54611ffb906001600160a01b031687308761247c565b600061200985610d676108dd565b9050612015868261249d565b9695505050505050565b60008061097e612030868686612551565b6001600160a01b03871660009081526040602081905290205490611be1565b600190565b303b1590565b6039805460ff191660ff92909216919091179055565b8015806120f85750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e906120a69030908690600401612fbf565b60206040518083038186803b1580156120be57600080fd5b505afa1580156120d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f69190612e8b565b155b6121145760405162461bcd60e51b8152600401610a19906134cc565b61216a8363095ea7b360e01b8484604051602401612133929190613041565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526125b6565b505050565b60006108b9838361269b565b60006108b98383612746565b633b9aca00900490565b600061219b6105ef565b905060006121a884611148565b905060006121b785838561201f565b603d546040516370a0823160e01b81529192506000916001600160a01b03909116906370a08231906121ed903090600401612fab565b60206040518083038186803b15801561220557600080fd5b505afa158015612219573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223d9190612e8b565b905060008183111561225657612251610dba565b820191505b8183111561226657509081908190035b82156122a8576001600160a01b038716600090815260406020819052902081905561229187866127db565b603d546122a8906001600160a01b0316878561245d565b50505050505050565b600081836122d25760405162461bcd60e51b8152600401610a199190613225565b5060008385816122de57fe5b0495945050505050565b603a546001600160a01b03166122fd5761216a565b60006123076105ef565b90506001600160a01b038416156123225761232284826127f7565b6001600160a01b0383161580159061234c5750826001600160a01b0316846001600160a01b031614155b1561235b5761235b83826127f7565b6041546001600160a01b0316156123755761237581612862565b50505050565b6001600160a01b0382166123a15760405162461bcd60e51b8152600401610a19906133b8565b6123ad826000836122e8565b6123ea81604051806060016040528060228152602001613630602291396001600160a01b0385166000908152603460205260409020549190611d1b565b6001600160a01b0383166000908152603460205260409020556036546124109082611b23565b6036556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612451908590613112565b60405180910390a35050565b61216a8363a9059cbb60e01b8484604051602401612133929190613041565b612375846323b872dd60e01b85858560405160240161213393929190612fd9565b6001600160a01b0382166124c35760405162461bcd60e51b8152600401610a1990613559565b6124cf600083836122e8565b6036546124dc9082611be1565b6036556001600160a01b0382166000908152603460205260409020546125029082611be1565b6001600160a01b0383166000818152603460205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612451908590613112565b603a546000906001600160a01b031661256c575060006108b9565b82612579575060006108b9565b6000612584846128c7565b6001600160a01b0386166000908152603f602052604090205490915061097e906125af908590611b23565b8290612917565b6125c8826001600160a01b031661298f565b6125e45760405162461bcd60e51b8152600401610a1990613522565b60006060836001600160a01b0316836040516126009190612f74565b6000604051808303816000865af19150503d806000811461263d576040519150601f19603f3d011682016040523d82523d6000602084013e612642565b606091505b5091509150816126645760405162461bcd60e51b8152600401610a19906132f4565b805115612375578080602001905181019061267f9190612d6f565b6123755760405162461bcd60e51b8152600401610a1990613482565b604080518082019091526002815261035360f41b6020820152600090826126d55760405162461bcd60e51b8152600401610a199190613225565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156127235760405162461bcd60e51b8152600401610a199190613225565b5082816b033b2e3c9fd0803ce80000008602018161273d57fe5b04949350505050565b6000821580612753575081155b15612760575060006105d4565b816b019d971e4fe8401e74000000198161277657fe5b0483111560405180604001604052806002815260200161068760f31b815250906127b35760405162461bcd60e51b8152600401610a199190613225565b506b033b2e3c9fd0803ce80000008383026b019d971e4fe8401e74000000015b049392505050565b6001600160a01b039091166000908152603f6020526040902055565b600061280283611148565b90508015612858576000612817848385612551565b6001600160a01b03851660009081526040602081905290205490915061283d9082611be1565b6001600160a01b038516600090815260406020819052902055505b61216a83836127db565b6041546040516306e0ad4560e01b81526001600160a01b03909116906306e0ad4590612892908490600401613112565b600060405180830381600087803b1580156128ac57600080fd5b505af11580156128c0573d6000803e3d6000fd5b5050505050565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b815250906129105760405162461bcd60e51b8152600401610a199190613225565b5092915050565b6000821580612924575081155b15612931575060006105d4565b816000198161293c57fe5b0483111560405180604001604052806002815260200161068760f31b815250906129795760405162461bcd60e51b8152600401610a199190613225565b506b033b2e3c9fd0803ce80000008383026127d3565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906129c357508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612a0c5782800160ff19823516178555612a39565b82800160010185558215612a39579182015b82811115612a39578235825591602001919060010190612a1e565b50612a45929150612a49565b5090565b5b80821115612a455760008155600101612a4a565b60008083601f840112612a6f578182fd5b50813567ffffffffffffffff811115612a86578182fd5b602083019150836020828501011115612a9e57600080fd5b9250929050565b600060608284031215612ab6578081fd5b50919050565b600060208284031215612acd578081fd5b81356108b9816135d8565b600060208284031215612ae9578081fd5b81516108b9816135d8565b60008060408385031215612b06578081fd5b8235612b11816135d8565b91506020830135612b21816135d8565b809150509250929050565b600080600060608486031215612b40578081fd5b8335612b4b816135d8565b92506020840135612b5b816135d8565b929592945050506040919091013590565b6000806000806000806000610120888a031215612b87578283fd5b8735612b92816135d8565b96506020880135612ba2816135d8565b9550604088013594506060880135612bb981613610565b93506080880135612bc9816135ed565b925060a08801359150612bdf8960c08a01612aa5565b905092959891949750929550565b6000806000806000806000610120888a031215612c08578283fd5b8735612c13816135d8565b96506020880135612c23816135d8565b955060408801359450606088013593506080880135612bc9816135ed565b600080600080600080600060e0888a031215612c5b578283fd5b8735612c66816135d8565b96506020880135612c76816135d8565b955060408801359450606088013593506080880135612c9481613620565b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215612cc3578182fd5b8235612cce816135d8565b946020939093013593505050565b600080600060608486031215612cf0578081fd5b8335612cfb816135d8565b9250602084013591506040840135612d12816135ed565b809150509250925092565b60008060008060808587031215612d32578182fd5b8435612d3d816135d8565b9350602085013592506040850135612d5481613610565b91506060850135612d64816135ed565b939692955090935050565b600060208284031215612d80578081fd5b81516108b9816135ed565b600080600080600080600060a0888a031215612da5578081fd5b8735612db0816135d8565b96506020880135612dc0816135d8565b9550604088013567ffffffffffffffff80821115612ddc578283fd5b612de88b838c01612a5e565b909750955060608a0135915080821115612e00578283fd5b50612e0d8a828b01612a5e565b9094509250506080880135612e21816135d8565b8091505092959891949750929550565b600080600060608486031215612e45578081fd5b8351612e50816135fb565b6020850151909350612e61816135fb565b80925050604084015190509250925092565b600060208284031215612e84578081fd5b5035919050565b600060208284031215612e9c578081fd5b5051919050565b600060208284031215612eb4578081fd5b81356108b981613620565b600060208284031215612ed0578081fd5b81516108b981613620565b6000815180845260208085019450808401835b83811015612f135781516001600160a01b031687529582019590820190600101612eee565b509495945050505050565b60008151808452612f368160208601602086016135ac565b601f01601f19169290920160200192915050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008251612f868184602087016135ac565b9190910192915050565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03861681526060602082018190526000906130229083018688612f4a565b8281036040840152613035818587612f4a565b98975050505050505050565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6001600160a01b03948516815260208101939093529216604082015261ffff909116606082015260800190565b6000604082526130bd6040830185612edb565b905060018060a01b03831660208301529392505050565b6000606082526130e76060830186612edb565b6020830194909452506001600160a01b0391909116604090910152919050565b901515815260200190565b90815260200190565b9788526001600160a01b039687166020890152949095166040870152606086019290925261ffff166080850152151560a084015260c083019190915260e08201526101000190565b9788526001600160a01b03968716602089015294909516604087015260608601929092526080850152151560a084015260c083019190915260e08201526101000190565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b93845260ff9290921660208401526040830152606082015260800190565b6000602082526108b96020830184612f1e565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526036908201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60408201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606082015260800190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b918252602082015260400190565b60ff91909116815260200190565b60005b838110156135c75781810151838201526020016135af565b838111156123755750506000910152565b6001600160a01b0381168114611a5a57600080fd5b8015158114611a5a57600080fd5b6001600160801b0381168114611a5a57600080fd5b61ffff81168114611a5a57600080fd5b60ff81168114611a5a57600080fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122074b2639f812deb674bc52f31d13ed6053a9af8a1bb4af0a3efc7cd49c89db5d564736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x12 DUP1 DUP3 MSTORE PUSH18 0x14D510551250D7D05513D2D15397D2535413 PUSH1 0x72 SHL PUSH1 0x20 DUP1 DUP5 ADD DUP3 DUP2 MSTORE DUP6 MLOAD DUP1 DUP8 ADD SWAP1 SWAP7 MSTORE SWAP3 DUP6 MSTORE DUP5 ADD MSTORE DUP2 MLOAD SWAP2 SWAP3 SWAP2 PUSH3 0x63 SWAP2 PUSH1 0x37 SWAP2 PUSH3 0x8F JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x79 SWAP1 PUSH1 0x38 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x8F JUMP JUMPDEST POP POP PUSH1 0x39 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP PUSH3 0x12B JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0xD2 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x102 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x102 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x102 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xE5 JUMP JUMPDEST POP PUSH3 0x110 SWAP3 SWAP2 POP PUSH3 0x114 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x110 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x115 JUMP JUMPDEST PUSH2 0x36FA DUP1 PUSH3 0x13B PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x274 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x69A69E29 GT PUSH2 0x151 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0xC3 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x87 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x4BE JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x4D1 JUMPI DUP1 PUSH4 0xEAD5D359 EQ PUSH2 0x4E4 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x4F7 JUMPI DUP1 PUSH4 0xEF5CFB8C EQ PUSH2 0x4FF JUMPI DUP1 PUSH4 0xF57D0B40 EQ PUSH2 0x512 JUMPI PUSH2 0x274 JUMP JUMPDEST DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x475 JUMPI DUP1 PUSH4 0xB16A19DE EQ PUSH2 0x488 JUMPI DUP1 PUSH4 0xB4DCFC77 EQ PUSH2 0x490 JUMPI DUP1 PUSH4 0xB9844D8D EQ PUSH2 0x498 JUMPI DUP1 PUSH4 0xC485852B EQ PUSH2 0x4AB JUMPI PUSH2 0x274 JUMP JUMPDEST DUP1 PUSH4 0x8BA2855D GT PUSH2 0x115 JUMPI DUP1 PUSH4 0x8BA2855D EQ PUSH2 0x42F JUMPI DUP1 PUSH4 0x8D948415 EQ PUSH2 0x442 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x44A JUMPI DUP1 PUSH4 0x99248EA7 EQ PUSH2 0x452 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x45A JUMPI DUP1 PUSH4 0xA868DD5D EQ PUSH2 0x46D JUMPI PUSH2 0x274 JUMP JUMPDEST DUP1 PUSH4 0x69A69E29 EQ PUSH2 0x3F1 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x404 JUMPI DUP1 PUSH4 0x75D26413 EQ PUSH2 0x417 JUMPI DUP1 PUSH4 0x78160376 EQ PUSH2 0x41F JUMPI DUP1 PUSH4 0x7F372CFF EQ PUSH2 0x427 JUMPI PUSH2 0x274 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x1EA JUMPI DUP1 PUSH4 0x44B68C3F GT PUSH2 0x1AE JUMPI DUP1 PUSH4 0x44B68C3F EQ PUSH2 0x3AB JUMPI DUP1 PUSH4 0x4800D97F EQ PUSH2 0x3BE JUMPI DUP1 PUSH4 0x51C0E061 EQ PUSH2 0x3C6 JUMPI DUP1 PUSH4 0x60266557 EQ PUSH2 0x3CE JUMPI DUP1 PUSH4 0x61D0494D EQ PUSH2 0x3E1 JUMPI DUP1 PUSH4 0x63210537 EQ PUSH2 0x3E9 JUMPI PUSH2 0x274 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x353 JUMPI DUP1 PUSH4 0x362925C2 EQ PUSH2 0x368 JUMPI DUP1 PUSH4 0x36A5A6D6 EQ PUSH2 0x37D JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x390 JUMPI DUP1 PUSH4 0x3EB2EBA6 EQ PUSH2 0x3A3 JUMPI PUSH2 0x274 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x23C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2E9 JUMPI DUP1 PUSH4 0x288587CE EQ PUSH2 0x2FC JUMPI DUP1 PUSH4 0x2C4E722E EQ PUSH2 0x31D JUMPI DUP1 PUSH4 0x2F2CAB87 EQ PUSH2 0x325 JUMPI DUP1 PUSH4 0x308E401E EQ PUSH2 0x338 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x34B JUMPI PUSH2 0x274 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x279 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x297 JUMPI DUP1 PUSH4 0x10D0AB22 EQ PUSH2 0x2B7 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2CC JUMPI DUP1 PUSH4 0x189956A2 EQ PUSH2 0x2E1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x281 PUSH2 0x525 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2AA PUSH2 0x2A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CB1 JUMP JUMPDEST PUSH2 0x5BC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x3107 JUMP JUMPDEST PUSH2 0x2BF PUSH2 0x5DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x2FAB JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x5E9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x3112 JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x5EF JUMP JUMPDEST PUSH2 0x2AA PUSH2 0x2F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B2C JUMP JUMPDEST PUSH2 0x838 JUMP JUMPDEST PUSH2 0x30F PUSH2 0x30A CALLDATASIZE PUSH1 0x4 PUSH2 0x2CDC JUMP JUMPDEST PUSH2 0x8C0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP3 SWAP2 SWAP1 PUSH2 0x3590 JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x8DD JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x333 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D1D JUMP JUMPDEST PUSH2 0x96F JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x346 CALLDATASIZE PUSH1 0x4 PUSH2 0x2ABC JUMP JUMPDEST PUSH2 0x987 JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x9A3 JUMP JUMPDEST PUSH2 0x35B PUSH2 0x9C7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x359E JUMP JUMPDEST PUSH2 0x37B PUSH2 0x376 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D8B JUMP JUMPDEST PUSH2 0x9D0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2D4 PUSH2 0x38B CALLDATASIZE PUSH1 0x4 PUSH2 0x2E73 JUMP JUMPDEST PUSH2 0xD59 JUMP JUMPDEST PUSH2 0x2AA PUSH2 0x39E CALLDATASIZE PUSH1 0x4 PUSH2 0x2CB1 JUMP JUMPDEST PUSH2 0xD6C JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0xDBA JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x3B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2ABC JUMP JUMPDEST PUSH2 0xEAC JUMP JUMPDEST PUSH2 0x2BF PUSH2 0xEC7 JUMP JUMPDEST PUSH2 0x2BF PUSH2 0xED6 JUMP JUMPDEST PUSH2 0x30F PUSH2 0x3DC CALLDATASIZE PUSH1 0x4 PUSH2 0x2BED JUMP JUMPDEST PUSH2 0xEE5 JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x10FD JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x1102 JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x3FF CALLDATASIZE PUSH1 0x4 PUSH2 0x2ABC JUMP JUMPDEST PUSH2 0x1126 JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x412 CALLDATASIZE PUSH1 0x4 PUSH2 0x2ABC JUMP JUMPDEST PUSH2 0x1148 JUMP JUMPDEST PUSH2 0x2BF PUSH2 0x1163 JUMP JUMPDEST PUSH2 0x281 PUSH2 0x1172 JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x118F JUMP JUMPDEST PUSH2 0x37B PUSH2 0x43D CALLDATASIZE PUSH1 0x4 PUSH2 0x2AF4 JUMP JUMPDEST PUSH2 0x1308 JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x140B JUMP JUMPDEST PUSH2 0x281 PUSH2 0x142F JUMP JUMPDEST PUSH2 0x2BF PUSH2 0x1490 JUMP JUMPDEST PUSH2 0x2AA PUSH2 0x468 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CB1 JUMP JUMPDEST PUSH2 0x149F JUMP JUMPDEST PUSH2 0x37B PUSH2 0x1507 JUMP JUMPDEST PUSH2 0x2AA PUSH2 0x483 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CB1 JUMP JUMPDEST PUSH2 0x1528 JUMP JUMPDEST PUSH2 0x2BF PUSH2 0x153C JUMP JUMPDEST PUSH2 0x2BF PUSH2 0x154B JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x4A6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2ABC JUMP JUMPDEST PUSH2 0x155F JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x4B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B6C JUMP JUMPDEST PUSH2 0x1571 JUMP JUMPDEST PUSH2 0x37B PUSH2 0x4CC CALLDATASIZE PUSH1 0x4 PUSH2 0x2C41 JUMP JUMPDEST PUSH2 0x1783 JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x4DF CALLDATASIZE PUSH1 0x4 PUSH2 0x2AF4 JUMP JUMPDEST PUSH2 0x1967 JUMP JUMPDEST PUSH2 0x30F PUSH2 0x4F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CDC JUMP JUMPDEST PUSH2 0x1992 JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x19A3 JUMP JUMPDEST PUSH2 0x37B PUSH2 0x50D CALLDATASIZE PUSH1 0x4 PUSH2 0x2ABC JUMP JUMPDEST PUSH2 0x1A3B JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x520 CALLDATASIZE PUSH1 0x4 PUSH2 0x2E73 JUMP JUMPDEST PUSH2 0x1A5D JUMP JUMPDEST PUSH1 0x37 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x5B1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x586 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5B1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x594 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5D0 PUSH2 0x5C9 PUSH2 0x1A6B JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1A6F JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0x3B SLOAD PUSH1 0x40 MLOAD PUSH4 0x1652E7B7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP4 SWAP3 DUP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 PUSH4 0x1652E7B7 SWAP3 PUSH2 0x62D SWAP3 SWAP1 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0x2FAB JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x645 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x659 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x67D SWAP2 SWAP1 PUSH2 0x2E31 JUMP JUMPDEST SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP3 POP PUSH1 0x0 PUSH1 0x3A PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x919CD40F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x71D SWAP2 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3B PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB1BF962D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x76F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x783 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7A7 SWAP2 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST SWAP1 POP DUP4 ISZERO DUP1 PUSH2 0x7B4 JUMPI POP DUP1 ISZERO JUMPDEST DUP1 PUSH2 0x7BE JUMPI POP TIMESTAMP DUP4 EQ JUMPDEST DUP1 PUSH2 0x7C9 JUMPI POP DUP2 DUP4 LT ISZERO JUMPDEST ISZERO PUSH2 0x7DB JUMPI DUP5 SWAP6 POP POP POP POP POP POP PUSH2 0x5B9 JUMP JUMPDEST PUSH1 0x0 DUP3 TIMESTAMP GT PUSH2 0x7EA JUMPI TIMESTAMP PUSH2 0x7EC JUMP JUMPDEST DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x7FA DUP3 DUP7 PUSH2 0x1B23 JUMP JUMPDEST SWAP1 POP PUSH2 0x82C DUP8 PUSH2 0x826 DUP6 PUSH2 0x820 PUSH8 0xDE0B6B3A7640000 PUSH2 0x81A DUP13 DUP9 PUSH2 0x1B65 JUMP JUMPDEST SWAP1 PUSH2 0x1B65 JUMP JUMPDEST SWAP1 PUSH2 0x1B9F JUMP JUMPDEST SWAP1 PUSH2 0x1BE1 JUMP JUMPDEST SWAP8 POP POP POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x845 DUP5 DUP5 DUP5 PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0x8B5 DUP5 PUSH2 0x851 PUSH2 0x1A6B JUMP JUMPDEST PUSH2 0x8B0 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3678 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x88F PUSH2 0x1A6B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1D1B JUMP JUMPDEST PUSH2 0x1A6F JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8D1 CALLER DUP7 PUSH1 0x0 DUP8 DUP8 PUSH2 0x1D47 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x39 SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 PUSH4 0xD15E0053 SWAP3 PUSH2 0x91A SWAP3 SWAP1 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0x2FAB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x932 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x946 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x96A SWAP2 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x97E CALLER DUP7 DUP7 DUP7 DUP7 PUSH2 0x1F0C JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5D4 DUP3 PUSH2 0x996 DUP5 PUSH2 0x1148 JUMP JUMPDEST PUSH2 0x99E PUSH2 0x5EF JUMP JUMPDEST PUSH2 0x201F JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x39 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9DA PUSH2 0x204F JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 PUSH2 0x9F1 JUMPI POP PUSH2 0x9F1 PUSH2 0x2054 JUMP JUMPDEST DUP1 PUSH2 0x9FD JUMPI POP PUSH1 0x0 SLOAD DUP2 GT JUMPDEST PUSH2 0xA22 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP1 PUSH2 0x336A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0xA41 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 OR SWAP1 SSTORE PUSH1 0x0 DUP3 SWAP1 SSTORE JUMPDEST PUSH1 0x41 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x39 DUP1 SLOAD DUP13 DUP5 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE PUSH1 0x3B DUP1 SLOAD SWAP3 DUP12 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0xA98 PUSH1 0x37 DUP9 DUP9 PUSH2 0x29CB JUMP JUMPDEST POP PUSH2 0xAA5 PUSH1 0x38 DUP7 DUP7 PUSH2 0x29CB JUMP JUMPDEST POP PUSH2 0xB1F DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB1A SWAP2 SWAP1 PUSH2 0x2EBF JUMP JUMPDEST PUSH2 0x205A JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB16A19DE PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB6C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB90 SWAP2 SWAP1 PUSH2 0x2AD8 JUMP JUMPDEST PUSH1 0x3C DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 DUP2 SWAP1 SSTORE PUSH2 0xBBC SWAP2 AND DUP11 PUSH1 0x0 NOT PUSH2 0x2070 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x75D26413 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xC25 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xC22 SWAP2 DUP2 ADD SWAP1 PUSH2 0x2AD8 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xC2E JUMPI PUSH2 0xCF4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0xCF2 JUMPI PUSH1 0x3A DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x99248EA7 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH4 0x99248EA7 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCAD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCD1 SWAP2 SWAP1 PUSH2 0x2AD8 JUMP JUMPDEST PUSH1 0x3D DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST POP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x45705FBD98B82017A03E6B75118B5900C6A3E840D26142E2D30214C0DD7A92DF DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH2 0xD35 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2FFD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP1 ISZERO PUSH2 0xD4E JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5D4 DUP3 PUSH2 0xD67 PUSH2 0x8DD JUMP JUMPDEST PUSH2 0x216F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5D0 PUSH2 0xD79 PUSH2 0x1A6B JUMP JUMPDEST DUP5 PUSH2 0x8B0 DUP6 PUSH1 0x35 PUSH1 0x0 PUSH2 0xD8A PUSH2 0x1A6B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x1BE1 JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDD5 JUMPI POP PUSH1 0x0 PUSH2 0x5B9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP PUSH1 0x3B SLOAD DUP3 MLOAD SWAP3 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP4 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0xE11 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE PUSH1 0x3A SLOAD PUSH1 0x40 MLOAD PUSH4 0x3111E7B3 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 AND SWAP1 PUSH4 0x3111E7B3 SWAP1 PUSH2 0xE54 SWAP1 DUP5 SWAP1 PUSH1 0x0 NOT SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x30D4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE82 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xEA6 SWAP2 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5D4 PUSH2 0xEBA DUP4 PUSH2 0x1148 JUMP JUMPDEST PUSH2 0xEC2 PUSH2 0x8DD JUMP JUMPDEST PUSH2 0x217B JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH2 0xF29 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP DUP4 TIMESTAMP GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x19 PUSH1 0xF9 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xF66 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3E PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH2 0xF89 PUSH2 0x19A3 JUMP JUMPDEST PUSH32 0xCE21806401473655533A882461CA5036529D194F238D3C1793817A552BD133A5 DUP13 DUP13 DUP13 DUP13 DUP13 DUP9 DUP14 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xFC8 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3163 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xFEF SWAP3 SWAP2 SWAP1 PUSH2 0x2F90 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 SWAP2 POP PUSH1 0x1 SWAP1 DUP3 SWAP1 PUSH2 0x101A SWAP1 DUP9 ADD DUP9 PUSH2 0x2EA3 JUMP JUMPDEST DUP8 PUSH1 0x20 ADD CALLDATALOAD DUP9 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x1041 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3207 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1063 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x33 PUSH1 0xF8 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x10B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP PUSH2 0x10C5 DUP3 PUSH1 0x1 PUSH2 0x1BE1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3E PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x10EB DUP12 DUP12 DUP12 DUP12 DUP12 PUSH2 0x1D47 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH32 0x4DAB0A5E832F103AC80C9C3E51E5742F8A24AA0A3D941FE91C64E1E3DB50C743 DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP2 SWAP1 MSTORE DUP2 KECCAK256 SLOAD PUSH2 0x5D4 SWAP1 PUSH2 0x2187 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11AA JUMPI POP PUSH1 0x0 PUSH2 0x5B9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP PUSH1 0x3B SLOAD DUP3 MLOAD SWAP3 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP4 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x11E6 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE PUSH1 0x3A SLOAD PUSH1 0x40 MLOAD PUSH4 0x45ACCF93 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x8B599F26 SWAP1 PUSH2 0x122A SWAP1 DUP6 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x30AA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1242 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1256 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x127A SWAP2 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP3 POP PUSH2 0x1301 SWAP2 DUP4 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x12B1 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2FAB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12DD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x826 SWAP2 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x131D JUMPI PUSH2 0x1407 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ DUP1 PUSH2 0x13C4 JUMPI POP PUSH1 0x3A SLOAD PUSH1 0x40 MLOAD PUSH4 0x1D36517B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x74D945EC SWAP1 PUSH2 0x135F SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2FAB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x138B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13AF SWAP2 SWAP1 PUSH2 0x2AD8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1B PUSH1 0xF9 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x13FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP PUSH2 0x1407 DUP3 DUP3 PUSH2 0x2191 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0xCE21806401473655533A882461CA5036529D194F238D3C1793817A552BD133A5 DUP2 JUMP JUMPDEST PUSH1 0x38 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x5B1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x586 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5B1 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5D0 PUSH2 0x14AC PUSH2 0x1A6B JUMP JUMPDEST DUP5 PUSH2 0x8B0 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x36A0 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x35 PUSH1 0x0 PUSH2 0x14D6 PUSH2 0x1A6B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1D1B JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x151C JUMPI PUSH2 0x1526 JUMP JUMPDEST PUSH2 0x1526 CALLER CALLER PUSH2 0x2191 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5D0 PUSH2 0x1535 PUSH2 0x1A6B JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1C06 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x39 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3E PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0xD PUSH1 0xFA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH2 0x15B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP DUP3 TIMESTAMP GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x19 PUSH1 0xF9 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x15F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3E PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH2 0x1613 PUSH2 0x19A3 JUMP JUMPDEST PUSH32 0x4DAB0A5E832F103AC80C9C3E51E5742F8A24AA0A3D941FE91C64E1E3DB50C743 DUP12 DUP12 DUP12 DUP12 DUP12 DUP9 DUP13 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1652 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x311B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1679 SWAP3 SWAP2 SWAP1 PUSH2 0x2F90 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 SWAP2 POP PUSH1 0x1 SWAP1 DUP3 SWAP1 PUSH2 0x16A4 SWAP1 DUP8 ADD DUP8 PUSH2 0x2EA3 JUMP JUMPDEST DUP7 PUSH1 0x20 ADD CALLDATALOAD DUP8 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x16CB SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3207 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x33 PUSH1 0xF8 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1743 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP PUSH2 0x174F DUP3 PUSH1 0x1 PUSH2 0x1BE1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3E PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x1775 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x1F0C JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH2 0x17C2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP DUP4 TIMESTAMP GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x19 PUSH1 0xF9 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x17FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3E PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH2 0x1822 PUSH2 0x19A3 JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP11 DUP11 DUP11 DUP7 DUP12 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x185D SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x31A7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1884 SWAP3 SWAP2 SWAP1 PUSH2 0x2F90 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x1 DUP2 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x18BF SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3207 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x33 PUSH1 0xF8 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1937 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP PUSH2 0x1943 DUP3 PUSH1 0x1 PUSH2 0x1BE1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3E PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xD4E DUP10 DUP10 DUP10 PUSH2 0x1A6F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8D1 CALLER DUP7 DUP7 PUSH1 0x0 DUP8 PUSH2 0x1D47 JUMP JUMPDEST PUSH1 0x0 CHAINID PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH2 0x19CF PUSH2 0x525 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP5 ADD MSTORE MLOAD PUSH2 0x1A1F SWAP4 SWAP3 PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 SWAP2 DUP7 SWAP2 ADDRESS SWAP2 ADD PUSH2 0x31DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A50 JUMPI PUSH2 0x1A5A JUMP JUMPDEST PUSH2 0x1A5A CALLER DUP3 PUSH2 0x2191 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5D4 DUP3 PUSH2 0xEC2 PUSH2 0x8DD JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1A95 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP1 PUSH2 0x343E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1ABB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP1 PUSH2 0x327B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x1B16 SWAP1 DUP6 SWAP1 PUSH2 0x3112 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8B9 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1D1B JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1B74 JUMPI POP PUSH1 0x0 PUSH2 0x5D4 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1B81 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x8B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP1 PUSH2 0x3329 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8B9 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x22B1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x8B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP1 PUSH2 0x32BD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1C2C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP1 PUSH2 0x33F9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1C52 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP1 PUSH2 0x3238 JUMP JUMPDEST PUSH2 0x1C5D DUP4 DUP4 DUP4 PUSH2 0x22E8 JUMP JUMPDEST PUSH2 0x1C9A DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3652 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1D1B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x1CC9 SWAP1 DUP3 PUSH2 0x1BE1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x1B16 SWAP1 DUP6 SWAP1 PUSH2 0x3112 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1D3F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x35 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x1D8B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP DUP5 ISZERO DUP1 PUSH2 0x1D97 JUMPI POP DUP4 ISZERO JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x37 PUSH1 0xF8 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1DCF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x1DDB DUP9 PUSH2 0x1148 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1DEA PUSH2 0x8DD JUMP JUMPDEST SWAP1 POP DUP9 ISZERO PUSH2 0x1E14 JUMPI DUP4 DUP10 GT PUSH2 0x1DFF JUMPI DUP9 PUSH2 0x1E01 JUMP JUMPDEST DUP4 JUMPDEST SWAP2 POP PUSH2 0x1E0D DUP3 DUP3 PUSH2 0x217B JUMP JUMPDEST SWAP3 POP PUSH2 0x1E41 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E20 DUP6 DUP4 PUSH2 0x217B JUMP JUMPDEST SWAP1 POP DUP1 DUP10 GT PUSH2 0x1E2F JUMPI DUP9 PUSH2 0x1E31 JUMP JUMPDEST DUP1 JUMPDEST SWAP4 POP PUSH2 0x1E3D DUP5 DUP4 PUSH2 0x216F JUMP JUMPDEST SWAP3 POP POP JUMPDEST PUSH2 0x1E4B DUP12 DUP4 PUSH2 0x237B JUMP JUMPDEST DUP7 ISZERO PUSH2 0x1EE6 JUMPI PUSH1 0x39 SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x100 SWAP1 SWAP4 DIV DUP4 AND SWAP3 PUSH4 0x69328DEC SWAP3 PUSH2 0x1E8E SWAP3 SWAP2 AND SWAP1 DUP8 SWAP1 DUP16 SWAP1 PUSH1 0x4 ADD PUSH2 0x305A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EBC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1EE0 SWAP2 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST POP PUSH2 0x1EFD JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH2 0x1EFD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 DUP6 PUSH2 0x245D JUMP JUMPDEST POP SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x35 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x1F4E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x1FE3 JUMPI PUSH1 0x3C SLOAD PUSH2 0x1F6D SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 ADDRESS DUP8 PUSH2 0x247C JUMP JUMPDEST PUSH1 0x39 SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 MLOAD PUSH4 0xE8EDA9DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x100 SWAP1 SWAP4 DIV DUP4 AND SWAP3 PUSH4 0xE8EDA9DF SWAP3 PUSH2 0x1FAC SWAP3 SWAP2 AND SWAP1 DUP9 SWAP1 ADDRESS SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x307D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1FDA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1FFB JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH2 0x1FFB SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 ADDRESS DUP8 PUSH2 0x247C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2009 DUP6 PUSH2 0xD67 PUSH2 0x8DD JUMP JUMPDEST SWAP1 POP PUSH2 0x2015 DUP7 DUP3 PUSH2 0x249D JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x97E PUSH2 0x2030 DUP7 DUP7 DUP7 PUSH2 0x2551 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x1BE1 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x39 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 ISZERO DUP1 PUSH2 0x20F8 JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x20A6 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2FBF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x20D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x20F6 SWAP2 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST ISZERO JUMPDEST PUSH2 0x2114 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP1 PUSH2 0x34CC JUMP JUMPDEST PUSH2 0x216A DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2133 SWAP3 SWAP2 SWAP1 PUSH2 0x3041 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x25B6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8B9 DUP4 DUP4 PUSH2 0x269B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8B9 DUP4 DUP4 PUSH2 0x2746 JUMP JUMPDEST PUSH4 0x3B9ACA00 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x219B PUSH2 0x5EF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x21A8 DUP5 PUSH2 0x1148 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x21B7 DUP6 DUP4 DUP6 PUSH2 0x201F JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x21ED SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2FAB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2219 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x223D SWAP2 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP4 GT ISZERO PUSH2 0x2256 JUMPI PUSH2 0x2251 PUSH2 0xDBA JUMP JUMPDEST DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP4 GT ISZERO PUSH2 0x2266 JUMPI POP SWAP1 DUP2 SWAP1 DUP2 SWAP1 SUB JUMPDEST DUP3 ISZERO PUSH2 0x22A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH2 0x2291 DUP8 DUP7 PUSH2 0x27DB JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH2 0x22A8 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP6 PUSH2 0x245D JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x22D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x22DE JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x22FD JUMPI PUSH2 0x216A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2307 PUSH2 0x5EF JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO PUSH2 0x2322 JUMPI PUSH2 0x2322 DUP5 DUP3 PUSH2 0x27F7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x234C JUMPI POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x235B JUMPI PUSH2 0x235B DUP4 DUP3 PUSH2 0x27F7 JUMP JUMPDEST PUSH1 0x41 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x2375 JUMPI PUSH2 0x2375 DUP2 PUSH2 0x2862 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x23A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP1 PUSH2 0x33B8 JUMP JUMPDEST PUSH2 0x23AD DUP3 PUSH1 0x0 DUP4 PUSH2 0x22E8 JUMP JUMPDEST PUSH2 0x23EA DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3630 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1D1B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x36 SLOAD PUSH2 0x2410 SWAP1 DUP3 PUSH2 0x1B23 JUMP JUMPDEST PUSH1 0x36 SSTORE PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x2451 SWAP1 DUP6 SWAP1 PUSH2 0x3112 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x216A DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2133 SWAP3 SWAP2 SWAP1 PUSH2 0x3041 JUMP JUMPDEST PUSH2 0x2375 DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2133 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2FD9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x24C3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP1 PUSH2 0x3559 JUMP JUMPDEST PUSH2 0x24CF PUSH1 0x0 DUP4 DUP4 PUSH2 0x22E8 JUMP JUMPDEST PUSH1 0x36 SLOAD PUSH2 0x24DC SWAP1 DUP3 PUSH2 0x1BE1 JUMP JUMPDEST PUSH1 0x36 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2502 SWAP1 DUP3 PUSH2 0x1BE1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x2451 SWAP1 DUP6 SWAP1 PUSH2 0x3112 JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x256C JUMPI POP PUSH1 0x0 PUSH2 0x8B9 JUMP JUMPDEST DUP3 PUSH2 0x2579 JUMPI POP PUSH1 0x0 PUSH2 0x8B9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2584 DUP5 PUSH2 0x28C7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3F PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x97E SWAP1 PUSH2 0x25AF SWAP1 DUP6 SWAP1 PUSH2 0x1B23 JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x2917 JUMP JUMPDEST PUSH2 0x25C8 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x298F JUMP JUMPDEST PUSH2 0x25E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP1 PUSH2 0x3522 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x2600 SWAP2 SWAP1 PUSH2 0x2F74 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x263D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2642 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2664 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP1 PUSH2 0x32F4 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2375 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x267F SWAP2 SWAP1 PUSH2 0x2D6F JUMP JUMPDEST PUSH2 0x2375 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP1 PUSH2 0x3482 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x26D5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x2723 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x273D JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x2753 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x2760 JUMPI POP PUSH1 0x0 PUSH2 0x5D4 JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x2776 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x27B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP PUSH12 0x33B2E3C9FD0803CE8000000 DUP4 DUP4 MUL PUSH12 0x19D971E4FE8401E74000000 ADD JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3F PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2802 DUP4 PUSH2 0x1148 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2858 JUMPI PUSH1 0x0 PUSH2 0x2817 DUP5 DUP4 DUP6 PUSH2 0x2551 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x283D SWAP1 DUP3 PUSH2 0x1BE1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 KECCAK256 SSTORE POP JUMPDEST PUSH2 0x216A DUP4 DUP4 PUSH2 0x27DB JUMP JUMPDEST PUSH1 0x41 SLOAD PUSH1 0x40 MLOAD PUSH4 0x6E0AD45 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x6E0AD45 SWAP1 PUSH2 0x2892 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x3112 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x28AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x28C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0x3B9ACA00 DUP3 DUP2 MUL SWAP1 DUP4 SWAP1 DUP3 DIV EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x2910 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x2924 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x2931 JUMPI POP PUSH1 0x0 PUSH2 0x5D4 JUMP JUMPDEST DUP2 PUSH1 0x0 NOT DUP2 PUSH2 0x293C JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x2979 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP PUSH12 0x33B2E3C9FD0803CE8000000 DUP4 DUP4 MUL PUSH2 0x27D3 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x29C3 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x2A0C JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x2A39 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x2A39 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2A39 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2A1E JUMP JUMPDEST POP PUSH2 0x2A45 SWAP3 SWAP2 POP PUSH2 0x2A49 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2A45 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2A4A JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2A6F JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2A86 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2A9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AB6 JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2ACD JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x8B9 DUP2 PUSH2 0x35D8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AE9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x8B9 DUP2 PUSH2 0x35D8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B06 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2B11 DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2B21 DUP2 PUSH2 0x35D8 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2B40 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2B4B DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2B5B DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2B87 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x2B92 DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x2BA2 DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x2BB9 DUP2 PUSH2 0x3610 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH2 0x2BC9 DUP2 PUSH2 0x35ED JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH2 0x2BDF DUP10 PUSH1 0xC0 DUP11 ADD PUSH2 0x2AA5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2C08 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x2C13 DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x2C23 DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH2 0x2BC9 DUP2 PUSH2 0x35ED JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2C5B JUMPI DUP3 DUP4 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x2C66 DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x2C76 DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH2 0x2C94 DUP2 PUSH2 0x3620 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2CC3 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2CCE DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2CF0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2CFB DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x2D12 DUP2 PUSH2 0x35ED JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2D32 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2D3D DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x2D54 DUP2 PUSH2 0x3610 JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x2D64 DUP2 PUSH2 0x35ED JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D80 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x8B9 DUP2 PUSH2 0x35ED JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2DA5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x2DB0 DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x2DC0 DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2DDC JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2DE8 DUP12 DUP4 DUP13 ADD PUSH2 0x2A5E JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH1 0x60 DUP11 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2E00 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x2E0D DUP11 DUP3 DUP12 ADD PUSH2 0x2A5E JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH2 0x2E21 DUP2 PUSH2 0x35D8 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2E45 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x2E50 DUP2 PUSH2 0x35FB JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH2 0x2E61 DUP2 PUSH2 0x35FB JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E84 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E9C JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2EB4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x8B9 DUP2 PUSH2 0x3620 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2ED0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x8B9 DUP2 PUSH2 0x3620 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2F13 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2EEE JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x2F36 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x35AC JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE DUP3 DUP3 PUSH1 0x20 DUP7 ADD CALLDATACOPY DUP1 PUSH1 0x20 DUP5 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP6 ADD ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2F86 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x35AC JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1901 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x3022 SWAP1 DUP4 ADD DUP7 DUP9 PUSH2 0x2F4A JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x3035 DUP2 DUP6 DUP8 PUSH2 0x2F4A JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP3 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0xFFFF SWAP1 SWAP2 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 MSTORE PUSH2 0x30BD PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2EDB JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 MSTORE PUSH2 0x30E7 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x2EDB JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP8 DUP9 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND PUSH1 0x20 DUP10 ADD MSTORE SWAP5 SWAP1 SWAP6 AND PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x60 DUP7 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0xFFFF AND PUSH1 0x80 DUP6 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST SWAP8 DUP9 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND PUSH1 0x20 DUP10 ADD MSTORE SWAP5 SWAP1 SWAP6 AND PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x60 DUP7 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP6 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST SWAP6 DUP7 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x20 DUP8 ADD MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x8B9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2F1E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x40 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x22 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x436F6E747261637420696E7374616E63652068617320616C7265616479206265 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x195B881A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x73 PUSH1 0xF8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x25 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x40 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x40 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x40 DUP3 ADD MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x36 SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A20617070726F76652066726F6D206E6F6E2D7A65726F PUSH1 0x40 DUP3 ADD MSTORE PUSH22 0x20746F206E6F6E2D7A65726F20616C6C6F77616E6365 PUSH1 0x50 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x35C7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x35AF JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2375 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1A5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1A5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1A5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x1A5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x1A5A JUMPI PUSH1 0x0 DUP1 REVERT INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x2062616C616E636545524332303A207472616E73 PUSH7 0x657220616D6F75 PUSH15 0x74206578636565647320616C6C6F77 PUSH2 0x6E63 PUSH6 0x45524332303A KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x735822122074B2 PUSH4 0x9F812DEB PUSH8 0x4BC52F31D13ED605 GASPRICE SWAP11 0xF8 LOG1 0xBB 0x4A CREATE LOG3 0xEF 0xC7 0xCD 0x49 0xC8 SWAP14 0xB5 0xD5 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "1697:17332:93:-:0;;;926:1:74;884:43;;1697:17332:93;;;;;;;;;-1:-1:-1;1949:126:8;;;;;;;;;;;;-1:-1:-1;;;1949:126:8;;;;;;;;;;;;;;;;;;;;;2016:12;;1949:126;;;2016:12;;:5;;:12;:::i;:::-;-1:-1:-1;2034:16:8;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;;2056:9:8;:14;;-1:-1:-1;;2056:14:8;2068:2;2056:14;;;-1:-1:-1;1697:17332:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1697:17332:93;;;-1:-1:-1;1697:17332:93;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106102745760003560e01c806369a69e2911610151578063a9059cbb116100c3578063d505accf11610087578063d505accf146104be578063dd62ed3e146104d1578063ead5d359146104e4578063ed24911d146104f7578063ef5cfb8c146104ff578063f57d0b401461051257610274565b8063a9059cbb14610475578063b16a19de14610488578063b4dcfc7714610490578063b9844d8d14610498578063c485852b146104ab57610274565b80638ba2855d116101155780638ba2855d1461042f5780638d9484151461044257806395d89b411461044a57806399248ea714610452578063a457c2d71461045a578063a868dd5d1461046d57610274565b806369a69e29146103f157806370a082311461040457806375d2641314610417578063781603761461041f5780637f372cff1461042757610274565b8063313ce567116101ea57806344b68c3f116101ae57806344b68c3f146103ab5780634800d97f146103be57806351c0e061146103c657806360266557146103ce57806361d0494d146103e157806363210537146103e957610274565b8063313ce56714610353578063362925c21461036857806336a5a6d61461037d57806339509351146103905780633eb2eba6146103a357610274565b806323b872dd1161023c57806323b872dd146102e9578063288587ce146102fc5780632c4e722e1461031d5780632f2cab8714610325578063308e401e1461033857806330adf81f1461034b57610274565b806306fdde0314610279578063095ea7b31461029757806310d0ab22146102b757806318160ddd146102cc578063189956a2146102e1575b600080fd5b610281610525565b60405161028e9190613225565b60405180910390f35b6102aa6102a5366004612cb1565b6105bc565b60405161028e9190613107565b6102bf6105da565b60405161028e9190612fab565b6102d46105e9565b60405161028e9190613112565b6102d46105ef565b6102aa6102f7366004612b2c565b610838565b61030f61030a366004612cdc565b6108c0565b60405161028e929190613590565b6102d46108dd565b6102d4610333366004612d1d565b61096f565b6102d4610346366004612abc565b610987565b6102d46109a3565b61035b6109c7565b60405161028e919061359e565b61037b610376366004612d8b565b6109d0565b005b6102d461038b366004612e73565b610d59565b6102aa61039e366004612cb1565b610d6c565b6102d4610dba565b6102d46103b9366004612abc565b610eac565b6102bf610ec7565b6102bf610ed6565b61030f6103dc366004612bed565b610ee5565b6102d46110fd565b6102d4611102565b6102d46103ff366004612abc565b611126565b6102d4610412366004612abc565b611148565b6102bf611163565b610281611172565b6102d461118f565b61037b61043d366004612af4565b611308565b6102d461140b565b61028161142f565b6102bf611490565b6102aa610468366004612cb1565b61149f565b61037b611507565b6102aa610483366004612cb1565b611528565b6102bf61153c565b6102bf61154b565b6102d46104a6366004612abc565b61155f565b6102d46104b9366004612b6c565b611571565b61037b6104cc366004612c41565b611783565b6102d46104df366004612af4565b611967565b61030f6104f2366004612cdc565b611992565b6102d46119a3565b61037b61050d366004612abc565b611a3b565b6102d4610520366004612e73565b611a5d565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105b15780601f10610586576101008083540402835291602001916105b1565b820191906000526020600020905b81548152906001019060200180831161059457829003601f168201915b505050505090505b90565b60006105d06105c9611a6b565b8484611a6f565b5060015b92915050565b603a546001600160a01b031681565b60365490565b603a54603b54604051631652e7b760e01b81526000928392839283926001600160a01b0390811692631652e7b79261062d9290911690600401612fab565b60606040518083038186803b15801561064557600080fd5b505afa158015610659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067d9190612e31565b92506001600160801b031692506001600160801b031692506000603a60009054906101000a90046001600160a01b03166001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106e557600080fd5b505afa1580156106f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071d9190612e8b565b90506000603b60009054906101000a90046001600160a01b03166001600160a01b031663b1bf962d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561076f57600080fd5b505afa158015610783573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a79190612e8b565b90508315806107b4575080155b806107be57504283145b806107c95750818310155b156107db5784955050505050506105b9565b60008242116107ea57426107ec565b825b905060006107fa8286611b23565b905061082c8761082685610820670de0b6b3a764000061081a8c88611b65565b90611b65565b90611b9f565b90611be1565b97505050505050505090565b6000610845848484611c06565b6108b584610851611a6b565b6108b085604051806060016040528060288152602001613678602891396001600160a01b038a1660009081526035602052604081209061088f611a6b565b6001600160a01b031681526020810191909152604001600020549190611d1b565b611a6f565b5060015b9392505050565b6000806108d1338660008787611d47565b91509150935093915050565b603954603c5460405163d15e005360e01b815260009261010090046001600160a01b039081169263d15e00539261091a9290911690600401612fab565b60206040518083038186803b15801561093257600080fd5b505afa158015610946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096a9190612e8b565b905090565b600061097e3386868686611f0c565b95945050505050565b60006105d48261099684611148565b61099e6105ef565b61201f565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60395460ff1690565b60006109da61204f565b60015490915060ff16806109f157506109f1612054565b806109fd575060005481115b610a225760405162461bcd60e51b8152600401610a199061336a565b60405180910390fd5b60015460ff16158015610a41576001805460ff19168117905560008290555b604180546001600160a01b038086166001600160a01b031992831617909255603980548c841661010002610100600160a81b0319909116179055603b8054928b1692909116919091179055610a98603788886129cb565b50610aa5603886866129cb565b50610b1f886001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610ae257600080fd5b505afa158015610af6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1a9190612ebf565b61205a565b876001600160a01b031663b16a19de6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b5857600080fd5b505afa158015610b6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b909190612ad8565b603c80546001600160a01b0319166001600160a01b039283161790819055610bbc91168a600019612070565b876001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b158015610bf557600080fd5b505afa925050508015610c25575060408051601f3d908101601f19168201909252610c2291810190612ad8565b60015b610c2e57610cf4565b6001600160a01b03811615610cf257603a80546001600160a01b0319166001600160a01b038381169190911791829055604080516399248ea760e01b8152905192909116916399248ea791600480820192602092909190829003018186803b158015610c9957600080fd5b505afa158015610cad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd19190612ad8565b603d80546001600160a01b0319166001600160a01b03929092169190911790555b505b886001600160a01b03167f45705fbd98b82017a03e6b75118b5900c6a3e840d26142e2d30214c0dd7a92df8989898989604051610d35959493929190612ffd565b60405180910390a28015610d4e576001805460ff191690555b505050505050505050565b60006105d482610d676108dd565b61216f565b60006105d0610d79611a6b565b846108b08560356000610d8a611a6b565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611be1565b603a546000906001600160a01b0316610dd5575060006105b9565b604080516001808252818301909252606091602080830190803683375050603b5482519293506001600160a01b031691839150600090610e1157fe5b6001600160a01b039283166020918202929092010152603a54604051633111e7b360e01b8152911690633111e7b390610e549084906000199030906004016130d4565b602060405180830381600087803b158015610e6e57600080fd5b505af1158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190612e8b565b91505090565b60006105d4610eba83611148565b610ec26108dd565b61217b565b603c546001600160a01b031681565b603b546001600160a01b031681565b6040805180820190915260018152603160f81b602082015260009081906001600160a01b038a16610f295760405162461bcd60e51b8152600401610a199190613225565b5083421115604051806040016040528060018152602001601960f91b81525090610f665760405162461bcd60e51b8152600401610a199190613225565b506001600160a01b0389166000908152603e602052604081205490610f896119a3565b7fce21806401473655533a882461ca5036529d194f238d3c1793817a552bd133a58c8c8c8c8c888d604051602001610fc8989796959493929190613163565b60405160208183030381529060405280519060200120604051602001610fef929190612f90565b60408051601f1981840301815291905280516020918201209150600190829061101a90880188612ea3565b87602001358860400135604051600081526020016040526040516110419493929190613207565b6020604051602081039080840390855afa158015611063573d6000803e3d6000fd5b505050602060405103516001600160a01b03168b6001600160a01b031614604051806040016040528060018152602001603360f81b815250906110b95760405162461bcd60e51b8152600401610a199190613225565b506110c5826001611be1565b6001600160a01b038c166000908152603e60205260409020556110eb8b8b8b8b8b611d47565b93509350505097509795505050505050565b600181565b7f4dab0a5e832f103ac80c9c3e51e5742f8a24aa0a3d941fe91c64e1e3db50c74381565b6001600160a01b0381166000908152604060208190528120546105d490612187565b6001600160a01b031660009081526034602052604090205490565b603a546001600160a01b031690565b604051806040016040528060018152602001603160f81b81525081565b603a546000906001600160a01b03166111aa575060006105b9565b604080516001808252818301909252606091602080830190803683375050603b5482519293506001600160a01b0316918391506000906111e657fe5b6001600160a01b039283166020918202929092010152603a546040516345accf9360e11b81526000929190911690638b599f269061122a90859030906004016130aa565b60206040518083038186803b15801561124257600080fd5b505afa158015611256573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127a9190612e8b565b603d546040516370a0823160e01b81529192506113019183916001600160a01b0316906370a08231906112b1903090600401612fab565b60206040518083038186803b1580156112c957600080fd5b505afa1580156112dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108269190612e8b565b9250505090565b603a546001600160a01b031661131d57611407565b336001600160a01b03831614806113c45750603a54604051631d36517b60e21b81526001600160a01b03909116906374d945ec9061135f908590600401612fab565b60206040518083038186803b15801561137757600080fd5b505afa15801561138b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113af9190612ad8565b6001600160a01b0316336001600160a01b0316145b604051806040016040528060018152602001601b60f91b815250906113fc5760405162461bcd60e51b8152600401610a199190613225565b506114078282612191565b5050565b7fce21806401473655533a882461ca5036529d194f238d3c1793817a552bd133a581565b60388054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105b15780601f10610586576101008083540402835291602001916105b1565b603d546001600160a01b031681565b60006105d06114ac611a6b565b846108b0856040518060600160405280602581526020016136a060259139603560006114d6611a6b565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611d1b565b603a546001600160a01b031661151c57611526565b6115263333612191565b565b60006105d0611535611a6b565b8484611c06565b603c546001600160a01b031690565b60395461010090046001600160a01b031681565b603e6020526000908152604090205481565b6040805180820190915260018152600d60fa1b60208201526000906001600160a01b0389166115b35760405162461bcd60e51b8152600401610a199190613225565b5082421115604051806040016040528060018152602001601960f91b815250906115f05760405162461bcd60e51b8152600401610a199190613225565b506001600160a01b0388166000908152603e6020526040812054906116136119a3565b7f4dab0a5e832f103ac80c9c3e51e5742f8a24aa0a3d941fe91c64e1e3db50c7438b8b8b8b8b888c60405160200161165298979695949392919061311b565b60405160208183030381529060405280519060200120604051602001611679929190612f90565b60408051601f198184030181529190528051602091820120915060019082906116a490870187612ea3565b86602001358760400135604051600081526020016040526040516116cb9493929190613207565b6020604051602081039080840390855afa1580156116ed573d6000803e3d6000fd5b505050602060405103516001600160a01b03168a6001600160a01b031614604051806040016040528060018152602001603360f81b815250906117435760405162461bcd60e51b8152600401610a199190613225565b5061174f826001611be1565b6001600160a01b038b166000908152603e60205260409020556117758a8a8a8a8a611f0c565b9a9950505050505050505050565b6040805180820190915260018152603160f81b60208201526001600160a01b0388166117c25760405162461bcd60e51b8152600401610a199190613225565b5083421115604051806040016040528060018152602001601960f91b815250906117ff5760405162461bcd60e51b8152600401610a199190613225565b506001600160a01b0387166000908152603e6020526040812054906118226119a3565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a868b60405160200161185d969594939291906131a7565b60405160208183030381529060405280519060200120604051602001611884929190612f90565b604051602081830303815290604052805190602001209050600181868686604051600081526020016040526040516118bf9493929190613207565b6020604051602081039080840390855afa1580156118e1573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614604051806040016040528060018152602001603360f81b815250906119375760405162461bcd60e51b8152600401610a199190613225565b50611943826001611be1565b6001600160a01b038a166000908152603e6020526040902055610d4e898989611a6f565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b6000806108d1338686600087611d47565b6000467f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6119cf610525565b805160209182012060408051808201825260018152603160f81b9084015251611a1f93927fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69186913091016131db565b6040516020818303038152906040528051906020012091505090565b603a546001600160a01b0316611a5057611a5a565b611a5a3382612191565b50565b60006105d482610ec26108dd565b3390565b6001600160a01b038316611a955760405162461bcd60e51b8152600401610a199061343e565b6001600160a01b038216611abb5760405162461bcd60e51b8152600401610a199061327b565b6001600160a01b0380841660008181526035602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611b16908590613112565b60405180910390a3505050565b60006108b983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d1b565b600082611b74575060006105d4565b82820282848281611b8157fe5b04146108b95760405162461bcd60e51b8152600401610a1990613329565b60006108b983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122b1565b6000828201838110156108b95760405162461bcd60e51b8152600401610a19906132bd565b6001600160a01b038316611c2c5760405162461bcd60e51b8152600401610a19906133f9565b6001600160a01b038216611c525760405162461bcd60e51b8152600401610a1990613238565b611c5d8383836122e8565b611c9a81604051806060016040528060268152602001613652602691396001600160a01b0386166000908152603460205260409020549190611d1b565b6001600160a01b038085166000908152603460205260408082209390935590841681522054611cc99082611be1565b6001600160a01b0380841660008181526034602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b16908590613112565b60008184841115611d3f5760405162461bcd60e51b8152600401610a199190613225565b505050900390565b6040805180820190915260018152603560f81b602082015260009081906001600160a01b038716611d8b5760405162461bcd60e51b8152600401610a199190613225565b50841580611d97575083155b604051806040016040528060018152602001603760f81b81525090611dcf5760405162461bcd60e51b8152600401610a199190613225565b506000611ddb88611148565b90506000806000611dea6108dd565b90508815611e1457838911611dff5788611e01565b835b9150611e0d828261217b565b9250611e41565b6000611e20858361217b565b9050808911611e2f5788611e31565b805b9350611e3d848361216f565b9250505b611e4b8b8361237b565b8615611ee657603954603c54604051631a4ca37b60e21b81526001600160a01b036101009093048316926369328dec92611e8e9291169087908f9060040161305a565b602060405180830381600087803b158015611ea857600080fd5b505af1158015611ebc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee09190612e8b565b50611efd565b603b54611efd906001600160a01b03168b8561245d565b50999098509650505050505050565b6040805180820190915260018152603560f81b60208201526000906001600160a01b038616611f4e5760405162461bcd60e51b8152600401610a199190613225565b508115611fe357603c54611f6d906001600160a01b031687308761247c565b603954603c5460405163e8eda9df60e01b81526001600160a01b0361010090930483169263e8eda9df92611fac9291169088903090899060040161307d565b600060405180830381600087803b158015611fc657600080fd5b505af1158015611fda573d6000803e3d6000fd5b50505050611ffb565b603b54611ffb906001600160a01b031687308761247c565b600061200985610d676108dd565b9050612015868261249d565b9695505050505050565b60008061097e612030868686612551565b6001600160a01b03871660009081526040602081905290205490611be1565b600190565b303b1590565b6039805460ff191660ff92909216919091179055565b8015806120f85750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e906120a69030908690600401612fbf565b60206040518083038186803b1580156120be57600080fd5b505afa1580156120d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f69190612e8b565b155b6121145760405162461bcd60e51b8152600401610a19906134cc565b61216a8363095ea7b360e01b8484604051602401612133929190613041565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526125b6565b505050565b60006108b9838361269b565b60006108b98383612746565b633b9aca00900490565b600061219b6105ef565b905060006121a884611148565b905060006121b785838561201f565b603d546040516370a0823160e01b81529192506000916001600160a01b03909116906370a08231906121ed903090600401612fab565b60206040518083038186803b15801561220557600080fd5b505afa158015612219573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223d9190612e8b565b905060008183111561225657612251610dba565b820191505b8183111561226657509081908190035b82156122a8576001600160a01b038716600090815260406020819052902081905561229187866127db565b603d546122a8906001600160a01b0316878561245d565b50505050505050565b600081836122d25760405162461bcd60e51b8152600401610a199190613225565b5060008385816122de57fe5b0495945050505050565b603a546001600160a01b03166122fd5761216a565b60006123076105ef565b90506001600160a01b038416156123225761232284826127f7565b6001600160a01b0383161580159061234c5750826001600160a01b0316846001600160a01b031614155b1561235b5761235b83826127f7565b6041546001600160a01b0316156123755761237581612862565b50505050565b6001600160a01b0382166123a15760405162461bcd60e51b8152600401610a19906133b8565b6123ad826000836122e8565b6123ea81604051806060016040528060228152602001613630602291396001600160a01b0385166000908152603460205260409020549190611d1b565b6001600160a01b0383166000908152603460205260409020556036546124109082611b23565b6036556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612451908590613112565b60405180910390a35050565b61216a8363a9059cbb60e01b8484604051602401612133929190613041565b612375846323b872dd60e01b85858560405160240161213393929190612fd9565b6001600160a01b0382166124c35760405162461bcd60e51b8152600401610a1990613559565b6124cf600083836122e8565b6036546124dc9082611be1565b6036556001600160a01b0382166000908152603460205260409020546125029082611be1565b6001600160a01b0383166000818152603460205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612451908590613112565b603a546000906001600160a01b031661256c575060006108b9565b82612579575060006108b9565b6000612584846128c7565b6001600160a01b0386166000908152603f602052604090205490915061097e906125af908590611b23565b8290612917565b6125c8826001600160a01b031661298f565b6125e45760405162461bcd60e51b8152600401610a1990613522565b60006060836001600160a01b0316836040516126009190612f74565b6000604051808303816000865af19150503d806000811461263d576040519150601f19603f3d011682016040523d82523d6000602084013e612642565b606091505b5091509150816126645760405162461bcd60e51b8152600401610a19906132f4565b805115612375578080602001905181019061267f9190612d6f565b6123755760405162461bcd60e51b8152600401610a1990613482565b604080518082019091526002815261035360f41b6020820152600090826126d55760405162461bcd60e51b8152600401610a199190613225565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156127235760405162461bcd60e51b8152600401610a199190613225565b5082816b033b2e3c9fd0803ce80000008602018161273d57fe5b04949350505050565b6000821580612753575081155b15612760575060006105d4565b816b019d971e4fe8401e74000000198161277657fe5b0483111560405180604001604052806002815260200161068760f31b815250906127b35760405162461bcd60e51b8152600401610a199190613225565b506b033b2e3c9fd0803ce80000008383026b019d971e4fe8401e74000000015b049392505050565b6001600160a01b039091166000908152603f6020526040902055565b600061280283611148565b90508015612858576000612817848385612551565b6001600160a01b03851660009081526040602081905290205490915061283d9082611be1565b6001600160a01b038516600090815260406020819052902055505b61216a83836127db565b6041546040516306e0ad4560e01b81526001600160a01b03909116906306e0ad4590612892908490600401613112565b600060405180830381600087803b1580156128ac57600080fd5b505af11580156128c0573d6000803e3d6000fd5b5050505050565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b815250906129105760405162461bcd60e51b8152600401610a199190613225565b5092915050565b6000821580612924575081155b15612931575060006105d4565b816000198161293c57fe5b0483111560405180604001604052806002815260200161068760f31b815250906129795760405162461bcd60e51b8152600401610a199190613225565b506b033b2e3c9fd0803ce80000008383026127d3565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906129c357508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612a0c5782800160ff19823516178555612a39565b82800160010185558215612a39579182015b82811115612a39578235825591602001919060010190612a1e565b50612a45929150612a49565b5090565b5b80821115612a455760008155600101612a4a565b60008083601f840112612a6f578182fd5b50813567ffffffffffffffff811115612a86578182fd5b602083019150836020828501011115612a9e57600080fd5b9250929050565b600060608284031215612ab6578081fd5b50919050565b600060208284031215612acd578081fd5b81356108b9816135d8565b600060208284031215612ae9578081fd5b81516108b9816135d8565b60008060408385031215612b06578081fd5b8235612b11816135d8565b91506020830135612b21816135d8565b809150509250929050565b600080600060608486031215612b40578081fd5b8335612b4b816135d8565b92506020840135612b5b816135d8565b929592945050506040919091013590565b6000806000806000806000610120888a031215612b87578283fd5b8735612b92816135d8565b96506020880135612ba2816135d8565b9550604088013594506060880135612bb981613610565b93506080880135612bc9816135ed565b925060a08801359150612bdf8960c08a01612aa5565b905092959891949750929550565b6000806000806000806000610120888a031215612c08578283fd5b8735612c13816135d8565b96506020880135612c23816135d8565b955060408801359450606088013593506080880135612bc9816135ed565b600080600080600080600060e0888a031215612c5b578283fd5b8735612c66816135d8565b96506020880135612c76816135d8565b955060408801359450606088013593506080880135612c9481613620565b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215612cc3578182fd5b8235612cce816135d8565b946020939093013593505050565b600080600060608486031215612cf0578081fd5b8335612cfb816135d8565b9250602084013591506040840135612d12816135ed565b809150509250925092565b60008060008060808587031215612d32578182fd5b8435612d3d816135d8565b9350602085013592506040850135612d5481613610565b91506060850135612d64816135ed565b939692955090935050565b600060208284031215612d80578081fd5b81516108b9816135ed565b600080600080600080600060a0888a031215612da5578081fd5b8735612db0816135d8565b96506020880135612dc0816135d8565b9550604088013567ffffffffffffffff80821115612ddc578283fd5b612de88b838c01612a5e565b909750955060608a0135915080821115612e00578283fd5b50612e0d8a828b01612a5e565b9094509250506080880135612e21816135d8565b8091505092959891949750929550565b600080600060608486031215612e45578081fd5b8351612e50816135fb565b6020850151909350612e61816135fb565b80925050604084015190509250925092565b600060208284031215612e84578081fd5b5035919050565b600060208284031215612e9c578081fd5b5051919050565b600060208284031215612eb4578081fd5b81356108b981613620565b600060208284031215612ed0578081fd5b81516108b981613620565b6000815180845260208085019450808401835b83811015612f135781516001600160a01b031687529582019590820190600101612eee565b509495945050505050565b60008151808452612f368160208601602086016135ac565b601f01601f19169290920160200192915050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008251612f868184602087016135ac565b9190910192915050565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03861681526060602082018190526000906130229083018688612f4a565b8281036040840152613035818587612f4a565b98975050505050505050565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6001600160a01b03948516815260208101939093529216604082015261ffff909116606082015260800190565b6000604082526130bd6040830185612edb565b905060018060a01b03831660208301529392505050565b6000606082526130e76060830186612edb565b6020830194909452506001600160a01b0391909116604090910152919050565b901515815260200190565b90815260200190565b9788526001600160a01b039687166020890152949095166040870152606086019290925261ffff166080850152151560a084015260c083019190915260e08201526101000190565b9788526001600160a01b03968716602089015294909516604087015260608601929092526080850152151560a084015260c083019190915260e08201526101000190565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b93845260ff9290921660208401526040830152606082015260800190565b6000602082526108b96020830184612f1e565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526036908201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60408201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606082015260800190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b918252602082015260400190565b60ff91909116815260200190565b60005b838110156135c75781810151838201526020016135af565b838111156123755750506000910152565b6001600160a01b0381168114611a5a57600080fd5b8015158114611a5a57600080fd5b6001600160801b0381168114611a5a57600080fd5b61ffff81168114611a5a57600080fd5b60ff81168114611a5a57600080fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122074b2639f812deb674bc52f31d13ed6053a9af8a1bb4af0a3efc7cd49c89db5d564736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x274 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x69A69E29 GT PUSH2 0x151 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0xC3 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x87 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x4BE JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x4D1 JUMPI DUP1 PUSH4 0xEAD5D359 EQ PUSH2 0x4E4 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x4F7 JUMPI DUP1 PUSH4 0xEF5CFB8C EQ PUSH2 0x4FF JUMPI DUP1 PUSH4 0xF57D0B40 EQ PUSH2 0x512 JUMPI PUSH2 0x274 JUMP JUMPDEST DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x475 JUMPI DUP1 PUSH4 0xB16A19DE EQ PUSH2 0x488 JUMPI DUP1 PUSH4 0xB4DCFC77 EQ PUSH2 0x490 JUMPI DUP1 PUSH4 0xB9844D8D EQ PUSH2 0x498 JUMPI DUP1 PUSH4 0xC485852B EQ PUSH2 0x4AB JUMPI PUSH2 0x274 JUMP JUMPDEST DUP1 PUSH4 0x8BA2855D GT PUSH2 0x115 JUMPI DUP1 PUSH4 0x8BA2855D EQ PUSH2 0x42F JUMPI DUP1 PUSH4 0x8D948415 EQ PUSH2 0x442 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x44A JUMPI DUP1 PUSH4 0x99248EA7 EQ PUSH2 0x452 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x45A JUMPI DUP1 PUSH4 0xA868DD5D EQ PUSH2 0x46D JUMPI PUSH2 0x274 JUMP JUMPDEST DUP1 PUSH4 0x69A69E29 EQ PUSH2 0x3F1 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x404 JUMPI DUP1 PUSH4 0x75D26413 EQ PUSH2 0x417 JUMPI DUP1 PUSH4 0x78160376 EQ PUSH2 0x41F JUMPI DUP1 PUSH4 0x7F372CFF EQ PUSH2 0x427 JUMPI PUSH2 0x274 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x1EA JUMPI DUP1 PUSH4 0x44B68C3F GT PUSH2 0x1AE JUMPI DUP1 PUSH4 0x44B68C3F EQ PUSH2 0x3AB JUMPI DUP1 PUSH4 0x4800D97F EQ PUSH2 0x3BE JUMPI DUP1 PUSH4 0x51C0E061 EQ PUSH2 0x3C6 JUMPI DUP1 PUSH4 0x60266557 EQ PUSH2 0x3CE JUMPI DUP1 PUSH4 0x61D0494D EQ PUSH2 0x3E1 JUMPI DUP1 PUSH4 0x63210537 EQ PUSH2 0x3E9 JUMPI PUSH2 0x274 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x353 JUMPI DUP1 PUSH4 0x362925C2 EQ PUSH2 0x368 JUMPI DUP1 PUSH4 0x36A5A6D6 EQ PUSH2 0x37D JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x390 JUMPI DUP1 PUSH4 0x3EB2EBA6 EQ PUSH2 0x3A3 JUMPI PUSH2 0x274 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x23C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2E9 JUMPI DUP1 PUSH4 0x288587CE EQ PUSH2 0x2FC JUMPI DUP1 PUSH4 0x2C4E722E EQ PUSH2 0x31D JUMPI DUP1 PUSH4 0x2F2CAB87 EQ PUSH2 0x325 JUMPI DUP1 PUSH4 0x308E401E EQ PUSH2 0x338 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x34B JUMPI PUSH2 0x274 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x279 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x297 JUMPI DUP1 PUSH4 0x10D0AB22 EQ PUSH2 0x2B7 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2CC JUMPI DUP1 PUSH4 0x189956A2 EQ PUSH2 0x2E1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x281 PUSH2 0x525 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2AA PUSH2 0x2A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CB1 JUMP JUMPDEST PUSH2 0x5BC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x3107 JUMP JUMPDEST PUSH2 0x2BF PUSH2 0x5DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x2FAB JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x5E9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x3112 JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x5EF JUMP JUMPDEST PUSH2 0x2AA PUSH2 0x2F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B2C JUMP JUMPDEST PUSH2 0x838 JUMP JUMPDEST PUSH2 0x30F PUSH2 0x30A CALLDATASIZE PUSH1 0x4 PUSH2 0x2CDC JUMP JUMPDEST PUSH2 0x8C0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP3 SWAP2 SWAP1 PUSH2 0x3590 JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x8DD JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x333 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D1D JUMP JUMPDEST PUSH2 0x96F JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x346 CALLDATASIZE PUSH1 0x4 PUSH2 0x2ABC JUMP JUMPDEST PUSH2 0x987 JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x9A3 JUMP JUMPDEST PUSH2 0x35B PUSH2 0x9C7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x359E JUMP JUMPDEST PUSH2 0x37B PUSH2 0x376 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D8B JUMP JUMPDEST PUSH2 0x9D0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2D4 PUSH2 0x38B CALLDATASIZE PUSH1 0x4 PUSH2 0x2E73 JUMP JUMPDEST PUSH2 0xD59 JUMP JUMPDEST PUSH2 0x2AA PUSH2 0x39E CALLDATASIZE PUSH1 0x4 PUSH2 0x2CB1 JUMP JUMPDEST PUSH2 0xD6C JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0xDBA JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x3B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2ABC JUMP JUMPDEST PUSH2 0xEAC JUMP JUMPDEST PUSH2 0x2BF PUSH2 0xEC7 JUMP JUMPDEST PUSH2 0x2BF PUSH2 0xED6 JUMP JUMPDEST PUSH2 0x30F PUSH2 0x3DC CALLDATASIZE PUSH1 0x4 PUSH2 0x2BED JUMP JUMPDEST PUSH2 0xEE5 JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x10FD JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x1102 JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x3FF CALLDATASIZE PUSH1 0x4 PUSH2 0x2ABC JUMP JUMPDEST PUSH2 0x1126 JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x412 CALLDATASIZE PUSH1 0x4 PUSH2 0x2ABC JUMP JUMPDEST PUSH2 0x1148 JUMP JUMPDEST PUSH2 0x2BF PUSH2 0x1163 JUMP JUMPDEST PUSH2 0x281 PUSH2 0x1172 JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x118F JUMP JUMPDEST PUSH2 0x37B PUSH2 0x43D CALLDATASIZE PUSH1 0x4 PUSH2 0x2AF4 JUMP JUMPDEST PUSH2 0x1308 JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x140B JUMP JUMPDEST PUSH2 0x281 PUSH2 0x142F JUMP JUMPDEST PUSH2 0x2BF PUSH2 0x1490 JUMP JUMPDEST PUSH2 0x2AA PUSH2 0x468 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CB1 JUMP JUMPDEST PUSH2 0x149F JUMP JUMPDEST PUSH2 0x37B PUSH2 0x1507 JUMP JUMPDEST PUSH2 0x2AA PUSH2 0x483 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CB1 JUMP JUMPDEST PUSH2 0x1528 JUMP JUMPDEST PUSH2 0x2BF PUSH2 0x153C JUMP JUMPDEST PUSH2 0x2BF PUSH2 0x154B JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x4A6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2ABC JUMP JUMPDEST PUSH2 0x155F JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x4B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B6C JUMP JUMPDEST PUSH2 0x1571 JUMP JUMPDEST PUSH2 0x37B PUSH2 0x4CC CALLDATASIZE PUSH1 0x4 PUSH2 0x2C41 JUMP JUMPDEST PUSH2 0x1783 JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x4DF CALLDATASIZE PUSH1 0x4 PUSH2 0x2AF4 JUMP JUMPDEST PUSH2 0x1967 JUMP JUMPDEST PUSH2 0x30F PUSH2 0x4F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2CDC JUMP JUMPDEST PUSH2 0x1992 JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x19A3 JUMP JUMPDEST PUSH2 0x37B PUSH2 0x50D CALLDATASIZE PUSH1 0x4 PUSH2 0x2ABC JUMP JUMPDEST PUSH2 0x1A3B JUMP JUMPDEST PUSH2 0x2D4 PUSH2 0x520 CALLDATASIZE PUSH1 0x4 PUSH2 0x2E73 JUMP JUMPDEST PUSH2 0x1A5D JUMP JUMPDEST PUSH1 0x37 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x5B1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x586 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5B1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x594 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5D0 PUSH2 0x5C9 PUSH2 0x1A6B JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1A6F JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x36 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0x3B SLOAD PUSH1 0x40 MLOAD PUSH4 0x1652E7B7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP4 SWAP3 DUP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 PUSH4 0x1652E7B7 SWAP3 PUSH2 0x62D SWAP3 SWAP1 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0x2FAB JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x645 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x659 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x67D SWAP2 SWAP1 PUSH2 0x2E31 JUMP JUMPDEST SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP3 POP PUSH1 0x0 PUSH1 0x3A PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x919CD40F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x71D SWAP2 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3B PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB1BF962D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x76F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x783 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7A7 SWAP2 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST SWAP1 POP DUP4 ISZERO DUP1 PUSH2 0x7B4 JUMPI POP DUP1 ISZERO JUMPDEST DUP1 PUSH2 0x7BE JUMPI POP TIMESTAMP DUP4 EQ JUMPDEST DUP1 PUSH2 0x7C9 JUMPI POP DUP2 DUP4 LT ISZERO JUMPDEST ISZERO PUSH2 0x7DB JUMPI DUP5 SWAP6 POP POP POP POP POP POP PUSH2 0x5B9 JUMP JUMPDEST PUSH1 0x0 DUP3 TIMESTAMP GT PUSH2 0x7EA JUMPI TIMESTAMP PUSH2 0x7EC JUMP JUMPDEST DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x7FA DUP3 DUP7 PUSH2 0x1B23 JUMP JUMPDEST SWAP1 POP PUSH2 0x82C DUP8 PUSH2 0x826 DUP6 PUSH2 0x820 PUSH8 0xDE0B6B3A7640000 PUSH2 0x81A DUP13 DUP9 PUSH2 0x1B65 JUMP JUMPDEST SWAP1 PUSH2 0x1B65 JUMP JUMPDEST SWAP1 PUSH2 0x1B9F JUMP JUMPDEST SWAP1 PUSH2 0x1BE1 JUMP JUMPDEST SWAP8 POP POP POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x845 DUP5 DUP5 DUP5 PUSH2 0x1C06 JUMP JUMPDEST PUSH2 0x8B5 DUP5 PUSH2 0x851 PUSH2 0x1A6B JUMP JUMPDEST PUSH2 0x8B0 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3678 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 PUSH2 0x88F PUSH2 0x1A6B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1D1B JUMP JUMPDEST PUSH2 0x1A6F JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8D1 CALLER DUP7 PUSH1 0x0 DUP8 DUP8 PUSH2 0x1D47 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x39 SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 MLOAD PUSH4 0xD15E0053 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 PUSH4 0xD15E0053 SWAP3 PUSH2 0x91A SWAP3 SWAP1 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0x2FAB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x932 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x946 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x96A SWAP2 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x97E CALLER DUP7 DUP7 DUP7 DUP7 PUSH2 0x1F0C JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5D4 DUP3 PUSH2 0x996 DUP5 PUSH2 0x1148 JUMP JUMPDEST PUSH2 0x99E PUSH2 0x5EF JUMP JUMPDEST PUSH2 0x201F JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x39 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9DA PUSH2 0x204F JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 PUSH2 0x9F1 JUMPI POP PUSH2 0x9F1 PUSH2 0x2054 JUMP JUMPDEST DUP1 PUSH2 0x9FD JUMPI POP PUSH1 0x0 SLOAD DUP2 GT JUMPDEST PUSH2 0xA22 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP1 PUSH2 0x336A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0xA41 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 OR SWAP1 SSTORE PUSH1 0x0 DUP3 SWAP1 SSTORE JUMPDEST PUSH1 0x41 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x39 DUP1 SLOAD DUP13 DUP5 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE PUSH1 0x3B DUP1 SLOAD SWAP3 DUP12 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0xA98 PUSH1 0x37 DUP9 DUP9 PUSH2 0x29CB JUMP JUMPDEST POP PUSH2 0xAA5 PUSH1 0x38 DUP7 DUP7 PUSH2 0x29CB JUMP JUMPDEST POP PUSH2 0xB1F DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB1A SWAP2 SWAP1 PUSH2 0x2EBF JUMP JUMPDEST PUSH2 0x205A JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB16A19DE PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB6C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB90 SWAP2 SWAP1 PUSH2 0x2AD8 JUMP JUMPDEST PUSH1 0x3C DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 DUP2 SWAP1 SSTORE PUSH2 0xBBC SWAP2 AND DUP11 PUSH1 0x0 NOT PUSH2 0x2070 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x75D26413 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xC25 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xC22 SWAP2 DUP2 ADD SWAP1 PUSH2 0x2AD8 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xC2E JUMPI PUSH2 0xCF4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0xCF2 JUMPI PUSH1 0x3A DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x99248EA7 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP1 SWAP2 AND SWAP2 PUSH4 0x99248EA7 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCAD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCD1 SWAP2 SWAP1 PUSH2 0x2AD8 JUMP JUMPDEST PUSH1 0x3D DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST POP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x45705FBD98B82017A03E6B75118B5900C6A3E840D26142E2D30214C0DD7A92DF DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH2 0xD35 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2FFD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP1 ISZERO PUSH2 0xD4E JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5D4 DUP3 PUSH2 0xD67 PUSH2 0x8DD JUMP JUMPDEST PUSH2 0x216F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5D0 PUSH2 0xD79 PUSH2 0x1A6B JUMP JUMPDEST DUP5 PUSH2 0x8B0 DUP6 PUSH1 0x35 PUSH1 0x0 PUSH2 0xD8A PUSH2 0x1A6B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP13 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x1BE1 JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDD5 JUMPI POP PUSH1 0x0 PUSH2 0x5B9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP PUSH1 0x3B SLOAD DUP3 MLOAD SWAP3 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP4 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0xE11 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE PUSH1 0x3A SLOAD PUSH1 0x40 MLOAD PUSH4 0x3111E7B3 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 AND SWAP1 PUSH4 0x3111E7B3 SWAP1 PUSH2 0xE54 SWAP1 DUP5 SWAP1 PUSH1 0x0 NOT SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x30D4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE82 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xEA6 SWAP2 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5D4 PUSH2 0xEBA DUP4 PUSH2 0x1148 JUMP JUMPDEST PUSH2 0xEC2 PUSH2 0x8DD JUMP JUMPDEST PUSH2 0x217B JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH2 0xF29 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP DUP4 TIMESTAMP GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x19 PUSH1 0xF9 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xF66 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3E PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH2 0xF89 PUSH2 0x19A3 JUMP JUMPDEST PUSH32 0xCE21806401473655533A882461CA5036529D194F238D3C1793817A552BD133A5 DUP13 DUP13 DUP13 DUP13 DUP13 DUP9 DUP14 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xFC8 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3163 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xFEF SWAP3 SWAP2 SWAP1 PUSH2 0x2F90 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 SWAP2 POP PUSH1 0x1 SWAP1 DUP3 SWAP1 PUSH2 0x101A SWAP1 DUP9 ADD DUP9 PUSH2 0x2EA3 JUMP JUMPDEST DUP8 PUSH1 0x20 ADD CALLDATALOAD DUP9 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x1041 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3207 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1063 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x33 PUSH1 0xF8 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x10B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP PUSH2 0x10C5 DUP3 PUSH1 0x1 PUSH2 0x1BE1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3E PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x10EB DUP12 DUP12 DUP12 DUP12 DUP12 PUSH2 0x1D47 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST PUSH32 0x4DAB0A5E832F103AC80C9C3E51E5742F8A24AA0A3D941FE91C64E1E3DB50C743 DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP2 SWAP1 MSTORE DUP2 KECCAK256 SLOAD PUSH2 0x5D4 SWAP1 PUSH2 0x2187 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x11AA JUMPI POP PUSH1 0x0 PUSH2 0x5B9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP PUSH1 0x3B SLOAD DUP3 MLOAD SWAP3 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP4 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x11E6 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE PUSH1 0x3A SLOAD PUSH1 0x40 MLOAD PUSH4 0x45ACCF93 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x8B599F26 SWAP1 PUSH2 0x122A SWAP1 DUP6 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x30AA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1242 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1256 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x127A SWAP2 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP3 POP PUSH2 0x1301 SWAP2 DUP4 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x12B1 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2FAB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12DD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x826 SWAP2 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x131D JUMPI PUSH2 0x1407 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ DUP1 PUSH2 0x13C4 JUMPI POP PUSH1 0x3A SLOAD PUSH1 0x40 MLOAD PUSH4 0x1D36517B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x74D945EC SWAP1 PUSH2 0x135F SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2FAB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x138B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13AF SWAP2 SWAP1 PUSH2 0x2AD8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1B PUSH1 0xF9 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x13FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP PUSH2 0x1407 DUP3 DUP3 PUSH2 0x2191 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0xCE21806401473655533A882461CA5036529D194F238D3C1793817A552BD133A5 DUP2 JUMP JUMPDEST PUSH1 0x38 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x5B1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x586 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5B1 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5D0 PUSH2 0x14AC PUSH2 0x1A6B JUMP JUMPDEST DUP5 PUSH2 0x8B0 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x36A0 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x35 PUSH1 0x0 PUSH2 0x14D6 PUSH2 0x1A6B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP14 AND DUP2 MSTORE SWAP3 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1D1B JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x151C JUMPI PUSH2 0x1526 JUMP JUMPDEST PUSH2 0x1526 CALLER CALLER PUSH2 0x2191 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5D0 PUSH2 0x1535 PUSH2 0x1A6B JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1C06 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x39 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3E PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0xD PUSH1 0xFA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH2 0x15B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP DUP3 TIMESTAMP GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x19 PUSH1 0xF9 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x15F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3E PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH2 0x1613 PUSH2 0x19A3 JUMP JUMPDEST PUSH32 0x4DAB0A5E832F103AC80C9C3E51E5742F8A24AA0A3D941FE91C64E1E3DB50C743 DUP12 DUP12 DUP12 DUP12 DUP12 DUP9 DUP13 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1652 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x311B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1679 SWAP3 SWAP2 SWAP1 PUSH2 0x2F90 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 SWAP2 POP PUSH1 0x1 SWAP1 DUP3 SWAP1 PUSH2 0x16A4 SWAP1 DUP8 ADD DUP8 PUSH2 0x2EA3 JUMP JUMPDEST DUP7 PUSH1 0x20 ADD CALLDATALOAD DUP8 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x16CB SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3207 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x33 PUSH1 0xF8 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1743 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP PUSH2 0x174F DUP3 PUSH1 0x1 PUSH2 0x1BE1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3E PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x1775 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x1F0C JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH2 0x17C2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP DUP4 TIMESTAMP GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x19 PUSH1 0xF9 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x17FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3E PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH2 0x1822 PUSH2 0x19A3 JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP11 DUP11 DUP11 DUP7 DUP12 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x185D SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x31A7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1884 SWAP3 SWAP2 SWAP1 PUSH2 0x2F90 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x1 DUP2 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x18BF SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3207 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x33 PUSH1 0xF8 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1937 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP PUSH2 0x1943 DUP3 PUSH1 0x1 PUSH2 0x1BE1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3E PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xD4E DUP10 DUP10 DUP10 PUSH2 0x1A6F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8D1 CALLER DUP7 DUP7 PUSH1 0x0 DUP8 PUSH2 0x1D47 JUMP JUMPDEST PUSH1 0x0 CHAINID PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH2 0x19CF PUSH2 0x525 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP5 ADD MSTORE MLOAD PUSH2 0x1A1F SWAP4 SWAP3 PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 SWAP2 DUP7 SWAP2 ADDRESS SWAP2 ADD PUSH2 0x31DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A50 JUMPI PUSH2 0x1A5A JUMP JUMPDEST PUSH2 0x1A5A CALLER DUP3 PUSH2 0x2191 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5D4 DUP3 PUSH2 0xEC2 PUSH2 0x8DD JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1A95 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP1 PUSH2 0x343E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1ABB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP1 PUSH2 0x327B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x35 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x1B16 SWAP1 DUP6 SWAP1 PUSH2 0x3112 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8B9 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1D1B JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1B74 JUMPI POP PUSH1 0x0 PUSH2 0x5D4 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1B81 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x8B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP1 PUSH2 0x3329 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8B9 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x22B1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x8B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP1 PUSH2 0x32BD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1C2C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP1 PUSH2 0x33F9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1C52 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP1 PUSH2 0x3238 JUMP JUMPDEST PUSH2 0x1C5D DUP4 DUP4 DUP4 PUSH2 0x22E8 JUMP JUMPDEST PUSH2 0x1C9A DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3652 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1D1B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x1CC9 SWAP1 DUP3 PUSH2 0x1BE1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x1B16 SWAP1 DUP6 SWAP1 PUSH2 0x3112 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1D3F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x35 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x1D8B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP DUP5 ISZERO DUP1 PUSH2 0x1D97 JUMPI POP DUP4 ISZERO JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x37 PUSH1 0xF8 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1DCF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x1DDB DUP9 PUSH2 0x1148 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1DEA PUSH2 0x8DD JUMP JUMPDEST SWAP1 POP DUP9 ISZERO PUSH2 0x1E14 JUMPI DUP4 DUP10 GT PUSH2 0x1DFF JUMPI DUP9 PUSH2 0x1E01 JUMP JUMPDEST DUP4 JUMPDEST SWAP2 POP PUSH2 0x1E0D DUP3 DUP3 PUSH2 0x217B JUMP JUMPDEST SWAP3 POP PUSH2 0x1E41 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E20 DUP6 DUP4 PUSH2 0x217B JUMP JUMPDEST SWAP1 POP DUP1 DUP10 GT PUSH2 0x1E2F JUMPI DUP9 PUSH2 0x1E31 JUMP JUMPDEST DUP1 JUMPDEST SWAP4 POP PUSH2 0x1E3D DUP5 DUP4 PUSH2 0x216F JUMP JUMPDEST SWAP3 POP POP JUMPDEST PUSH2 0x1E4B DUP12 DUP4 PUSH2 0x237B JUMP JUMPDEST DUP7 ISZERO PUSH2 0x1EE6 JUMPI PUSH1 0x39 SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 MLOAD PUSH4 0x1A4CA37B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x100 SWAP1 SWAP4 DIV DUP4 AND SWAP3 PUSH4 0x69328DEC SWAP3 PUSH2 0x1E8E SWAP3 SWAP2 AND SWAP1 DUP8 SWAP1 DUP16 SWAP1 PUSH1 0x4 ADD PUSH2 0x305A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EBC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1EE0 SWAP2 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST POP PUSH2 0x1EFD JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH2 0x1EFD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 DUP6 PUSH2 0x245D JUMP JUMPDEST POP SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x35 PUSH1 0xF8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x1F4E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x1FE3 JUMPI PUSH1 0x3C SLOAD PUSH2 0x1F6D SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 ADDRESS DUP8 PUSH2 0x247C JUMP JUMPDEST PUSH1 0x39 SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 MLOAD PUSH4 0xE8EDA9DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x100 SWAP1 SWAP4 DIV DUP4 AND SWAP3 PUSH4 0xE8EDA9DF SWAP3 PUSH2 0x1FAC SWAP3 SWAP2 AND SWAP1 DUP9 SWAP1 ADDRESS SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x307D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1FDA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1FFB JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH2 0x1FFB SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 ADDRESS DUP8 PUSH2 0x247C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2009 DUP6 PUSH2 0xD67 PUSH2 0x8DD JUMP JUMPDEST SWAP1 POP PUSH2 0x2015 DUP7 DUP3 PUSH2 0x249D JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x97E PUSH2 0x2030 DUP7 DUP7 DUP7 PUSH2 0x2551 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 PUSH2 0x1BE1 JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x39 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 ISZERO DUP1 PUSH2 0x20F8 JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x20A6 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2FBF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x20D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x20F6 SWAP2 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST ISZERO JUMPDEST PUSH2 0x2114 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP1 PUSH2 0x34CC JUMP JUMPDEST PUSH2 0x216A DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2133 SWAP3 SWAP2 SWAP1 PUSH2 0x3041 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x25B6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8B9 DUP4 DUP4 PUSH2 0x269B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8B9 DUP4 DUP4 PUSH2 0x2746 JUMP JUMPDEST PUSH4 0x3B9ACA00 SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x219B PUSH2 0x5EF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x21A8 DUP5 PUSH2 0x1148 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x21B7 DUP6 DUP4 DUP6 PUSH2 0x201F JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x21ED SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2FAB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2219 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x223D SWAP2 SWAP1 PUSH2 0x2E8B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP4 GT ISZERO PUSH2 0x2256 JUMPI PUSH2 0x2251 PUSH2 0xDBA JUMP JUMPDEST DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP4 GT ISZERO PUSH2 0x2266 JUMPI POP SWAP1 DUP2 SWAP1 DUP2 SWAP1 SUB JUMPDEST DUP3 ISZERO PUSH2 0x22A8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH2 0x2291 DUP8 DUP7 PUSH2 0x27DB JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH2 0x22A8 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP6 PUSH2 0x245D JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 PUSH2 0x22D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x22DE JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x22FD JUMPI PUSH2 0x216A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2307 PUSH2 0x5EF JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO PUSH2 0x2322 JUMPI PUSH2 0x2322 DUP5 DUP3 PUSH2 0x27F7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x234C JUMPI POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x235B JUMPI PUSH2 0x235B DUP4 DUP3 PUSH2 0x27F7 JUMP JUMPDEST PUSH1 0x41 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x2375 JUMPI PUSH2 0x2375 DUP2 PUSH2 0x2862 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x23A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP1 PUSH2 0x33B8 JUMP JUMPDEST PUSH2 0x23AD DUP3 PUSH1 0x0 DUP4 PUSH2 0x22E8 JUMP JUMPDEST PUSH2 0x23EA DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3630 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1D1B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH1 0x36 SLOAD PUSH2 0x2410 SWAP1 DUP3 PUSH2 0x1B23 JUMP JUMPDEST PUSH1 0x36 SSTORE PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x2451 SWAP1 DUP6 SWAP1 PUSH2 0x3112 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x216A DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2133 SWAP3 SWAP2 SWAP1 PUSH2 0x3041 JUMP JUMPDEST PUSH2 0x2375 DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2133 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2FD9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x24C3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP1 PUSH2 0x3559 JUMP JUMPDEST PUSH2 0x24CF PUSH1 0x0 DUP4 DUP4 PUSH2 0x22E8 JUMP JUMPDEST PUSH1 0x36 SLOAD PUSH2 0x24DC SWAP1 DUP3 PUSH2 0x1BE1 JUMP JUMPDEST PUSH1 0x36 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2502 SWAP1 DUP3 PUSH2 0x1BE1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x34 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x2451 SWAP1 DUP6 SWAP1 PUSH2 0x3112 JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x256C JUMPI POP PUSH1 0x0 PUSH2 0x8B9 JUMP JUMPDEST DUP3 PUSH2 0x2579 JUMPI POP PUSH1 0x0 PUSH2 0x8B9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2584 DUP5 PUSH2 0x28C7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3F PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x97E SWAP1 PUSH2 0x25AF SWAP1 DUP6 SWAP1 PUSH2 0x1B23 JUMP JUMPDEST DUP3 SWAP1 PUSH2 0x2917 JUMP JUMPDEST PUSH2 0x25C8 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x298F JUMP JUMPDEST PUSH2 0x25E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP1 PUSH2 0x3522 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x2600 SWAP2 SWAP1 PUSH2 0x2F74 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x263D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2642 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2664 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP1 PUSH2 0x32F4 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2375 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x267F SWAP2 SWAP1 PUSH2 0x2D6F JUMP JUMPDEST PUSH2 0x2375 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP1 PUSH2 0x3482 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x26D5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x2723 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x273D JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x2753 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x2760 JUMPI POP PUSH1 0x0 PUSH2 0x5D4 JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x2776 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x27B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP PUSH12 0x33B2E3C9FD0803CE8000000 DUP4 DUP4 MUL PUSH12 0x19D971E4FE8401E74000000 ADD JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3F PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2802 DUP4 PUSH2 0x1148 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2858 JUMPI PUSH1 0x0 PUSH2 0x2817 DUP5 DUP4 DUP6 PUSH2 0x2551 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x283D SWAP1 DUP3 PUSH2 0x1BE1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 KECCAK256 SSTORE POP JUMPDEST PUSH2 0x216A DUP4 DUP4 PUSH2 0x27DB JUMP JUMPDEST PUSH1 0x41 SLOAD PUSH1 0x40 MLOAD PUSH4 0x6E0AD45 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x6E0AD45 SWAP1 PUSH2 0x2892 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x3112 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x28AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x28C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0x3B9ACA00 DUP3 DUP2 MUL SWAP1 DUP4 SWAP1 DUP3 DIV EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x2910 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x2924 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x2931 JUMPI POP PUSH1 0x0 PUSH2 0x5D4 JUMP JUMPDEST DUP2 PUSH1 0x0 NOT DUP2 PUSH2 0x293C JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x2979 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x3225 JUMP JUMPDEST POP PUSH12 0x33B2E3C9FD0803CE8000000 DUP4 DUP4 MUL PUSH2 0x27D3 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x29C3 JUMPI POP DUP2 ISZERO ISZERO JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x2A0C JUMPI DUP3 DUP1 ADD PUSH1 0xFF NOT DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x2A39 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x2A39 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2A39 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2A1E JUMP JUMPDEST POP PUSH2 0x2A45 SWAP3 SWAP2 POP PUSH2 0x2A49 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2A45 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2A4A JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2A6F JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2A86 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2A9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AB6 JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2ACD JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x8B9 DUP2 PUSH2 0x35D8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AE9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x8B9 DUP2 PUSH2 0x35D8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B06 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2B11 DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2B21 DUP2 PUSH2 0x35D8 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2B40 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2B4B DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2B5B DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2B87 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x2B92 DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x2BA2 DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x2BB9 DUP2 PUSH2 0x3610 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH2 0x2BC9 DUP2 PUSH2 0x35ED JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH2 0x2BDF DUP10 PUSH1 0xC0 DUP11 ADD PUSH2 0x2AA5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2C08 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x2C13 DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x2C23 DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH2 0x2BC9 DUP2 PUSH2 0x35ED JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2C5B JUMPI DUP3 DUP4 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x2C66 DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x2C76 DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH2 0x2C94 DUP2 PUSH2 0x3620 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2CC3 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2CCE DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2CF0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2CFB DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x2D12 DUP2 PUSH2 0x35ED JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2D32 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2D3D DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x2D54 DUP2 PUSH2 0x3610 JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x2D64 DUP2 PUSH2 0x35ED JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D80 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x8B9 DUP2 PUSH2 0x35ED JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2DA5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x2DB0 DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x2DC0 DUP2 PUSH2 0x35D8 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2DDC JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x2DE8 DUP12 DUP4 DUP13 ADD PUSH2 0x2A5E JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH1 0x60 DUP11 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2E00 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x2E0D DUP11 DUP3 DUP12 ADD PUSH2 0x2A5E JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH2 0x2E21 DUP2 PUSH2 0x35D8 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2E45 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x2E50 DUP2 PUSH2 0x35FB JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH2 0x2E61 DUP2 PUSH2 0x35FB JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E84 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E9C JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2EB4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x8B9 DUP2 PUSH2 0x3620 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2ED0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x8B9 DUP2 PUSH2 0x3620 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2F13 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2EEE JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x2F36 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x35AC JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE DUP3 DUP3 PUSH1 0x20 DUP7 ADD CALLDATACOPY DUP1 PUSH1 0x20 DUP5 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP6 ADD ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x2F86 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x35AC JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1901 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x3022 SWAP1 DUP4 ADD DUP7 DUP9 PUSH2 0x2F4A JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x3035 DUP2 DUP6 DUP8 PUSH2 0x2F4A JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP3 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0xFFFF SWAP1 SWAP2 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 MSTORE PUSH2 0x30BD PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2EDB JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 MSTORE PUSH2 0x30E7 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x2EDB JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP8 DUP9 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND PUSH1 0x20 DUP10 ADD MSTORE SWAP5 SWAP1 SWAP6 AND PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x60 DUP7 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0xFFFF AND PUSH1 0x80 DUP6 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST SWAP8 DUP9 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND PUSH1 0x20 DUP10 ADD MSTORE SWAP5 SWAP1 SWAP6 AND PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x60 DUP7 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 DUP6 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST SWAP6 DUP7 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x20 DUP8 ADD MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x8B9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2F1E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x40 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x22 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x77 PUSH1 0xF8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x436F6E747261637420696E7374616E63652068617320616C7265616479206265 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x195B881A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x21 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x73 PUSH1 0xF8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x25 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x40 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x40 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x40 DUP3 ADD MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x36 SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A20617070726F76652066726F6D206E6F6E2D7A65726F PUSH1 0x40 DUP3 ADD MSTORE PUSH22 0x20746F206E6F6E2D7A65726F20616C6C6F77616E6365 PUSH1 0x50 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x35C7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x35AF JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2375 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1A5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1A5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1A5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x1A5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x1A5A JUMPI PUSH1 0x0 DUP1 REVERT INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x2062616C616E636545524332303A207472616E73 PUSH7 0x657220616D6F75 PUSH15 0x74206578636565647320616C6C6F77 PUSH2 0x6E63 PUSH6 0x45524332303A KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x735822122074B2 PUSH4 0x9F812DEB PUSH8 0x4BC52F31D13ED605 GASPRICE SWAP11 0xF8 LOG1 0xBB 0x4A CREATE LOG3 0xEF 0xC7 0xCD 0x49 0xC8 SWAP14 0xB5 0xD5 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "1697:17332:93:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2132:75:8;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4048:156;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2832:63:93:-;;;:::i;:::-;;;;;;;:::i;3111:92:8:-;;;:::i;:::-;;;;;;;:::i;17077:871:93:-;;;:::i;4638:343:8:-;;;;;;:::i;:::-;;:::i;5024:221:93:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;9117:128::-;;;:::i;4505:237::-;;;;;;:::i;:::-;;:::i;18423:171::-;;;;;;:::i;:::-;;:::i;2156:141::-;;;:::i;2984:75:8:-;;;:::i;:::-;;;;;;;:::i;3520:948:93:-;;;;;;:::i;:::-;;:::i;:::-;;8936:144;;;;;;:::i;:::-;;:::i;5350:205:8:-;;;;;;:::i;:::-;;:::i;12621:324:93:-;;;:::i;8566:152::-;;;;;;:::i;:::-;;:::i;2932:28::-;;;:::i;2899:29::-;;;:::i;7344:1185::-;;;;;;:::i;:::-;;:::i;2727:55::-;;;:::i;2301:205::-;;;:::i;18631:146::-;;;;;;:::i;:::-;;:::i;3253:111:8:-;;;;;;:::i;:::-;;:::i;18781:133:93:-;;;:::i;1957:50::-;;;:::i;17985:401::-;;;:::i;14033:372::-;;;;;;:::i;:::-;;:::i;2510:212::-;;;:::i;2310:79:8:-;;;:::i;2964:35:93:-;;;:::i;6012:318:8:-;;;;;;:::i;:::-;;:::i;14601:180:93:-;;;:::i;3549:162:8:-;;;;;;:::i;:::-;;:::i;18918:109:93:-;;;:::i;2787:41::-;;;:::i;3004:42::-;;;;;;:::i;:::-;;:::i;6124:1183::-;;;;;;:::i;:::-;;:::i;5282:805::-;;;;;;:::i;:::-;;:::i;3761:165:8:-;;;;;;:::i;:::-;;:::i;4779:208:93:-;;;;;;:::i;:::-;;:::i;9282:352::-;;;:::i;14409:188::-;;;;;;:::i;:::-;;:::i;8755:144::-;;;;;;:::i;:::-;;:::i;2132:75:8:-;2197:5;2190:12;;;;;;;;-1:-1:-1;;2190:12:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2169:13;;2190:12;;2197:5;;2190:12;;2197:5;2190:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2132:75;;:::o;4048:156::-;4131:4;4143:39;4152:12;:10;:12::i;:::-;4166:7;4175:6;4143:8;:39::i;:::-;-1:-1:-1;4195:4:8;4048:156;;;;;:::o;2832:63:93:-;;;-1:-1:-1;;;;;2832:63:93;;:::o;3111:92:8:-;3186:12;;3111:92;:::o;17077:871:93:-;17236:21;;17279:6;;17236:51;;-1:-1:-1;;;17236:51:93;;17141:7;;;;;;;;-1:-1:-1;;;;;17236:21:93;;;;:34;;:51;;17279:6;;;;17236:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17156:131;;-1:-1:-1;;;;;17156:131:93;;;-1:-1:-1;;;;;17156:131:93;;;17293:23;17319:21;;;;;;;;;-1:-1:-1;;;;;17319:21:93;-1:-1:-1;;;;;17319:38:93;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17293:66;;17365:19;17415:6;;;;;;;;;-1:-1:-1;;;;;17415:6:93;-1:-1:-1;;;;;17387:54:93;;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17365:78;-1:-1:-1;17461:22:93;;;:48;;-1:-1:-1;17493:16:93;;17461:48;:96;;;;17542:15;17519:19;:38;17461:96;:144;;;;17590:15;17567:19;:38;;17461:144;17450:189;;;17627:5;17620:12;;;;;;;;;17450:189;17645:24;17696:15;17678;:33;:69;;17732:15;17678:69;;;17714:15;17678:69;17645:102;-1:-1:-1;17753:17:93;17773:41;17645:102;17794:19;17773:20;:41::i;:::-;17753:61;-1:-1:-1;17827:81:93;17902:5;17827:70;17885:11;17827:53;17864:15;17827:32;:17;17753:61;17827:21;:32::i;:::-;:36;;:53::i;:::-;:57;;:70::i;:::-;:74;;:81::i;:::-;17820:88;;;;;;;;;17077:871;:::o;4638:343:8:-;4760:4;4772:36;4782:6;4790:9;4801:6;4772:9;:36::i;:::-;4814:145;4830:6;4844:12;:10;:12::i;:::-;4864:89;4902:6;4864:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4864:19:8;;;;;;:11;:19;;;;;;4884:12;:10;:12::i;:::-;-1:-1:-1;;;;;4864:33:8;;;;;;;;;;;;-1:-1:-1;4864:33:8;;;:89;:37;:89::i;:::-;4814:8;:145::i;:::-;-1:-1:-1;4972:4:8;4638:343;;;;;;:::o;5024:221:93:-;5152:7;5161;5183:57;5193:10;5205:9;5216:1;5219:6;5227:12;5183:9;:57::i;:::-;5176:64;;;;5024:221;;;;;;:::o;9117:128::-;9185:12;;9233:5;;9185:55;;-1:-1:-1;;;9185:55:93;;9163:7;;9185:12;;;-1:-1:-1;;;;;9185:12:93;;;;:39;;:55;;9233:5;;;;9185:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9178:62;;9117:128;:::o;4505:237::-;4646:7;4668:69;4677:10;4689:9;4700:6;4708:12;4722:14;4668:8;:69::i;:::-;4661:76;4505:237;-1:-1:-1;;;;;4505:237:93:o;18423:171::-;18498:7;18520:69;18541:4;18547:15;18557:4;18547:9;:15::i;:::-;18564:24;:22;:24::i;:::-;18520:20;:69::i;2156:141::-;2202:95;2156:141;:::o;2984:75:8:-;3045:9;;;;2984:75;:::o;3520:948:93:-;1162:16:74;1181:13;:11;:13::i;:::-;1215:12;;1162:32;;-1:-1:-1;1215:12:74;;;:31;;;1231:15;:13;:15::i;:::-;1215:69;;;;1261:23;;1250:8;:34;1215:69;1200:146;;;;-1:-1:-1;;;1200:146:74;;;;;;;:::i;:::-;;;;;;;;;1376:12;;;;1375:13;1394:96;;;;1437:4;1422:19;;-1:-1:-1;;1422:19:74;;;;;:12;1449:34;;;1394:96;3728:14:93::1;:30:::0;;-1:-1:-1;;;;;3728:30:93;;::::1;-1:-1:-1::0;;;;;;3728:30:93;;::::1;;::::0;;;3764:12:::1;:19:::0;;;;::::1;3728:30;3764:19;-1:-1:-1::0;;;;;;3764:19:93;;::::1;;::::0;;3789:6:::1;:23:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;3819:24:::1;:5;3827:16:::0;;3819:24:::1;:::i;:::-;-1:-1:-1::0;3849:28:93::1;:7;3859:18:::0;;3849:28:::1;:::i;:::-;;3883:49;3913:6;-1:-1:-1::0;;;;;3898:31:93::1;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3883:14;:49::i;:::-;3962:6;-1:-1:-1::0;;;;;3954:40:93::1;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3939:5;:58:::0;;-1:-1:-1;;;;;;3939:58:93::1;-1:-1:-1::0;;;;;3939:58:93;;::::1;;::::0;;;;4003:51:::1;::::0;:5:::1;4029:4:::0;-1:-1:-1;;4003:17:93::1;:51::i;:::-;4073:6;-1:-1:-1::0;;;;;4065:39:93::1;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;4065:41:93::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;4065:41:93::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;4061:319;;;;;-1:-1:-1::0;;;;;4188:43:93;::::1;::::0;4184:181:::1;;4243:21;:44:::0;;-1:-1:-1;;;;;;4243:44:93::1;-1:-1:-1::0;;;;;4243:44:93;;::::1;::::0;;;::::1;::::0;;;;4319:36:::1;::::0;;-1:-1:-1;;;4319:36:93;;;;:21;;;::::1;::::0;:34:::1;::::0;:36:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:21;:36;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4297:12;:59:::0;;-1:-1:-1;;;;;;4297:59:93::1;-1:-1:-1::0;;;;;4297:59:93;;;::::1;::::0;;;::::1;::::0;;4184:181:::1;4107:264;4061:319;4411:4;-1:-1:-1::0;;;;;4391:72:93::1;;4418:6;4426:16;;4444:18;;4391:72;;;;;;;;;;:::i;:::-;;;;;;;;1508:14:74::0;1504:55;;;1532:12;:20;;-1:-1:-1;;1532:20:74;;;1504:55;3520:948:93;;;;;;;;;:::o;8936:144::-;9015:7;9037:38;9060:6;9068;:4;:6::i;:::-;9037:22;:38::i;5350:205:8:-;5438:4;5450:83;5459:12;:10;:12::i;:::-;5473:7;5482:50;5521:10;5482:11;:25;5494:12;:10;:12::i;:::-;-1:-1:-1;;;;;5482:25:8;;;;;;;;;;;;;;;;;-1:-1:-1;5482:25:8;;;:34;;;;;;;;;;;:38;:50::i;12621:324:93:-;12708:21;;12681:7;;-1:-1:-1;;;;;12708:21:93;12696:73;;-1:-1:-1;12761:1:93;12754:8;;12696:73;12801:16;;;12815:1;12801:16;;;;;;;;;12775:23;;12801:16;;;;;;;;;-1:-1:-1;;12843:6:93;;12823:9;;;;-1:-1:-1;;;;;;12843:6:93;;12823:9;;-1:-1:-1;12843:6:93;;12823:9;;;;-1:-1:-1;;;;;12823:27:93;;;:9;;;;;;;;;:27;12864:21;;:76;;-1:-1:-1;;;12864:76:93;;:21;;;:34;;:76;;12899:6;;-1:-1:-1;;12907:17:93;12934:4;;12864:76;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12857:83;;;12621:324;:::o;8566:152::-;8641:7;8663:50;8686:18;8696:7;8686:9;:18::i;:::-;8706:6;:4;:6::i;:::-;8663:22;:50::i;2932:28::-;;;-1:-1:-1;;;;;2932:28:93;;:::o;2899:29::-;;;-1:-1:-1;;;;;2899:29:93;;:::o;7344:1185::-;7630:32;;;;;;;;;;;;-1:-1:-1;;;7630:32:93;;;;7577:7;;;;-1:-1:-1;;;;;7609:19:93;;7601:62;;;;-1:-1:-1;;;7601:62:93;;;;;;;;:::i;:::-;;7727:8;7708:15;:27;;7737:37;;;;;;;;;;;;;-1:-1:-1;;;7737:37:93;;;7700:75;;;;;-1:-1:-1;;;7700:75:93;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;7809:14:93;;7781:25;7809:14;;;:7;:14;;;;;;;7921:20;:18;:20::i;:::-;2564:158;8041:5;8062:9;8087:12;8115:13;8144:12;8172:17;8205:8;7976:251;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7953:286;;;;;;7871:378;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;7871:378:93;;;;;;;;;7852:405;;7871:378;7852:405;;;;;-1:-1:-1;8288:56:93;;7852:405;;8306:11;;;;:9;:11;:::i;:::-;8319:9;:11;;;8332:9;:11;;;8288:56;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8279:65:93;:5;-1:-1:-1;;;;;8279:65:93;;8352:36;;;;;;;;;;;;;-1:-1:-1;;;8352:36:93;;;8264:130;;;;;-1:-1:-1;;;8264:130:93;;;;;;;;:::i;:::-;-1:-1:-1;8417:24:93;:17;8439:1;8417:21;:24::i;:::-;-1:-1:-1;;;;;8400:14:93;;;;;;:7;:14;;;;;:41;8454:70;8408:5;8471:9;8482:12;8496:13;8511:12;8454:9;:70::i;:::-;8447:77;;;;;;7344:1185;;;;;;;;;;:::o;2727:55::-;2779:3;2727:55;:::o;2301:205::-;2352:154;2301:205;:::o;18631:146::-;-1:-1:-1;;;;;18728:23:93;;18706:7;18728:23;;;:17;:23;;;;;;;:44;;:42;:44::i;3253:111:8:-;-1:-1:-1;;;;;3341:18:8;3319:7;3341:18;;;:9;:18;;;;;;;3253:111::o;18781:133:93:-;18888:21;;-1:-1:-1;;;;;18888:21:93;18781:133;:::o;1957:50::-;1997:10;;;;;;;;;;;;;-1:-1:-1;;;1997:10:93;;;1957:50;:::o;17985:401::-;18080:21;;18053:7;;-1:-1:-1;;;;;18080:21:93;18068:73;;-1:-1:-1;18133:1:93;18126:8;;18068:73;18173:16;;;18187:1;18173:16;;;;;;;;;18147:23;;18173:16;;;;;;;;;-1:-1:-1;;18215:6:93;;18195:9;;;;-1:-1:-1;;;;;;18215:6:93;;18195:9;;-1:-1:-1;18215:6:93;;18195:9;;;;-1:-1:-1;;;;;18195:27:93;;;:9;;;;;;;;;:27;18251:21;;:62;;-1:-1:-1;;;18251:62:93;;18228:20;;18251:21;;;;;:39;;:62;;18291:6;;18307:4;;18251:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18326:12;;:37;;-1:-1:-1;;;18326:37:93;;18228:85;;-1:-1:-1;18326:55:93;;18228:85;;-1:-1:-1;;;;;18326:12:93;;:22;;:37;;18357:4;;18326:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:55::-;18319:62;;;;17985:401;:::o;14033:372::-;14137:21;;-1:-1:-1;;;;;14137:21:93;14125:71;;14183:7;;14125:71;14217:10;-1:-1:-1;;;;;14217:24:93;;;;:86;;-1:-1:-1;14259:21:93;;:44;;-1:-1:-1;;;14259:44:93;;-1:-1:-1;;;;;14259:21:93;;;;:32;;:44;;14292:10;;14259:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14245:58:93;:10;-1:-1:-1;;;;;14245:58:93;;14217:86;14311:34;;;;;;;;;;;;;-1:-1:-1;;;14311:34:93;;;14202:149;;;;;-1:-1:-1;;;14202:149:93;;;;;;;;:::i;:::-;;14357:43;14379:10;14391:8;14357:21;:43::i;:::-;14033:372;;:::o;2510:212::-;2564:158;2510:212;:::o;2310:79:8:-;2377:7;2370:14;;;;;;;;-1:-1:-1;;2370:14:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2349:13;;2370:14;;2377:7;;2370:14;;2377:7;2370:14;;;;;;;;;;;;;;;;;;;;;;;;2964:35:93;;;-1:-1:-1;;;;;2964:35:93;;:::o;6012:318:8:-;6117:4;6131:177;6147:12;:10;:12::i;:::-;6167:7;6182:120;6230:15;6182:120;;;;;;;;;;;;;;;;;:11;:25;6194:12;:10;:12::i;:::-;-1:-1:-1;;;;;6182:25:8;;;;;;;;;;;;;;;;;-1:-1:-1;6182:25:8;;;:34;;;;;;;;;;;:120;:38;:120::i;14601:180:93:-;14667:21;;-1:-1:-1;;;;;14667:21:93;14655:71;;14713:7;;14655:71;14731:45;14753:10;14765;14731:21;:45::i;:::-;14601:180::o;3549:162:8:-;3635:4;3647:42;3657:12;:10;:12::i;:::-;3671:9;3682:6;3647:9;:42::i;18918:109:93:-;19016:5;;-1:-1:-1;;;;;19016:5:93;18918:109;:::o;2787:41::-;;;;;;-1:-1:-1;;;;;2787:41:93;;:::o;3004:42::-;;;;;;;;;;;;;:::o;6124:1183::-;6401:36;;;;;;;;;;;;-1:-1:-1;;;6401:36:93;;;;6353:7;;-1:-1:-1;;;;;6376:23:93;;6368:70;;;;-1:-1:-1;;;6368:70:93;;;;;;;;:::i;:::-;;6502:8;6483:15;:27;;6512:37;;;;;;;;;;;;;-1:-1:-1;;;6512:37:93;;;6475:75;;;;;-1:-1:-1;;;6475:75:93;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;6584:18:93;;6556:25;6584:18;;;:7;:18;;;;;;;6700:20;:18;:20::i;:::-;2352:154;6817:9;6842;6867:5;6888:12;6916:14;6946:17;6979:8;6755:246;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6732:281;;;;;;6650:373;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;6650:373:93;;;;;;;;;6631:400;;6650:373;6631:400;;;;;-1:-1:-1;7065:56:93;;6631:400;;7083:11;;;;:9;:11;:::i;:::-;7096:9;:11;;;7109:9;:11;;;7065:56;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7052:69:93;:9;-1:-1:-1;;;;;7052:69:93;;7129:36;;;;;;;;;;;;;-1:-1:-1;;;7129:36:93;;;7037:134;;;;;-1:-1:-1;;;7037:134:93;;;;;;;;:::i;:::-;-1:-1:-1;7198:24:93;:17;7220:1;7198:21;:24::i;:::-;-1:-1:-1;;;;;7177:18:93;;;;;;:7;:18;;;;;:45;7235:67;7185:9;7255;7266:5;7273:12;7287:14;7235:8;:67::i;:::-;7228:74;6124:1183;-1:-1:-1;;;;;;;;;;6124:1183:93:o;5282:805::-;5479:32;;;;;;;;;;;;-1:-1:-1;;;5479:32:93;;;;-1:-1:-1;;;;;5458:19:93;;5450:62;;;;-1:-1:-1;;;5450:62:93;;;;;;;;:::i;:::-;;5576:8;5557:15;:27;;5586:37;;;;;;;;;;;;;-1:-1:-1;;;5586:37:93;;;5549:75;;;;;-1:-1:-1;;;5549:75:93;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;5658:14:93;;5630:25;5658:14;;;:7;:14;;;;;;;5770:20;:18;:20::i;:::-;2202:95;5840:5;5847:7;5856:5;5863:17;5882:8;5812:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5802:90;;;;;;5720:182;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5701:209;;;;;;5678:232;;5933:26;5943:6;5951:1;5954;5957;5933:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5924:35:93;:5;-1:-1:-1;;;;;5924:35:93;;5961:36;;;;;;;;;;;;;-1:-1:-1;;;5961:36:93;;;5916:82;;;;;-1:-1:-1;;;5916:82:93;;;;;;;;:::i;:::-;-1:-1:-1;6021:24:93;:17;6043:1;6021:21;:24::i;:::-;-1:-1:-1;;;;;6004:14:93;;;;;;:7;:14;;;;;:41;6051:31;6012:5;6067:7;6076:5;6051:8;:31::i;3761:165:8:-;-1:-1:-1;;;;;3894:18:8;;;3870:7;3894:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3761:165::o;4779:208:93:-;4894:7;4903;4925:57;4935:10;4947:9;4958:6;4966:1;4969:12;4925:9;:57::i;9282:352::-;9342:7;9406:9;2057:95;9521:6;:4;:6::i;:::-;9505:24;;;;;;;1997:10;;;;;;;;;;;-1:-1:-1;;;1997:10:93;;;;9458:163;;;;9541:26;;9579:7;;9606:4;;9458:163;;:::i;:::-;;;;;;;;;;;;;9439:190;;;;;;9426:203;;;9282:352;:::o;14409:188::-;14485:21;;-1:-1:-1;;;;;14485:21:93;14473:71;;14531:7;;14473:71;14549:43;14571:10;14583:8;14549:21;:43::i;:::-;14409:188;:::o;8755:144::-;8834:7;8856:38;8879:6;8887;:4;:6::i;587:98:7:-;670:10;587:98;:::o;8972:338:8:-;-1:-1:-1;;;;;9085:19:8;;9077:68;;;;-1:-1:-1;;;9077:68:8;;;;;;;:::i;:::-;-1:-1:-1;;;;;9159:21:8;;9151:68;;;;-1:-1:-1;;;9151:68:8;;;;;;;:::i;:::-;-1:-1:-1;;;;;9226:18:8;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;9273:32;;;;;9256:6;;9273:32;:::i;:::-;;;;;;;;8972:338;;;:::o;1257:128:13:-;1315:7;1337:43;1341:1;1344;1337:43;;;;;;;;;;;;;;;;;:3;:43::i;2058:419::-;2116:7;2341:6;2337:35;;-1:-1:-1;2364:1:13;2357:8;;2337:35;2390:5;;;2394:1;2390;:5;:1;2409:5;;;;;:10;2401:56;;;;-1:-1:-1;;;2401:56:13;;;;;;;:::i;2908:124::-;2966:7;2988:39;2992:1;2995;2988:39;;;;;;;;;;;;;;;;;:3;:39::i;851:162::-;909:7;936:5;;;955:6;;;;947:46;;;;-1:-1:-1;;;947:46:13;;;;;;;:::i;6774:520:8:-;-1:-1:-1;;;;;6891:20:8;;6883:70;;;;-1:-1:-1;;;6883:70:8;;;;;;;:::i;:::-;-1:-1:-1;;;;;6967:23:8;;6959:71;;;;-1:-1:-1;;;6959:71:8;;;;;;;:::i;:::-;7037:47;7058:6;7066:9;7077:6;7037:20;:47::i;:::-;7111:71;7133:6;7111:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7111:17:8;;;;;;:9;:17;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;7091:17:8;;;;;;;:9;:17;;;;;;:91;;;;7211:20;;;;;;;:32;;7236:6;7211:24;:32::i;:::-;-1:-1:-1;;;;;7188:20:8;;;;;;;:9;:20;;;;;;;:55;;;;7254:35;;;;;;;;;;7282:6;;7254:35;:::i;1649:189:13:-;1751:7;1782:12;1774:6;;;;1766:29;;;;-1:-1:-1;;;1766:29:13;;;;;;;;:::i;:::-;-1:-1:-1;;;1813:5:13;;;1649:189::o;10543:1235:93:-;10759:36;;;;;;;;;;;;-1:-1:-1;;;10759:36:93;;;;10702:7;;;;-1:-1:-1;;;;;10734:23:93;;10726:70;;;;-1:-1:-1;;;10726:70:93;;;;;;;;:::i;:::-;-1:-1:-1;10817:17:93;;;:39;;-1:-1:-1;10838:18:93;;10817:39;10864:49;;;;;;;;;;;;;-1:-1:-1;;;10864:49:93;;;10802:117;;;;;-1:-1:-1;;;10802:117:93;;;;;;;;:::i;:::-;;10926:19;10948:16;10958:5;10948:9;:16::i;:::-;10926:38;;10971:24;11001:20;11028:19;11050:6;:4;:6::i;:::-;11028:28;-1:-1:-1;11066:16:93;;11062:459;;11123:11;11108:12;:26;11107:57;;11152:12;11107:57;;;11138:11;11107:57;11092:72;;11191:49;11214:12;11228:11;11191:22;:49::i;:::-;11172:68;;11062:459;;;11261:26;11290:48;11313:11;11326;11290:22;:48::i;:::-;11261:77;;11382:18;11366:13;:34;11365:73;;11425:13;11365:73;;;11404:18;11365:73;11346:92;;11461:53;11484:16;11502:11;11461:22;:53::i;:::-;11446:68;;11062:459;;11527:26;11533:5;11540:12;11527:5;:26::i;:::-;11564:12;11560:168;;;11586:12;;11616:5;;11586:66;;-1:-1:-1;;;11586:66:93;;-1:-1:-1;;;;;11586:12:93;;;;;;;:21;;:66;;11616:5;;;11624:16;;11642:9;;11586:66;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11560:168;;;11673:6;;:48;;-1:-1:-1;;;;;11673:6:93;11693:9;11704:16;11673:19;:48::i;:::-;-1:-1:-1;11742:12:93;11756:16;;-1:-1:-1;10543:1235:93;-1:-1:-1;;;;;;;10543:1235:93:o;9908:631::-;10112:36;;;;;;;;;;;;-1:-1:-1;;;10112:36:93;;;;10064:7;;-1:-1:-1;;;;;10087:23:93;;10079:70;;;;-1:-1:-1;;;10079:70:93;;;;;;;;:::i;:::-;;10160:14;10156:250;;;10184:5;;:56;;-1:-1:-1;;;;;10184:5:93;10207:9;10226:4;10233:6;10184:22;:56::i;:::-;10248:12;;10277:5;;10248:73;;-1:-1:-1;;;10248:73:93;;-1:-1:-1;;;;;10248:12:93;;;;;;;:20;;:73;;10277:5;;;10285:6;;10301:4;;10308:12;;10248:73;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10156:250;;;10342:6;;:57;;-1:-1:-1;;;;;10342:6:93;10366:9;10385:4;10392:6;10342:23;:57::i;:::-;10411:20;10434:38;10457:6;10465;:4;:6::i;10434:38::-;10411:61;;10478:30;10484:9;10495:12;10478:5;:30::i;:::-;10522:12;9908:631;-1:-1:-1;;;;;;9908:631:93:o;16766:274::-;16895:7;16910:14;16933:83;16961:54;16980:4;16986:7;16995:19;16961:18;:54::i;:::-;-1:-1:-1;;;;;16933:23:93;;;;;;:17;:23;;;;;;;;:27;:83::i;3355:115::-;2779:3;3355:115;:::o;1858:510:74:-;2328:9;2316:22;2356:7;1858:510;:::o;9617:82:8:-;9673:9;:21;;-1:-1:-1;;9673:21:8;;;;;;;;;;;;9617:82::o;1124:345:12:-;1238:10;;;1237:62;;-1:-1:-1;1254:39:12;;-1:-1:-1;;;1254:39:12;;-1:-1:-1;;;;;1254:15:12;;;;;:39;;1278:4;;1285:7;;1254:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;1237:62;1222:147;;;;-1:-1:-1;;;1222:147:12;;;;;;;:::i;:::-;1375:89;1394:5;1424:22;;;1448:7;1457:5;1401:62;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1401:62:12;;;;;;;;;;;;;;-1:-1:-1;;;;;1401:62:12;-1:-1:-1;;;;;;1401:62:12;;;;;;;;;;1375:18;:89::i;:::-;1124:345;;;:::o;9638:131:93:-;9723:7;9745:19;:6;9759:4;9745:13;:19::i;9773:131::-;9858:7;9880:19;:6;9894:4;9880:13;:19::i;754:106:85:-;255:3;838:17;;;754:106::o;13149:880:93:-;13233:27;13263:24;:22;:24::i;:::-;13233:54;;13293:15;13311:21;13321:10;13311:9;:21::i;:::-;13293:39;;13338:18;13359:62;13380:10;13392:7;13401:19;13359:20;:62::i;:::-;13461:12;;:37;;-1:-1:-1;;;13461:37:93;;13338:83;;-1:-1:-1;13427:31:93;;-1:-1:-1;;;;;13461:12:93;;;;:22;;:37;;13492:4;;13461:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13427:71;;13504:23;13555;13542:10;:36;13538:109;;;13615:25;:23;:25::i;:::-;13588:52;;;;13538:109;13670:23;13657:10;:36;13653:155;;;-1:-1:-1;13734:23:93;;;13721:36;;;13653:155;13817:14;;13813:212;;-1:-1:-1;;;;;13841:29:93;;;;;;:17;:29;;;;;;:47;;;13896:67;13859:10;13943:19;13896:34;:67::i;:::-;13971:12;;:47;;-1:-1:-1;;;;;13971:12:93;13997:8;14007:10;13971:25;:47::i;:::-;13149:880;;;;;;;:::o;3483:332:13:-;3585:7;3677:12;3670:5;3662:28;;;;-1:-1:-1;;;3662:28:13;;;;;;;;:::i;:::-;;3696:9;3712:1;3708;:5;;;;;;;3483:332;-1:-1:-1;;;;;3483:332:13:o;12065:489:93:-;12189:21;;-1:-1:-1;;;;;12189:21:93;12177:71;;12235:7;;12177:71;12253:20;12276:24;:22;:24::i;:::-;12253:47;-1:-1:-1;;;;;;12310:18:93;;;12306:70;;12338:31;12350:4;12356:12;12338:11;:31::i;:::-;-1:-1:-1;;;;;12385:16:93;;;;;;:30;;;12413:2;-1:-1:-1;;;;;12405:10:93;:4;-1:-1:-1;;;;;12405:10:93;;;12385:30;12381:80;;;12425:29;12437:2;12441:12;12425:11;:29::i;:::-;12470:14;;-1:-1:-1;;;;;12470:14:93;:30;12466:84;;12510:33;12530:12;12510:19;:33::i;:::-;12065:489;;;;:::o;8187:388:8:-;-1:-1:-1;;;;;8266:21:8;;8258:67;;;;-1:-1:-1;;;8258:67:8;;;;;;;:::i;:::-;8332:49;8353:7;8370:1;8374:6;8332:20;:49::i;:::-;8409:68;8432:6;8409:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8409:18:8;;;;;;:9;:18;;;;;;;:68;:22;:68::i;:::-;-1:-1:-1;;;;;8388:18:8;;;;;;:9;:18;;;;;:89;8498:12;;:24;;8515:6;8498:16;:24::i;:::-;8483:12;:39;8533:37;;8559:1;;-1:-1:-1;;;;;8533:37:8;;;;;;;8563:6;;8533:37;:::i;:::-;;;;;;;;8187:388;;:::o;716:184:12:-;810:85;829:5;859:23;;;884:2;888:5;836:58;;;;;;;;;:::i;904:216::-;1020:95;1039:5;1069:27;;;1098:4;1104:2;1108:5;1046:68;;;;;;;;;;:::i;7544:348:8:-;-1:-1:-1;;;;;7623:21:8;;7615:65;;;;-1:-1:-1;;;7615:65:8;;;;;;;:::i;:::-;7687:49;7716:1;7720:7;7729:6;7687:20;:49::i;:::-;7758:12;;:24;;7775:6;7758:16;:24::i;:::-;7743:12;:39;-1:-1:-1;;;;;7809:18:8;;;;;;:9;:18;;;;;;:30;;7832:6;7809:22;:30::i;:::-;-1:-1:-1;;;;;7788:18:8;;;;;;:9;:18;;;;;;:51;;;;7850:37;;7788:18;;;7850:37;;;;7880:6;;7850:37;:::i;16041:453:93:-;16195:21;;16168:7;;-1:-1:-1;;;;;16195:21:93;16183:113;;-1:-1:-1;16288:1:93;16281:8;;16183:113;16306:12;16302:41;;-1:-1:-1;16335:1:93;16328:8;;16302:41;16349:18;16370;:7;:16;:18::i;:::-;-1:-1:-1;;;;;16453:34:93;;;;;;:28;:34;;;;;;16349:39;;-1:-1:-1;16401:88:93;;16429:59;;:19;;:23;:59::i;:::-;16401:10;;:27;:88::i;1473:555:12:-;1556:27;1564:5;-1:-1:-1;;;;;1556:25:12;;:27::i;:::-;1548:71;;;;-1:-1:-1;;;1548:71:12;;;;;;;:::i;:::-;1682:12;1696:23;1731:5;-1:-1:-1;;;;;1723:19:12;1743:4;1723:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1681:67;;;;1762:7;1754:52;;;;-1:-1:-1;;;1754:52:12;;;;;;;:::i;:::-;1817:17;;:21;1813:211;;1951:10;1940:30;;;;;;;;;;;;:::i;:::-;1932:85;;;;-1:-1:-1;;;1932:85:12;;;;;;;:::i;2416:279:86:-;2508:28;;;;;;;;;;;;-1:-1:-1;;;2508:28:86;;;;2477:7;;2500:6;2492:45;;;;-1:-1:-1;;;2492:45:86;;;;;;;;:::i;:::-;-1:-1:-1;2619:35:86;;;;;;;;;2563:1;2619:35;;;-1:-1:-1;;;2619:35:86;;;;2559:5;;;432:4;2585:25;;2584:33;2579:38;;;2571:84;;;;-1:-1:-1;;;2571:84:86;;;;;;;;:::i;:::-;;2689:1;2680:5;432:4;2670:1;:7;:15;2669:21;;;;;;;2416:279;-1:-1:-1;;;;2416:279:86:o;2008:253::-;2069:7;2088:6;;;:16;;-1:-1:-1;2098:6:86;;2088:16;2084:45;;;-1:-1:-1;2121:1:86;2114:8;;2084:45;2180:1;-1:-1:-1;;2180:1:86;2148:33;;;;;2143:1;:38;;2183:35;;;;;;;;;;;;;-1:-1:-1;;;2183:35:86;;;2135:84;;;;;-1:-1:-1;;;2135:84:86;;;;;;;;:::i;:::-;-1:-1:-1;432:4:86;2234:5;;;476:7;2234:15;2233:23;;;2008:253;-1:-1:-1;;;2008:253:86:o;14907:163:93:-;-1:-1:-1;;;;;15009:34:93;;;;;;;:28;:34;;;;;:56;14907:163::o;15236:363::-;15315:15;15333;15343:4;15333:9;:15::i;:::-;15315:33;-1:-1:-1;15358:11:93;;15354:174;;15379:15;15397:54;15416:4;15422:7;15431:19;15397:18;:54::i;:::-;-1:-1:-1;;;;;15485:23:93;;;;;;:17;:23;;;;;;;15379:72;;-1:-1:-1;15485:36:93;;15379:72;15485:27;:36::i;:::-;-1:-1:-1;;;;;15459:23:93;;;;;;:17;:23;;;;;;:62;-1:-1:-1;15354:174:93;15533:61;15568:4;15574:19;15533:34;:61::i;15603:151::-;15689:14;;15676:73;;-1:-1:-1;;;15676:73:93;;-1:-1:-1;;;;;15689:14:93;;;;15676:52;;:73;;15729:19;;15676:73;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15603:151;:::o;3173:204:86:-;3225:7;530:3;3257:17;;;;:1;;:17;3288:22;:27;3317:35;;;;;;;;;;;;;-1:-1:-1;;;3317:35:86;;;3280:73;;;;;-1:-1:-1;;;3280:73:86;;;;;;;;:::i;:::-;-1:-1:-1;3366:6:86;3173:204;-1:-1:-1;;3173:204:86:o;263:239:85:-;334:7;353:6;;;:16;;-1:-1:-1;363:6:85;;353:16;349:45;;;-1:-1:-1;386:1:85;379:8;;349:45;432:1;-1:-1:-1;;412:21:85;;;;;;407:1;:26;;435:35;;;;;;;;;;;;;-1:-1:-1;;;435:35:85;;;399:72;;;;;-1:-1:-1;;;399:72:85;;;;;;;;:::i;:::-;-1:-1:-1;205:4:85;485:5;;;484:13;;686:586:6;746:4;1185:20;;1032:66;1224:23;;;;;;:42;;-1:-1:-1;1251:15:6;;;1224:42;1216:51;686:586;-1:-1:-1;;;;686:586:6:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;1089:337;;;1204:3;1197:4;1189:6;1185:17;1181:27;1171:2;;-1:-1;;1212:12;1171:2;-1:-1;1242:20;;1282:18;1271:30;;1268:2;;;-1:-1;;1304:12;1268:2;1348:4;1340:6;1336:17;1324:29;;1399:3;1348:4;1379:17;1340:6;1365:32;;1362:41;1359:2;;;1416:1;;1406:12;1359:2;1164:262;;;;;:::o;1481:166::-;;1600:2;1591:6;1586:3;1582:16;1578:25;1575:2;;;-1:-1;;1606:12;1575:2;-1:-1;1626:15;1568:79;-1:-1;1568:79::o;2478:241::-;;2582:2;2570:9;2561:7;2557:23;2553:32;2550:2;;;-1:-1;;2588:12;2550:2;85:6;72:20;97:33;124:5;97:33;:::i;2726:263::-;;2841:2;2829:9;2820:7;2816:23;2812:32;2809:2;;;-1:-1;;2847:12;2809:2;226:6;220:13;238:33;265:5;238:33;:::i;2996:366::-;;;3117:2;3105:9;3096:7;3092:23;3088:32;3085:2;;;-1:-1;;3123:12;3085:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3175:63;-1:-1;3275:2;3314:22;;72:20;97:33;72:20;97:33;:::i;:::-;3283:63;;;;3079:283;;;;;:::o;3369:491::-;;;;3507:2;3495:9;3486:7;3482:23;3478:32;3475:2;;;-1:-1;;3513:12;3475:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3565:63;-1:-1;3665:2;3704:22;;72:20;97:33;72:20;97:33;:::i;:::-;3469:391;;3673:63;;-1:-1;;;3773:2;3812:22;;;;1997:20;;3469:391::o;3867:1057::-;;;;;;;;4104:3;4092:9;4083:7;4079:23;4075:33;4072:2;;;-1:-1;;4111:12;4072:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;4163:63;-1:-1;4263:2;4302:22;;72:20;97:33;72:20;97:33;:::i;:::-;4271:63;-1:-1;4371:2;4410:22;;1997:20;;-1:-1;4479:2;4517:22;;1861:20;1886:32;1861:20;1886:32;:::i;:::-;4487:62;-1:-1;4586:3;4623:22;;347:20;372:30;347:20;372:30;:::i;:::-;4595:60;-1:-1;4692:3;4732:22;;1997:20;;-1:-1;4820:88;4900:7;4801:3;4876:22;;4820:88;:::i;:::-;4810:98;;4066:858;;;;;;;;;;:::o;4931:1059::-;;;;;;;;5169:3;5157:9;5148:7;5144:23;5140:33;5137:2;;;-1:-1;;5176:12;5137:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;5228:63;-1:-1;5328:2;5367:22;;72:20;97:33;72:20;97:33;:::i;:::-;5336:63;-1:-1;5436:2;5475:22;;1997:20;;-1:-1;5544:2;5583:22;;1997:20;;-1:-1;5652:3;5689:22;;347:20;372:30;347:20;372:30;:::i;5997:991::-;;;;;;;;6201:3;6189:9;6180:7;6176:23;6172:33;6169:2;;;-1:-1;;6208:12;6169:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;6260:63;-1:-1;6360:2;6399:22;;72:20;97:33;72:20;97:33;:::i;:::-;6368:63;-1:-1;6468:2;6507:22;;1997:20;;-1:-1;6576:2;6615:22;;1997:20;;-1:-1;6684:3;6722:22;;2273:20;2298:31;2273:20;2298:31;:::i;:::-;6163:825;;;;-1:-1;6163:825;;;;6693:61;6791:3;6831:22;;616:20;;-1:-1;6900:3;6940:22;;;616:20;;6163:825;-1:-1;;6163:825::o;6995:366::-;;;7116:2;7104:9;7095:7;7091:23;7087:32;7084:2;;;-1:-1;;7122:12;7084:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;7174:63;7274:2;7313:22;;;;1997:20;;-1:-1;;;7078:283::o;7368:485::-;;;;7503:2;7491:9;7482:7;7478:23;7474:32;7471:2;;;-1:-1;;7509:12;7471:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;7561:63;-1:-1;7661:2;7700:22;;1997:20;;-1:-1;7769:2;7805:22;;347:20;372:30;347:20;372:30;:::i;:::-;7777:60;;;;7465:388;;;;;:::o;7860:609::-;;;;;8011:3;7999:9;7990:7;7986:23;7982:33;7979:2;;;-1:-1;;8018:12;7979:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;8070:63;-1:-1;8170:2;8209:22;;1997:20;;-1:-1;8278:2;8316:22;;1861:20;1886:32;1861:20;1886:32;:::i;:::-;8286:62;-1:-1;8385:2;8421:22;;347:20;372:30;347:20;372:30;:::i;:::-;7973:496;;;;-1:-1;7973:496;;-1:-1;;7973:496::o;8476:257::-;;8588:2;8576:9;8567:7;8563:23;8559:32;8556:2;;;-1:-1;;8594:12;8556:2;495:6;489:13;507:30;531:5;507:30;:::i;9078:1037::-;;;;;;;;9311:3;9299:9;9290:7;9286:23;9282:33;9279:2;;;-1:-1;;9318:12;9279:2;996:6;983:20;1008:54;1056:5;1008:54;:::i;:::-;9370:84;-1:-1;9491:2;9530:22;;72:20;97:33;72:20;97:33;:::i;:::-;9499:63;-1:-1;9627:2;9612:18;;9599:32;9651:18;9640:30;;;9637:2;;;-1:-1;;9673:12;9637:2;9711:65;9768:7;9759:6;9748:9;9744:22;9711:65;:::i;:::-;9693:83;;-1:-1;9693:83;-1:-1;9841:2;9826:18;;9813:32;;-1:-1;9854:30;;;9851:2;;;-1:-1;;9887:12;9851:2;;9925:65;9982:7;9973:6;9962:9;9958:22;9925:65;:::i;:::-;9907:83;;-1:-1;9907:83;-1:-1;;10027:3;10067:22;;72:20;97:33;72:20;97:33;:::i;:::-;10036:63;;;;9273:842;;;;;;;;;;:::o;10122:535::-;;;;10271:2;10259:9;10250:7;10246:23;10242:32;10239:2;;;-1:-1;;10277:12;10239:2;1738:6;1732:13;1750:33;1777:5;1750:33;:::i;:::-;10440:2;10490:22;;1732:13;10329:74;;-1:-1;1750:33;1732:13;1750:33;:::i;:::-;10448:74;;;;10559:2;10613:9;10609:22;2145:13;10567:74;;10233:424;;;;;:::o;10664:241::-;;10768:2;10756:9;10747:7;10743:23;10739:32;10736:2;;;-1:-1;;10774:12;10736:2;-1:-1;1997:20;;10730:175;-1:-1;10730:175::o;10912:263::-;;11027:2;11015:9;11006:7;11002:23;10998:32;10995:2;;;-1:-1;;11033:12;10995:2;-1:-1;2145:13;;10989:186;-1:-1;10989:186::o;11182:237::-;;11284:2;11272:9;11263:7;11259:23;11255:32;11252:2;;;-1:-1;;11290:12;11252:2;2286:6;2273:20;2298:31;2323:5;2298:31;:::i;11426:259::-;;11539:2;11527:9;11518:7;11514:23;11510:32;11507:2;;;-1:-1;;11545:12;11507:2;2423:6;2417:13;2435:31;2460:5;2435:31;:::i;12135:690::-;;12328:5;38273:12;38817:6;38812:3;38805:19;38854:4;;38849:3;38845:14;12340:93;;38854:4;12504:5;38127:14;-1:-1;12543:260;12568:6;12565:1;12562:13;12543:260;;;12629:13;;-1:-1;;;;;40316:54;11935:37;;11846:14;;;;38660;;;;1282:18;12583:9;12543:260;;;-1:-1;12809:10;;12259:566;-1:-1;;;;;12259:566::o;13223:343::-;;13365:5;38273:12;38817:6;38812:3;38805:19;13458:52;13503:6;38854:4;38849:3;38845:14;38854:4;13484:5;13480:16;13458:52;:::i;:::-;42084:7;42068:14;-1:-1;;42064:28;13522:39;;;;38854:4;13522:39;;13313:253;-1:-1;;13313:253::o;14500:300::-;;38817:6;38812:3;38805:19;41570:6;41565:3;38854:4;38849:3;38845:14;41547:30;-1:-1;38854:4;41617:6;38849:3;41608:16;;41601:27;38854:4;42084:7;;42088:2;14786:6;42068:14;42064:28;38849:3;14755:39;;14748:46;;14602:198;;;;;:::o;20741:271::-;;13733:5;38273:12;13844:52;13889:6;13884:3;13877:4;13870:5;13866:16;13844:52;:::i;:::-;13908:16;;;;;20875:137;-1:-1;;20875:137::o;21019:659::-;-1:-1;;;16199:87;;16184:1;16305:11;;13015:37;;;;21530:12;;;13015:37;21641:12;;;21264:414::o;21685:222::-;-1:-1;;;;;40316:54;;;;11935:37;;21812:2;21797:18;;21783:124::o;21914:333::-;-1:-1;;;;;40316:54;;;11935:37;;40316:54;;22233:2;22218:18;;11935:37;22069:2;22054:18;;22040:207::o;22254:444::-;-1:-1;;;;;40316:54;;;11935:37;;40316:54;;;;22601:2;22586:18;;11935:37;22684:2;22669:18;;13015:37;;;;22437:2;22422:18;;22408:290::o;22705:660::-;-1:-1;;;;;40316:54;;11935:37;;22948:2;23066;23051:18;;23044:48;;;22705:660;;23106:88;;22933:18;;23180:6;23172;23106:88;:::i;:::-;23242:9;23236:4;23232:20;23227:2;23216:9;23212:18;23205:48;23267:88;23350:4;23341:6;23333;23267:88;:::i;:::-;23259:96;22919:446;-1:-1;;;;;;;;22919:446::o;23372:333::-;-1:-1;;;;;40316:54;;;;11935:37;;23691:2;23676:18;;13015:37;23527:2;23512:18;;23498:207::o;23712:444::-;-1:-1;;;;;40316:54;;;11935:37;;24059:2;24044:18;;13015:37;;;;40316:54;;;24142:2;24127:18;;11935:37;23895:2;23880:18;;23866:290::o;24163:552::-;-1:-1;;;;;40316:54;;;11935:37;;24537:2;24522:18;;13015:37;;;;40316:54;;24620:2;24605:18;;11935:37;40235:6;40224:18;;;24701:2;24686:18;;20459:36;24372:3;24357:19;;24343:372::o;24722:481::-;;24927:2;24948:17;24941:47;25002:108;24927:2;24916:9;24912:18;25096:6;25002:108;:::i;:::-;24994:116;;1282:18;;40327:42;;;11965:5;40316:54;25189:2;25178:9;25174:18;11935:37;24898:305;;;;;:::o;25210:592::-;;25443:2;25464:17;25457:47;25518:108;25443:2;25432:9;25428:18;25612:6;25518:108;:::i;:::-;25705:2;25690:18;;13015:37;;;;-1:-1;;;;;;40316:54;;;;25788:2;25773:18;;;11935:37;25510:116;25414:388;-1:-1;25414:388::o;25809:210::-;39687:13;;39680:21;12898:34;;25930:2;25915:18;;25901:118::o;26026:222::-;13015:37;;;26153:2;26138:18;;26124:124::o;26255:988::-;13015:37;;;-1:-1;;;;;40316:54;;;26735:2;26720:18;;11935:37;40316:54;;;;26818:2;26803:18;;11935:37;26901:2;26886:18;;13015:37;;;;40235:6;40224:18;26982:3;26967:19;;20459:36;39687:13;39680:21;40327:42;27045:19;;12898:34;27144:3;27129:19;;13015:37;;;;27228:3;27213:19;;13015:37;26570:3;26555:19;;26541:702::o;27250:992::-;13015:37;;;-1:-1;;;;;40316:54;;;27732:2;27717:18;;11935:37;40316:54;;;;27815:2;27800:18;;11935:37;27898:2;27883:18;;13015:37;;;;27981:3;27966:19;;13015:37;39687:13;39680:21;40327:42;28044:19;;12898:34;28143:3;28128:19;;13015:37;;;;28227:3;28212:19;;13015:37;27567:3;27552:19;;27538:704::o;28249:780::-;13015:37;;;-1:-1;;;;;40316:54;;;28681:2;28666:18;;11935:37;40316:54;;;;28764:2;28749:18;;11935:37;28847:2;28832:18;;13015:37;28930:3;28915:19;;13015:37;;;;40327:42;28999:19;;13015:37;28516:3;28501:19;;28487:542::o;29036:668::-;13015:37;;;29440:2;29425:18;;13015:37;;;;29523:2;29508:18;;13015:37;;;;29606:2;29591:18;;13015:37;-1:-1;;;;;40316:54;29689:3;29674:19;;11935:37;29275:3;29260:19;;29246:458::o;29711:548::-;13015:37;;;40532:4;40521:16;;;;30079:2;30064:18;;20694:35;30162:2;30147:18;;13015:37;30245:2;30230:18;;13015:37;29918:3;29903:19;;29889:370::o;30266:306::-;;30411:2;30432:17;30425:47;30486:76;30411:2;30400:9;30396:18;30548:6;30486:76;:::i;31723:416::-;31923:2;31937:47;;;15387:2;31908:18;;;38805:19;15423:34;38845:14;;;15403:55;-1:-1;;;15478:12;;;15471:27;15517:12;;;31894:245::o;32146:416::-;32346:2;32360:47;;;15768:2;32331:18;;;38805:19;15804:34;38845:14;;;15784:55;-1:-1;;;15859:12;;;15852:26;15897:12;;;32317:245::o;32569:416::-;32769:2;32783:47;;;16555:2;32754:18;;;38805:19;16591:29;38845:14;;;16571:50;16640:12;;;32740:245::o;32992:416::-;33192:2;33206:47;;;33177:18;;;38805:19;16927:34;38845:14;;;16907:55;16981:12;;;33163:245::o;33415:416::-;33615:2;33629:47;;;17232:2;33600:18;;;38805:19;17268:34;38845:14;;;17248:55;-1:-1;;;17323:12;;;17316:25;17360:12;;;33586:245::o;33838:416::-;34038:2;34052:47;;;17611:2;34023:18;;;38805:19;17647:34;38845:14;;;17627:55;-1:-1;;;17702:12;;;17695:38;17752:12;;;34009:245::o;34261:416::-;34461:2;34475:47;;;18003:2;34446:18;;;38805:19;18039:34;38845:14;;;18019:55;-1:-1;;;18094:12;;;18087:25;18131:12;;;34432:245::o;34684:416::-;34884:2;34898:47;;;18382:2;34869:18;;;38805:19;18418:34;38845:14;;;18398:55;-1:-1;;;18473:12;;;18466:29;18514:12;;;34855:245::o;35107:416::-;35307:2;35321:47;;;18765:2;35292:18;;;38805:19;18801:34;38845:14;;;18781:55;-1:-1;;;18856:12;;;18849:28;18896:12;;;35278:245::o;35530:416::-;35730:2;35744:47;;;19147:2;35715:18;;;38805:19;19183:34;38845:14;;;19163:55;-1:-1;;;19238:12;;;19231:34;19284:12;;;35701:245::o;35953:416::-;36153:2;36167:47;;;19535:2;36138:18;;;38805:19;19571:34;38845:14;;;19551:55;-1:-1;;;19626:12;;;19619:46;19684:12;;;36124:245::o;36376:416::-;36576:2;36590:47;;;19935:2;36561:18;;;38805:19;19971:33;38845:14;;;19951:54;20024:12;;;36547:245::o;36799:416::-;36999:2;37013:47;;;20275:2;36984:18;;;38805:19;20311:33;38845:14;;;20291:54;20364:12;;;36970:245::o;37451:333::-;13015:37;;;37770:2;37755:18;;13015:37;37606:2;37591:18;;37577:207::o;37791:214::-;40532:4;40521:16;;;;20694:35;;37914:2;37899:18;;37885:120::o;41643:268::-;41708:1;41715:101;41729:6;41726:1;41723:13;41715:101;;;41796:11;;;41790:18;41777:11;;;41770:39;41751:2;41744:10;41715:101;;;41831:6;41828:1;41825:13;41822:2;;;-1:-1;;41708:1;41878:16;;41871:27;41692:219::o;42105:117::-;-1:-1;;;;;40316:54;;42164:35;;42154:2;;42213:1;;42203:12;42229:111;42310:5;39687:13;39680:21;42288:5;42285:32;42275:2;;42331:1;;42321:12;42829:117;-1:-1;;;;;42916:5;40105:46;42891:5;42888:35;42878:2;;42937:1;;42927:12;42953:115;40235:6;43038:5;40224:18;43014:5;43011:34;43001:2;;43059:1;;43049:12;43199:113;40532:4;43282:5;40521:16;43259:5;43256:33;43246:2;;43303:1;;43293:12"
            },
            "methodIdentifiers": {
              "ASSET()": "4800d97f",
              "ATOKEN()": "51c0e061",
              "EIP712_REVISION()": "78160376",
              "INCENTIVES_CONTROLLER()": "10d0ab22",
              "LENDING_POOL()": "b4dcfc77",
              "METADEPOSIT_TYPEHASH()": "63210537",
              "METAWITHDRAWAL_TYPEHASH()": "8d948415",
              "PERMIT_TYPEHASH()": "30adf81f",
              "REWARD_TOKEN()": "99248ea7",
              "STATIC_ATOKEN_LM_REVISION()": "61d0494d",
              "UNDERLYING_ASSET_ADDRESS()": "b16a19de",
              "_nonces(address)": "b9844d8d",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "claimRewards(address)": "ef5cfb8c",
              "claimRewardsOnBehalf(address,address)": "8ba2855d",
              "claimRewardsToSelf()": "a868dd5d",
              "collectAndUpdateRewards()": "3eb2eba6",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "deposit(address,uint256,uint16,bool)": "2f2cab87",
              "dynamicBalanceOf(address)": "44b68c3f",
              "dynamicToStaticAmount(uint256)": "36a5a6d6",
              "getClaimableRewards(address)": "308e401e",
              "getCurrentRewardsIndex()": "189956a2",
              "getDomainSeparator()": "ed24911d",
              "getIncentivesController()": "75d26413",
              "getTotalClaimableRewards()": "7f372cff",
              "getUnclaimedRewards(address)": "69a69e29",
              "increaseAllowance(address,uint256)": "39509351",
              "initialize(address,address,string,string,address)": "362925c2",
              "metaDeposit(address,address,uint256,uint16,bool,uint256,(uint8,bytes32,bytes32))": "c485852b",
              "metaWithdraw(address,address,uint256,uint256,bool,uint256,(uint8,bytes32,bytes32))": "60266557",
              "name()": "06fdde03",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "rate()": "2c4e722e",
              "staticToDynamicAmount(uint256)": "f57d0b40",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "withdraw(address,uint256,bool)": "ead5d359",
              "withdrawDynamicAmount(address,uint256,bool)": "288587ce"
            }
          }
        }
      },
      "contracts/protocol/tokenization/VariableDebtToken.sol": {
        "VariableDebtToken": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "fromUser",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "toUser",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "BorrowAllowanceDelegated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "underlyingAsset",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "incentivesController",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint8",
                  "name": "debtTokenDecimals",
                  "type": "uint8"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "debtTokenName",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "debtTokenSymbol",
                  "type": "string"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "Initialized",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "Mint",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "DEBT_TOKEN_REVISION",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "POOL",
              "outputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "UNDERLYING_ASSET_ADDRESS",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approveDelegation",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "fromUser",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "toUser",
                  "type": "address"
                }
              ],
              "name": "borrowAllowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "burn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "subtractedValue",
                  "type": "uint256"
                }
              ],
              "name": "decreaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getIncentivesController",
              "outputs": [
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "getScaledUserBalanceAndSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "addedValue",
                  "type": "uint256"
                }
              ],
              "name": "increaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract ILendingPool",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "underlyingAsset",
                  "type": "address"
                },
                {
                  "internalType": "contract IAaveIncentivesController",
                  "name": "incentivesController",
                  "type": "address"
                },
                {
                  "internalType": "uint8",
                  "name": "debtTokenDecimals",
                  "type": "uint8"
                },
                {
                  "internalType": "string",
                  "name": "debtTokenName",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "debtTokenSymbol",
                  "type": "string"
                },
                {
                  "internalType": "bytes",
                  "name": "params",
                  "type": "bytes"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "onBehalfOf",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                }
              ],
              "name": "scaledBalanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "scaledTotalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405260006006553480156200001657600080fd5b50604080518082018252600e8082526d111150951513d2d15397d253541360921b60208084018281528551808701909652928552840152815191929160009162000064916003919062000098565b5081516200007a90600490602085019062000098565b506005805460ff191660ff9290921691909117905550620001349050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000db57805160ff19168380011785556200010b565b828001600101855582156200010b579182015b828111156200010b578251825591602001919060010190620000ee565b50620001199291506200011d565b5090565b5b808211156200011957600081556001016200011e565b6117c780620001446000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806375d26413116100c3578063b3f1c93d1161007c578063b3f1c93d146103d2578063b9a7b6221461040e578063c04a8a1014610416578063c222ec8a14610444578063dd62ed3e146105ed578063f5298aca1461061b5761014d565b806375d264131461038657806395d89b411461038e578063a457c2d7146102e2578063a9059cbb14610396578063b16a19de146103c2578063b1bf962d146103ca5761014d565b806323b872dd1161011557806323b872dd1461028e578063313ce567146102c457806339509351146102e25780636bd76d241461030e57806370a082311461033c5780637535d246146103625761014d565b806306fdde0314610152578063095ea7b3146101cf5780630afbcdc91461020f57806318160ddd1461024e5780631da24f3e14610268575b600080fd5b61015a61064d565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019457818101518382015260200161017c565b50505050905090810190601f1680156101c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101fb600480360360408110156101e557600080fd5b506001600160a01b0381351690602001356106e3565b604080519115158252519081900360200190f35b6102356004803603602081101561022557600080fd5b50356001600160a01b031661072b565b6040805192835260208301919091528051918290030190f35b610256610748565b60408051918252519081900360200190f35b6102566004803603602081101561027e57600080fd5b50356001600160a01b03166107db565b6101fb600480360360608110156102a457600080fd5b506001600160a01b038135811691602081013590911690604001356107ee565b6102cc610836565b6040805160ff9092168252519081900360200190f35b6101fb600480360360408110156102f857600080fd5b506001600160a01b03813516906020013561083f565b6102566004803603604081101561032457600080fd5b506001600160a01b038135811691602001351661088e565b6102566004803603602081101561035257600080fd5b50356001600160a01b03166108bb565b61036a610967565b604080516001600160a01b039092168252519081900360200190f35b61036a610976565b61015a610980565b6101fb600480360360408110156103ac57600080fd5b506001600160a01b0381351690602001356107ee565b61036a6109e1565b6102566109f0565b6101fb600480360360808110156103e857600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356109fa565b610256610c13565b6104426004803603604081101561042c57600080fd5b506001600160a01b038135169060200135610c18565b005b610442600480360360e081101561045a57600080fd5b6001600160a01b038235811692602081013582169260408201359092169160ff606083013516919081019060a0810160808201356401000000008111156104a057600080fd5b8201836020820111156104b257600080fd5b803590602001918460018302840111640100000000831117156104d457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561052757600080fd5b82018360208201111561053957600080fd5b8035906020019184600183028401116401000000008311171561055b57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105ae57600080fd5b8201836020820111156105c057600080fd5b803590602001918460018302840111640100000000831117156105e257600080fd5b509092509050610cb4565b6102566004803603604081101561060357600080fd5b506001600160a01b038135811691602001351661083f565b6104426004803603606081101561063157600080fd5b506001600160a01b038135169060208101359060400135610f03565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106d95780601f106106ae576101008083540402835291602001916106d9565b820191906000526020600020905b8154815290600101906020018083116106bc57829003601f168201915b5050505050905090565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60008061073783611097565b61073f6110b2565b91509150915091565b603b54603c546040805163386497fd60e01b81526001600160a01b03928316600482015290516000936107d693169163386497fd916024808301926020929190829003018186803b15801561079c57600080fd5b505afa1580156107b0573d6000803e3d6000fd5b505050506040513d60208110156107c657600080fd5b50516107d06110b2565b906110b8565b905090565b60006107e682611097565b90505b919050565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60055460ff1690565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b038083166000908152603a60209081526040808320938516835292905220545b92915050565b6000806108c783611097565b9050806108d85760009150506107e9565b603b54603c546040805163386497fd60e01b81526001600160a01b039283166004820152905161096093929092169163386497fd91602480820192602092909190829003018186803b15801561092d57600080fd5b505afa158015610941573d6000803e3d6000fd5b505050506040513d602081101561095757600080fd5b505182906110b8565b9392505050565b603b546001600160a01b031690565b60006107d6611176565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106d95780601f106106ae576101008083540402835291602001916106d9565b603c546001600160a01b031690565b60006107d66110b2565b6000610a04610967565b6001600160a01b0316610a15611185565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610ac35760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a88578181015183820152602001610a70565b50505050905090810190601f168015610ab55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50836001600160a01b0316856001600160a01b031614610ae857610ae8848685611189565b6000610af385611097565b90506000610b018585611251565b6040805180820190915260028152611a9b60f11b602082015290915081610b695760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b50610b748682611358565b6040805186815290516001600160a01b038816916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3856001600160a01b0316876001600160a01b03167f2f00e3cdd69a77be7ed215ec7b2a36784dd158f921fca79ac29deffa353fe6ee8787604051808381526020018281526020019250505060405180910390a3501595945050505050565b600181565b80603a6000610c25611185565b6001600160a01b0390811682526020808301939093526040918201600090812091871680825291909352912091909155610c5d611185565b6001600160a01b03167fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1610c8f6109e1565b604080516001600160a01b039092168252602082018690528051918290030190a35050565b6000610cbe6114a9565b60075490915060ff1680610cd55750610cd56114ae565b80610ce1575060065481115b610d1c5760405162461bcd60e51b815260040180806020018281038252602e815260200180611743602e913960400191505060405180910390fd5b60075460ff16158015610d3c576007805460ff1916600117905560068290555b610d45866114b4565b610d4e856114cb565b610d57876114de565b603b80546001600160a01b03808d166001600160a01b03199283168117909355603c80548d83169084168117909155603d8054928d169290931682179092556040805191825260ff8b1660208084019190915260a09183018281528b51928401929092528a517f40251fbfb6656cfa65a00d7879029fec1fad21d28fdcff2f4f68f52795b74f2c938e938e938e938e938e938e93919290916060840191608085019160c0860191908a019080838360005b83811015610e20578181015183820152602001610e08565b50505050905090810190601f168015610e4d5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b83811015610e80578181015183820152602001610e68565b50505050905090810190601f168015610ead5780820380516001836020036101000a031916815260200191505b508481038252858152602001868680828437600083820152604051601f909101601f19169092018290039b50909950505050505050505050a38015610ef7576007805460ff191690555b50505050505050505050565b610f0b610967565b6001600160a01b0316610f1c611185565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610f8d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b506000610f9a8383611251565b60408051808201909152600281526106a760f31b6020820152909150816110025760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5061100d84826114f4565b6040805184815290516000916001600160a01b038716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3604080518481526020810184905281516001600160a01b038716927f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a928290030190a250505050565b6001600160a01b031660009081526020819052604090205490565b60025490565b60008215806110c5575081155b156110d2575060006108b5565b816b019d971e4fe8401e7400000019816110e857fe5b0483111560405180604001604052806002815260200161068760f31b815250906111535760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b603d546001600160a01b031690565b3390565b6040805180820182526002815261353960f01b6020808301919091526001600160a01b038087166000908152603a835284812091871681529152918220546111d2918490611592565b6001600160a01b038086166000818152603a60209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e161122a6109e1565b604080516001600160a01b039092168252602082018690528051918290030190a350505050565b604080518082019091526002815261035360f41b6020820152600090826112b95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156113355760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5082816b033b2e3c9fd0803ce80000008602018161134f57fe5b04949350505050565b6001600160a01b0382166113b3576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6113bf600083836115ec565b6002546113cc81836115f1565b6002556001600160a01b0383166000908152602081905260409020546113f281846115f1565b6001600160a01b038516600090815260208190526040812091909155611416611176565b6001600160a01b0316146114a35761142c611176565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561148a57600080fd5b505af115801561149e573d6000803e3d6000fd5b505050505b50505050565b600190565b303b1590565b80516114c790600390602084019061168d565b5050565b80516114c790600490602084019061168d565b6005805460ff191660ff92909216919091179055565b6001600160a01b0382166115395760405162461bcd60e51b81526004018080602001828103825260218152602001806117716021913960400191505060405180910390fd5b611545826000836115ec565b600254611552818361164b565b6002556001600160a01b0383166000908152602081815260409182902054825160608101909352602280845290926113f292869290611721908301398391905b600081848411156115e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b505050900390565b505050565b600082820183811015610960576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061096083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611592565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106116ce57805160ff19168380011785556116fb565b828001600101855582156116fb579182015b828111156116fb5782518255916020019190600101906116e0565b5061170792915061170b565b5090565b5b80821115611707576000815560010161170c56fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656445524332303a206275726e2066726f6d20746865207a65726f2061646472657373a2646970667358221220f2fe01913b59842ffe8d7363fe27844d555de6f26a7451262077ece0552d341364736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0x6 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP1 DUP3 MSTORE PUSH14 0x111150951513D2D15397D2535413 PUSH1 0x92 SHL PUSH1 0x20 DUP1 DUP5 ADD DUP3 DUP2 MSTORE DUP6 MLOAD DUP1 DUP8 ADD SWAP1 SWAP7 MSTORE SWAP3 DUP6 MSTORE DUP5 ADD MSTORE DUP2 MLOAD SWAP2 SWAP3 SWAP2 PUSH1 0x0 SWAP2 PUSH3 0x64 SWAP2 PUSH1 0x3 SWAP2 SWAP1 PUSH3 0x98 JUMP JUMPDEST POP DUP2 MLOAD PUSH3 0x7A SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x98 JUMP JUMPDEST POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0x134 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0xDB JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x10B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x10B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x10B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xEE JUMP JUMPDEST POP PUSH3 0x119 SWAP3 SWAP2 POP PUSH3 0x11D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x119 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x11E JUMP JUMPDEST PUSH2 0x17C7 DUP1 PUSH3 0x144 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x14D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x75D26413 GT PUSH2 0xC3 JUMPI DUP1 PUSH4 0xB3F1C93D GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xB3F1C93D EQ PUSH2 0x3D2 JUMPI DUP1 PUSH4 0xB9A7B622 EQ PUSH2 0x40E JUMPI DUP1 PUSH4 0xC04A8A10 EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0xC222EC8A EQ PUSH2 0x444 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x5ED JUMPI DUP1 PUSH4 0xF5298ACA EQ PUSH2 0x61B JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x75D26413 EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x38E JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x2E2 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x396 JUMPI DUP1 PUSH4 0xB16A19DE EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0xB1BF962D EQ PUSH2 0x3CA JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x115 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2E2 JUMPI DUP1 PUSH4 0x6BD76D24 EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x33C JUMPI DUP1 PUSH4 0x7535D246 EQ PUSH2 0x362 JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0xAFBCDC9 EQ PUSH2 0x20F JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0x1DA24F3E EQ PUSH2 0x268 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15A PUSH2 0x64D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x194 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1C1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6E3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x235 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x225 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x72B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x256 PUSH2 0x748 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7DB JUMP JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x7EE JUMP JUMPDEST PUSH2 0x2CC PUSH2 0x836 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x83F JUMP JUMPDEST PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x88E JUMP JUMPDEST PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8BB JUMP JUMPDEST PUSH2 0x36A PUSH2 0x967 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x36A PUSH2 0x976 JUMP JUMPDEST PUSH2 0x15A PUSH2 0x980 JUMP JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7EE JUMP JUMPDEST PUSH2 0x36A PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x256 PUSH2 0x9F0 JUMP JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x3E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x9FA JUMP JUMPDEST PUSH2 0x256 PUSH2 0xC13 JUMP JUMPDEST PUSH2 0x442 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x42C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC18 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x442 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x45A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 PUSH1 0xFF PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x527 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x539 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xCB4 JUMP JUMPDEST PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x603 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x83F JUMP JUMPDEST PUSH2 0x442 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF03 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x6D9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6AE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6D9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6BC JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1054141493D5905317D393D517D4D5541413D4951151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x737 DUP4 PUSH2 0x1097 JUMP JUMPDEST PUSH2 0x73F PUSH2 0x10B2 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x386497FD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 PUSH2 0x7D6 SWAP4 AND SWAP2 PUSH4 0x386497FD SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x79C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x7D0 PUSH2 0x10B2 JUMP JUMPDEST SWAP1 PUSH2 0x10B8 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7E6 DUP3 PUSH2 0x1097 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1514905394D1915497D393D517D4D5541413D4951151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x414C4C4F57414E43455F4E4F545F535550504F52544544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8C7 DUP4 PUSH2 0x1097 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x8D8 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x7E9 JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x386497FD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x960 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0x386497FD SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x92D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x941 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x957 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 SWAP1 PUSH2 0x10B8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D6 PUSH2 0x1176 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x6D9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6AE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6D9 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D6 PUSH2 0x10B2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA04 PUSH2 0x967 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA15 PUSH2 0x1185 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xAC3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xAB5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xAE8 JUMPI PUSH2 0xAE8 DUP5 DUP7 DUP6 PUSH2 0x1189 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAF3 DUP6 PUSH2 0x1097 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB01 DUP6 DUP6 PUSH2 0x1251 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1A9B PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0xB69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP PUSH2 0xB74 DUP7 DUP3 PUSH2 0x1358 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2F00E3CDD69A77BE7ED215EC7B2A36784DD158F921FCA79AC29DEFFA353FE6EE DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP ISZERO SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST DUP1 PUSH1 0x3A PUSH1 0x0 PUSH2 0xC25 PUSH2 0x1185 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0xC5D PUSH2 0x1185 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDA919360433220E13B51E8C211E490D148E61A3BD53DE8C097194E458B97F3E1 PUSH2 0xC8F PUSH2 0x9E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCBE PUSH2 0x14A9 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 PUSH2 0xCD5 JUMPI POP PUSH2 0xCD5 PUSH2 0x14AE JUMP JUMPDEST DUP1 PUSH2 0xCE1 JUMPI POP PUSH1 0x6 SLOAD DUP2 GT JUMPDEST PUSH2 0xD1C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1743 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0xD3C JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x6 DUP3 SWAP1 SSTORE JUMPDEST PUSH2 0xD45 DUP7 PUSH2 0x14B4 JUMP JUMPDEST PUSH2 0xD4E DUP6 PUSH2 0x14CB JUMP JUMPDEST PUSH2 0xD57 DUP8 PUSH2 0x14DE JUMP JUMPDEST PUSH1 0x3B DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP14 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x3C DUP1 SLOAD DUP14 DUP4 AND SWAP1 DUP5 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x3D DUP1 SLOAD SWAP3 DUP14 AND SWAP3 SWAP1 SWAP4 AND DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE PUSH1 0xFF DUP12 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 SWAP2 DUP4 ADD DUP3 DUP2 MSTORE DUP12 MLOAD SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP11 MLOAD PUSH32 0x40251FBFB6656CFA65A00D7879029FEC1FAD21D28FDCFF2F4F68F52795B74F2C SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x60 DUP5 ADD SWAP2 PUSH1 0x80 DUP6 ADD SWAP2 PUSH1 0xC0 DUP7 ADD SWAP2 SWAP1 DUP11 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE20 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE08 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE4D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP5 DUP2 SUB DUP4 MSTORE DUP8 MLOAD DUP2 MSTORE DUP8 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP10 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE80 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE68 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xEAD JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP7 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP12 POP SWAP1 SWAP10 POP POP POP POP POP POP POP POP POP POP LOG3 DUP1 ISZERO PUSH2 0xEF7 JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xF0B PUSH2 0x967 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF1C PUSH2 0x1185 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xF8D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xF9A DUP4 DUP4 PUSH2 0x1251 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x6A7 PUSH1 0xF3 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0x1002 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP PUSH2 0x100D DUP5 DUP3 PUSH2 0x14F4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP3 PUSH32 0x49995E5DD6158CF69AD3E9777C46755A1A826A446C6416992167462DAD033B2A SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x10C5 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x10D2 JUMPI POP PUSH1 0x0 PUSH2 0x8B5 JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x10E8 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1153 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP POP PUSH12 0x33B2E3C9FD0803CE8000000 SWAP2 MUL PUSH12 0x19D971E4FE8401E74000000 ADD DIV SWAP1 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3539 PUSH1 0xF0 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A DUP4 MSTORE DUP5 DUP2 KECCAK256 SWAP2 DUP8 AND DUP2 MSTORE SWAP2 MSTORE SWAP2 DUP3 KECCAK256 SLOAD PUSH2 0x11D2 SWAP2 DUP5 SWAP1 PUSH2 0x1592 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP10 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP4 SWAP1 SSTORE SWAP2 SWAP3 POP SWAP1 PUSH32 0xDA919360433220E13B51E8C211E490D148E61A3BD53DE8C097194E458B97F3E1 PUSH2 0x122A PUSH2 0x9E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x12B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x1335 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x134F JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x13B3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x13BF PUSH1 0x0 DUP4 DUP4 PUSH2 0x15EC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x13CC DUP2 DUP4 PUSH2 0x15F1 JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x13F2 DUP2 DUP5 PUSH2 0x15F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1416 PUSH2 0x1176 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x14A3 JUMPI PUSH2 0x142C PUSH2 0x1176 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP6 DUP5 DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x148A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x149E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x14C7 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x168D JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x14C7 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x168D JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1539 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1771 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1545 DUP3 PUSH1 0x0 DUP4 PUSH2 0x15EC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x1552 DUP2 DUP4 PUSH2 0x164B JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x22 DUP1 DUP5 MSTORE SWAP1 SWAP3 PUSH2 0x13F2 SWAP3 DUP7 SWAP3 SWAP1 PUSH2 0x1721 SWAP1 DUP4 ADD CODECOPY DUP4 SWAP2 SWAP1 JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x15E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x960 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x960 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1592 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x16CE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x16FB JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x16FB JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x16FB JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x16E0 JUMP JUMPDEST POP PUSH2 0x1707 SWAP3 SWAP2 POP PUSH2 0x170B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1707 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x170C JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E6365436F6E74 PUSH19 0x61637420696E7374616E63652068617320616C PUSH19 0x65616479206265656E20696E697469616C697A PUSH6 0x644552433230 GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F2061646472657373A2646970667358221220F2FE01913B59 DUP5 0x2F INVALID DUP14 PUSH20 0x63FE27844D555DE6F26A7451262077ECE0552D34 SGT PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "630:6048:94:-:0;;;926:1:74;884:43;;630:6048:94;;;;;;;;;-1:-1:-1;952:164:90;;;;;;;;;;;;-1:-1:-1;;;952:164:90;;;;;;;;;;;;;;;;;;;;;1051:12;;952:164;;;-1:-1:-1;;1051:12:90;;:5;;952:164;1051:12;:::i;:::-;-1:-1:-1;1069:16:90;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;1091:9:90;:20;;-1:-1:-1;;1091:20:90;;;;;;;;;;;;-1:-1:-1;630:6048:94;;-1:-1:-1;630:6048:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;630:6048:94;;;-1:-1:-1;630:6048:94;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061014d5760003560e01c806375d26413116100c3578063b3f1c93d1161007c578063b3f1c93d146103d2578063b9a7b6221461040e578063c04a8a1014610416578063c222ec8a14610444578063dd62ed3e146105ed578063f5298aca1461061b5761014d565b806375d264131461038657806395d89b411461038e578063a457c2d7146102e2578063a9059cbb14610396578063b16a19de146103c2578063b1bf962d146103ca5761014d565b806323b872dd1161011557806323b872dd1461028e578063313ce567146102c457806339509351146102e25780636bd76d241461030e57806370a082311461033c5780637535d246146103625761014d565b806306fdde0314610152578063095ea7b3146101cf5780630afbcdc91461020f57806318160ddd1461024e5780631da24f3e14610268575b600080fd5b61015a61064d565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019457818101518382015260200161017c565b50505050905090810190601f1680156101c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101fb600480360360408110156101e557600080fd5b506001600160a01b0381351690602001356106e3565b604080519115158252519081900360200190f35b6102356004803603602081101561022557600080fd5b50356001600160a01b031661072b565b6040805192835260208301919091528051918290030190f35b610256610748565b60408051918252519081900360200190f35b6102566004803603602081101561027e57600080fd5b50356001600160a01b03166107db565b6101fb600480360360608110156102a457600080fd5b506001600160a01b038135811691602081013590911690604001356107ee565b6102cc610836565b6040805160ff9092168252519081900360200190f35b6101fb600480360360408110156102f857600080fd5b506001600160a01b03813516906020013561083f565b6102566004803603604081101561032457600080fd5b506001600160a01b038135811691602001351661088e565b6102566004803603602081101561035257600080fd5b50356001600160a01b03166108bb565b61036a610967565b604080516001600160a01b039092168252519081900360200190f35b61036a610976565b61015a610980565b6101fb600480360360408110156103ac57600080fd5b506001600160a01b0381351690602001356107ee565b61036a6109e1565b6102566109f0565b6101fb600480360360808110156103e857600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356109fa565b610256610c13565b6104426004803603604081101561042c57600080fd5b506001600160a01b038135169060200135610c18565b005b610442600480360360e081101561045a57600080fd5b6001600160a01b038235811692602081013582169260408201359092169160ff606083013516919081019060a0810160808201356401000000008111156104a057600080fd5b8201836020820111156104b257600080fd5b803590602001918460018302840111640100000000831117156104d457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561052757600080fd5b82018360208201111561053957600080fd5b8035906020019184600183028401116401000000008311171561055b57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105ae57600080fd5b8201836020820111156105c057600080fd5b803590602001918460018302840111640100000000831117156105e257600080fd5b509092509050610cb4565b6102566004803603604081101561060357600080fd5b506001600160a01b038135811691602001351661083f565b6104426004803603606081101561063157600080fd5b506001600160a01b038135169060208101359060400135610f03565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106d95780601f106106ae576101008083540402835291602001916106d9565b820191906000526020600020905b8154815290600101906020018083116106bc57829003601f168201915b5050505050905090565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60008061073783611097565b61073f6110b2565b91509150915091565b603b54603c546040805163386497fd60e01b81526001600160a01b03928316600482015290516000936107d693169163386497fd916024808301926020929190829003018186803b15801561079c57600080fd5b505afa1580156107b0573d6000803e3d6000fd5b505050506040513d60208110156107c657600080fd5b50516107d06110b2565b906110b8565b905090565b60006107e682611097565b90505b919050565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60055460ff1690565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b038083166000908152603a60209081526040808320938516835292905220545b92915050565b6000806108c783611097565b9050806108d85760009150506107e9565b603b54603c546040805163386497fd60e01b81526001600160a01b039283166004820152905161096093929092169163386497fd91602480820192602092909190829003018186803b15801561092d57600080fd5b505afa158015610941573d6000803e3d6000fd5b505050506040513d602081101561095757600080fd5b505182906110b8565b9392505050565b603b546001600160a01b031690565b60006107d6611176565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106d95780601f106106ae576101008083540402835291602001916106d9565b603c546001600160a01b031690565b60006107d66110b2565b6000610a04610967565b6001600160a01b0316610a15611185565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610ac35760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a88578181015183820152602001610a70565b50505050905090810190601f168015610ab55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50836001600160a01b0316856001600160a01b031614610ae857610ae8848685611189565b6000610af385611097565b90506000610b018585611251565b6040805180820190915260028152611a9b60f11b602082015290915081610b695760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b50610b748682611358565b6040805186815290516001600160a01b038816916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3856001600160a01b0316876001600160a01b03167f2f00e3cdd69a77be7ed215ec7b2a36784dd158f921fca79ac29deffa353fe6ee8787604051808381526020018281526020019250505060405180910390a3501595945050505050565b600181565b80603a6000610c25611185565b6001600160a01b0390811682526020808301939093526040918201600090812091871680825291909352912091909155610c5d611185565b6001600160a01b03167fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1610c8f6109e1565b604080516001600160a01b039092168252602082018690528051918290030190a35050565b6000610cbe6114a9565b60075490915060ff1680610cd55750610cd56114ae565b80610ce1575060065481115b610d1c5760405162461bcd60e51b815260040180806020018281038252602e815260200180611743602e913960400191505060405180910390fd5b60075460ff16158015610d3c576007805460ff1916600117905560068290555b610d45866114b4565b610d4e856114cb565b610d57876114de565b603b80546001600160a01b03808d166001600160a01b03199283168117909355603c80548d83169084168117909155603d8054928d169290931682179092556040805191825260ff8b1660208084019190915260a09183018281528b51928401929092528a517f40251fbfb6656cfa65a00d7879029fec1fad21d28fdcff2f4f68f52795b74f2c938e938e938e938e938e938e93919290916060840191608085019160c0860191908a019080838360005b83811015610e20578181015183820152602001610e08565b50505050905090810190601f168015610e4d5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b83811015610e80578181015183820152602001610e68565b50505050905090810190601f168015610ead5780820380516001836020036101000a031916815260200191505b508481038252858152602001868680828437600083820152604051601f909101601f19169092018290039b50909950505050505050505050a38015610ef7576007805460ff191690555b50505050505050505050565b610f0b610967565b6001600160a01b0316610f1c611185565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610f8d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b506000610f9a8383611251565b60408051808201909152600281526106a760f31b6020820152909150816110025760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5061100d84826114f4565b6040805184815290516000916001600160a01b038716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3604080518481526020810184905281516001600160a01b038716927f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a928290030190a250505050565b6001600160a01b031660009081526020819052604090205490565b60025490565b60008215806110c5575081155b156110d2575060006108b5565b816b019d971e4fe8401e7400000019816110e857fe5b0483111560405180604001604052806002815260200161068760f31b815250906111535760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b603d546001600160a01b031690565b3390565b6040805180820182526002815261353960f01b6020808301919091526001600160a01b038087166000908152603a835284812091871681529152918220546111d2918490611592565b6001600160a01b038086166000818152603a60209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e161122a6109e1565b604080516001600160a01b039092168252602082018690528051918290030190a350505050565b604080518082019091526002815261035360f41b6020820152600090826112b95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156113355760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5082816b033b2e3c9fd0803ce80000008602018161134f57fe5b04949350505050565b6001600160a01b0382166113b3576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6113bf600083836115ec565b6002546113cc81836115f1565b6002556001600160a01b0383166000908152602081905260409020546113f281846115f1565b6001600160a01b038516600090815260208190526040812091909155611416611176565b6001600160a01b0316146114a35761142c611176565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561148a57600080fd5b505af115801561149e573d6000803e3d6000fd5b505050505b50505050565b600190565b303b1590565b80516114c790600390602084019061168d565b5050565b80516114c790600490602084019061168d565b6005805460ff191660ff92909216919091179055565b6001600160a01b0382166115395760405162461bcd60e51b81526004018080602001828103825260218152602001806117716021913960400191505060405180910390fd5b611545826000836115ec565b600254611552818361164b565b6002556001600160a01b0383166000908152602081815260409182902054825160608101909352602280845290926113f292869290611721908301398391905b600081848411156115e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b505050900390565b505050565b600082820183811015610960576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061096083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611592565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106116ce57805160ff19168380011785556116fb565b828001600101855582156116fb579182015b828111156116fb5782518255916020019190600101906116e0565b5061170792915061170b565b5090565b5b80821115611707576000815560010161170c56fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656445524332303a206275726e2066726f6d20746865207a65726f2061646472657373a2646970667358221220f2fe01913b59842ffe8d7363fe27844d555de6f26a7451262077ece0552d341364736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x14D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x75D26413 GT PUSH2 0xC3 JUMPI DUP1 PUSH4 0xB3F1C93D GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xB3F1C93D EQ PUSH2 0x3D2 JUMPI DUP1 PUSH4 0xB9A7B622 EQ PUSH2 0x40E JUMPI DUP1 PUSH4 0xC04A8A10 EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0xC222EC8A EQ PUSH2 0x444 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x5ED JUMPI DUP1 PUSH4 0xF5298ACA EQ PUSH2 0x61B JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x75D26413 EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x38E JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x2E2 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x396 JUMPI DUP1 PUSH4 0xB16A19DE EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0xB1BF962D EQ PUSH2 0x3CA JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x115 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2E2 JUMPI DUP1 PUSH4 0x6BD76D24 EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x33C JUMPI DUP1 PUSH4 0x7535D246 EQ PUSH2 0x362 JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0xAFBCDC9 EQ PUSH2 0x20F JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0x1DA24F3E EQ PUSH2 0x268 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15A PUSH2 0x64D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x194 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1C1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6E3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x235 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x225 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x72B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x256 PUSH2 0x748 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7DB JUMP JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x7EE JUMP JUMPDEST PUSH2 0x2CC PUSH2 0x836 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x83F JUMP JUMPDEST PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x88E JUMP JUMPDEST PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8BB JUMP JUMPDEST PUSH2 0x36A PUSH2 0x967 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x36A PUSH2 0x976 JUMP JUMPDEST PUSH2 0x15A PUSH2 0x980 JUMP JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7EE JUMP JUMPDEST PUSH2 0x36A PUSH2 0x9E1 JUMP JUMPDEST PUSH2 0x256 PUSH2 0x9F0 JUMP JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x3E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x9FA JUMP JUMPDEST PUSH2 0x256 PUSH2 0xC13 JUMP JUMPDEST PUSH2 0x442 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x42C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC18 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x442 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x45A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 PUSH1 0xFF PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x527 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x539 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xCB4 JUMP JUMPDEST PUSH2 0x256 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x603 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x83F JUMP JUMPDEST PUSH2 0x442 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF03 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x6D9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6AE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6D9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6BC JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1054141493D5905317D393D517D4D5541413D4951151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x737 DUP4 PUSH2 0x1097 JUMP JUMPDEST PUSH2 0x73F PUSH2 0x10B2 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x386497FD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP4 PUSH2 0x7D6 SWAP4 AND SWAP2 PUSH4 0x386497FD SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x79C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x7D0 PUSH2 0x10B2 JUMP JUMPDEST SWAP1 PUSH2 0x10B8 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7E6 DUP3 PUSH2 0x1097 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x1514905394D1915497D393D517D4D5541413D4951151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x414C4C4F57414E43455F4E4F545F535550504F52544544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8C7 DUP4 PUSH2 0x1097 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x8D8 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x7E9 JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH1 0x3C SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x386497FD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x960 SWAP4 SWAP3 SWAP1 SWAP3 AND SWAP2 PUSH4 0x386497FD SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x92D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x941 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x957 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP3 SWAP1 PUSH2 0x10B8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x3B SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D6 PUSH2 0x1176 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x6D9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6AE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6D9 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D6 PUSH2 0x10B2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA04 PUSH2 0x967 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA15 PUSH2 0x1185 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xAC3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xAB5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xAE8 JUMPI PUSH2 0xAE8 DUP5 DUP7 DUP6 PUSH2 0x1189 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAF3 DUP6 PUSH2 0x1097 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB01 DUP6 DUP6 PUSH2 0x1251 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x1A9B PUSH1 0xF1 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0xB69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP PUSH2 0xB74 DUP7 DUP3 PUSH2 0x1358 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 PUSH1 0x0 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2F00E3CDD69A77BE7ED215EC7B2A36784DD158F921FCA79AC29DEFFA353FE6EE DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP ISZERO SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMP JUMPDEST DUP1 PUSH1 0x3A PUSH1 0x0 PUSH2 0xC25 PUSH2 0x1185 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0xC5D PUSH2 0x1185 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDA919360433220E13B51E8C211E490D148E61A3BD53DE8C097194E458B97F3E1 PUSH2 0xC8F PUSH2 0x9E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCBE PUSH2 0x14A9 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND DUP1 PUSH2 0xCD5 JUMPI POP PUSH2 0xCD5 PUSH2 0x14AE JUMP JUMPDEST DUP1 PUSH2 0xCE1 JUMPI POP PUSH1 0x6 SLOAD DUP2 GT JUMPDEST PUSH2 0xD1C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1743 PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0xD3C JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x6 DUP3 SWAP1 SSTORE JUMPDEST PUSH2 0xD45 DUP7 PUSH2 0x14B4 JUMP JUMPDEST PUSH2 0xD4E DUP6 PUSH2 0x14CB JUMP JUMPDEST PUSH2 0xD57 DUP8 PUSH2 0x14DE JUMP JUMPDEST PUSH1 0x3B DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP14 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x3C DUP1 SLOAD DUP14 DUP4 AND SWAP1 DUP5 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x3D DUP1 SLOAD SWAP3 DUP14 AND SWAP3 SWAP1 SWAP4 AND DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE PUSH1 0xFF DUP12 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 SWAP2 DUP4 ADD DUP3 DUP2 MSTORE DUP12 MLOAD SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP11 MLOAD PUSH32 0x40251FBFB6656CFA65A00D7879029FEC1FAD21D28FDCFF2F4F68F52795B74F2C SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 DUP15 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x60 DUP5 ADD SWAP2 PUSH1 0x80 DUP6 ADD SWAP2 PUSH1 0xC0 DUP7 ADD SWAP2 SWAP1 DUP11 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE20 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE08 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE4D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP5 DUP2 SUB DUP4 MSTORE DUP8 MLOAD DUP2 MSTORE DUP8 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP10 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE80 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE68 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xEAD JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP7 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP12 POP SWAP1 SWAP10 POP POP POP POP POP POP POP POP POP POP LOG3 DUP1 ISZERO PUSH2 0xEF7 JUMPI PUSH1 0x7 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xF0B PUSH2 0x967 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF1C PUSH2 0x1185 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3239 PUSH1 0xF0 SHL DUP2 MSTORE POP SWAP1 PUSH2 0xF8D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xF9A DUP4 DUP4 PUSH2 0x1251 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x6A7 PUSH1 0xF3 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP DUP2 PUSH2 0x1002 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP PUSH2 0x100D DUP5 DUP3 PUSH2 0x14F4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP3 PUSH32 0x49995E5DD6158CF69AD3E9777C46755A1A826A446C6416992167462DAD033B2A SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x10C5 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x10D2 JUMPI POP PUSH1 0x0 PUSH2 0x8B5 JUMP JUMPDEST DUP2 PUSH12 0x19D971E4FE8401E74000000 NOT DUP2 PUSH2 0x10E8 JUMPI INVALID JUMPDEST DIV DUP4 GT ISZERO PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x687 PUSH1 0xF3 SHL DUP2 MSTORE POP SWAP1 PUSH2 0x1153 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP POP PUSH12 0x33B2E3C9FD0803CE8000000 SWAP2 MUL PUSH12 0x19D971E4FE8401E74000000 ADD DIV SWAP1 JUMP JUMPDEST PUSH1 0x3D SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x3539 PUSH1 0xF0 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3A DUP4 MSTORE DUP5 DUP2 KECCAK256 SWAP2 DUP8 AND DUP2 MSTORE SWAP2 MSTORE SWAP2 DUP3 KECCAK256 SLOAD PUSH2 0x11D2 SWAP2 DUP5 SWAP1 PUSH2 0x1592 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3A PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP10 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP4 SWAP1 SSTORE SWAP2 SWAP3 POP SWAP1 PUSH32 0xDA919360433220E13B51E8C211E490D148E61A3BD53DE8C097194E458B97F3E1 PUSH2 0x122A PUSH2 0x9E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH2 0x353 PUSH1 0xF4 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP3 PUSH2 0x12B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP1 DUP3 MSTORE PUSH2 0x687 PUSH1 0xF3 SHL PUSH1 0x20 DUP4 ADD MSTORE DUP4 DIV SWAP1 PUSH12 0x33B2E3C9FD0803CE8000000 DUP3 NOT DIV DUP6 GT ISZERO PUSH2 0x1335 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP DUP3 DUP2 PUSH12 0x33B2E3C9FD0803CE8000000 DUP7 MUL ADD DUP2 PUSH2 0x134F JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x13B3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x13BF PUSH1 0x0 DUP4 DUP4 PUSH2 0x15EC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x13CC DUP2 DUP4 PUSH2 0x15F1 JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x13F2 DUP2 DUP5 PUSH2 0x15F1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1416 PUSH2 0x1176 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x14A3 JUMPI PUSH2 0x142C PUSH2 0x1176 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x31873E2E DUP6 DUP5 DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x148A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x149E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x14C7 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x168D JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x14C7 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x168D JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1539 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1771 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1545 DUP3 PUSH1 0x0 DUP4 PUSH2 0x15EC JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x1552 DUP2 DUP4 PUSH2 0x164B JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x22 DUP1 DUP5 MSTORE SWAP1 SWAP3 PUSH2 0x13F2 SWAP3 DUP7 SWAP3 SWAP1 PUSH2 0x1721 SWAP1 DUP4 ADD CODECOPY DUP4 SWAP2 SWAP1 JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x15E4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xA88 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA70 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x960 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x960 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x1592 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x16CE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x16FB JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x16FB JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x16FB JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x16E0 JUMP JUMPDEST POP PUSH2 0x1707 SWAP3 SWAP2 POP PUSH2 0x170B JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1707 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x170C JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E6365436F6E74 PUSH19 0x61637420696E7374616E63652068617320616C PUSH19 0x65616479206265656E20696E697469616C697A PUSH6 0x644552433230 GASPRICE KECCAK256 PUSH3 0x75726E KECCAK256 PUSH7 0x726F6D20746865 KECCAK256 PUSH27 0x65726F2061646472657373A2646970667358221220F2FE01913B59 DUP5 0x2F INVALID DUP14 PUSH20 0x63FE27844D555DE6F26A7451262077ECE0552D34 SGT PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "630:6048:94:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1168:84:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2539:157:95;;;;;;;;;;;;;;;;-1:-1:-1;2539:157:95;;-1:-1:-1;;;;;2539:157:95;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;5540:183:94;;;;;;;;;;;;;;;;-1:-1:-1;5540:183:94;-1:-1:-1;;;;;5540:183:94;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4879:172;;;:::i;:::-;;;;;;;;;;;;;;;;4597:125;;;;;;;;;;;;;;;;-1:-1:-1;4597:125:94;-1:-1:-1;;;;;4597:125:94;;:::i;2700:210:95:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2700:210:95;;;;;;;;;;;;;;;;;:::i;1450:84:90:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2914:194:95;;;;;;;;;;;;;;;;-1:-1:-1;2914:194:95;;-1:-1:-1;;;;;2914:194:95;;;;;;:::i;1855:171::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1855:171:95;;;;;;;;;;:::i;2485:281:94:-;;;;;;;;;;;;;;;;-1:-1:-1;2485:281:94;-1:-1:-1;;;;;2485:281:94;;:::i;6247:74::-;;;:::i;:::-;;;;-1:-1:-1;;;;;6247:74:94;;;;;;;;;;;;;;6016:138;;;:::i;1306:88:90:-;;;:::i;2181:162:95:-;;;;;;;;;;;;;;;;-1:-1:-1;2181:162:95;;-1:-1:-1;;;;;2181:162:95;;;;;;:::i;5831:100:94:-;;;:::i;5202:113::-;;;:::i;3264:591::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3264:591:94;;;;;;;;;;;;;;;;;;;;;;:::i;731:49::-;;;:::i;1403:240:95:-;;;;;;;;;;;;;;;;-1:-1:-1;1403:240:95;;-1:-1:-1;;;;;1403:240:95;;;;;;:::i;:::-;;1432:686:94;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1432:686:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1432:686:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1432:686:94;;;;;;;;-1:-1:-1;1432:686:94;;-1:-1:-1;;1432:686:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1432:686:94;;;;;;;;-1:-1:-1;1432:686:94;;-1:-1:-1;;1432:686:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1432:686:94;;-1:-1:-1;1432:686:94;-1:-1:-1;1432:686:94;:::i;2347:188:95:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2347:188:95;;;;;;;;;;:::i;4104:340:94:-;;;;;;;;;;;;;;;;-1:-1:-1;4104:340:94;;-1:-1:-1;;;;;4104:340:94;;;;;;;;;;;:::i;1168:84:90:-;1242:5;1235:12;;;;;;;;;;;;;-1:-1:-1;;1235:12:90;;;;;;;;;;;;;;;;;;;;;;;;;;1214:13;;1235:12;;1242:5;;1235:12;;;1242:5;1235:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1168:84;:::o;2539:157:95:-;2659:32;;;-1:-1:-1;;;2659:32:95;;;;;;;;;;;;-1:-1:-1;;;2659:32:95;;;;;;-1:-1:-1;;2659:32:95;;;;;;;5540:183:94;5641:7;5650;5675:21;5691:4;5675:15;:21::i;:::-;5698:19;:17;:19::i;:::-;5667:51;;;;5540:183;;;:::o;4879:172::-;4989:5;;5028:16;;4989:56;;;-1:-1:-1;;;4989:56:94;;-1:-1:-1;;;;;5028:16:94;;;4989:56;;;;;;-1:-1:-1;;4962:84:94;;4989:5;;-1:-1:-1;;4989:56:94;;;;;;;;;;;;;;:5;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4989:56:94;4962:19;:17;:19::i;:::-;:26;;:84::i;:::-;4955:91;;4879:172;:::o;4597:125::-;4674:7;4696:21;4712:4;4696:15;:21::i;:::-;4689:28;;4597:125;;;;:::o;2700:210:95:-;2873:32;;;-1:-1:-1;;;2873:32:95;;;;;;;;;;;;-1:-1:-1;;;2873:32:95;;;;;;-1:-1:-1;;2873:32:95;;;;;;;1450:84:90;1520:9;;;;1450:84;:::o;2914:194:95:-;3070:33;;;-1:-1:-1;;;3070:33:95;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3070:33:95;;;;;;;1855:171;-1:-1:-1;;;;;1986:27:95;;;1962:7;1986:27;;;:17;:27;;;;;;;;:35;;;;;;;;;;1855:171;;;;;:::o;2485:281:94:-;2556:7;2571:21;2595;2611:4;2595:15;:21::i;:::-;2571:45;-1:-1:-1;2627:18:94;2623:47;;2662:1;2655:8;;;;;2623:47;2704:5;;2743:16;;2704:56;;;-1:-1:-1;;;2704:56:94;;-1:-1:-1;;;;;2743:16:94;;;2704:56;;;;;;2683:78;;2704:5;;;;;-1:-1:-1;;2704:56:94;;;;;;;;;;;;;;;:5;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2704:56:94;2683:13;;:20;:78::i;:::-;2676:85;2485:281;-1:-1:-1;;;2485:281:94:o;6247:74::-;6311:5;;-1:-1:-1;;;;;6311:5:94;;6247:74::o;6016:138::-;6083:25;6123:26;:24;:26::i;1306:88:90:-;1382:7;1375:14;;;;;;;;;;;;;-1:-1:-1;;1375:14:90;;;;;;;;;;;;;;;;;;;;;;;;;;1354:13;;1375:14;;1382:7;;1375:14;;;1382:7;1375:14;;;;;;;;;;;;;;;;;;;;;;;;5831:100:94;5910:16;;-1:-1:-1;;;;;5910:16:94;;5831:100::o;5202:113::-;5269:7;5291:19;:17;:19::i;3264:591::-;3406:4;971:17:95;:15;:17::i;:::-;-1:-1:-1;;;;;947:42:95;:12;:10;:12::i;:::-;991:37;;;;;;;;;;;;-1:-1:-1;;;991:37:95;;;;;-1:-1:-1;;;;;947:42:95;;;;;939:90;;;;-1:-1:-1;;;939:90:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3422:18:94;;::::1;::::0;;::::1;;3418:89;;3450:50;3475:10;3487:4;3493:6;3450:24;:50::i;:::-;3513:23;3539:27;3555:10;3539:15;:27::i;:::-;3513:53:::0;-1:-1:-1;3572:20:94::1;3595;:6:::0;3609:5;3595:13:::1;:20::i;:::-;3648:29;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;3648:29:94::1;::::0;::::1;::::0;3572:43;;-1:-1:-1;3572:43:94;3621:57:::1;;;::::0;-1:-1:-1;;;3621:57:94;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;::::1;::::0;;;;-1:-1:-1;3621:57:94;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;3685:31;3691:10;3703:12;3685:5;:31::i;:::-;3728:40;::::0;;;;;;;-1:-1:-1;;;;;3728:40:94;::::1;::::0;3745:1:::1;::::0;3728:40:::1;::::0;;;;::::1;::::0;;::::1;3779:37;::::0;;;;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;3779:37:94;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;-1:-1:-1::0;3830:20:94;;3264:591;-1:-1:-1;;;;;3264:591:94:o;731:49::-;777:3;731:49;:::o;1403:240:95:-;1534:6;1489:17;:31;1507:12;:10;:12::i;:::-;-1:-1:-1;;;;;1489:31:95;;;;;;;;;;;;;;;;;-1:-1:-1;1489:31:95;;;:42;;;;;;;;;;;;:51;;;;1576:12;:10;:12::i;:::-;-1:-1:-1;;;;;1551:87:95;;1601:28;:26;:28::i;:::-;1551:87;;;-1:-1:-1;;;;;1551:87:95;;;;;;;;;;;;;;;;;;;;;1403:240;;:::o;1432:686:94:-;1162:16:74;1181:13;:11;:13::i;:::-;1215:12;;1162:32;;-1:-1:-1;1215:12:74;;;:31;;;1231:15;:13;:15::i;:::-;1215:69;;;;1261:23;;1250:8;:34;1215:69;1200:146;;;;-1:-1:-1;;;1200:146:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1376:12;;;;1375:13;1394:96;;;;1422:12;:19;;-1:-1:-1;;1422:19:74;1437:4;1422:19;;;1449:23;:34;;;1394:96;1718:23:94::1;1727:13;1718:8;:23::i;:::-;1747:27;1758:15;1747:10;:27::i;:::-;1780:31;1793:17;1780:12;:31::i;:::-;1818:5;:12:::0;;-1:-1:-1;;;;;;1818:12:94;;::::1;-1:-1:-1::0;;;;;1818:12:94;;::::1;::::0;;::::1;::::0;;;1836:16:::1;:34:::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;1876:21:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;1932:181:::1;::::0;;;;;::::1;::::0;::::1;;::::0;;::::1;::::0;;;;-1:-1:-1;1932:181:94;;;;;;;;;;;;;;;;;1818:12;;1932:181:::1;::::0;1876:44;;1932:181;;;;2078:15;;2101:6;;;;1932:181;;;;;;;;;;;;;;;::::1;::::0;;;;-1:-1:-1;1932:181:94::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;1932:181:94;;::::1;::::0;;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;::::1;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;1932:181:94;;::::1;::::0;;;;;::::1;;::::0;;;;;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;1932:181:94::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;1932:181:94;;-1:-1:-1;;;;;;;;;;1932:181:94::1;1508:14:74::0;1504:55;;;1532:12;:20;;-1:-1:-1;;1532:20:74;;;1504:55;1432:686:94;;;;;;;;;;:::o;4104:340::-;971:17:95;:15;:17::i;:::-;-1:-1:-1;;;;;947:42:95;:12;:10;:12::i;:::-;991:37;;;;;;;;;;;;-1:-1:-1;;;991:37:95;;;;;-1:-1:-1;;;;;947:42:95;;;;;939:90;;;;-1:-1:-1;;;939:90:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;939:90:95;;;;;;;;;;;;;;;;;-1:-1:-1;4219:20:94::1;4242;:6:::0;4256:5;4242:13:::1;:20::i;:::-;4295:29;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;4295:29:94::1;::::0;::::1;::::0;4219:43;;-1:-1:-1;4219:43:94;4268:57:::1;;;::::0;-1:-1:-1;;;4268:57:94;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;::::1;::::0;;;;-1:-1:-1;4268:57:94;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;4332:25;4338:4;4344:12;4332:5;:25::i;:::-;4369:34;::::0;;;;;;;4392:1:::1;::::0;-1:-1:-1;;;;;4369:34:94;::::1;::::0;::::1;::::0;;;;::::1;::::0;;::::1;4414:25;::::0;;;;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;4414:25:94;::::1;::::0;::::1;::::0;;;;;;::::1;1035:1:95;4104:340:94::0;;;:::o;1749:119:90:-;-1:-1:-1;;;;;1845:18:90;1823:7;1845:18;;;;;;;;;;;;1749:119::o;1594:100::-;1677:12;;1594:100;:::o;2008:253:86:-;2069:7;2088:6;;;:16;;-1:-1:-1;2098:6:86;;2088:16;2084:45;;;-1:-1:-1;2121:1:86;2114:8;;2084:45;2180:1;-1:-1:-1;;2180:1:86;2148:33;;;;2183:35;;;;;;;;;;;;-1:-1:-1;;;2183:35:86;;;;;2148:33;;2143:38;;;2135:84;;;;-1:-1:-1;;;2135:84:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2135:84:86;;;;;;;;;;;;;;;;;-1:-1:-1;;432:4:86;2234:5;;476:7;2234:15;2233:23;;2008:253::o;6325:134:94:-;6433:21;;-1:-1:-1;;;;;6433:21:94;;6325:134::o;587:98:7:-;670:10;587:98;:::o;3320:403:95:-;3520:34;;;;;;;;;;;-1:-1:-1;;;3520:34:95;;;;;;;;-1:-1:-1;;;;;3468:28:95;;;-1:-1:-1;3468:28:95;;;:17;:28;;;;;:39;;;;;;;;;;;:87;;3512:6;;3468:43;:87::i;:::-;-1:-1:-1;;;;;3562:28:95;;;;;;;:17;:28;;;;;;;;:39;;;;;;;;;;;;:54;;;;;-1:-1:-1;3562:39:95;3628:90;3675:28;:26;:28::i;:::-;3628:90;;;-1:-1:-1;;;;;3628:90:95;;;;;;;;;;;;;;;;;;;;;3320:403;;;;:::o;2416:279:86:-;2508:28;;;;;;;;;;;;-1:-1:-1;;;2508:28:86;;;;-1:-1:-1;;2500:6:86;2492:45;;;;-1:-1:-1;;;2492:45:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2492:45:86;;;;;;;;;;;;;;;;;-1:-1:-1;2619:35:86;;;;;;;;;2563:1;2619:35;;;-1:-1:-1;;;2619:35:86;;;;2559:5;;;432:4;2585:25;;2584:33;2579:38;;;2571:84;;;;-1:-1:-1;;;2571:84:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2571:84:86;;;;;;;;;;;;;;;;;;2689:1;2680:5;432:4;2670:1;:7;:15;2669:21;;;;;;;2416:279;-1:-1:-1;;;;2416:279:86:o;6072:556:90:-;-1:-1:-1;;;;;6151:21:90;;6143:65;;;;;-1:-1:-1;;;6143:65:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;6215:49;6244:1;6248:7;6257:6;6215:20;:49::i;:::-;6296:12;;6329:26;6296:12;6348:6;6329:18;:26::i;:::-;6314:12;:41;-1:-1:-1;;;;;6390:18:90;;6362:25;6390:18;;;;;;;;;;;6435:29;6390:18;6457:6;6435:21;:29::i;:::-;-1:-1:-1;;;;;6414:18:90;;:9;:18;;;;;;;;;;:50;;;;6483:26;:24;:26::i;:::-;-1:-1:-1;;;;;6475:49:90;;6471:153;;6534:26;:24;:26::i;:::-;:83;;;-1:-1:-1;;;6534:83:90;;-1:-1:-1;;;;;6534:83:90;;;;;;;;;;;;;;;;;;;;;:39;;;;;;;:83;;;;;-1:-1:-1;;6534:83:90;;;;;;;;-1:-1:-1;6534:39:90;:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6471:153;6072:556;;;;:::o;2255:109:94:-;777:3;2255:109;:::o;1858:510:74:-;2328:9;2316:22;2356:7;1858:510;:::o;7574:76:90:-;7630:15;;;;:5;;:15;;;;;:::i;:::-;;7574:76;:::o;7654:84::-;7714:19;;;;:7;;:19;;;;;:::i;7742:84::-;7798:9;:23;;-1:-1:-1;;7798:23:90;;;;;;;;;;;;7742:84::o;6632:596::-;-1:-1:-1;;;;;6711:21:90;;6703:67;;;;-1:-1:-1;;;6703:67:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6777:49;6798:7;6815:1;6819:6;6777:20;:49::i;:::-;6858:12;;6891:26;6858:12;6910:6;6891:18;:26::i;:::-;6876:12;:41;-1:-1:-1;;;;;6952:18:90;;6924:25;6952:18;;;;;;;;;;;;;6997:67;;;;;;;;;;;;6952:18;;6997:67;;7019:6;;6997:67;;;;;;:17;;:67;1649:189:13;1751:7;1782:12;1774:6;;;;1766:29;;;;-1:-1:-1;;;1766:29:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1766:29:13;;;;;;;;;;;;;;;;;-1:-1:-1;;;1813:5:13;;;1649:189::o;7830:107:90:-;;;;:::o;851:162:13:-;909:7;936:5;;;955:6;;;;947:46;;;;;-1:-1:-1;;;947:46:13;;;;;;;;;;;;;;;;;;;;;;;;;;;1257:128;1315:7;1337:43;1341:1;1344;1337:43;;;;;;;;;;;;;;;;;:3;:43::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;"
            },
            "methodIdentifiers": {
              "DEBT_TOKEN_REVISION()": "b9a7b622",
              "POOL()": "7535d246",
              "UNDERLYING_ASSET_ADDRESS()": "b16a19de",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "approveDelegation(address,uint256)": "c04a8a10",
              "balanceOf(address)": "70a08231",
              "borrowAllowance(address,address)": "6bd76d24",
              "burn(address,uint256,uint256)": "f5298aca",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "getIncentivesController()": "75d26413",
              "getScaledUserBalanceAndSupply(address)": "0afbcdc9",
              "increaseAllowance(address,uint256)": "39509351",
              "initialize(address,address,address,uint8,string,string,bytes)": "c222ec8a",
              "mint(address,address,uint256,uint256)": "b3f1c93d",
              "name()": "06fdde03",
              "scaledBalanceOf(address)": "1da24f3e",
              "scaledTotalSupply()": "b1bf962d",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "contracts/protocol/tokenization/base/DebtTokenBase.sol": {
        "DebtTokenBase": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "fromUser",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "toUser",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "BorrowAllowanceDelegated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "delegatee",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approveDelegation",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "fromUser",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "toUser",
                  "type": "address"
                }
              ],
              "name": "borrowAllowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "subtractedValue",
                  "type": "uint256"
                }
              ],
              "name": "decreaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "addedValue",
                  "type": "uint256"
                }
              ],
              "name": "increaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "approveDelegation(address,uint256)": "c04a8a10",
              "balanceOf(address)": "70a08231",
              "borrowAllowance(address,address)": "6bd76d24",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "increaseAllowance(address,uint256)": "39509351",
              "name()": "06fdde03",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      }
    },
    "errors": [
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "contracts/protocol/lendingpool/LendingPoolConfigurator.sol:70:25: Warning: This declaration shadows an existing declaration.\n  function _initReserve(ILendingPool pool, InitReserveInput calldata input) internal {\n                        ^---------------^\ncontracts/protocol/lendingpool/LendingPoolConfigurator.sol:34:3: The shadowed declaration is here:\n  ILendingPool internal pool;\n  ^------------------------^\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 1750,
            "file": "contracts/protocol/lendingpool/LendingPoolConfigurator.sol",
            "message": "The shadowed declaration is here:",
            "start": 1724
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 2718,
          "file": "contracts/protocol/lendingpool/LendingPoolConfigurator.sol",
          "start": 2701
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "contracts/protocol/tokenization/StaticAToken.sol:386:51: Warning: This declaration shadows an existing declaration.\n  function _dynamicToStaticAmount(uint256 amount, uint256 rate) internal pure returns (uint256) {\n                                                  ^----------^\ncontracts/protocol/tokenization/StaticAToken.sol:305:3: The shadowed declaration is here:\n  function rate() public view returns (uint256) {\n  ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 12195,
            "file": "contracts/protocol/tokenization/StaticAToken.sol",
            "message": "The shadowed declaration is here:",
            "start": 12076
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 14645,
          "file": "contracts/protocol/tokenization/StaticAToken.sol",
          "start": 14633
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "contracts/protocol/tokenization/StaticAToken.sol:390:51: Warning: This declaration shadows an existing declaration.\n  function _staticToDynamicAmount(uint256 amount, uint256 rate) internal pure returns (uint256) {\n                                                  ^----------^\ncontracts/protocol/tokenization/StaticAToken.sol:305:3: The shadowed declaration is here:\n  function rate() public view returns (uint256) {\n  ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 12195,
            "file": "contracts/protocol/tokenization/StaticAToken.sol",
            "message": "The shadowed declaration is here:",
            "start": 12076
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 14780,
          "file": "contracts/protocol/tokenization/StaticAToken.sol",
          "start": 14768
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "contracts/protocol/tokenization/StaticATokenLM.sol:287:51: Warning: This declaration shadows an existing declaration.\n  function _dynamicToStaticAmount(uint256 amount, uint256 rate) internal pure returns (uint256) {\n                                                  ^----------^\ncontracts/protocol/tokenization/StaticATokenLM.sol:265:3: The shadowed declaration is here:\n  function rate() public view override returns (uint256) {\n  ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 9245,
            "file": "contracts/protocol/tokenization/StaticATokenLM.sol",
            "message": "The shadowed declaration is here:",
            "start": 9117
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 9698,
          "file": "contracts/protocol/tokenization/StaticATokenLM.sol",
          "start": 9686
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "contracts/protocol/tokenization/StaticATokenLM.sol:291:51: Warning: This declaration shadows an existing declaration.\n  function _staticToDynamicAmount(uint256 amount, uint256 rate) internal pure returns (uint256) {\n                                                  ^----------^\ncontracts/protocol/tokenization/StaticATokenLM.sol:265:3: The shadowed declaration is here:\n  function rate() public view override returns (uint256) {\n  ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 9245,
            "file": "contracts/protocol/tokenization/StaticATokenLM.sol",
            "message": "The shadowed declaration is here:",
            "start": 9117
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 9833,
          "file": "contracts/protocol/tokenization/StaticATokenLM.sol",
          "start": 9821
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "3628",
        "formattedMessage": "contracts/dependencies/openzeppelin/upgradeability/BaseAdminUpgradeabilityProxy.sol:14:1: Warning: This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.\ncontract BaseAdminUpgradeabilityProxy is BaseUpgradeabilityProxy {\n^ (Relevant source part starts here and spans across multiple lines).\ncontracts/dependencies/openzeppelin/upgradeability/Proxy.sol:16:3: The payable fallback function is defined here.\n  fallback() external payable {\n  ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.",
        "secondarySourceLocations": [
          {
            "end": 514,
            "file": "contracts/dependencies/openzeppelin/upgradeability/Proxy.sol",
            "message": "The payable fallback function is defined here.",
            "start": 464
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 3848,
          "file": "contracts/dependencies/openzeppelin/upgradeability/BaseAdminUpgradeabilityProxy.sol",
          "start": 462
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "3628",
        "formattedMessage": "contracts/dependencies/openzeppelin/upgradeability/AdminUpgradeabilityProxy.sol:11:1: Warning: This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.\ncontract AdminUpgradeabilityProxy is BaseAdminUpgradeabilityProxy, UpgradeabilityProxy {\n^ (Relevant source part starts here and spans across multiple lines).\ncontracts/dependencies/openzeppelin/upgradeability/Proxy.sol:16:3: The payable fallback function is defined here.\n  fallback() external payable {\n  ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.",
        "secondarySourceLocations": [
          {
            "end": 514,
            "file": "contracts/dependencies/openzeppelin/upgradeability/Proxy.sol",
            "message": "The payable fallback function is defined here.",
            "start": 464
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 1397,
          "file": "contracts/dependencies/openzeppelin/upgradeability/AdminUpgradeabilityProxy.sol",
          "start": 282
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "3628",
        "formattedMessage": "contracts/dependencies/openzeppelin/upgradeability/InitializableUpgradeabilityProxy.sol:11:1: Warning: This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.\ncontract InitializableUpgradeabilityProxy is BaseUpgradeabilityProxy {\n^ (Relevant source part starts here and spans across multiple lines).\ncontracts/dependencies/openzeppelin/upgradeability/Proxy.sol:16:3: The payable fallback function is defined here.\n  fallback() external payable {\n  ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.",
        "secondarySourceLocations": [
          {
            "end": 514,
            "file": "contracts/dependencies/openzeppelin/upgradeability/Proxy.sol",
            "message": "The payable fallback function is defined here.",
            "start": 464
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 1226,
          "file": "contracts/dependencies/openzeppelin/upgradeability/InitializableUpgradeabilityProxy.sol",
          "start": 264
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "3628",
        "formattedMessage": "contracts/dependencies/openzeppelin/upgradeability/InitializableAdminUpgradeabilityProxy.sol:12:1: Warning: This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.\ncontract InitializableAdminUpgradeabilityProxy is\n^ (Relevant source part starts here and spans across multiple lines).\ncontracts/dependencies/openzeppelin/upgradeability/Proxy.sol:16:3: The payable fallback function is defined here.\n  fallback() external payable {\n  ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.",
        "secondarySourceLocations": [
          {
            "end": 514,
            "file": "contracts/dependencies/openzeppelin/upgradeability/Proxy.sol",
            "message": "The payable fallback function is defined here.",
            "start": 464
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 1564,
          "file": "contracts/dependencies/openzeppelin/upgradeability/InitializableAdminUpgradeabilityProxy.sol",
          "start": 345
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "3628",
        "formattedMessage": "contracts/protocol/libraries/aave-upgradeability/BaseImmutableAdminUpgradeabilityProxy.sol:16:1: Warning: This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.\ncontract BaseImmutableAdminUpgradeabilityProxy is BaseUpgradeabilityProxy {\n^ (Relevant source part starts here and spans across multiple lines).\ncontracts/dependencies/openzeppelin/upgradeability/Proxy.sol:16:3: The payable fallback function is defined here.\n  fallback() external payable {\n  ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.",
        "secondarySourceLocations": [
          {
            "end": 514,
            "file": "contracts/dependencies/openzeppelin/upgradeability/Proxy.sol",
            "message": "The payable fallback function is defined here.",
            "start": 464
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 2535,
          "file": "contracts/protocol/libraries/aave-upgradeability/BaseImmutableAdminUpgradeabilityProxy.sol",
          "start": 681
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "3628",
        "formattedMessage": "contracts/protocol/libraries/aave-upgradeability/InitializableImmutableAdminUpgradeabilityProxy.sol:11:1: Warning: This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.\ncontract InitializableImmutableAdminUpgradeabilityProxy is\n^ (Relevant source part starts here and spans across multiple lines).\ncontracts/dependencies/openzeppelin/upgradeability/Proxy.sol:16:3: The payable fallback function is defined here.\n  fallback() external payable {\n  ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.",
        "secondarySourceLocations": [
          {
            "end": 514,
            "file": "contracts/dependencies/openzeppelin/upgradeability/Proxy.sol",
            "message": "The payable fallback function is defined here.",
            "start": 464
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 794,
          "file": "contracts/protocol/libraries/aave-upgradeability/InitializableImmutableAdminUpgradeabilityProxy.sol",
          "start": 344
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "5667",
        "formattedMessage": "contracts/protocol/tokenization/StaticATokenLM.sol:364:5: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n    uint256 amount\n    ^------------^\n",
        "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
        "severity": "warning",
        "sourceLocation": {
          "end": 12148,
          "file": "contracts/protocol/tokenization/StaticATokenLM.sol",
          "start": 12134
        },
        "type": "Warning"
      }
    ],
    "sources": {
      "@openzeppelin/contracts/token/ERC20/IERC20.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
          "exportedSymbols": {
            "IERC20": [
              77
            ]
          },
          "id": 78,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                "^",
                "0.6",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2,
                "nodeType": "StructuredDocumentation",
                "src": "58:70:0",
                "text": " @dev Interface of the ERC20 standard as defined in the EIP."
              },
              "fullyImplemented": false,
              "id": 77,
              "linearizedBaseContracts": [
                77
              ],
              "name": "IERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": {
                    "id": 3,
                    "nodeType": "StructuredDocumentation",
                    "src": "152:66:0",
                    "text": " @dev Returns the amount of tokens in existence."
                  },
                  "functionSelector": "18160ddd",
                  "id": 8,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "243:2:0"
                  },
                  "returnParameters": {
                    "id": 7,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8,
                        "src": "269:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "269:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "268:9:0"
                  },
                  "scope": 77,
                  "src": "223:55:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 9,
                    "nodeType": "StructuredDocumentation",
                    "src": "284:72:0",
                    "text": " @dev Returns the amount of tokens owned by `account`."
                  },
                  "functionSelector": "70a08231",
                  "id": 16,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 12,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16,
                        "src": "380:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "380:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "379:17:0"
                  },
                  "returnParameters": {
                    "id": 15,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16,
                        "src": "420:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "420:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "419:9:0"
                  },
                  "scope": 77,
                  "src": "361:68:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 17,
                    "nodeType": "StructuredDocumentation",
                    "src": "435:209:0",
                    "text": " @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
                  },
                  "functionSelector": "a9059cbb",
                  "id": 26,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 22,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 26,
                        "src": "667:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "667:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 26,
                        "src": "686:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "686:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "666:35:0"
                  },
                  "returnParameters": {
                    "id": 25,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 26,
                        "src": "720:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 23,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "720:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "719:6:0"
                  },
                  "scope": 77,
                  "src": "649:77:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 27,
                    "nodeType": "StructuredDocumentation",
                    "src": "732:264:0",
                    "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."
                  },
                  "functionSelector": "dd62ed3e",
                  "id": 36,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 32,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 36,
                        "src": "1020:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1020:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 36,
                        "src": "1035:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1035:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1019:32:0"
                  },
                  "returnParameters": {
                    "id": 35,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 34,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 36,
                        "src": "1075:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1075:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1074:9:0"
                  },
                  "scope": 77,
                  "src": "1001:83:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 37,
                    "nodeType": "StructuredDocumentation",
                    "src": "1090:642:0",
                    "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."
                  },
                  "functionSelector": "095ea7b3",
                  "id": 46,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 42,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 46,
                        "src": "1754:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 38,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1754:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 41,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 46,
                        "src": "1771:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 40,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1771:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1753:33:0"
                  },
                  "returnParameters": {
                    "id": 45,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 46,
                        "src": "1805:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 43,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1805:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1804:6:0"
                  },
                  "scope": 77,
                  "src": "1737:74:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 47,
                    "nodeType": "StructuredDocumentation",
                    "src": "1817:296:0",
                    "text": " @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
                  },
                  "functionSelector": "23b872dd",
                  "id": 58,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 54,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 49,
                        "mutability": "mutable",
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 58,
                        "src": "2140:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 48,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2140:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 51,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 58,
                        "src": "2156:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 50,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2156:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 53,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 58,
                        "src": "2175:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 52,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2175:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2139:51:0"
                  },
                  "returnParameters": {
                    "id": 57,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 56,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 58,
                        "src": "2209:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 55,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2209:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2208:6:0"
                  },
                  "scope": 77,
                  "src": "2118:97:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 59,
                    "nodeType": "StructuredDocumentation",
                    "src": "2221:158:0",
                    "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."
                  },
                  "id": 67,
                  "name": "Transfer",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 66,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 61,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 67,
                        "src": "2399:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 60,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2399:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 63,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 67,
                        "src": "2421:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 62,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2421:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 65,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 67,
                        "src": "2441:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 64,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2441:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2398:57:0"
                  },
                  "src": "2384:72:0"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 68,
                    "nodeType": "StructuredDocumentation",
                    "src": "2462:148:0",
                    "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."
                  },
                  "id": 76,
                  "name": "Approval",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 75,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 70,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 76,
                        "src": "2630:21:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 69,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2630:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 72,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 76,
                        "src": "2653:23:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 71,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2653:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 74,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 76,
                        "src": "2678:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 73,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2678:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2629:63:0"
                  },
                  "src": "2615:78:0"
                }
              ],
              "scope": 78,
              "src": "129:2566:0"
            }
          ],
          "src": "33:2663:0"
        },
        "id": 0
      },
      "contracts/adapters/BaseUniswapAdapter.sol": {
        "ast": {
          "absolutePath": "contracts/adapters/BaseUniswapAdapter.sol",
          "exportedSymbols": {
            "BaseUniswapAdapter": [
              1557
            ]
          },
          "id": 1558,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 79,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:1"
            },
            {
              "id": 80,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "61:33:1"
            },
            {
              "absolutePath": "contracts/protocol/libraries/math/PercentageMath.sol",
              "file": "../protocol/libraries/math/PercentageMath.sol",
              "id": 82,
              "nodeType": "ImportDirective",
              "scope": 1558,
              "sourceUnit": 20069,
              "src": "96:77:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 81,
                    "name": "PercentageMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "104:14:1",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeMath.sol",
              "file": "../dependencies/openzeppelin/contracts/SafeMath.sol",
              "id": 84,
              "nodeType": "ImportDirective",
              "scope": 1558,
              "sourceUnit": 4497,
              "src": "174:77:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 83,
                    "name": "SafeMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "182:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
              "file": "../dependencies/openzeppelin/contracts/IERC20.sol",
              "id": 86,
              "nodeType": "ImportDirective",
              "scope": 1558,
              "sourceUnit": 4013,
              "src": "252:73:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 85,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "260:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20Detailed.sol",
              "file": "../dependencies/openzeppelin/contracts/IERC20Detailed.sol",
              "id": 88,
              "nodeType": "ImportDirective",
              "scope": 1558,
              "sourceUnit": 4035,
              "src": "326:89:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 87,
                    "name": "IERC20Detailed",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "334:14:1",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeERC20.sol",
              "file": "../dependencies/openzeppelin/contracts/SafeERC20.sol",
              "id": 90,
              "nodeType": "ImportDirective",
              "scope": 1558,
              "sourceUnit": 4301,
              "src": "416:79:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 89,
                    "name": "SafeERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "424:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/Ownable.sol",
              "file": "../dependencies/openzeppelin/contracts/Ownable.sol",
              "id": 92,
              "nodeType": "ImportDirective",
              "scope": 1558,
              "sourceUnit": 4144,
              "src": "496:75:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 91,
                    "name": "Ownable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "504:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPoolAddressesProvider.sol",
              "file": "../interfaces/ILendingPoolAddressesProvider.sol",
              "id": 94,
              "nodeType": "ImportDirective",
              "scope": 1558,
              "sourceUnit": 6618,
              "src": "572:94:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 93,
                    "name": "ILendingPoolAddressesProvider",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "580:29:1",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/types/DataTypes.sol",
              "file": "../protocol/libraries/types/DataTypes.sol",
              "id": 96,
              "nodeType": "ImportDirective",
              "scope": 1558,
              "sourceUnit": 20532,
              "src": "667:68:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 95,
                    "name": "DataTypes",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "675:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IUniswapV2Router02.sol",
              "file": "../interfaces/IUniswapV2Router02.sol",
              "id": 98,
              "nodeType": "ImportDirective",
              "scope": 1558,
              "sourceUnit": 7441,
              "src": "736:72:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 97,
                    "name": "IUniswapV2Router02",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "744:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IPriceOracleGetter.sol",
              "file": "../interfaces/IPriceOracleGetter.sol",
              "id": 100,
              "nodeType": "ImportDirective",
              "scope": 1558,
              "sourceUnit": 6919,
              "src": "809:72:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 99,
                    "name": "IPriceOracleGetter",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "817:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IERC20WithPermit.sol",
              "file": "../interfaces/IERC20WithPermit.sol",
              "id": 102,
              "nodeType": "ImportDirective",
              "scope": 1558,
              "sourceUnit": 5933,
              "src": "882:68:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 101,
                    "name": "IERC20WithPermit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "890:16:1",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/flashloan/base/FlashLoanReceiverBase.sol",
              "file": "../flashloan/base/FlashLoanReceiverBase.sol",
              "id": 104,
              "nodeType": "ImportDirective",
              "scope": 1558,
              "sourceUnit": 5512,
              "src": "951:82:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 103,
                    "name": "FlashLoanReceiverBase",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "959:21:1",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/adapters/interfaces/IBaseUniswapAdapter.sol",
              "file": "./interfaces/IBaseUniswapAdapter.sol",
              "id": 106,
              "nodeType": "ImportDirective",
              "scope": 1558,
              "sourceUnit": 3341,
              "src": "1034:73:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 105,
                    "name": "IBaseUniswapAdapter",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "1042:19:1",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 108,
                    "name": "FlashLoanReceiverBase",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5511,
                    "src": "1277:21:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FlashLoanReceiverBase_$5511",
                      "typeString": "contract FlashLoanReceiverBase"
                    }
                  },
                  "id": 109,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1277:21:1"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 110,
                    "name": "IBaseUniswapAdapter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3340,
                    "src": "1300:19:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IBaseUniswapAdapter_$3340",
                      "typeString": "contract IBaseUniswapAdapter"
                    }
                  },
                  "id": 111,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1300:19:1"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 112,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4143,
                    "src": "1321:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$4143",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 113,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1321:7:1"
                }
              ],
              "contractDependencies": [
                3340,
                3427,
                4143,
                5511,
                5547
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 107,
                "nodeType": "StructuredDocumentation",
                "src": "1109:127:1",
                "text": " @title BaseUniswapAdapter\n @notice Implements the logic for performing assets swaps in Uniswap V2\n @author Aave*"
              },
              "fullyImplemented": false,
              "id": 1557,
              "linearizedBaseContracts": [
                1557,
                4143,
                3427,
                3340,
                5511,
                5547
              ],
              "name": "BaseUniswapAdapter",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 116,
                  "libraryName": {
                    "contractScope": null,
                    "id": 114,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4496,
                    "src": "1339:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$4496",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1333:27:1",
                  "typeName": {
                    "id": 115,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1352:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 119,
                  "libraryName": {
                    "contractScope": null,
                    "id": 117,
                    "name": "PercentageMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20068,
                    "src": "1369:14:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_PercentageMath_$20068",
                      "typeString": "library PercentageMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1363:33:1",
                  "typeName": {
                    "id": 118,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1388:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 122,
                  "libraryName": {
                    "contractScope": null,
                    "id": 120,
                    "name": "SafeERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4300,
                    "src": "1405:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeERC20_$4300",
                      "typeString": "library SafeERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1399:27:1",
                  "typeName": {
                    "contractScope": null,
                    "id": 121,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4012,
                    "src": "1419:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$4012",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "baseFunctions": [
                    3277
                  ],
                  "constant": true,
                  "functionSelector": "32e4b286",
                  "id": 126,
                  "mutability": "constant",
                  "name": "MAX_SLIPPAGE_PERCENT",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 124,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1488:8:1"
                  },
                  "scope": 1557,
                  "src": "1464:60:1",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 123,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1464:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "33303030",
                    "id": 125,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1520:4:1",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3000_by_1",
                      "typeString": "int_const 3000"
                    },
                    "value": "3000"
                  },
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3282
                  ],
                  "constant": true,
                  "functionSelector": "074b2e43",
                  "id": 130,
                  "mutability": "constant",
                  "name": "FLASHLOAN_PREMIUM_TOTAL",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 128,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1599:8:1"
                  },
                  "scope": 1557,
                  "src": "1575:60:1",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 127,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1575:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "39",
                    "id": 129,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1634:1:1",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_9_by_1",
                      "typeString": "int_const 9"
                    },
                    "value": "9"
                  },
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3287
                  ],
                  "constant": true,
                  "functionSelector": "9d1211bf",
                  "id": 134,
                  "mutability": "constant",
                  "name": "USD_ADDRESS",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 132,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1693:8:1"
                  },
                  "scope": 1557,
                  "src": "1669:89:1",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 131,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1669:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307831304637466331463931426133353166394336323963353934374144363962443033433035623936",
                    "id": 133,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1716:42:1",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    },
                    "value": "0x10F7Fc1F91Ba351f9C629c5947AD69bD03C05b96"
                  },
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3272
                  ],
                  "constant": false,
                  "functionSelector": "040141e5",
                  "id": 137,
                  "mutability": "immutable",
                  "name": "WETH_ADDRESS",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 136,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1788:8:1"
                  },
                  "scope": 1557,
                  "src": "1763:46:1",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 135,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1763:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3292
                  ],
                  "constant": false,
                  "functionSelector": "38013f02",
                  "id": 140,
                  "mutability": "immutable",
                  "name": "ORACLE",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 139,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1849:8:1"
                  },
                  "scope": 1557,
                  "src": "1813:51:1",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                    "typeString": "contract IPriceOracleGetter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 138,
                    "name": "IPriceOracleGetter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6918,
                    "src": "1813:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                      "typeString": "contract IPriceOracleGetter"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3297
                  ],
                  "constant": false,
                  "functionSelector": "d8264920",
                  "id": 143,
                  "mutability": "immutable",
                  "name": "UNISWAP_ROUTER",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 142,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1904:8:1"
                  },
                  "scope": 1557,
                  "src": "1868:59:1",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                    "typeString": "contract IUniswapV2Router02"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 141,
                    "name": "IUniswapV2Router02",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7440,
                    "src": "1868:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                      "typeString": "contract IUniswapV2Router02"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 171,
                    "nodeType": "Block",
                    "src": "2112:142:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 155,
                            "name": "ORACLE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 140,
                            "src": "2118:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                              "typeString": "contract IPriceOracleGetter"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 157,
                                    "name": "addressesProvider",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 145,
                                    "src": "2146:17:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                                      "typeString": "contract ILendingPoolAddressesProvider"
                                    }
                                  },
                                  "id": 158,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getPriceOracle",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6601,
                                  "src": "2146:32:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                    "typeString": "function () view external returns (address)"
                                  }
                                },
                                "id": 159,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2146:34:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 156,
                              "name": "IPriceOracleGetter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6918,
                              "src": "2127:18:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IPriceOracleGetter_$6918_$",
                                "typeString": "type(contract IPriceOracleGetter)"
                              }
                            },
                            "id": 160,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2127:54:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                              "typeString": "contract IPriceOracleGetter"
                            }
                          },
                          "src": "2118:63:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                            "typeString": "contract IPriceOracleGetter"
                          }
                        },
                        "id": 162,
                        "nodeType": "ExpressionStatement",
                        "src": "2118:63:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 165,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 163,
                            "name": "UNISWAP_ROUTER",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 143,
                            "src": "2187:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                              "typeString": "contract IUniswapV2Router02"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 164,
                            "name": "uniswapRouter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 147,
                            "src": "2204:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                              "typeString": "contract IUniswapV2Router02"
                            }
                          },
                          "src": "2187:30:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                            "typeString": "contract IUniswapV2Router02"
                          }
                        },
                        "id": 166,
                        "nodeType": "ExpressionStatement",
                        "src": "2187:30:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 167,
                            "name": "WETH_ADDRESS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 137,
                            "src": "2223:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 168,
                            "name": "wethAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 149,
                            "src": "2238:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2223:26:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 170,
                        "nodeType": "ExpressionStatement",
                        "src": "2223:26:1"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 172,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 152,
                          "name": "addressesProvider",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 145,
                          "src": "2093:17:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                            "typeString": "contract ILendingPoolAddressesProvider"
                          }
                        }
                      ],
                      "id": 153,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 151,
                        "name": "FlashLoanReceiverBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5511,
                        "src": "2071:21:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_FlashLoanReceiverBase_$5511_$",
                          "typeString": "type(contract FlashLoanReceiverBase)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2071:40:1"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 150,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 145,
                        "mutability": "mutable",
                        "name": "addressesProvider",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 172,
                        "src": "1949:47:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                          "typeString": "contract ILendingPoolAddressesProvider"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 144,
                          "name": "ILendingPoolAddressesProvider",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6617,
                          "src": "1949:29:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                            "typeString": "contract ILendingPoolAddressesProvider"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 147,
                        "mutability": "mutable",
                        "name": "uniswapRouter",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 172,
                        "src": "2002:32:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                          "typeString": "contract IUniswapV2Router02"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 146,
                          "name": "IUniswapV2Router02",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 7440,
                          "src": "2002:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                            "typeString": "contract IUniswapV2Router02"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 149,
                        "mutability": "mutable",
                        "name": "wethAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 172,
                        "src": "2040:19:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 148,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2040:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1943:120:1"
                  },
                  "returnParameters": {
                    "id": 154,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2112:0:1"
                  },
                  "scope": 1557,
                  "src": "1932:322:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3318
                  ],
                  "body": {
                    "id": 214,
                    "nodeType": "Block",
                    "src": "3084:246:1",
                    "statements": [
                      {
                        "assignments": [
                          195
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 195,
                            "mutability": "mutable",
                            "name": "results",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 214,
                            "src": "3090:25:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AmountCalc_$3267_memory_ptr",
                              "typeString": "struct IBaseUniswapAdapter.AmountCalc"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 194,
                              "name": "AmountCalc",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3267,
                              "src": "3090:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AmountCalc_$3267_storage_ptr",
                                "typeString": "struct IBaseUniswapAdapter.AmountCalc"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 201,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 197,
                              "name": "reserveIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 177,
                              "src": "3137:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 198,
                              "name": "reserveOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 179,
                              "src": "3148:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 199,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 175,
                              "src": "3160:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 196,
                            "name": "_getAmountsOutData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1127,
                            "src": "3118:18:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_struct$_AmountCalc_$3267_memory_ptr_$",
                              "typeString": "function (address,address,uint256) view returns (struct IBaseUniswapAdapter.AmountCalc memory)"
                            }
                          },
                          "id": 200,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3118:51:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AmountCalc_$3267_memory_ptr",
                            "typeString": "struct IBaseUniswapAdapter.AmountCalc memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3090:79:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 202,
                                "name": "results",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 195,
                                "src": "3191:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AmountCalc_$3267_memory_ptr",
                                  "typeString": "struct IBaseUniswapAdapter.AmountCalc memory"
                                }
                              },
                              "id": 203,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "calculatedAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3257,
                              "src": "3191:24:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 204,
                                "name": "results",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 195,
                                "src": "3223:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AmountCalc_$3267_memory_ptr",
                                  "typeString": "struct IBaseUniswapAdapter.AmountCalc memory"
                                }
                              },
                              "id": 205,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "relativePrice",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3259,
                              "src": "3223:21:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 206,
                                "name": "results",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 195,
                                "src": "3252:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AmountCalc_$3267_memory_ptr",
                                  "typeString": "struct IBaseUniswapAdapter.AmountCalc memory"
                                }
                              },
                              "id": 207,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "amountInUsd",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3261,
                              "src": "3252:19:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 208,
                                "name": "results",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 195,
                                "src": "3279:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AmountCalc_$3267_memory_ptr",
                                  "typeString": "struct IBaseUniswapAdapter.AmountCalc memory"
                                }
                              },
                              "id": 209,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "amountOutUsd",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3263,
                              "src": "3279:20:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 210,
                                "name": "results",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 195,
                                "src": "3307:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AmountCalc_$3267_memory_ptr",
                                  "typeString": "struct IBaseUniswapAdapter.AmountCalc memory"
                                }
                              },
                              "id": 211,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "path",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3266,
                              "src": "3307:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            }
                          ],
                          "id": 212,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3183:142:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$",
                            "typeString": "tuple(uint256,uint256,uint256,uint256,address[] memory)"
                          }
                        },
                        "functionReturnParameters": 193,
                        "id": 213,
                        "nodeType": "Return",
                        "src": "3176:149:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 173,
                    "nodeType": "StructuredDocumentation",
                    "src": "2258:587:1",
                    "text": " @dev Given an input asset amount, returns the maximum output amount of the other asset and the prices\n @param amountIn Amount of reserveIn\n @param reserveIn Address of the asset to be swap from\n @param reserveOut Address of the asset to be swap to\n @return uint256 Amount out of the reserveOut\n @return uint256 The price of out amount denominated in the reserveIn currency (18 decimals)\n @return uint256 In amount of reserveIn value denominated in USD (8 decimals)\n @return uint256 Out amount of reserveOut value denominated in USD (8 decimals)"
                  },
                  "functionSelector": "baf7fa99",
                  "id": 215,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountsOut",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 181,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2970:8:1"
                  },
                  "parameters": {
                    "id": 180,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 175,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 215,
                        "src": "2876:16:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 174,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2876:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 177,
                        "mutability": "mutable",
                        "name": "reserveIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 215,
                        "src": "2898:17:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 176,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2898:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 179,
                        "mutability": "mutable",
                        "name": "reserveOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 215,
                        "src": "2921:18:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 178,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2921:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2870:73:1"
                  },
                  "returnParameters": {
                    "id": 193,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 183,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 215,
                        "src": "2999:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 182,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2999:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 185,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 215,
                        "src": "3014:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 184,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3014:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 187,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 215,
                        "src": "3029:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 186,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3029:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 189,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 215,
                        "src": "3044:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 188,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3044:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 192,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 215,
                        "src": "3059:16:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 190,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3059:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 191,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3059:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2991:90:1"
                  },
                  "scope": 1557,
                  "src": "2848:482:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3339
                  ],
                  "body": {
                    "id": 257,
                    "nodeType": "Block",
                    "src": "4163:246:1",
                    "statements": [
                      {
                        "assignments": [
                          238
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 238,
                            "mutability": "mutable",
                            "name": "results",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 257,
                            "src": "4169:25:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AmountCalc_$3267_memory_ptr",
                              "typeString": "struct IBaseUniswapAdapter.AmountCalc"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 237,
                              "name": "AmountCalc",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3267,
                              "src": "4169:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AmountCalc_$3267_storage_ptr",
                                "typeString": "struct IBaseUniswapAdapter.AmountCalc"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 244,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 240,
                              "name": "reserveIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 220,
                              "src": "4215:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 241,
                              "name": "reserveOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 222,
                              "src": "4226:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 242,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 218,
                              "src": "4238:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 239,
                            "name": "_getAmountsInData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1286,
                            "src": "4197:17:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_struct$_AmountCalc_$3267_memory_ptr_$",
                              "typeString": "function (address,address,uint256) view returns (struct IBaseUniswapAdapter.AmountCalc memory)"
                            }
                          },
                          "id": 243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4197:51:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AmountCalc_$3267_memory_ptr",
                            "typeString": "struct IBaseUniswapAdapter.AmountCalc memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4169:79:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 245,
                                "name": "results",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 238,
                                "src": "4270:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AmountCalc_$3267_memory_ptr",
                                  "typeString": "struct IBaseUniswapAdapter.AmountCalc memory"
                                }
                              },
                              "id": 246,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "calculatedAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3257,
                              "src": "4270:24:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 247,
                                "name": "results",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 238,
                                "src": "4302:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AmountCalc_$3267_memory_ptr",
                                  "typeString": "struct IBaseUniswapAdapter.AmountCalc memory"
                                }
                              },
                              "id": 248,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "relativePrice",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3259,
                              "src": "4302:21:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 249,
                                "name": "results",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 238,
                                "src": "4331:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AmountCalc_$3267_memory_ptr",
                                  "typeString": "struct IBaseUniswapAdapter.AmountCalc memory"
                                }
                              },
                              "id": 250,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "amountInUsd",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3261,
                              "src": "4331:19:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 251,
                                "name": "results",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 238,
                                "src": "4358:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AmountCalc_$3267_memory_ptr",
                                  "typeString": "struct IBaseUniswapAdapter.AmountCalc memory"
                                }
                              },
                              "id": 252,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "amountOutUsd",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3263,
                              "src": "4358:20:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 253,
                                "name": "results",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 238,
                                "src": "4386:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AmountCalc_$3267_memory_ptr",
                                  "typeString": "struct IBaseUniswapAdapter.AmountCalc memory"
                                }
                              },
                              "id": 254,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "path",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3266,
                              "src": "4386:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            }
                          ],
                          "id": 255,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "4262:142:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$",
                            "typeString": "tuple(uint256,uint256,uint256,uint256,address[] memory)"
                          }
                        },
                        "functionReturnParameters": 236,
                        "id": 256,
                        "nodeType": "Return",
                        "src": "4255:149:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 216,
                    "nodeType": "StructuredDocumentation",
                    "src": "3334:590:1",
                    "text": " @dev Returns the minimum input asset amount required to buy the given output asset amount and the prices\n @param amountOut Amount of reserveOut\n @param reserveIn Address of the asset to be swap from\n @param reserveOut Address of the asset to be swap to\n @return uint256 Amount in of the reserveIn\n @return uint256 The price of in amount denominated in the reserveOut currency (18 decimals)\n @return uint256 In amount of reserveIn value denominated in USD (8 decimals)\n @return uint256 Out amount of reserveOut value denominated in USD (8 decimals)"
                  },
                  "functionSelector": "cdf58cd6",
                  "id": 258,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountsIn",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 224,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4049:8:1"
                  },
                  "parameters": {
                    "id": 223,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 218,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 258,
                        "src": "3954:17:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 217,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3954:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 220,
                        "mutability": "mutable",
                        "name": "reserveIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 258,
                        "src": "3977:17:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 219,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3977:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 222,
                        "mutability": "mutable",
                        "name": "reserveOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 258,
                        "src": "4000:18:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 221,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4000:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3948:74:1"
                  },
                  "returnParameters": {
                    "id": 236,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 226,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 258,
                        "src": "4078:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 225,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4078:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 228,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 258,
                        "src": "4093:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 227,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4093:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 230,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 258,
                        "src": "4108:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 229,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4108:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 232,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 258,
                        "src": "4123:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 231,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4123:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 235,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 258,
                        "src": "4138:16:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 233,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4138:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 234,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4138:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4070:90:1"
                  },
                  "scope": 1557,
                  "src": "3927:482:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 449,
                    "nodeType": "Block",
                    "src": "4976:1470:1",
                    "statements": [
                      {
                        "assignments": [
                          275
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 275,
                            "mutability": "mutable",
                            "name": "fromAssetDecimals",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 449,
                            "src": "4982:25:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 274,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4982:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 279,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 277,
                              "name": "assetToSwapFrom",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 261,
                              "src": "5023:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 276,
                            "name": "_getDecimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 668,
                            "src": "5010:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5010:29:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4982:57:1"
                      },
                      {
                        "assignments": [
                          281
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 281,
                            "mutability": "mutable",
                            "name": "toAssetDecimals",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 449,
                            "src": "5045:23:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 280,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5045:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 285,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 283,
                              "name": "assetToSwapTo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 263,
                              "src": "5084:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 282,
                            "name": "_getDecimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 668,
                            "src": "5071:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 284,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5071:27:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5045:53:1"
                      },
                      {
                        "assignments": [
                          287
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 287,
                            "mutability": "mutable",
                            "name": "fromAssetPrice",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 449,
                            "src": "5105:22:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 286,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5105:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 291,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 289,
                              "name": "assetToSwapFrom",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 261,
                              "src": "5140:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 288,
                            "name": "_getPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 653,
                            "src": "5130:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5130:26:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5105:51:1"
                      },
                      {
                        "assignments": [
                          293
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 293,
                            "mutability": "mutable",
                            "name": "toAssetPrice",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 449,
                            "src": "5162:20:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 292,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5162:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 297,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 295,
                              "name": "assetToSwapTo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 263,
                              "src": "5195:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 294,
                            "name": "_getPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 653,
                            "src": "5185:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5185:24:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5162:47:1"
                      },
                      {
                        "assignments": [
                          299
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 299,
                            "mutability": "mutable",
                            "name": "expectedMinAmountOut",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 449,
                            "src": "5216:28:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 298,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5216:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 324,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 321,
                                  "name": "MAX_SLIPPAGE_PERCENT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 126,
                                  "src": "5431:20:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 318,
                                    "name": "PercentageMath",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20068,
                                    "src": "5394:14:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_PercentageMath_$20068_$",
                                      "typeString": "type(library PercentageMath)"
                                    }
                                  },
                                  "id": 319,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "PERCENTAGE_FACTOR",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 19963,
                                  "src": "5394:32:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 320,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4346,
                                "src": "5394:36:1",
                                "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": 322,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5394:58:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 314,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "3130",
                                        "id": 312,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5350:2:1",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 313,
                                        "name": "fromAssetDecimals",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 275,
                                        "src": "5354:17:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "5350:21:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 310,
                                      "name": "toAssetPrice",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 293,
                                      "src": "5333:12:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 311,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4409,
                                    "src": "5333:16:1",
                                    "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": 315,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5333:39:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 306,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "3130",
                                            "id": 304,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "5298:2:1",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_10_by_1",
                                              "typeString": "int_const 10"
                                            },
                                            "value": "10"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "**",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 305,
                                            "name": "toAssetDecimals",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 281,
                                            "src": "5302:15:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "5298:19:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 302,
                                          "name": "fromAssetPrice",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 287,
                                          "src": "5279:14:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 303,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4409,
                                        "src": "5279:18:1",
                                        "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": 307,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5279:39:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 300,
                                      "name": "amountToSwap",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 265,
                                      "src": "5253:12:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 301,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4409,
                                    "src": "5253:25:1",
                                    "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": 308,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5253:66:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 309,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "div",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4426,
                                "src": "5253:79:1",
                                "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": 316,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5253:120:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 317,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "percentMul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20016,
                            "src": "5253:140:1",
                            "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": 323,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5253:200:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5216:237:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 328,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 326,
                                "name": "expectedMinAmountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 299,
                                "src": "5468:20:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 327,
                                "name": "minAmountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 267,
                                "src": "5491:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5468:35:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6d696e416d6f756e744f757420657863656564206d617820736c697070616765",
                              "id": 329,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5505:34:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5ee80652bb7897240fbde159420258c5370ff4d114e86968997928bce8d92a2c",
                                "typeString": "literal_string \"minAmountOut exceed max slippage\""
                              },
                              "value": "minAmountOut exceed max slippage"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5ee80652bb7897240fbde159420258c5370ff4d114e86968997928bce8d92a2c",
                                "typeString": "literal_string \"minAmountOut exceed max slippage\""
                              }
                            ],
                            "id": 325,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5460:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 330,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5460:80:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 331,
                        "nodeType": "ExpressionStatement",
                        "src": "5460:80:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 338,
                                  "name": "UNISWAP_ROUTER",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 143,
                                  "src": "5728:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                                    "typeString": "contract IUniswapV2Router02"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                                    "typeString": "contract IUniswapV2Router02"
                                  }
                                ],
                                "id": 337,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5720:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 336,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5720:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 339,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5720:23:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 340,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5745:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 333,
                                  "name": "assetToSwapFrom",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 261,
                                  "src": "5691:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 332,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "5684:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 334,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5684:23:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 335,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeApprove",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4247,
                            "src": "5684:35:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 341,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5684:63:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 342,
                        "nodeType": "ExpressionStatement",
                        "src": "5684:63:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 349,
                                  "name": "UNISWAP_ROUTER",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 143,
                                  "src": "5797:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                                    "typeString": "contract IUniswapV2Router02"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                                    "typeString": "contract IUniswapV2Router02"
                                  }
                                ],
                                "id": 348,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5789:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 347,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5789:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 350,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5789:23:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 351,
                              "name": "amountToSwap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 265,
                              "src": "5814:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 344,
                                  "name": "assetToSwapFrom",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 261,
                                  "src": "5760:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 343,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "5753:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 345,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5753:23:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 346,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeApprove",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4247,
                            "src": "5753:35:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 352,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5753:74:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 353,
                        "nodeType": "ExpressionStatement",
                        "src": "5753:74:1"
                      },
                      {
                        "assignments": [
                          358
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 358,
                            "mutability": "mutable",
                            "name": "path",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 449,
                            "src": "5834:21:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 356,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "5834:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 357,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "5834:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 359,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5834:21:1"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 360,
                          "name": "useEthPath",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 269,
                          "src": "5865:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 408,
                          "nodeType": "Block",
                          "src": "6015:102:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 394,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 388,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 358,
                                  "src": "6023:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "32",
                                      "id": 392,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6044:1:1",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      }
                                    ],
                                    "id": 391,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "NewExpression",
                                    "src": "6030:13:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                      "typeString": "function (uint256) pure returns (address[] memory)"
                                    },
                                    "typeName": {
                                      "baseType": {
                                        "id": 389,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6034:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "id": 390,
                                      "length": null,
                                      "nodeType": "ArrayTypeName",
                                      "src": "6034:9:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                        "typeString": "address[]"
                                      }
                                    }
                                  },
                                  "id": 393,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6030:16:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "src": "6023:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 395,
                              "nodeType": "ExpressionStatement",
                              "src": "6023:23:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 400,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 396,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 358,
                                    "src": "6054:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 398,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 397,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6059:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "6054:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 399,
                                  "name": "assetToSwapFrom",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 261,
                                  "src": "6064:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "6054:25:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 401,
                              "nodeType": "ExpressionStatement",
                              "src": "6054:25:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 406,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 402,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 358,
                                    "src": "6087:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 404,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 403,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6092:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "6087:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 405,
                                  "name": "assetToSwapTo",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 263,
                                  "src": "6097:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "6087:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 407,
                              "nodeType": "ExpressionStatement",
                              "src": "6087:23:1"
                            }
                          ]
                        },
                        "id": 409,
                        "nodeType": "IfStatement",
                        "src": "5861:256:1",
                        "trueBody": {
                          "id": 387,
                          "nodeType": "Block",
                          "src": "5877:132:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 367,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 361,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 358,
                                  "src": "5885:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "33",
                                      "id": 365,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5906:1:1",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      },
                                      "value": "3"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      }
                                    ],
                                    "id": 364,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "NewExpression",
                                    "src": "5892:13:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                      "typeString": "function (uint256) pure returns (address[] memory)"
                                    },
                                    "typeName": {
                                      "baseType": {
                                        "id": 362,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5896:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "id": 363,
                                      "length": null,
                                      "nodeType": "ArrayTypeName",
                                      "src": "5896:9:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                        "typeString": "address[]"
                                      }
                                    }
                                  },
                                  "id": 366,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5892:16:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "src": "5885:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 368,
                              "nodeType": "ExpressionStatement",
                              "src": "5885:23:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 373,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 369,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 358,
                                    "src": "5916:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 371,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 370,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5921:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5916:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 372,
                                  "name": "assetToSwapFrom",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 261,
                                  "src": "5926:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5916:25:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 374,
                              "nodeType": "ExpressionStatement",
                              "src": "5916:25:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 379,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 375,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 358,
                                    "src": "5949:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 377,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 376,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5954:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5949:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 378,
                                  "name": "WETH_ADDRESS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 137,
                                  "src": "5959:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5949:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 380,
                              "nodeType": "ExpressionStatement",
                              "src": "5949:22:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 385,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 381,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 358,
                                    "src": "5979:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 383,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 382,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5984:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5979:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 384,
                                  "name": "assetToSwapTo",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 263,
                                  "src": "5989:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5979:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 386,
                              "nodeType": "ExpressionStatement",
                              "src": "5979:23:1"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          414
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 414,
                            "mutability": "mutable",
                            "name": "amounts",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 449,
                            "src": "6122:24:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 412,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6122:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 413,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "6122:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 427,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 417,
                              "name": "amountToSwap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 265,
                              "src": "6204:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 418,
                              "name": "minAmountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 267,
                              "src": "6226:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 419,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 358,
                              "src": "6248:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 422,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "6270:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_BaseUniswapAdapter_$1557",
                                    "typeString": "contract BaseUniswapAdapter"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_BaseUniswapAdapter_$1557",
                                    "typeString": "contract BaseUniswapAdapter"
                                  }
                                ],
                                "id": 421,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6262:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 420,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6262:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 423,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6262:13:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 424,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "6285:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 425,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6285:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 415,
                              "name": "UNISWAP_ROUTER",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 143,
                              "src": "6155:14:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                                "typeString": "contract IUniswapV2Router02"
                              }
                            },
                            "id": 416,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "swapExactTokensForTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7400,
                            "src": "6155:39:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256,uint256,address[] memory,address,uint256) external returns (uint256[] memory)"
                            }
                          },
                          "id": 426,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6155:153:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6122:186:1"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 429,
                              "name": "assetToSwapFrom",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 261,
                              "src": "6328:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 430,
                              "name": "assetToSwapTo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 263,
                              "src": "6345:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 431,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 414,
                                "src": "6360:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 433,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 432,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6368:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6360:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 434,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 414,
                                "src": "6372:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 439,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 438,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 435,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 414,
                                    "src": "6380:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 436,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "6380:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 437,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6397:1:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "6380:18:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6372:27:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 428,
                            "name": "Swapped",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3244,
                            "src": "6320:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256)"
                            }
                          },
                          "id": 440,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6320:80:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 441,
                        "nodeType": "EmitStatement",
                        "src": "6315:85:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 442,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 414,
                            "src": "6414:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 447,
                          "indexExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 446,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 443,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 414,
                                "src": "6422:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 444,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6422:14:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 445,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6439:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "6422:18:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6414:27:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 273,
                        "id": 448,
                        "nodeType": "Return",
                        "src": "6407:34:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 259,
                    "nodeType": "StructuredDocumentation",
                    "src": "4413:365:1",
                    "text": " @dev Swaps an exact `amountToSwap` of an asset to another\n @param assetToSwapFrom Origin asset\n @param assetToSwapTo Destination asset\n @param amountToSwap Exact amount of `assetToSwapFrom` to be swapped\n @param minAmountOut the min amount of `assetToSwapTo` to be received from the swap\n @return the amount received from the swap"
                  },
                  "id": 450,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_swapExactTokensForTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 270,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 261,
                        "mutability": "mutable",
                        "name": "assetToSwapFrom",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 450,
                        "src": "4821:23:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 260,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4821:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 263,
                        "mutability": "mutable",
                        "name": "assetToSwapTo",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 450,
                        "src": "4850:21:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 262,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4850:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 265,
                        "mutability": "mutable",
                        "name": "amountToSwap",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 450,
                        "src": "4877:20:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 264,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4877:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 267,
                        "mutability": "mutable",
                        "name": "minAmountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 450,
                        "src": "4903:20:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 266,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4903:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 269,
                        "mutability": "mutable",
                        "name": "useEthPath",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 450,
                        "src": "4929:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 268,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4929:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4815:133:1"
                  },
                  "returnParameters": {
                    "id": 273,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 272,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 450,
                        "src": "4967:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 271,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4967:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4966:9:1"
                  },
                  "scope": 1557,
                  "src": "4781:1665:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 638,
                    "nodeType": "Block",
                    "src": "7065:1478:1",
                    "statements": [
                      {
                        "assignments": [
                          467
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 467,
                            "mutability": "mutable",
                            "name": "fromAssetDecimals",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 638,
                            "src": "7071:25:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 466,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7071:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 471,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 469,
                              "name": "assetToSwapFrom",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 453,
                              "src": "7112:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 468,
                            "name": "_getDecimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 668,
                            "src": "7099:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 470,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7099:29:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7071:57:1"
                      },
                      {
                        "assignments": [
                          473
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 473,
                            "mutability": "mutable",
                            "name": "toAssetDecimals",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 638,
                            "src": "7134:23:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 472,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7134:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 477,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 475,
                              "name": "assetToSwapTo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 455,
                              "src": "7173:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 474,
                            "name": "_getDecimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 668,
                            "src": "7160:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7160:27:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7134:53:1"
                      },
                      {
                        "assignments": [
                          479
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 479,
                            "mutability": "mutable",
                            "name": "fromAssetPrice",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 638,
                            "src": "7194:22:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 478,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7194:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 483,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 481,
                              "name": "assetToSwapFrom",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 453,
                              "src": "7229:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 480,
                            "name": "_getPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 653,
                            "src": "7219:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 482,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7219:26:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7194:51:1"
                      },
                      {
                        "assignments": [
                          485
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 485,
                            "mutability": "mutable",
                            "name": "toAssetPrice",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 638,
                            "src": "7251:20:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 484,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7251:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 489,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 487,
                              "name": "assetToSwapTo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 455,
                              "src": "7284:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 486,
                            "name": "_getPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 653,
                            "src": "7274:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7274:24:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7251:47:1"
                      },
                      {
                        "assignments": [
                          491
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 491,
                            "mutability": "mutable",
                            "name": "expectedMaxAmountToSwap",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 638,
                            "src": "7305:31:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 490,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7305:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 516,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 513,
                                  "name": "MAX_SLIPPAGE_PERCENT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 126,
                                  "src": "7526:20:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 510,
                                    "name": "PercentageMath",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20068,
                                    "src": "7489:14:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_PercentageMath_$20068_$",
                                      "typeString": "type(library PercentageMath)"
                                    }
                                  },
                                  "id": 511,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "PERCENTAGE_FACTOR",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 19963,
                                  "src": "7489:32:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 512,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4329,
                                "src": "7489:36:1",
                                "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": 514,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7489:58:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 506,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "3130",
                                        "id": 504,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7447:2:1",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 505,
                                        "name": "toAssetDecimals",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 473,
                                        "src": "7451:15:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7447:19:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 502,
                                      "name": "fromAssetPrice",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 479,
                                      "src": "7428:14:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 503,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4409,
                                    "src": "7428:18:1",
                                    "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": 507,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7428:39:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 498,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "3130",
                                            "id": 496,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7391:2:1",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_10_by_1",
                                              "typeString": "int_const 10"
                                            },
                                            "value": "10"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "**",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 497,
                                            "name": "fromAssetDecimals",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 467,
                                            "src": "7395:17:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "7391:21:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 494,
                                          "name": "toAssetPrice",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 485,
                                          "src": "7374:12:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 495,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4409,
                                        "src": "7374:16:1",
                                        "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": 499,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7374:39:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 492,
                                      "name": "amountToReceive",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 459,
                                      "src": "7345:15:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 493,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4409,
                                    "src": "7345:28:1",
                                    "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": 500,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7345:69:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 501,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "div",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4426,
                                "src": "7345:82:1",
                                "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": 508,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7345:123:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 509,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "percentMul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20016,
                            "src": "7345:143:1",
                            "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": 515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7345:203:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7305:243:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 520,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 518,
                                "name": "maxAmountToSwap",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 457,
                                "src": "7563:15:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 519,
                                "name": "expectedMaxAmountToSwap",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 491,
                                "src": "7581:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7563:41:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6d6178416d6f756e74546f5377617020657863656564206d617820736c697070616765",
                              "id": 521,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7606:37:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6e5d7e8ec1c44b1be662d5a482625181074d9516baace42f35250edc17de17e6",
                                "typeString": "literal_string \"maxAmountToSwap exceed max slippage\""
                              },
                              "value": "maxAmountToSwap exceed max slippage"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6e5d7e8ec1c44b1be662d5a482625181074d9516baace42f35250edc17de17e6",
                                "typeString": "literal_string \"maxAmountToSwap exceed max slippage\""
                              }
                            ],
                            "id": 517,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7555:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 522,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7555:89:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 523,
                        "nodeType": "ExpressionStatement",
                        "src": "7555:89:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 530,
                                  "name": "UNISWAP_ROUTER",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 143,
                                  "src": "7832:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                                    "typeString": "contract IUniswapV2Router02"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                                    "typeString": "contract IUniswapV2Router02"
                                  }
                                ],
                                "id": 529,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7824:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 528,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7824:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 531,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7824:23:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 532,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7849:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 525,
                                  "name": "assetToSwapFrom",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 453,
                                  "src": "7795:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 524,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "7788:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 526,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7788:23:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 527,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeApprove",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4247,
                            "src": "7788:35:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 533,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7788:63:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 534,
                        "nodeType": "ExpressionStatement",
                        "src": "7788:63:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 541,
                                  "name": "UNISWAP_ROUTER",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 143,
                                  "src": "7901:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                                    "typeString": "contract IUniswapV2Router02"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                                    "typeString": "contract IUniswapV2Router02"
                                  }
                                ],
                                "id": 540,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7893:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 539,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7893:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 542,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7893:23:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 543,
                              "name": "maxAmountToSwap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 457,
                              "src": "7918:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 536,
                                  "name": "assetToSwapFrom",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 453,
                                  "src": "7864:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 535,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "7857:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 537,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7857:23:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 538,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeApprove",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4247,
                            "src": "7857:35:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 544,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7857:77:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 545,
                        "nodeType": "ExpressionStatement",
                        "src": "7857:77:1"
                      },
                      {
                        "assignments": [
                          550
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 550,
                            "mutability": "mutable",
                            "name": "path",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 638,
                            "src": "7941:21:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 548,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "7941:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 549,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "7941:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 551,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7941:21:1"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 552,
                          "name": "useEthPath",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 461,
                          "src": "7972:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 600,
                          "nodeType": "Block",
                          "src": "8122:102:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 586,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 580,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 550,
                                  "src": "8130:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "32",
                                      "id": 584,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8151:1:1",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      }
                                    ],
                                    "id": 583,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "NewExpression",
                                    "src": "8137:13:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                      "typeString": "function (uint256) pure returns (address[] memory)"
                                    },
                                    "typeName": {
                                      "baseType": {
                                        "id": 581,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8141:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "id": 582,
                                      "length": null,
                                      "nodeType": "ArrayTypeName",
                                      "src": "8141:9:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                        "typeString": "address[]"
                                      }
                                    }
                                  },
                                  "id": 585,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8137:16:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "src": "8130:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 587,
                              "nodeType": "ExpressionStatement",
                              "src": "8130:23:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 592,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 588,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 550,
                                    "src": "8161:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 590,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 589,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8166:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "8161:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 591,
                                  "name": "assetToSwapFrom",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 453,
                                  "src": "8171:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "8161:25:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 593,
                              "nodeType": "ExpressionStatement",
                              "src": "8161:25:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 598,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 594,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 550,
                                    "src": "8194:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 596,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 595,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8199:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "8194:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 597,
                                  "name": "assetToSwapTo",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 455,
                                  "src": "8204:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "8194:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 599,
                              "nodeType": "ExpressionStatement",
                              "src": "8194:23:1"
                            }
                          ]
                        },
                        "id": 601,
                        "nodeType": "IfStatement",
                        "src": "7968:256:1",
                        "trueBody": {
                          "id": 579,
                          "nodeType": "Block",
                          "src": "7984:132:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 559,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 553,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 550,
                                  "src": "7992:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "33",
                                      "id": 557,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8013:1:1",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      },
                                      "value": "3"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      }
                                    ],
                                    "id": 556,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "NewExpression",
                                    "src": "7999:13:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                      "typeString": "function (uint256) pure returns (address[] memory)"
                                    },
                                    "typeName": {
                                      "baseType": {
                                        "id": 554,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8003:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "id": 555,
                                      "length": null,
                                      "nodeType": "ArrayTypeName",
                                      "src": "8003:9:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                        "typeString": "address[]"
                                      }
                                    }
                                  },
                                  "id": 558,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7999:16:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "src": "7992:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 560,
                              "nodeType": "ExpressionStatement",
                              "src": "7992:23:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 565,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 561,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 550,
                                    "src": "8023:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 563,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 562,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8028:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "8023:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 564,
                                  "name": "assetToSwapFrom",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 453,
                                  "src": "8033:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "8023:25:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 566,
                              "nodeType": "ExpressionStatement",
                              "src": "8023:25:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 571,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 567,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 550,
                                    "src": "8056:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 569,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 568,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8061:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "8056:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 570,
                                  "name": "WETH_ADDRESS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 137,
                                  "src": "8066:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "8056:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 572,
                              "nodeType": "ExpressionStatement",
                              "src": "8056:22:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 577,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 573,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 550,
                                    "src": "8086:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 575,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 574,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8091:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "8086:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 576,
                                  "name": "assetToSwapTo",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 455,
                                  "src": "8096:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "8086:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 578,
                              "nodeType": "ExpressionStatement",
                              "src": "8086:23:1"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          606
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 606,
                            "mutability": "mutable",
                            "name": "amounts",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 638,
                            "src": "8230:24:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 604,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8230:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 605,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "8230:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 619,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 609,
                              "name": "amountToReceive",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 459,
                              "src": "8312:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 610,
                              "name": "maxAmountToSwap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 457,
                              "src": "8337:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 611,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 550,
                              "src": "8362:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 614,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "8384:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_BaseUniswapAdapter_$1557",
                                    "typeString": "contract BaseUniswapAdapter"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_BaseUniswapAdapter_$1557",
                                    "typeString": "contract BaseUniswapAdapter"
                                  }
                                ],
                                "id": 613,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8376:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 612,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8376:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 615,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8376:13:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 616,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "8399:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 617,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8399:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 607,
                              "name": "UNISWAP_ROUTER",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 143,
                              "src": "8263:14:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                                "typeString": "contract IUniswapV2Router02"
                              }
                            },
                            "id": 608,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "swapTokensForExactTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7417,
                            "src": "8263:39:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256,uint256,address[] memory,address,uint256) external returns (uint256[] memory)"
                            }
                          },
                          "id": 618,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8263:159:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8230:192:1"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 621,
                              "name": "assetToSwapFrom",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 453,
                              "src": "8442:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 622,
                              "name": "assetToSwapTo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 455,
                              "src": "8459:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 623,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 606,
                                "src": "8474:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 625,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 624,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8482:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8474:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 626,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 606,
                                "src": "8486:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 631,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 630,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 627,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 606,
                                    "src": "8494:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 628,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "8494:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 629,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8511:1:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "8494:18:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8486:27:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 620,
                            "name": "Swapped",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3244,
                            "src": "8434:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256)"
                            }
                          },
                          "id": 632,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8434:80:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 633,
                        "nodeType": "EmitStatement",
                        "src": "8429:85:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 634,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 606,
                            "src": "8528:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 636,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 635,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8536:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8528:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 465,
                        "id": 637,
                        "nodeType": "Return",
                        "src": "8521:17:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 451,
                    "nodeType": "StructuredDocumentation",
                    "src": "6450:411:1",
                    "text": " @dev Receive an exact amount `amountToReceive` of `assetToSwapTo` tokens for as few `assetToSwapFrom` tokens as\n possible.\n @param assetToSwapFrom Origin asset\n @param assetToSwapTo Destination asset\n @param maxAmountToSwap Max amount of `assetToSwapFrom` allowed to be swapped\n @param amountToReceive Exact amount of `assetToSwapTo` to receive\n @return the amount swapped"
                  },
                  "id": 639,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_swapTokensForExactTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 462,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 453,
                        "mutability": "mutable",
                        "name": "assetToSwapFrom",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 639,
                        "src": "6904:23:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 452,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6904:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 455,
                        "mutability": "mutable",
                        "name": "assetToSwapTo",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 639,
                        "src": "6933:21:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 454,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6933:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 457,
                        "mutability": "mutable",
                        "name": "maxAmountToSwap",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 639,
                        "src": "6960:23:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 456,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6960:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 459,
                        "mutability": "mutable",
                        "name": "amountToReceive",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 639,
                        "src": "6989:23:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 458,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6989:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 461,
                        "mutability": "mutable",
                        "name": "useEthPath",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 639,
                        "src": "7018:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 460,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7018:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6898:139:1"
                  },
                  "returnParameters": {
                    "id": 465,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 464,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 639,
                        "src": "7056:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 463,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7056:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7055:9:1"
                  },
                  "scope": 1557,
                  "src": "6864:1679:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 652,
                    "nodeType": "Block",
                    "src": "8760:45:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 649,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 642,
                              "src": "8794:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 647,
                              "name": "ORACLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 140,
                              "src": "8773:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                                "typeString": "contract IPriceOracleGetter"
                              }
                            },
                            "id": 648,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAssetPrice",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6917,
                            "src": "8773:20:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8773:27:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 646,
                        "id": 651,
                        "nodeType": "Return",
                        "src": "8766:34:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 640,
                    "nodeType": "StructuredDocumentation",
                    "src": "8547:144:1",
                    "text": " @dev Get the price of the asset from the oracle denominated in eth\n @param asset address\n @return eth price for the asset"
                  },
                  "id": 653,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getPrice",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 643,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 642,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 653,
                        "src": "8713:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 641,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8713:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8712:15:1"
                  },
                  "returnParameters": {
                    "id": 646,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 645,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 653,
                        "src": "8751:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 644,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8751:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8750:9:1"
                  },
                  "scope": 1557,
                  "src": "8694:111:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 667,
                    "nodeType": "Block",
                    "src": "8974:50:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 662,
                                  "name": "asset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 656,
                                  "src": "9002:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 661,
                                "name": "IERC20Detailed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4034,
                                "src": "8987:14:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20Detailed_$4034_$",
                                  "typeString": "type(contract IERC20Detailed)"
                                }
                              },
                              "id": 663,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8987:21:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Detailed_$4034",
                                "typeString": "contract IERC20Detailed"
                              }
                            },
                            "id": 664,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "decimals",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4033,
                            "src": "8987:30:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                              "typeString": "function () view external returns (uint8)"
                            }
                          },
                          "id": 665,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8987:32:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "functionReturnParameters": 660,
                        "id": 666,
                        "nodeType": "Return",
                        "src": "8980:39:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 654,
                    "nodeType": "StructuredDocumentation",
                    "src": "8809:93:1",
                    "text": " @dev Get the decimals of an asset\n @return number of decimals of the asset"
                  },
                  "id": 668,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getDecimals",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 657,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 656,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 668,
                        "src": "8927:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 655,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8927:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8926:15:1"
                  },
                  "returnParameters": {
                    "id": 660,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 659,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 668,
                        "src": "8965:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 658,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8965:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8964:9:1"
                  },
                  "scope": 1557,
                  "src": "8905:119:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 681,
                    "nodeType": "Block",
                    "src": "9217:52:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 678,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 671,
                              "src": "9258:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 676,
                              "name": "LENDING_POOL",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5492,
                              "src": "9230:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 677,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getReserveData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6429,
                            "src": "9230:27:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveData_$20520_memory_ptr_$",
                              "typeString": "function (address) view external returns (struct DataTypes.ReserveData memory)"
                            }
                          },
                          "id": 679,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9230:34:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                            "typeString": "struct DataTypes.ReserveData memory"
                          }
                        },
                        "functionReturnParameters": 675,
                        "id": 680,
                        "nodeType": "Return",
                        "src": "9223:41:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 669,
                    "nodeType": "StructuredDocumentation",
                    "src": "9028:93:1",
                    "text": " @dev Get the aToken associated to the asset\n @return address of the aToken"
                  },
                  "id": 682,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getReserveData",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 672,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 671,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 682,
                        "src": "9149:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 670,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9149:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9148:15:1"
                  },
                  "returnParameters": {
                    "id": 675,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 674,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 682,
                        "src": "9187:28:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                          "typeString": "struct DataTypes.ReserveData"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 673,
                          "name": "DataTypes.ReserveData",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20520,
                          "src": "9187:21:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                            "typeString": "struct DataTypes.ReserveData"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9186:30:1"
                  },
                  "scope": 1557,
                  "src": "9124:145:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 745,
                    "nodeType": "Block",
                    "src": "9749:483:1",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 697,
                              "name": "permitSignature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 693,
                              "src": "9770:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PermitSignature_$3255_memory_ptr",
                                "typeString": "struct IBaseUniswapAdapter.PermitSignature memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_PermitSignature_$3255_memory_ptr",
                                "typeString": "struct IBaseUniswapAdapter.PermitSignature memory"
                              }
                            ],
                            "id": 696,
                            "name": "_usePermit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 777,
                            "src": "9759:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_PermitSignature_$3255_memory_ptr_$returns$_t_bool_$",
                              "typeString": "function (struct IBaseUniswapAdapter.PermitSignature memory) pure returns (bool)"
                            }
                          },
                          "id": 698,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9759:27:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 721,
                        "nodeType": "IfStatement",
                        "src": "9755:278:1",
                        "trueBody": {
                          "id": 720,
                          "nodeType": "Block",
                          "src": "9788:245:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 703,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 689,
                                    "src": "9844:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 706,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "9866:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_BaseUniswapAdapter_$1557",
                                          "typeString": "contract BaseUniswapAdapter"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_BaseUniswapAdapter_$1557",
                                          "typeString": "contract BaseUniswapAdapter"
                                        }
                                      ],
                                      "id": 705,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9858:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 704,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9858:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 707,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9858:13:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 708,
                                      "name": "permitSignature",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 693,
                                      "src": "9881:15:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PermitSignature_$3255_memory_ptr",
                                        "typeString": "struct IBaseUniswapAdapter.PermitSignature memory"
                                      }
                                    },
                                    "id": 709,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3246,
                                    "src": "9881:22:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 710,
                                      "name": "permitSignature",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 693,
                                      "src": "9913:15:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PermitSignature_$3255_memory_ptr",
                                        "typeString": "struct IBaseUniswapAdapter.PermitSignature memory"
                                      }
                                    },
                                    "id": 711,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "deadline",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3248,
                                    "src": "9913:24:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 712,
                                      "name": "permitSignature",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 693,
                                      "src": "9947:15:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PermitSignature_$3255_memory_ptr",
                                        "typeString": "struct IBaseUniswapAdapter.PermitSignature memory"
                                      }
                                    },
                                    "id": 713,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "v",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3250,
                                    "src": "9947:17:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 714,
                                      "name": "permitSignature",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 693,
                                      "src": "9974:15:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PermitSignature_$3255_memory_ptr",
                                        "typeString": "struct IBaseUniswapAdapter.PermitSignature memory"
                                      }
                                    },
                                    "id": 715,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "r",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3252,
                                    "src": "9974:17:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 716,
                                      "name": "permitSignature",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 693,
                                      "src": "10001:15:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PermitSignature_$3255_memory_ptr",
                                        "typeString": "struct IBaseUniswapAdapter.PermitSignature memory"
                                      }
                                    },
                                    "id": 717,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "s",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3254,
                                    "src": "10001:17:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 700,
                                        "name": "reserveAToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 687,
                                        "src": "9813:13:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 699,
                                      "name": "IERC20WithPermit",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5932,
                                      "src": "9796:16:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20WithPermit_$5932_$",
                                        "typeString": "type(contract IERC20WithPermit)"
                                      }
                                    },
                                    "id": 701,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9796:31:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20WithPermit_$5932",
                                      "typeString": "contract IERC20WithPermit"
                                    }
                                  },
                                  "id": 702,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "permit",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5931,
                                  "src": "9796:38:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"
                                  }
                                },
                                "id": 718,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9796:230:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 719,
                              "nodeType": "ExpressionStatement",
                              "src": "9796:230:1"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 726,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 689,
                              "src": "10115:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 729,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "10129:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_BaseUniswapAdapter_$1557",
                                    "typeString": "contract BaseUniswapAdapter"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_BaseUniswapAdapter_$1557",
                                    "typeString": "contract BaseUniswapAdapter"
                                  }
                                ],
                                "id": 728,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10121:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 727,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10121:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 730,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10121:13:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 731,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 691,
                              "src": "10136:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 723,
                                  "name": "reserveAToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 687,
                                  "src": "10083:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 722,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "10076:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 724,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10076:21:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 725,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4205,
                            "src": "10076:38:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                              "typeString": "function (contract IERC20,address,address,uint256)"
                            }
                          },
                          "id": 732,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10076:67:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 733,
                        "nodeType": "ExpressionStatement",
                        "src": "10076:67:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 737,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 685,
                              "src": "10196:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 738,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 691,
                              "src": "10205:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 741,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "10221:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_BaseUniswapAdapter_$1557",
                                    "typeString": "contract BaseUniswapAdapter"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_BaseUniswapAdapter_$1557",
                                    "typeString": "contract BaseUniswapAdapter"
                                  }
                                ],
                                "id": 740,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10213:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 739,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10213:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 742,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10213:13:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 734,
                              "name": "LENDING_POOL",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5492,
                              "src": "10174:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 736,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "withdraw",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6257,
                            "src": "10174:21:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address,uint256,address) external returns (uint256)"
                            }
                          },
                          "id": 743,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10174:53:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 744,
                        "nodeType": "ExpressionStatement",
                        "src": "10174:53:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 683,
                    "nodeType": "StructuredDocumentation",
                    "src": "9273:309:1",
                    "text": " @dev Pull the ATokens from the user\n @param reserve address of the asset\n @param reserveAToken address of the aToken of the reserve\n @param user address\n @param amount of tokens to be transferred to the contract\n @param permitSignature struct containing the permit signature"
                  },
                  "id": 746,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_pullAToken",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 694,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 685,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 746,
                        "src": "9611:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 684,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9611:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 687,
                        "mutability": "mutable",
                        "name": "reserveAToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 746,
                        "src": "9632:21:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 686,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9632:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 689,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 746,
                        "src": "9659:12:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 688,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9659:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 691,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 746,
                        "src": "9677:14:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 690,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9677:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 693,
                        "mutability": "mutable",
                        "name": "permitSignature",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 746,
                        "src": "9697:38:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PermitSignature_$3255_memory_ptr",
                          "typeString": "struct IBaseUniswapAdapter.PermitSignature"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 692,
                          "name": "PermitSignature",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3255,
                          "src": "9697:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PermitSignature_$3255_storage_ptr",
                            "typeString": "struct IBaseUniswapAdapter.PermitSignature"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9605:134:1"
                  },
                  "returnParameters": {
                    "id": 695,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9749:0:1"
                  },
                  "scope": 1557,
                  "src": "9585:647:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 776,
                    "nodeType": "Block",
                    "src": "10611:114:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 774,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "10630:90:1",
                          "subExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 772,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 764,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 756,
                                          "name": "signature",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 749,
                                          "src": "10640:9:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PermitSignature_$3255_memory_ptr",
                                            "typeString": "struct IBaseUniswapAdapter.PermitSignature memory"
                                          }
                                        },
                                        "id": 757,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "deadline",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3248,
                                        "src": "10640:18:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 755,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "10632:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 754,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10632:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 758,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10632:27:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 761,
                                          "name": "signature",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 749,
                                          "src": "10671:9:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PermitSignature_$3255_memory_ptr",
                                            "typeString": "struct IBaseUniswapAdapter.PermitSignature memory"
                                          }
                                        },
                                        "id": 762,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "v",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3250,
                                        "src": "10671:11:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      ],
                                      "id": 760,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "10663:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 759,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10663:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 763,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10663:20:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "10632:51:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 771,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 767,
                                          "name": "signature",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 749,
                                          "src": "10695:9:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PermitSignature_$3255_memory_ptr",
                                            "typeString": "struct IBaseUniswapAdapter.PermitSignature memory"
                                          }
                                        },
                                        "id": 768,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "deadline",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3248,
                                        "src": "10695:18:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 766,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "10687:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 765,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10687:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 769,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10687:27:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 770,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10718:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "10687:32:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "10632:87:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 773,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "10631:89:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 753,
                        "id": 775,
                        "nodeType": "Return",
                        "src": "10617:103:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 747,
                    "nodeType": "StructuredDocumentation",
                    "src": "10236:289:1",
                    "text": " @dev Tells if the permit method should be called by inspecting if there is a valid signature.\n If signature params are set to 0, then permit won't be called.\n @param signature struct containing the permit signature\n @return whether or not permit should be called"
                  },
                  "id": 777,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_usePermit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 750,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 749,
                        "mutability": "mutable",
                        "name": "signature",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 777,
                        "src": "10548:32:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PermitSignature_$3255_memory_ptr",
                          "typeString": "struct IBaseUniswapAdapter.PermitSignature"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 748,
                          "name": "PermitSignature",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3255,
                          "src": "10548:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PermitSignature_$3255_storage_ptr",
                            "typeString": "struct IBaseUniswapAdapter.PermitSignature"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10547:34:1"
                  },
                  "returnParameters": {
                    "id": 753,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 752,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 777,
                        "src": "10605:4:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 751,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "10605:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10604:6:1"
                  },
                  "scope": 1557,
                  "src": "10528:197:1",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 819,
                    "nodeType": "Block",
                    "src": "11094:187:1",
                    "statements": [
                      {
                        "assignments": [
                          790
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 790,
                            "mutability": "mutable",
                            "name": "ethUsdPrice",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 819,
                            "src": "11100:19:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 789,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11100:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 794,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 792,
                              "name": "USD_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 134,
                              "src": "11132:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 791,
                            "name": "_getPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 653,
                            "src": "11122:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 793,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11122:22:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11100:44:1"
                      },
                      {
                        "assignments": [
                          796
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 796,
                            "mutability": "mutable",
                            "name": "reservePrice",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 819,
                            "src": "11150:20:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 795,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11150:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 800,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 798,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 780,
                              "src": "11183:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 797,
                            "name": "_getPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 653,
                            "src": "11173:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 799,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11173:18:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11150:41:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                "typeString": "int_const 1000000000000000000"
                              },
                              "id": 816,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "hexValue": "3130",
                                "id": 814,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11269:2:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10_by_1",
                                  "typeString": "int_const 10"
                                },
                                "value": "10"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "**",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3138",
                                "id": 815,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11273:2:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_18_by_1",
                                  "typeString": "int_const 18"
                                },
                                "value": "18"
                              },
                              "src": "11269:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                "typeString": "int_const 1000000000000000000"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                "typeString": "int_const 1000000000000000000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 811,
                                  "name": "ethUsdPrice",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 790,
                                  "src": "11252:11:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 808,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "3130",
                                        "id": 806,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "11234:2:1",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 807,
                                        "name": "decimals",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 784,
                                        "src": "11238:8:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "11234:12:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 803,
                                          "name": "reservePrice",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 796,
                                          "src": "11216:12:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 801,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 782,
                                          "src": "11205:6:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 802,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4409,
                                        "src": "11205:10:1",
                                        "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": 804,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "11205:24:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 805,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4426,
                                    "src": "11205:28:1",
                                    "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": 809,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11205:42:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 810,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4409,
                                "src": "11205:46:1",
                                "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": 812,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11205:59:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 813,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4426,
                            "src": "11205:63:1",
                            "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": 817,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11205:71:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 788,
                        "id": 818,
                        "nodeType": "Return",
                        "src": "11198:78:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 778,
                    "nodeType": "StructuredDocumentation",
                    "src": "10729:240:1",
                    "text": " @dev Calculates the value denominated in USD\n @param reserve Address of the reserve\n @param amount Amount of the reserve\n @param decimals Decimals of the reserve\n @return whether or not permit should be called"
                  },
                  "id": 820,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_calcUsdValue",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 785,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 780,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 820,
                        "src": "11000:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 779,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11000:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 782,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 820,
                        "src": "11021:14:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 781,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11021:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 784,
                        "mutability": "mutable",
                        "name": "decimals",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 820,
                        "src": "11041:16:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 783,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11041:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10994:67:1"
                  },
                  "returnParameters": {
                    "id": 788,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 787,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 820,
                        "src": "11085:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 786,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11085:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11084:9:1"
                  },
                  "scope": 1557,
                  "src": "10972:309:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1126,
                    "nodeType": "Block",
                    "src": "12037:2350:1",
                    "statements": [
                      {
                        "assignments": [
                          833
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 833,
                            "mutability": "mutable",
                            "name": "finalAmountIn",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1126,
                            "src": "12074:21:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 832,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12074:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 844,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "3130303030",
                                  "id": 841,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12153:5:1",
                                  "subdenomination": null,
                                  "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": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 838,
                                      "name": "FLASHLOAN_PREMIUM_TOTAL",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 130,
                                      "src": "12124:23:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 836,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 827,
                                      "src": "12111:8:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 837,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4409,
                                    "src": "12111:12:1",
                                    "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": 839,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12111:37:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 840,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "div",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4426,
                                "src": "12111:41:1",
                                "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": 842,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12111:48:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 834,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 827,
                              "src": "12098:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 835,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4346,
                            "src": "12098:12:1",
                            "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": 843,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12098:62:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12074:86:1"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 847,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 845,
                            "name": "reserveIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 823,
                            "src": "12171:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 846,
                            "name": "reserveOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 825,
                            "src": "12184:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "12171:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 896,
                        "nodeType": "IfStatement",
                        "src": "12167:435:1",
                        "trueBody": {
                          "id": 895,
                          "nodeType": "Block",
                          "src": "12196:406:1",
                          "statements": [
                            {
                              "assignments": [
                                849
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 849,
                                  "mutability": "mutable",
                                  "name": "reserveDecimals",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 895,
                                  "src": "12204:23:1",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 848,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12204:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 853,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 851,
                                    "name": "reserveIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 823,
                                    "src": "12243:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 850,
                                  "name": "_getDecimals",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 668,
                                  "src": "12230:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view returns (uint256)"
                                  }
                                },
                                "id": 852,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12230:23:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12204:49:1"
                            },
                            {
                              "assignments": [
                                858
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 858,
                                  "mutability": "mutable",
                                  "name": "path",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 895,
                                  "src": "12261:21:1",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 856,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "12261:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 857,
                                    "length": null,
                                    "nodeType": "ArrayTypeName",
                                    "src": "12261:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                      "typeString": "address[]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 864,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 862,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12299:1:1",
                                    "subdenomination": null,
                                    "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": 861,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "NewExpression",
                                  "src": "12285:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                    "typeString": "function (uint256) pure returns (address[] memory)"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 859,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "12289:7:1",
                                      "stateMutability": "nonpayable",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 860,
                                    "length": null,
                                    "nodeType": "ArrayTypeName",
                                    "src": "12289:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                      "typeString": "address[]"
                                    }
                                  }
                                },
                                "id": 863,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12285:16:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12261:40:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 869,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 865,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 858,
                                    "src": "12309:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 867,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 866,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12314:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "12309:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 868,
                                  "name": "reserveIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 823,
                                  "src": "12319:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "12309:19:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 870,
                              "nodeType": "ExpressionStatement",
                              "src": "12309:19:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 872,
                                    "name": "finalAmountIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 833,
                                    "src": "12374:13:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 880,
                                        "name": "amountIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 827,
                                        "src": "12429:8:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                              "typeString": "int_const 1000000000000000000"
                                            },
                                            "id": 877,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "3130",
                                              "id": 875,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "12417:2:1",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_10_by_1",
                                                "typeString": "int_const 10"
                                              },
                                              "value": "10"
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "**",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "3138",
                                              "id": 876,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "12421:2:1",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_18_by_1",
                                                "typeString": "int_const 18"
                                              },
                                              "value": "18"
                                            },
                                            "src": "12417:6:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                              "typeString": "int_const 1000000000000000000"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                              "typeString": "int_const 1000000000000000000"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 873,
                                            "name": "finalAmountIn",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 833,
                                            "src": "12399:13:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 874,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4409,
                                          "src": "12399:17:1",
                                          "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": 878,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12399:25:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 879,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "div",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4426,
                                      "src": "12399:29:1",
                                      "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": 881,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12399:39:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 883,
                                        "name": "reserveIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 823,
                                        "src": "12464:9:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 884,
                                        "name": "amountIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 827,
                                        "src": "12475:8:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 885,
                                        "name": "reserveDecimals",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 849,
                                        "src": "12485:15:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 882,
                                      "name": "_calcUsdValue",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 820,
                                      "src": "12450:13:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (address,uint256,uint256) view returns (uint256)"
                                      }
                                    },
                                    "id": 886,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12450:51:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 888,
                                        "name": "reserveIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 823,
                                        "src": "12527:9:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 889,
                                        "name": "finalAmountIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 833,
                                        "src": "12538:13:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 890,
                                        "name": "reserveDecimals",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 849,
                                        "src": "12553:15:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 887,
                                      "name": "_calcUsdValue",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 820,
                                      "src": "12513:13:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (address,uint256,uint256) view returns (uint256)"
                                      }
                                    },
                                    "id": 891,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12513:56:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 892,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 858,
                                    "src": "12581:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  ],
                                  "id": 871,
                                  "name": "AmountCalc",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3267,
                                  "src": "12352:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_struct$_AmountCalc_$3267_storage_ptr_$",
                                    "typeString": "type(struct IBaseUniswapAdapter.AmountCalc storage pointer)"
                                  }
                                },
                                "id": 893,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "structConstructorCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12352:243:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AmountCalc_$3267_memory_ptr",
                                  "typeString": "struct IBaseUniswapAdapter.AmountCalc memory"
                                }
                              },
                              "functionReturnParameters": 831,
                              "id": 894,
                              "nodeType": "Return",
                              "src": "12337:258:1"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          901
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 901,
                            "mutability": "mutable",
                            "name": "simplePath",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1126,
                            "src": "12608:27:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 899,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12608:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 900,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "12608:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 907,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 905,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12652:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              }
                            ],
                            "id": 904,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "12638:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 902,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12642:7:1",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 903,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "12642:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 906,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12638:16:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12608:46:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 912,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 908,
                              "name": "simplePath",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 901,
                              "src": "12660:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 910,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 909,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12671:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "12660:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 911,
                            "name": "reserveIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 823,
                            "src": "12676:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "12660:25:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 913,
                        "nodeType": "ExpressionStatement",
                        "src": "12660:25:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 918,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 914,
                              "name": "simplePath",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 901,
                              "src": "12691:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 916,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 915,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12702:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "12691:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 917,
                            "name": "reserveOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 825,
                            "src": "12707:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "12691:26:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 919,
                        "nodeType": "ExpressionStatement",
                        "src": "12691:26:1"
                      },
                      {
                        "assignments": [
                          924
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 924,
                            "mutability": "mutable",
                            "name": "amountsWithoutWeth",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1126,
                            "src": "12724:35:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 922,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "12724:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 923,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "12724:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 925,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12724:35:1"
                      },
                      {
                        "assignments": [
                          930
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 930,
                            "mutability": "mutable",
                            "name": "amountsWithWeth",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1126,
                            "src": "12765:32:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 928,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "12765:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 929,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "12765:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 931,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12765:32:1"
                      },
                      {
                        "assignments": [
                          936
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 936,
                            "mutability": "mutable",
                            "name": "pathWithWeth",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1126,
                            "src": "12804:29:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 934,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12804:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 935,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "12804:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 942,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "33",
                              "id": 940,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12850:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_3_by_1",
                                "typeString": "int_const 3"
                              },
                              "value": "3"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_3_by_1",
                                "typeString": "int_const 3"
                              }
                            ],
                            "id": 939,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "12836:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 937,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12840:7:1",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 938,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "12840:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 941,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12836:16:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12804:48:1"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 949,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 945,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 943,
                              "name": "reserveIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 823,
                              "src": "12862:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 944,
                              "name": "WETH_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 137,
                              "src": "12875:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "12862:25:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 948,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 946,
                              "name": "reserveOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 825,
                              "src": "12891:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 947,
                              "name": "WETH_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 137,
                              "src": "12905:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "12891:26:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "12862:55:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 1003,
                          "nodeType": "Block",
                          "src": "13282:49:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1001,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 995,
                                  "name": "amountsWithWeth",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 930,
                                  "src": "13290:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "33",
                                      "id": 999,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13322:1:1",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      },
                                      "value": "3"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      }
                                    ],
                                    "id": 998,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "NewExpression",
                                    "src": "13308:13:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                      "typeString": "function (uint256) pure returns (uint256[] memory)"
                                    },
                                    "typeName": {
                                      "baseType": {
                                        "id": 996,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13312:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 997,
                                      "length": null,
                                      "nodeType": "ArrayTypeName",
                                      "src": "13312:9:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                        "typeString": "uint256[]"
                                      }
                                    }
                                  },
                                  "id": 1000,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13308:16:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "src": "13290:34:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 1002,
                              "nodeType": "ExpressionStatement",
                              "src": "13290:34:1"
                            }
                          ]
                        },
                        "id": 1004,
                        "nodeType": "IfStatement",
                        "src": "12858:473:1",
                        "trueBody": {
                          "id": 994,
                          "nodeType": "Block",
                          "src": "12919:357:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 954,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 950,
                                    "name": "pathWithWeth",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 936,
                                    "src": "12927:12:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 952,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 951,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12940:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "12927:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 953,
                                  "name": "reserveIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 823,
                                  "src": "12945:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "12927:27:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 955,
                              "nodeType": "ExpressionStatement",
                              "src": "12927:27:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 960,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 956,
                                    "name": "pathWithWeth",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 936,
                                    "src": "12962:12:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 958,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 957,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12975:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "12962:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 959,
                                  "name": "WETH_ADDRESS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 137,
                                  "src": "12980:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "12962:30:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 961,
                              "nodeType": "ExpressionStatement",
                              "src": "12962:30:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 966,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 962,
                                    "name": "pathWithWeth",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 936,
                                    "src": "13000:12:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 964,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 963,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13013:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "13000:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 965,
                                  "name": "reserveOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 825,
                                  "src": "13018:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "13000:28:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 967,
                              "nodeType": "ExpressionStatement",
                              "src": "13000:28:1"
                            },
                            {
                              "clauses": [
                                {
                                  "block": {
                                    "id": 981,
                                    "nodeType": "Block",
                                    "src": "13158:52:1",
                                    "statements": [
                                      {
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 979,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "argumentTypes": null,
                                            "id": 977,
                                            "name": "amountsWithWeth",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 930,
                                            "src": "13168:15:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                              "typeString": "uint256[] memory"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "argumentTypes": null,
                                            "id": 978,
                                            "name": "resultsWithWeth",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 975,
                                            "src": "13186:15:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                              "typeString": "uint256[] memory"
                                            }
                                          },
                                          "src": "13168:33:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        "id": 980,
                                        "nodeType": "ExpressionStatement",
                                        "src": "13168:33:1"
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 982,
                                  "nodeType": "TryCatchClause",
                                  "parameters": {
                                    "id": 976,
                                    "nodeType": "ParameterList",
                                    "parameters": [
                                      {
                                        "constant": false,
                                        "id": 975,
                                        "mutability": "mutable",
                                        "name": "resultsWithWeth",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 982,
                                        "src": "13117:32:1",
                                        "stateVariable": false,
                                        "storageLocation": "memory",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[]"
                                        },
                                        "typeName": {
                                          "baseType": {
                                            "id": 973,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "13117:7:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 974,
                                          "length": null,
                                          "nodeType": "ArrayTypeName",
                                          "src": "13117:9:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                            "typeString": "uint256[]"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "src": "13107:50:1"
                                  },
                                  "src": "13099:111:1"
                                },
                                {
                                  "block": {
                                    "id": 991,
                                    "nodeType": "Block",
                                    "src": "13217:53:1",
                                    "statements": [
                                      {
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 989,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "argumentTypes": null,
                                            "id": 983,
                                            "name": "amountsWithWeth",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 930,
                                            "src": "13227:15:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                              "typeString": "uint256[] memory"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "hexValue": "33",
                                                "id": 987,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "13259:1:1",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_3_by_1",
                                                  "typeString": "int_const 3"
                                                },
                                                "value": "3"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_rational_3_by_1",
                                                  "typeString": "int_const 3"
                                                }
                                              ],
                                              "id": 986,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "NewExpression",
                                              "src": "13245:13:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                                "typeString": "function (uint256) pure returns (uint256[] memory)"
                                              },
                                              "typeName": {
                                                "baseType": {
                                                  "id": 984,
                                                  "name": "uint256",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "13249:7:1",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 985,
                                                "length": null,
                                                "nodeType": "ArrayTypeName",
                                                "src": "13249:9:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                                  "typeString": "uint256[]"
                                                }
                                              }
                                            },
                                            "id": 988,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "13245:16:1",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                              "typeString": "uint256[] memory"
                                            }
                                          },
                                          "src": "13227:34:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        "id": 990,
                                        "nodeType": "ExpressionStatement",
                                        "src": "13227:34:1"
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 992,
                                  "nodeType": "TryCatchClause",
                                  "parameters": null,
                                  "src": "13211:59:1"
                                }
                              ],
                              "externalCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 970,
                                    "name": "finalAmountIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 833,
                                    "src": "13070:13:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 971,
                                    "name": "pathWithWeth",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 936,
                                    "src": "13085:12:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 968,
                                    "name": "UNISWAP_ROUTER",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 143,
                                    "src": "13041:14:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                                      "typeString": "contract IUniswapV2Router02"
                                    }
                                  },
                                  "id": 969,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getAmountsOut",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7428,
                                  "src": "13041:28:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "function (uint256,address[] memory) view external returns (uint256[] memory)"
                                  }
                                },
                                "id": 972,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13041:57:1",
                                "tryCall": true,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 993,
                              "nodeType": "TryStatement",
                              "src": "13037:233:1"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          1006
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1006,
                            "mutability": "mutable",
                            "name": "bestAmountOut",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1126,
                            "src": "13337:21:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1005,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13337:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1007,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13337:21:1"
                      },
                      {
                        "clauses": [
                          {
                            "block": {
                              "id": 1039,
                              "nodeType": "Block",
                              "src": "13477:179:1",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1019,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 1017,
                                      "name": "amountsWithoutWeth",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 924,
                                      "src": "13485:18:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 1018,
                                      "name": "resultAmounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1015,
                                      "src": "13506:13:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "src": "13485:34:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 1020,
                                  "nodeType": "ExpressionStatement",
                                  "src": "13485:34:1"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1037,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 1021,
                                      "name": "bestAmountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1006,
                                      "src": "13528:13:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "condition": {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 1028,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 1022,
                                                "name": "amountsWithWeth",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 930,
                                                "src": "13545:15:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                  "typeString": "uint256[] memory"
                                                }
                                              },
                                              "id": 1024,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "32",
                                                "id": 1023,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "13561:1:1",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_2_by_1",
                                                  "typeString": "int_const 2"
                                                },
                                                "value": "2"
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "13545:18:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 1025,
                                                "name": "amountsWithoutWeth",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 924,
                                                "src": "13566:18:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                  "typeString": "uint256[] memory"
                                                }
                                              },
                                              "id": 1027,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "31",
                                                "id": 1026,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "13585:1:1",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "13566:21:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "13545:42:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          }
                                        ],
                                        "id": 1029,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "13544:44:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 1033,
                                          "name": "amountsWithoutWeth",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 924,
                                          "src": "13628:18:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        "id": 1035,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 1034,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "13647:1:1",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "13628:21:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 1036,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "Conditional",
                                      "src": "13544:105:1",
                                      "trueExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 1030,
                                          "name": "amountsWithWeth",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 930,
                                          "src": "13599:15:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        "id": 1032,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "32",
                                          "id": 1031,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "13615:1:1",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "13599:18:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "13528:121:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1038,
                                  "nodeType": "ExpressionStatement",
                                  "src": "13528:121:1"
                                }
                              ]
                            },
                            "errorName": "",
                            "id": 1040,
                            "nodeType": "TryCatchClause",
                            "parameters": {
                              "id": 1016,
                              "nodeType": "ParameterList",
                              "parameters": [
                                {
                                  "constant": false,
                                  "id": 1015,
                                  "mutability": "mutable",
                                  "name": "resultAmounts",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 1040,
                                  "src": "13440:30:1",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 1013,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13440:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1014,
                                    "length": null,
                                    "nodeType": "ArrayTypeName",
                                    "src": "13440:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                      "typeString": "uint256[]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "src": "13432:44:1"
                            },
                            "src": "13424:232:1"
                          },
                          {
                            "block": {
                              "id": 1055,
                              "nodeType": "Block",
                              "src": "13663:94:1",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1047,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 1041,
                                      "name": "amountsWithoutWeth",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 924,
                                      "src": "13671:18:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "32",
                                          "id": 1045,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "13706:1:1",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          }
                                        ],
                                        "id": 1044,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "NewExpression",
                                        "src": "13692:13:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                          "typeString": "function (uint256) pure returns (uint256[] memory)"
                                        },
                                        "typeName": {
                                          "baseType": {
                                            "id": 1042,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "13696:7:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 1043,
                                          "length": null,
                                          "nodeType": "ArrayTypeName",
                                          "src": "13696:9:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                            "typeString": "uint256[]"
                                          }
                                        }
                                      },
                                      "id": 1046,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13692:16:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "src": "13671:37:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 1048,
                                  "nodeType": "ExpressionStatement",
                                  "src": "13671:37:1"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1053,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 1049,
                                      "name": "bestAmountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1006,
                                      "src": "13716:13:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1050,
                                        "name": "amountsWithWeth",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 930,
                                        "src": "13732:15:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 1052,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "32",
                                        "id": 1051,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13748:1:1",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "13732:18:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "13716:34:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1054,
                                  "nodeType": "ExpressionStatement",
                                  "src": "13716:34:1"
                                }
                              ]
                            },
                            "errorName": "",
                            "id": 1056,
                            "nodeType": "TryCatchClause",
                            "parameters": null,
                            "src": "13657:100:1"
                          }
                        ],
                        "externalCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1010,
                              "name": "finalAmountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 833,
                              "src": "13397:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1011,
                              "name": "simplePath",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 901,
                              "src": "13412:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1008,
                              "name": "UNISWAP_ROUTER",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 143,
                              "src": "13368:14:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                                "typeString": "contract IUniswapV2Router02"
                              }
                            },
                            "id": 1009,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsOut",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7428,
                            "src": "13368:28:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256,address[] memory) view external returns (uint256[] memory)"
                            }
                          },
                          "id": 1012,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13368:55:1",
                          "tryCall": true,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "id": 1057,
                        "nodeType": "TryStatement",
                        "src": "13364:393:1"
                      },
                      {
                        "assignments": [
                          1059
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1059,
                            "mutability": "mutable",
                            "name": "reserveInDecimals",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1126,
                            "src": "13763:25:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1058,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13763:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1063,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1061,
                              "name": "reserveIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 823,
                              "src": "13804:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1060,
                            "name": "_getDecimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 668,
                            "src": "13791:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 1062,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13791:23:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13763:51:1"
                      },
                      {
                        "assignments": [
                          1065
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1065,
                            "mutability": "mutable",
                            "name": "reserveOutDecimals",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1126,
                            "src": "13820:26:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1064,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13820:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1069,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1067,
                              "name": "reserveOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 825,
                              "src": "13862:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1066,
                            "name": "_getDecimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 668,
                            "src": "13849:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 1068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13849:24:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13820:53:1"
                      },
                      {
                        "assignments": [
                          1071
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1071,
                            "mutability": "mutable",
                            "name": "outPerInPrice",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1126,
                            "src": "13880:21:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1070,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13880:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1091,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1088,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3130",
                                    "id": 1086,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13995:2:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10_by_1",
                                      "typeString": "int_const 10"
                                    },
                                    "value": "10"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "**",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 1087,
                                    "name": "reserveInDecimals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1059,
                                    "src": "13999:17:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "13995:21:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1084,
                                  "name": "bestAmountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1006,
                                  "src": "13977:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1085,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4409,
                                "src": "13977:17:1",
                                "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": 1089,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13977:40:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1081,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3130",
                                    "id": 1079,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13940:2:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10_by_1",
                                      "typeString": "int_const 10"
                                    },
                                    "value": "10"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "**",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 1080,
                                    "name": "reserveOutDecimals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1065,
                                    "src": "13944:18:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "13940:22:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                        "typeString": "int_const 1000000000000000000"
                                      },
                                      "id": 1076,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "3130",
                                        "id": 1074,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13928:2:1",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "3138",
                                        "id": 1075,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13932:2:1",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_18_by_1",
                                          "typeString": "int_const 18"
                                        },
                                        "value": "18"
                                      },
                                      "src": "13928:6:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                        "typeString": "int_const 1000000000000000000"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                        "typeString": "int_const 1000000000000000000"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1072,
                                      "name": "finalAmountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 833,
                                      "src": "13910:13:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1073,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4409,
                                    "src": "13910:17:1",
                                    "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": 1077,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13910:25:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1078,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4409,
                                "src": "13910:29:1",
                                "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": 1082,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13910:53:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1083,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4426,
                            "src": "13910:57:1",
                            "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": 1090,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13910:115:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13880:145:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1093,
                              "name": "bestAmountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1006,
                              "src": "14065:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1094,
                              "name": "outPerInPrice",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1071,
                              "src": "14088:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1096,
                                  "name": "reserveIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 823,
                                  "src": "14125:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1097,
                                  "name": "amountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 827,
                                  "src": "14136:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1098,
                                  "name": "reserveInDecimals",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1059,
                                  "src": "14146:17:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1095,
                                "name": "_calcUsdValue",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 820,
                                "src": "14111:13:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (address,uint256,uint256) view returns (uint256)"
                                }
                              },
                              "id": 1099,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14111:53:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1101,
                                  "name": "reserveOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 825,
                                  "src": "14188:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1102,
                                  "name": "bestAmountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1006,
                                  "src": "14200:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1103,
                                  "name": "reserveOutDecimals",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1065,
                                  "src": "14215:18:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1100,
                                "name": "_calcUsdValue",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 820,
                                "src": "14174:13:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (address,uint256,uint256) view returns (uint256)"
                                }
                              },
                              "id": 1104,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14174:60:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "condition": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1107,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 1105,
                                      "name": "bestAmountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1006,
                                      "src": "14245:13:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 1106,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14262:1:1",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "14245:18:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 1108,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "14244:20:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "argumentTypes": null,
                                "condition": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 1118,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 1114,
                                        "name": "bestAmountOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1006,
                                        "src": "14287:13:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 1115,
                                          "name": "amountsWithoutWeth",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 924,
                                          "src": "14304:18:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        "id": 1117,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 1116,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "14323:1:1",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "14304:21:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "14287:38:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "id": 1119,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "14286:40:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "argumentTypes": null,
                                  "id": 1121,
                                  "name": "pathWithWeth",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 936,
                                  "src": "14362:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 1122,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "14286:88:1",
                                "trueExpression": {
                                  "argumentTypes": null,
                                  "id": 1120,
                                  "name": "simplePath",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 901,
                                  "src": "14339:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 1123,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "14244:130:1",
                              "trueExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 1112,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14281:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    }
                                  ],
                                  "id": 1111,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "NewExpression",
                                  "src": "14267:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                    "typeString": "function (uint256) pure returns (address[] memory)"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 1109,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "14271:7:1",
                                      "stateMutability": "nonpayable",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 1110,
                                    "length": null,
                                    "nodeType": "ArrayTypeName",
                                    "src": "14271:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                      "typeString": "address[]"
                                    }
                                  }
                                },
                                "id": 1113,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14267:16:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            ],
                            "id": 1092,
                            "name": "AmountCalc",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3267,
                            "src": "14045:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_struct$_AmountCalc_$3267_storage_ptr_$",
                              "typeString": "type(struct IBaseUniswapAdapter.AmountCalc storage pointer)"
                            }
                          },
                          "id": 1124,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "structConstructorCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14045:337:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AmountCalc_$3267_memory_ptr",
                            "typeString": "struct IBaseUniswapAdapter.AmountCalc memory"
                          }
                        },
                        "functionReturnParameters": 831,
                        "id": 1125,
                        "nodeType": "Return",
                        "src": "14032:350:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 821,
                    "nodeType": "StructuredDocumentation",
                    "src": "11285:606:1",
                    "text": " @dev Given an input asset amount, returns the maximum output amount of the other asset\n @param reserveIn Address of the asset to be swap from\n @param reserveOut Address of the asset to be swap to\n @param amountIn Amount of reserveIn\n @return Struct containing the following information:\n   uint256 Amount out of the reserveOut\n   uint256 The price of out amount denominated in the reserveIn currency (18 decimals)\n   uint256 In amount of reserveIn value denominated in USD (8 decimals)\n   uint256 Out amount of reserveOut value denominated in USD (8 decimals)"
                  },
                  "id": 1127,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getAmountsOutData",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 828,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 823,
                        "mutability": "mutable",
                        "name": "reserveIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1127,
                        "src": "11927:17:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 822,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11927:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 825,
                        "mutability": "mutable",
                        "name": "reserveOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1127,
                        "src": "11950:18:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 824,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11950:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 827,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1127,
                        "src": "11974:16:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 826,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11974:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11921:73:1"
                  },
                  "returnParameters": {
                    "id": 831,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 830,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1127,
                        "src": "12018:17:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AmountCalc_$3267_memory_ptr",
                          "typeString": "struct IBaseUniswapAdapter.AmountCalc"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 829,
                          "name": "AmountCalc",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3267,
                          "src": "12018:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AmountCalc_$3267_storage_ptr",
                            "typeString": "struct IBaseUniswapAdapter.AmountCalc"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12017:19:1"
                  },
                  "scope": 1557,
                  "src": "11894:2493:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1285,
                    "nodeType": "Block",
                    "src": "15146:1290:1",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1141,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1139,
                            "name": "reserveIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1130,
                            "src": "15156:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1140,
                            "name": "reserveOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1132,
                            "src": "15169:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "15156:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1203,
                        "nodeType": "IfStatement",
                        "src": "15152:541:1",
                        "trueBody": {
                          "id": 1202,
                          "nodeType": "Block",
                          "src": "15181:512:1",
                          "statements": [
                            {
                              "assignments": [
                                1143
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1143,
                                  "mutability": "mutable",
                                  "name": "amountIn",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 1202,
                                  "src": "15217:16:1",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1142,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15217:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1154,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "3130303030",
                                        "id": 1151,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "15293:5:1",
                                        "subdenomination": null,
                                        "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": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 1148,
                                            "name": "FLASHLOAN_PREMIUM_TOTAL",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 130,
                                            "src": "15264:23:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1146,
                                            "name": "amountOut",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1134,
                                            "src": "15250:9:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 1147,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4409,
                                          "src": "15250:13:1",
                                          "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": 1149,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "15250:38:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 1150,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "div",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4426,
                                      "src": "15250:42:1",
                                      "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": 1152,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15250:49:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1144,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1134,
                                    "src": "15236:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1145,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4329,
                                  "src": "15236:13:1",
                                  "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": 1153,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15236:64:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15217:83:1"
                            },
                            {
                              "assignments": [
                                1156
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1156,
                                  "mutability": "mutable",
                                  "name": "reserveDecimals",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 1202,
                                  "src": "15308:23:1",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1155,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15308:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1160,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1158,
                                    "name": "reserveIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1130,
                                    "src": "15347:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1157,
                                  "name": "_getDecimals",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 668,
                                  "src": "15334:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view returns (uint256)"
                                  }
                                },
                                "id": 1159,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15334:23:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15308:49:1"
                            },
                            {
                              "assignments": [
                                1165
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1165,
                                  "mutability": "mutable",
                                  "name": "path",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 1202,
                                  "src": "15365:21:1",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 1163,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "15365:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 1164,
                                    "length": null,
                                    "nodeType": "ArrayTypeName",
                                    "src": "15365:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                      "typeString": "address[]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1171,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 1169,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15403:1:1",
                                    "subdenomination": null,
                                    "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": 1168,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "NewExpression",
                                  "src": "15389:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                    "typeString": "function (uint256) pure returns (address[] memory)"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 1166,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "15393:7:1",
                                      "stateMutability": "nonpayable",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 1167,
                                    "length": null,
                                    "nodeType": "ArrayTypeName",
                                    "src": "15393:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                      "typeString": "address[]"
                                    }
                                  }
                                },
                                "id": 1170,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15389:16:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15365:40:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1176,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1172,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1165,
                                    "src": "15413:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 1174,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1173,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15418:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "15413:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 1175,
                                  "name": "reserveIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1130,
                                  "src": "15423:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "15413:19:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1177,
                              "nodeType": "ExpressionStatement",
                              "src": "15413:19:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1179,
                                    "name": "amountIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1143,
                                    "src": "15478:8:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1187,
                                        "name": "amountIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1143,
                                        "src": "15524:8:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                              "typeString": "int_const 1000000000000000000"
                                            },
                                            "id": 1184,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "3130",
                                              "id": 1182,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "15512:2:1",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_10_by_1",
                                                "typeString": "int_const 10"
                                              },
                                              "value": "10"
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "**",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "3138",
                                              "id": 1183,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "15516:2:1",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_18_by_1",
                                                "typeString": "int_const 18"
                                              },
                                              "value": "18"
                                            },
                                            "src": "15512:6:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                              "typeString": "int_const 1000000000000000000"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                              "typeString": "int_const 1000000000000000000"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1180,
                                            "name": "amountOut",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1134,
                                            "src": "15498:9:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 1181,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4409,
                                          "src": "15498:13:1",
                                          "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": 1185,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "15498:21:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 1186,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "div",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4426,
                                      "src": "15498:25:1",
                                      "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": 1188,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15498:35:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1190,
                                        "name": "reserveIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1130,
                                        "src": "15559:9:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1191,
                                        "name": "amountIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1143,
                                        "src": "15570:8:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1192,
                                        "name": "reserveDecimals",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1156,
                                        "src": "15580:15:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 1189,
                                      "name": "_calcUsdValue",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 820,
                                      "src": "15545:13:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (address,uint256,uint256) view returns (uint256)"
                                      }
                                    },
                                    "id": 1193,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15545:51:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1195,
                                        "name": "reserveIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1130,
                                        "src": "15622:9:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1196,
                                        "name": "amountOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1134,
                                        "src": "15633:9:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1197,
                                        "name": "reserveDecimals",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1156,
                                        "src": "15644:15:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 1194,
                                      "name": "_calcUsdValue",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 820,
                                      "src": "15608:13:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (address,uint256,uint256) view returns (uint256)"
                                      }
                                    },
                                    "id": 1198,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15608:52:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1199,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1165,
                                    "src": "15672:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  ],
                                  "id": 1178,
                                  "name": "AmountCalc",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3267,
                                  "src": "15456:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_struct$_AmountCalc_$3267_storage_ptr_$",
                                    "typeString": "type(struct IBaseUniswapAdapter.AmountCalc storage pointer)"
                                  }
                                },
                                "id": 1200,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "structConstructorCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15456:230:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AmountCalc_$3267_memory_ptr",
                                  "typeString": "struct IBaseUniswapAdapter.AmountCalc memory"
                                }
                              },
                              "functionReturnParameters": 1138,
                              "id": 1201,
                              "nodeType": "Return",
                              "src": "15441:245:1"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          1208,
                          1211
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1208,
                            "mutability": "mutable",
                            "name": "amounts",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1285,
                            "src": "15700:24:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1206,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "15700:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1207,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "15700:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 1211,
                            "mutability": "mutable",
                            "name": "path",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1285,
                            "src": "15726:21:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1209,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "15726:7:1",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1210,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "15726:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1217,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1213,
                              "name": "reserveIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1130,
                              "src": "15778:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1214,
                              "name": "reserveOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1132,
                              "src": "15789:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1215,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1134,
                              "src": "15801:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1212,
                            "name": "_getAmountsInAndPath",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1455,
                            "src": "15757:20:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (address,address,uint256) view returns (uint256[] memory,address[] memory)"
                            }
                          },
                          "id": 1216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15757:54:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$",
                            "typeString": "tuple(uint256[] memory,address[] memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15699:112:1"
                      },
                      {
                        "assignments": [
                          1219
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1219,
                            "mutability": "mutable",
                            "name": "finalAmountIn",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1285,
                            "src": "15844:21:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1218,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15844:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1234,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "3130303030",
                                  "id": 1231,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15927:5:1",
                                  "subdenomination": null,
                                  "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": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1228,
                                      "name": "FLASHLOAN_PREMIUM_TOTAL",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 130,
                                      "src": "15898:23:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1224,
                                        "name": "amounts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1208,
                                        "src": "15883:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 1226,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 1225,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "15891:1:1",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "15883:10:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1227,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4409,
                                    "src": "15883:14:1",
                                    "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": 1229,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15883:39:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1230,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "div",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4426,
                                "src": "15883:43:1",
                                "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": 1232,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15883:50:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1220,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1208,
                                "src": "15868:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 1222,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1221,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15876:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "15868:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1223,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4329,
                            "src": "15868:14:1",
                            "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": 1233,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15868:66:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15844:90:1"
                      },
                      {
                        "assignments": [
                          1236
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1236,
                            "mutability": "mutable",
                            "name": "reserveInDecimals",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1285,
                            "src": "15941:25:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1235,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15941:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1240,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1238,
                              "name": "reserveIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1130,
                              "src": "15982:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1237,
                            "name": "_getDecimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 668,
                            "src": "15969:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 1239,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15969:23:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15941:51:1"
                      },
                      {
                        "assignments": [
                          1242
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1242,
                            "mutability": "mutable",
                            "name": "reserveOutDecimals",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1285,
                            "src": "15998:26:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1241,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15998:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1246,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1244,
                              "name": "reserveOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1132,
                              "src": "16040:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1243,
                            "name": "_getDecimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 668,
                            "src": "16027:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 1245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16027:24:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15998:53:1"
                      },
                      {
                        "assignments": [
                          1248
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1248,
                            "mutability": "mutable",
                            "name": "inPerOutPrice",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1285,
                            "src": "16058:21:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1247,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16058:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1268,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1265,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3130",
                                    "id": 1263,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16168:2:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10_by_1",
                                      "typeString": "int_const 10"
                                    },
                                    "value": "10"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "**",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 1264,
                                    "name": "reserveOutDecimals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1242,
                                    "src": "16172:18:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "16168:22:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1261,
                                  "name": "finalAmountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1219,
                                  "src": "16150:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1262,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4409,
                                "src": "16150:17:1",
                                "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": 1266,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16150:41:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1258,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3130",
                                    "id": 1256,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16114:2:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10_by_1",
                                      "typeString": "int_const 10"
                                    },
                                    "value": "10"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "**",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 1257,
                                    "name": "reserveInDecimals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1236,
                                    "src": "16118:17:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "16114:21:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                        "typeString": "int_const 1000000000000000000"
                                      },
                                      "id": 1253,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "3130",
                                        "id": 1251,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "16102:2:1",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "3138",
                                        "id": 1252,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "16106:2:1",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_18_by_1",
                                          "typeString": "int_const 18"
                                        },
                                        "value": "18"
                                      },
                                      "src": "16102:6:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                        "typeString": "int_const 1000000000000000000"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                        "typeString": "int_const 1000000000000000000"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1249,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1134,
                                      "src": "16088:9:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1250,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4409,
                                    "src": "16088:13:1",
                                    "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": 1254,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "16088:21:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1255,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4409,
                                "src": "16088:25:1",
                                "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": 1259,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16088:48:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1260,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4426,
                            "src": "16088:52:1",
                            "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": 1267,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16088:111:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16058:141:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1270,
                              "name": "finalAmountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1219,
                              "src": "16239:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1271,
                              "name": "inPerOutPrice",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1248,
                              "src": "16262:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1273,
                                  "name": "reserveIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1130,
                                  "src": "16299:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1274,
                                  "name": "finalAmountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1219,
                                  "src": "16310:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1275,
                                  "name": "reserveInDecimals",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1236,
                                  "src": "16325:17:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1272,
                                "name": "_calcUsdValue",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 820,
                                "src": "16285:13:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (address,uint256,uint256) view returns (uint256)"
                                }
                              },
                              "id": 1276,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16285:58:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1278,
                                  "name": "reserveOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1132,
                                  "src": "16367:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1279,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1134,
                                  "src": "16379:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1280,
                                  "name": "reserveOutDecimals",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1242,
                                  "src": "16390:18:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1277,
                                "name": "_calcUsdValue",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 820,
                                "src": "16353:13:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (address,uint256,uint256) view returns (uint256)"
                                }
                              },
                              "id": 1281,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16353:56:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1282,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1211,
                              "src": "16419:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            ],
                            "id": 1269,
                            "name": "AmountCalc",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3267,
                            "src": "16219:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_struct$_AmountCalc_$3267_storage_ptr_$",
                              "typeString": "type(struct IBaseUniswapAdapter.AmountCalc storage pointer)"
                            }
                          },
                          "id": 1283,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "structConstructorCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16219:212:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AmountCalc_$3267_memory_ptr",
                            "typeString": "struct IBaseUniswapAdapter.AmountCalc memory"
                          }
                        },
                        "functionReturnParameters": 1138,
                        "id": 1284,
                        "nodeType": "Return",
                        "src": "16206:225:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1128,
                    "nodeType": "StructuredDocumentation",
                    "src": "14391:609:1",
                    "text": " @dev Returns the minimum input asset amount required to buy the given output asset amount\n @param reserveIn Address of the asset to be swap from\n @param reserveOut Address of the asset to be swap to\n @param amountOut Amount of reserveOut\n @return Struct containing the following information:\n   uint256 Amount in of the reserveIn\n   uint256 The price of in amount denominated in the reserveOut currency (18 decimals)\n   uint256 In amount of reserveIn value denominated in USD (8 decimals)\n   uint256 Out amount of reserveOut value denominated in USD (8 decimals)"
                  },
                  "id": 1286,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getAmountsInData",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1135,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1130,
                        "mutability": "mutable",
                        "name": "reserveIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1286,
                        "src": "15035:17:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1129,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15035:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1132,
                        "mutability": "mutable",
                        "name": "reserveOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1286,
                        "src": "15058:18:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1131,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15058:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1134,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1286,
                        "src": "15082:17:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1133,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15082:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15029:74:1"
                  },
                  "returnParameters": {
                    "id": 1138,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1137,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1286,
                        "src": "15127:17:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AmountCalc_$3267_memory_ptr",
                          "typeString": "struct IBaseUniswapAdapter.AmountCalc"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 1136,
                          "name": "AmountCalc",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3267,
                          "src": "15127:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AmountCalc_$3267_storage_ptr",
                            "typeString": "struct IBaseUniswapAdapter.AmountCalc"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15126:19:1"
                  },
                  "scope": 1557,
                  "src": "15003:1433:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1454,
                    "nodeType": "Block",
                    "src": "16951:1135:1",
                    "statements": [
                      {
                        "assignments": [
                          1306
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1306,
                            "mutability": "mutable",
                            "name": "simplePath",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1454,
                            "src": "16957:27:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1304,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "16957:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1305,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "16957:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1312,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 1310,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17001:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              }
                            ],
                            "id": 1309,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "16987:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1307,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "16991:7:1",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1308,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "16991:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 1311,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16987:16:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16957:46:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1317,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1313,
                              "name": "simplePath",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1306,
                              "src": "17009:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 1315,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1314,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17020:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "17009:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1316,
                            "name": "reserveIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1289,
                            "src": "17025:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "17009:25:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1318,
                        "nodeType": "ExpressionStatement",
                        "src": "17009:25:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1323,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1319,
                              "name": "simplePath",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1306,
                              "src": "17040:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 1321,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 1320,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17051:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "17040:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1322,
                            "name": "reserveOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1291,
                            "src": "17056:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "17040:26:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1324,
                        "nodeType": "ExpressionStatement",
                        "src": "17040:26:1"
                      },
                      {
                        "assignments": [
                          1329
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1329,
                            "mutability": "mutable",
                            "name": "amountsWithoutWeth",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1454,
                            "src": "17073:35:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1327,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "17073:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1328,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "17073:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1330,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17073:35:1"
                      },
                      {
                        "assignments": [
                          1335
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1335,
                            "mutability": "mutable",
                            "name": "amountsWithWeth",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1454,
                            "src": "17114:32:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1333,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "17114:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1334,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "17114:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1336,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17114:32:1"
                      },
                      {
                        "assignments": [
                          1341
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1341,
                            "mutability": "mutable",
                            "name": "pathWithWeth",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1454,
                            "src": "17152:29:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1339,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "17152:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1340,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "17152:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1347,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "33",
                              "id": 1345,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17198:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_3_by_1",
                                "typeString": "int_const 3"
                              },
                              "value": "3"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_3_by_1",
                                "typeString": "int_const 3"
                              }
                            ],
                            "id": 1344,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "17184:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1342,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "17188:7:1",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1343,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "17188:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 1346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17184:16:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17152:48:1"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1354,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 1350,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1348,
                              "name": "reserveIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1289,
                              "src": "17211:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1349,
                              "name": "WETH_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 137,
                              "src": "17224:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "17211:25:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 1353,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1351,
                              "name": "reserveOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1291,
                              "src": "17240:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1352,
                              "name": "WETH_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 137,
                              "src": "17254:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "17240:26:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "17211:55:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 1408,
                          "nodeType": "Block",
                          "src": "17626:49:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1406,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1400,
                                  "name": "amountsWithWeth",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1335,
                                  "src": "17634:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "33",
                                      "id": 1404,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17666:1:1",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      },
                                      "value": "3"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      }
                                    ],
                                    "id": 1403,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "NewExpression",
                                    "src": "17652:13:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                      "typeString": "function (uint256) pure returns (uint256[] memory)"
                                    },
                                    "typeName": {
                                      "baseType": {
                                        "id": 1401,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "17656:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 1402,
                                      "length": null,
                                      "nodeType": "ArrayTypeName",
                                      "src": "17656:9:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                        "typeString": "uint256[]"
                                      }
                                    }
                                  },
                                  "id": 1405,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17652:16:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "src": "17634:34:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 1407,
                              "nodeType": "ExpressionStatement",
                              "src": "17634:34:1"
                            }
                          ]
                        },
                        "id": 1409,
                        "nodeType": "IfStatement",
                        "src": "17207:468:1",
                        "trueBody": {
                          "id": 1399,
                          "nodeType": "Block",
                          "src": "17268:352:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1359,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1355,
                                    "name": "pathWithWeth",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1341,
                                    "src": "17276:12:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 1357,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1356,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17289:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "17276:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 1358,
                                  "name": "reserveIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1289,
                                  "src": "17294:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "17276:27:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1360,
                              "nodeType": "ExpressionStatement",
                              "src": "17276:27:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1365,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1361,
                                    "name": "pathWithWeth",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1341,
                                    "src": "17311:12:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 1363,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 1362,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17324:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "17311:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 1364,
                                  "name": "WETH_ADDRESS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 137,
                                  "src": "17329:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "17311:30:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1366,
                              "nodeType": "ExpressionStatement",
                              "src": "17311:30:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1371,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1367,
                                    "name": "pathWithWeth",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1341,
                                    "src": "17349:12:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 1369,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 1368,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17362:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "17349:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 1370,
                                  "name": "reserveOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1291,
                                  "src": "17367:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "17349:28:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1372,
                              "nodeType": "ExpressionStatement",
                              "src": "17349:28:1"
                            },
                            {
                              "clauses": [
                                {
                                  "block": {
                                    "id": 1386,
                                    "nodeType": "Block",
                                    "src": "17502:52:1",
                                    "statements": [
                                      {
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1384,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "argumentTypes": null,
                                            "id": 1382,
                                            "name": "amountsWithWeth",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1335,
                                            "src": "17512:15:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                              "typeString": "uint256[] memory"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "argumentTypes": null,
                                            "id": 1383,
                                            "name": "resultsWithWeth",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1380,
                                            "src": "17530:15:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                              "typeString": "uint256[] memory"
                                            }
                                          },
                                          "src": "17512:33:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        "id": 1385,
                                        "nodeType": "ExpressionStatement",
                                        "src": "17512:33:1"
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 1387,
                                  "nodeType": "TryCatchClause",
                                  "parameters": {
                                    "id": 1381,
                                    "nodeType": "ParameterList",
                                    "parameters": [
                                      {
                                        "constant": false,
                                        "id": 1380,
                                        "mutability": "mutable",
                                        "name": "resultsWithWeth",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 1387,
                                        "src": "17461:32:1",
                                        "stateVariable": false,
                                        "storageLocation": "memory",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[]"
                                        },
                                        "typeName": {
                                          "baseType": {
                                            "id": 1378,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "17461:7:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 1379,
                                          "length": null,
                                          "nodeType": "ArrayTypeName",
                                          "src": "17461:9:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                            "typeString": "uint256[]"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "src": "17451:50:1"
                                  },
                                  "src": "17443:111:1"
                                },
                                {
                                  "block": {
                                    "id": 1396,
                                    "nodeType": "Block",
                                    "src": "17561:53:1",
                                    "statements": [
                                      {
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1394,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "argumentTypes": null,
                                            "id": 1388,
                                            "name": "amountsWithWeth",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1335,
                                            "src": "17571:15:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                              "typeString": "uint256[] memory"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "hexValue": "33",
                                                "id": 1392,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "17603:1:1",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_3_by_1",
                                                  "typeString": "int_const 3"
                                                },
                                                "value": "3"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_rational_3_by_1",
                                                  "typeString": "int_const 3"
                                                }
                                              ],
                                              "id": 1391,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "NewExpression",
                                              "src": "17589:13:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                                "typeString": "function (uint256) pure returns (uint256[] memory)"
                                              },
                                              "typeName": {
                                                "baseType": {
                                                  "id": 1389,
                                                  "name": "uint256",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "17593:7:1",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 1390,
                                                "length": null,
                                                "nodeType": "ArrayTypeName",
                                                "src": "17593:9:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                                  "typeString": "uint256[]"
                                                }
                                              }
                                            },
                                            "id": 1393,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "17589:16:1",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                              "typeString": "uint256[] memory"
                                            }
                                          },
                                          "src": "17571:34:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        "id": 1395,
                                        "nodeType": "ExpressionStatement",
                                        "src": "17571:34:1"
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 1397,
                                  "nodeType": "TryCatchClause",
                                  "parameters": null,
                                  "src": "17555:59:1"
                                }
                              ],
                              "externalCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1375,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1293,
                                    "src": "17418:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1376,
                                    "name": "pathWithWeth",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1341,
                                    "src": "17429:12:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1373,
                                    "name": "UNISWAP_ROUTER",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 143,
                                    "src": "17390:14:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                                      "typeString": "contract IUniswapV2Router02"
                                    }
                                  },
                                  "id": 1374,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getAmountsIn",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7439,
                                  "src": "17390:27:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "function (uint256,address[] memory) view external returns (uint256[] memory)"
                                  }
                                },
                                "id": 1377,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17390:52:1",
                                "tryCall": true,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 1398,
                              "nodeType": "TryStatement",
                              "src": "17386:228:1"
                            }
                          ]
                        }
                      },
                      {
                        "clauses": [
                          {
                            "block": {
                              "id": 1445,
                              "nodeType": "Block",
                              "src": "17789:233:1",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1421,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 1419,
                                      "name": "amountsWithoutWeth",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1329,
                                      "src": "17797:18:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 1420,
                                      "name": "resultAmounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1417,
                                      "src": "17818:13:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "src": "17797:34:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 1422,
                                  "nodeType": "ExpressionStatement",
                                  "src": "17797:34:1"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "condition": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "id": 1435,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 1429,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 1423,
                                                "name": "amountsWithWeth",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1335,
                                                "src": "17856:15:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                  "typeString": "uint256[] memory"
                                                }
                                              },
                                              "id": 1425,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "30",
                                                "id": 1424,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "17872:1:1",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "17856:18:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "<",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 1426,
                                                "name": "amountsWithoutWeth",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1329,
                                                "src": "17877:18:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                  "typeString": "uint256[] memory"
                                                }
                                              },
                                              "id": 1428,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "30",
                                                "id": 1427,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "17896:1:1",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "17877:21:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "17856:42:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "&&",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 1434,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 1430,
                                                "name": "amountsWithWeth",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1335,
                                                "src": "17902:15:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                  "typeString": "uint256[] memory"
                                                }
                                              },
                                              "id": 1432,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "30",
                                                "id": 1431,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "17918:1:1",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "17902:18:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "!=",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "30",
                                              "id": 1433,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "17924:1:1",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              },
                                              "value": "0"
                                            },
                                            "src": "17902:23:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "src": "17856:69:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 1436,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "17855:71:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1440,
                                          "name": "amountsWithoutWeth",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1329,
                                          "src": "17984:18:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 1441,
                                          "name": "simplePath",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1306,
                                          "src": "18004:10:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                            "typeString": "address[] memory"
                                          }
                                        }
                                      ],
                                      "id": 1442,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "17983:32:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$",
                                        "typeString": "tuple(uint256[] memory,address[] memory)"
                                      }
                                    },
                                    "id": 1443,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "17855:160:1",
                                    "trueExpression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1437,
                                          "name": "amountsWithWeth",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1335,
                                          "src": "17940:15:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 1438,
                                          "name": "pathWithWeth",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1341,
                                          "src": "17957:12:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                            "typeString": "address[] memory"
                                          }
                                        }
                                      ],
                                      "id": 1439,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "17939:31:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$",
                                        "typeString": "tuple(uint256[] memory,address[] memory)"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$",
                                      "typeString": "tuple(uint256[] memory,address[] memory)"
                                    }
                                  },
                                  "functionReturnParameters": 1301,
                                  "id": 1444,
                                  "nodeType": "Return",
                                  "src": "17840:175:1"
                                }
                              ]
                            },
                            "errorName": "",
                            "id": 1446,
                            "nodeType": "TryCatchClause",
                            "parameters": {
                              "id": 1418,
                              "nodeType": "ParameterList",
                              "parameters": [
                                {
                                  "constant": false,
                                  "id": 1417,
                                  "mutability": "mutable",
                                  "name": "resultAmounts",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 1446,
                                  "src": "17752:30:1",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 1415,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "17752:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1416,
                                    "length": null,
                                    "nodeType": "ArrayTypeName",
                                    "src": "17752:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                      "typeString": "uint256[]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "src": "17744:44:1"
                            },
                            "src": "17736:286:1"
                          },
                          {
                            "block": {
                              "id": 1451,
                              "nodeType": "Block",
                              "src": "18029:53:1",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1447,
                                        "name": "amountsWithWeth",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1335,
                                        "src": "18045:15:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1448,
                                        "name": "pathWithWeth",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1341,
                                        "src": "18062:12:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                          "typeString": "address[] memory"
                                        }
                                      }
                                    ],
                                    "id": 1449,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "18044:31:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$",
                                      "typeString": "tuple(uint256[] memory,address[] memory)"
                                    }
                                  },
                                  "functionReturnParameters": 1301,
                                  "id": 1450,
                                  "nodeType": "Return",
                                  "src": "18037:38:1"
                                }
                              ]
                            },
                            "errorName": "",
                            "id": 1452,
                            "nodeType": "TryCatchClause",
                            "parameters": null,
                            "src": "18023:59:1"
                          }
                        ],
                        "externalCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1412,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1293,
                              "src": "17713:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1413,
                              "name": "simplePath",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1306,
                              "src": "17724:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1410,
                              "name": "UNISWAP_ROUTER",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 143,
                              "src": "17685:14:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                                "typeString": "contract IUniswapV2Router02"
                              }
                            },
                            "id": 1411,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsIn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7439,
                            "src": "17685:27:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256,address[] memory) view external returns (uint256[] memory)"
                            }
                          },
                          "id": 1414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17685:50:1",
                          "tryCall": true,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "id": 1453,
                        "nodeType": "TryStatement",
                        "src": "17681:401:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1287,
                    "nodeType": "StructuredDocumentation",
                    "src": "16440:345:1",
                    "text": " @dev Calculates the input asset amount required to buy the given output asset amount\n @param reserveIn Address of the asset to be swap from\n @param reserveOut Address of the asset to be swap to\n @param amountOut Amount of reserveOut\n @return uint256[] amounts Array containing the amountIn and amountOut for a swap"
                  },
                  "id": 1455,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getAmountsInAndPath",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1294,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1289,
                        "mutability": "mutable",
                        "name": "reserveIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1455,
                        "src": "16823:17:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1288,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16823:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1291,
                        "mutability": "mutable",
                        "name": "reserveOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1455,
                        "src": "16846:18:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1290,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16846:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1293,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1455,
                        "src": "16870:17:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1292,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16870:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16817:74:1"
                  },
                  "returnParameters": {
                    "id": 1301,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1297,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1455,
                        "src": "16915:16:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1295,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "16915:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1296,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "16915:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1300,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1455,
                        "src": "16933:16:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1298,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "16933:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1299,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "16933:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16914:36:1"
                  },
                  "scope": 1557,
                  "src": "16788:1298:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1532,
                    "nodeType": "Block",
                    "src": "18597:334:1",
                    "statements": [
                      {
                        "assignments": [
                          1474
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1474,
                            "mutability": "mutable",
                            "name": "path",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1532,
                            "src": "18603:21:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1472,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "18603:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1473,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "18603:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1475,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18603:21:1"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 1476,
                          "name": "useEthPath",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1464,
                          "src": "18635:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 1524,
                          "nodeType": "Block",
                          "src": "18776:93:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1510,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1504,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1474,
                                  "src": "18784:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "32",
                                      "id": 1508,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "18805:1:1",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      }
                                    ],
                                    "id": 1507,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "NewExpression",
                                    "src": "18791:13:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                      "typeString": "function (uint256) pure returns (address[] memory)"
                                    },
                                    "typeName": {
                                      "baseType": {
                                        "id": 1505,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "18795:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "id": 1506,
                                      "length": null,
                                      "nodeType": "ArrayTypeName",
                                      "src": "18795:9:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                        "typeString": "address[]"
                                      }
                                    }
                                  },
                                  "id": 1509,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "18791:16:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "src": "18784:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 1511,
                              "nodeType": "ExpressionStatement",
                              "src": "18784:23:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1516,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1512,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1474,
                                    "src": "18815:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 1514,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1513,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18820:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "18815:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 1515,
                                  "name": "reserveIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1458,
                                  "src": "18825:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "18815:19:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1517,
                              "nodeType": "ExpressionStatement",
                              "src": "18815:19:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1522,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1518,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1474,
                                    "src": "18842:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 1520,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 1519,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18847:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "18842:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 1521,
                                  "name": "reserveOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1460,
                                  "src": "18852:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "18842:20:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1523,
                              "nodeType": "ExpressionStatement",
                              "src": "18842:20:1"
                            }
                          ]
                        },
                        "id": 1525,
                        "nodeType": "IfStatement",
                        "src": "18631:238:1",
                        "trueBody": {
                          "id": 1503,
                          "nodeType": "Block",
                          "src": "18647:123:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1483,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1477,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1474,
                                  "src": "18655:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "33",
                                      "id": 1481,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "18676:1:1",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      },
                                      "value": "3"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      }
                                    ],
                                    "id": 1480,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "NewExpression",
                                    "src": "18662:13:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                      "typeString": "function (uint256) pure returns (address[] memory)"
                                    },
                                    "typeName": {
                                      "baseType": {
                                        "id": 1478,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "18666:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "id": 1479,
                                      "length": null,
                                      "nodeType": "ArrayTypeName",
                                      "src": "18666:9:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                        "typeString": "address[]"
                                      }
                                    }
                                  },
                                  "id": 1482,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "18662:16:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "src": "18655:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 1484,
                              "nodeType": "ExpressionStatement",
                              "src": "18655:23:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1489,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1485,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1474,
                                    "src": "18686:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 1487,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1486,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18691:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "18686:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 1488,
                                  "name": "reserveIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1458,
                                  "src": "18696:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "18686:19:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1490,
                              "nodeType": "ExpressionStatement",
                              "src": "18686:19:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1495,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1491,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1474,
                                    "src": "18713:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 1493,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 1492,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18718:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "18713:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 1494,
                                  "name": "WETH_ADDRESS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 137,
                                  "src": "18723:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "18713:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1496,
                              "nodeType": "ExpressionStatement",
                              "src": "18713:22:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1501,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1497,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1474,
                                    "src": "18743:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 1499,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 1498,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18748:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "18743:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 1500,
                                  "name": "reserveOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1460,
                                  "src": "18753:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "18743:20:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1502,
                              "nodeType": "ExpressionStatement",
                              "src": "18743:20:1"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1528,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1462,
                              "src": "18910:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1529,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1474,
                              "src": "18921:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1526,
                              "name": "UNISWAP_ROUTER",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 143,
                              "src": "18882:14:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                                "typeString": "contract IUniswapV2Router02"
                              }
                            },
                            "id": 1527,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsIn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7439,
                            "src": "18882:27:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256,address[] memory) view external returns (uint256[] memory)"
                            }
                          },
                          "id": 1530,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18882:44:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "functionReturnParameters": 1469,
                        "id": 1531,
                        "nodeType": "Return",
                        "src": "18875:51:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1456,
                    "nodeType": "StructuredDocumentation",
                    "src": "18090:345:1",
                    "text": " @dev Calculates the input asset amount required to buy the given output asset amount\n @param reserveIn Address of the asset to be swap from\n @param reserveOut Address of the asset to be swap to\n @param amountOut Amount of reserveOut\n @return uint256[] amounts Array containing the amountIn and amountOut for a swap"
                  },
                  "id": 1533,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getAmountsIn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1465,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1458,
                        "mutability": "mutable",
                        "name": "reserveIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1533,
                        "src": "18466:17:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1457,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18466:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1460,
                        "mutability": "mutable",
                        "name": "reserveOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1533,
                        "src": "18489:18:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1459,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18489:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1462,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1533,
                        "src": "18513:17:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1461,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18513:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1464,
                        "mutability": "mutable",
                        "name": "useEthPath",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1533,
                        "src": "18536:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1463,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "18536:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18460:95:1"
                  },
                  "returnParameters": {
                    "id": 1469,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1468,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1533,
                        "src": "18579:16:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1466,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "18579:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1467,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "18579:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18578:18:1"
                  },
                  "scope": 1557,
                  "src": "18438:493:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1555,
                    "nodeType": "Block",
                    "src": "19207:66:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 1544,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4079,
                                "src": "19228:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 1545,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19228:7:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1550,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "19261:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_BaseUniswapAdapter_$1557",
                                        "typeString": "contract BaseUniswapAdapter"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_BaseUniswapAdapter_$1557",
                                        "typeString": "contract BaseUniswapAdapter"
                                      }
                                    ],
                                    "id": 1549,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "19253:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 1548,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "19253:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 1551,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "19253:13:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1546,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1536,
                                  "src": "19237:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$4012",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 1547,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3951,
                                "src": "19237:15:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 1552,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19237:30:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1541,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1536,
                              "src": "19213:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1543,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3961,
                            "src": "19213:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 1553,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19213:55:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1554,
                        "nodeType": "ExpressionStatement",
                        "src": "19213:55:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1534,
                    "nodeType": "StructuredDocumentation",
                    "src": "18935:214:1",
                    "text": " @dev Emergency rescue for token stucked on this contract, as failsafe mechanism\n - Funds should never remain in this contract more time than during transactions\n - Only callable by the owner*"
                  },
                  "functionSelector": "00ae3bf8",
                  "id": 1556,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1539,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1538,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "19197:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "19197:9:1"
                    }
                  ],
                  "name": "rescueTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1537,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1536,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1556,
                        "src": "19174:12:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$4012",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 1535,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4012,
                          "src": "19174:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$4012",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "19173:14:1"
                  },
                  "returnParameters": {
                    "id": 1540,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19207:0:1"
                  },
                  "scope": 1557,
                  "src": "19152:121:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1558,
              "src": "1237:18038:1"
            }
          ],
          "src": "37:19239:1"
        },
        "id": 1
      },
      "contracts/adapters/FlashLiquidationAdapter.sol": {
        "ast": {
          "absolutePath": "contracts/adapters/FlashLiquidationAdapter.sol",
          "exportedSymbols": {
            "FlashLiquidationAdapter": [
              1962
            ]
          },
          "id": 1963,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1559,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:2"
            },
            {
              "id": 1560,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "61:33:2"
            },
            {
              "absolutePath": "contracts/adapters/BaseUniswapAdapter.sol",
              "file": "./BaseUniswapAdapter.sol",
              "id": 1562,
              "nodeType": "ImportDirective",
              "scope": 1963,
              "sourceUnit": 1558,
              "src": "96:60:2",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 1561,
                    "name": "BaseUniswapAdapter",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "104:18:2",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPoolAddressesProvider.sol",
              "file": "../interfaces/ILendingPoolAddressesProvider.sol",
              "id": 1564,
              "nodeType": "ImportDirective",
              "scope": 1963,
              "sourceUnit": 6618,
              "src": "157:94:2",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 1563,
                    "name": "ILendingPoolAddressesProvider",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "165:29:2",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IUniswapV2Router02.sol",
              "file": "../interfaces/IUniswapV2Router02.sol",
              "id": 1566,
              "nodeType": "ImportDirective",
              "scope": 1963,
              "sourceUnit": 7441,
              "src": "252:72:2",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 1565,
                    "name": "IUniswapV2Router02",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "260:18:2",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
              "file": "../dependencies/openzeppelin/contracts/IERC20.sol",
              "id": 1568,
              "nodeType": "ImportDirective",
              "scope": 1963,
              "sourceUnit": 4013,
              "src": "325:73:2",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 1567,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "333:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/types/DataTypes.sol",
              "file": "../protocol/libraries/types/DataTypes.sol",
              "id": 1570,
              "nodeType": "ImportDirective",
              "scope": 1963,
              "sourceUnit": 20532,
              "src": "399:68:2",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 1569,
                    "name": "DataTypes",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "407:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/helpers/Helpers.sol",
              "file": "../protocol/libraries/helpers/Helpers.sol",
              "id": 1572,
              "nodeType": "ImportDirective",
              "scope": 1963,
              "sourceUnit": 17305,
              "src": "468:66:2",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 1571,
                    "name": "Helpers",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "476:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IPriceOracleGetter.sol",
              "file": "../interfaces/IPriceOracleGetter.sol",
              "id": 1574,
              "nodeType": "ImportDirective",
              "scope": 1963,
              "sourceUnit": 6919,
              "src": "535:72:2",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 1573,
                    "name": "IPriceOracleGetter",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "543:18:2",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IAToken.sol",
              "file": "../interfaces/IAToken.sol",
              "id": 1576,
              "nodeType": "ImportDirective",
              "scope": 1963,
              "sourceUnit": 5668,
              "src": "608:50:2",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 1575,
                    "name": "IAToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "616:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/configuration/ReserveConfiguration.sol",
              "file": "../protocol/libraries/configuration/ReserveConfiguration.sol",
              "id": 1578,
              "nodeType": "ImportDirective",
              "scope": 1963,
              "sourceUnit": 16742,
              "src": "659:98:2",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 1577,
                    "name": "ReserveConfiguration",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "667:20:2",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 1580,
                    "name": "BaseUniswapAdapter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1557,
                    "src": "907:18:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BaseUniswapAdapter_$1557",
                      "typeString": "contract BaseUniswapAdapter"
                    }
                  },
                  "id": 1581,
                  "nodeType": "InheritanceSpecifier",
                  "src": "907:18:2"
                }
              ],
              "contractDependencies": [
                1557,
                3340,
                3427,
                4143,
                5511,
                5547
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 1579,
                "nodeType": "StructuredDocumentation",
                "src": "759:111:2",
                "text": " @title UniswapLiquiditySwapAdapter\n @notice Uniswap V2 Adapter to swap liquidity.\n @author Aave*"
              },
              "fullyImplemented": true,
              "id": 1962,
              "linearizedBaseContracts": [
                1962,
                1557,
                4143,
                3427,
                3340,
                5511,
                5547
              ],
              "name": "FlashLiquidationAdapter",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 1584,
                  "libraryName": {
                    "contractScope": null,
                    "id": 1582,
                    "name": "ReserveConfiguration",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16741,
                    "src": "936:20:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ReserveConfiguration_$16741",
                      "typeString": "library ReserveConfiguration"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "930:65:2",
                  "typeName": {
                    "contractScope": null,
                    "id": 1583,
                    "name": "DataTypes.ReserveConfigurationMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20523,
                    "src": "961:33:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                      "typeString": "struct DataTypes.ReserveConfigurationMap"
                    }
                  }
                },
                {
                  "constant": true,
                  "id": 1587,
                  "mutability": "constant",
                  "name": "LIQUIDATION_CLOSE_FACTOR_PERCENT",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1962,
                  "src": "998:65:2",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1585,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "998:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "35303030",
                    "id": 1586,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1059:4:2",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_5000_by_1",
                      "typeString": "int_const 5000"
                    },
                    "value": "5000"
                  },
                  "visibility": "internal"
                },
                {
                  "canonicalName": "FlashLiquidationAdapter.LiquidationParams",
                  "id": 1598,
                  "members": [
                    {
                      "constant": false,
                      "id": 1589,
                      "mutability": "mutable",
                      "name": "collateralAsset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1598,
                      "src": "1099:23:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1588,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1099:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1591,
                      "mutability": "mutable",
                      "name": "borrowedAsset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1598,
                      "src": "1128:21:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1590,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1128:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1593,
                      "mutability": "mutable",
                      "name": "user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1598,
                      "src": "1155:12:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1592,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1155:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1595,
                      "mutability": "mutable",
                      "name": "debtToCover",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1598,
                      "src": "1173:19:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1594,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1173:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1597,
                      "mutability": "mutable",
                      "name": "useEthPath",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1598,
                      "src": "1198:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1596,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1198:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "LiquidationParams",
                  "nodeType": "StructDefinition",
                  "scope": 1962,
                  "src": "1068:150:2",
                  "visibility": "public"
                },
                {
                  "canonicalName": "FlashLiquidationAdapter.LiquidationCallLocalVars",
                  "id": 1615,
                  "members": [
                    {
                      "constant": false,
                      "id": 1600,
                      "mutability": "mutable",
                      "name": "initFlashBorrowedBalance",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1615,
                      "src": "1260:32:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1599,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1260:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1602,
                      "mutability": "mutable",
                      "name": "diffFlashBorrowedBalance",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1615,
                      "src": "1298:32:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1601,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1298:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1604,
                      "mutability": "mutable",
                      "name": "initCollateralBalance",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1615,
                      "src": "1336:29:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1603,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1336:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1606,
                      "mutability": "mutable",
                      "name": "diffCollateralBalance",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1615,
                      "src": "1371:29:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1605,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1371:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1608,
                      "mutability": "mutable",
                      "name": "flashLoanDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1615,
                      "src": "1406:21:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1607,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1406:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1610,
                      "mutability": "mutable",
                      "name": "soldAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1615,
                      "src": "1433:18:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1609,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1433:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1612,
                      "mutability": "mutable",
                      "name": "remainingTokens",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1615,
                      "src": "1457:23:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1611,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1457:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1614,
                      "mutability": "mutable",
                      "name": "borrowedAssetLeftovers",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1615,
                      "src": "1486:30:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1613,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1486:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "LiquidationCallLocalVars",
                  "nodeType": "StructDefinition",
                  "scope": 1962,
                  "src": "1222:299:2",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1629,
                    "nodeType": "Block",
                    "src": "1730:2:2",
                    "statements": []
                  },
                  "documentation": null,
                  "id": 1630,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1624,
                          "name": "addressesProvider",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1617,
                          "src": "1683:17:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                            "typeString": "contract ILendingPoolAddressesProvider"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1625,
                          "name": "uniswapRouter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1619,
                          "src": "1702:13:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                            "typeString": "contract IUniswapV2Router02"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1626,
                          "name": "wethAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1621,
                          "src": "1717:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 1627,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1623,
                        "name": "BaseUniswapAdapter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1557,
                        "src": "1664:18:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_BaseUniswapAdapter_$1557_$",
                          "typeString": "type(contract BaseUniswapAdapter)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1664:65:2"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1622,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1617,
                        "mutability": "mutable",
                        "name": "addressesProvider",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1630,
                        "src": "1542:47:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                          "typeString": "contract ILendingPoolAddressesProvider"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 1616,
                          "name": "ILendingPoolAddressesProvider",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6617,
                          "src": "1542:29:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                            "typeString": "contract ILendingPoolAddressesProvider"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1619,
                        "mutability": "mutable",
                        "name": "uniswapRouter",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1630,
                        "src": "1595:32:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                          "typeString": "contract IUniswapV2Router02"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 1618,
                          "name": "IUniswapV2Router02",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 7440,
                          "src": "1595:18:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                            "typeString": "contract IUniswapV2Router02"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1621,
                        "mutability": "mutable",
                        "name": "wethAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1630,
                        "src": "1633:19:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1620,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1633:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1536:120:2"
                  },
                  "returnParameters": {
                    "id": 1628,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1730:0:2"
                  },
                  "scope": 1962,
                  "src": "1525:207:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    5536
                  ],
                  "body": {
                    "id": 1704,
                    "nodeType": "Block",
                    "src": "3040:521:2",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1657,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1651,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "3054:3:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 1652,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3054:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1655,
                                    "name": "LENDING_POOL",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5492,
                                    "src": "3076:12:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                      "typeString": "contract ILendingPool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                      "typeString": "contract ILendingPool"
                                    }
                                  ],
                                  "id": 1654,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3068:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1653,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3068:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1656,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3068:21:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3054:35:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "43414c4c45525f4d5553545f42455f4c454e44494e475f504f4f4c",
                              "id": 1658,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3091:29:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1a9f77295f7c883a551d4230bdbf48f1affdf43c109506e39540643d43cc3b79",
                                "typeString": "literal_string \"CALLER_MUST_BE_LENDING_POOL\""
                              },
                              "value": "CALLER_MUST_BE_LENDING_POOL"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1a9f77295f7c883a551d4230bdbf48f1affdf43c109506e39540643d43cc3b79",
                                "typeString": "literal_string \"CALLER_MUST_BE_LENDING_POOL\""
                              }
                            ],
                            "id": 1650,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3046:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1659,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3046:75:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1660,
                        "nodeType": "ExpressionStatement",
                        "src": "3046:75:2"
                      },
                      {
                        "assignments": [
                          1662
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1662,
                            "mutability": "mutable",
                            "name": "decodedParams",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1704,
                            "src": "3128:38:2",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LiquidationParams_$1598_memory_ptr",
                              "typeString": "struct FlashLiquidationAdapter.LiquidationParams"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1661,
                              "name": "LiquidationParams",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 1598,
                              "src": "3128:17:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LiquidationParams_$1598_storage_ptr",
                                "typeString": "struct FlashLiquidationAdapter.LiquidationParams"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1666,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1664,
                              "name": "params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1644,
                              "src": "3183:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 1663,
                            "name": "_decodeParams",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1961,
                            "src": "3169:13:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_struct$_LiquidationParams_$1598_memory_ptr_$",
                              "typeString": "function (bytes memory) pure returns (struct FlashLiquidationAdapter.LiquidationParams memory)"
                            }
                          },
                          "id": 1665,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3169:21:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidationParams_$1598_memory_ptr",
                            "typeString": "struct FlashLiquidationAdapter.LiquidationParams memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3128:62:2"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1678,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1671,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1668,
                                    "name": "assets",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1634,
                                    "src": "3205:6:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 1669,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "3205:13:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1670,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3222:1:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "3205:18:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 1677,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1672,
                                    "name": "assets",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1634,
                                    "src": "3227:6:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 1674,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1673,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3234:1:2",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3227:9:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1675,
                                    "name": "decodedParams",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1662,
                                    "src": "3240:13:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LiquidationParams_$1598_memory_ptr",
                                      "typeString": "struct FlashLiquidationAdapter.LiquidationParams memory"
                                    }
                                  },
                                  "id": 1676,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "borrowedAsset",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1591,
                                  "src": "3240:27:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3227:40:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3205:62:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e434f4e53495354454e545f504152414d53",
                              "id": 1679,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3269:21:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c90a2b394d579b6dcff388a4e6c10c40aa60af357ae15715043426195953765b",
                                "typeString": "literal_string \"INCONSISTENT_PARAMS\""
                              },
                              "value": "INCONSISTENT_PARAMS"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c90a2b394d579b6dcff388a4e6c10c40aa60af357ae15715043426195953765b",
                                "typeString": "literal_string \"INCONSISTENT_PARAMS\""
                              }
                            ],
                            "id": 1667,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3197:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1680,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3197:94:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1681,
                        "nodeType": "ExpressionStatement",
                        "src": "3197:94:2"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1683,
                                "name": "decodedParams",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1662,
                                "src": "3323:13:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidationParams_$1598_memory_ptr",
                                  "typeString": "struct FlashLiquidationAdapter.LiquidationParams memory"
                                }
                              },
                              "id": 1684,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateralAsset",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1589,
                              "src": "3323:29:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1685,
                                "name": "decodedParams",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1662,
                                "src": "3360:13:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidationParams_$1598_memory_ptr",
                                  "typeString": "struct FlashLiquidationAdapter.LiquidationParams memory"
                                }
                              },
                              "id": 1686,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "borrowedAsset",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1591,
                              "src": "3360:27:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1687,
                                "name": "decodedParams",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1662,
                                "src": "3395:13:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidationParams_$1598_memory_ptr",
                                  "typeString": "struct FlashLiquidationAdapter.LiquidationParams memory"
                                }
                              },
                              "id": 1688,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "user",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1593,
                              "src": "3395:18:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1689,
                                "name": "decodedParams",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1662,
                                "src": "3421:13:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidationParams_$1598_memory_ptr",
                                  "typeString": "struct FlashLiquidationAdapter.LiquidationParams memory"
                                }
                              },
                              "id": 1690,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "debtToCover",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1595,
                              "src": "3421:25:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1691,
                                "name": "decodedParams",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1662,
                                "src": "3454:13:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidationParams_$1598_memory_ptr",
                                  "typeString": "struct FlashLiquidationAdapter.LiquidationParams memory"
                                }
                              },
                              "id": 1692,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "useEthPath",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1597,
                              "src": "3454:24:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1693,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1637,
                                "src": "3486:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 1695,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1694,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3494:1:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3486:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1696,
                                "name": "premiums",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1640,
                                "src": "3504:8:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 1698,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1697,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3513:1:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3504:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1699,
                              "name": "initiator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1642,
                              "src": "3523:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1682,
                            "name": "_liquidateAndSwap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1918,
                            "src": "3298:17:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bool_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,address,address,uint256,bool,uint256,uint256,address)"
                            }
                          },
                          "id": 1700,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3298:240:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1701,
                        "nodeType": "ExpressionStatement",
                        "src": "3298:240:2"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 1702,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3552:4:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 1649,
                        "id": 1703,
                        "nodeType": "Return",
                        "src": "3545:11:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1631,
                    "nodeType": "StructuredDocumentation",
                    "src": "1736:1092:2",
                    "text": " @dev Liquidate a non-healthy position collateral-wise, with a Health Factor below 1, using Flash Loan and Uniswap to repay flash loan premium.\n - The caller (liquidator) with a flash loan covers `debtToCover` amount of debt of the user getting liquidated, and receives\n   a proportionally amount of the `collateralAsset` plus a bonus to cover market risk minus the flash loan premium.\n @param assets Address of asset to be swapped\n @param amounts Amount of the asset to be swapped\n @param premiums Fee of the flash loan\n @param initiator Address of the caller\n @param params Additional variadic field to include extra params. Expected parameters:\n   address collateralAsset The collateral asset to release and will be exchanged to pay the flash loan premium\n   address borrowedAsset The asset that must be covered\n   address user The user address with a Health Factor below 1\n   uint256 debtToCover The amount of debt to cover\n   bool useEthPath Use WETH as connector path between the collateralAsset and borrowedAsset at Uniswap"
                  },
                  "functionSelector": "920f5c84",
                  "id": 1705,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "executeOperation",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1646,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3016:8:2"
                  },
                  "parameters": {
                    "id": 1645,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1634,
                        "mutability": "mutable",
                        "name": "assets",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1705,
                        "src": "2862:25:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1632,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2862:7:2",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1633,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2862:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1637,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1705,
                        "src": "2893:26:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1635,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2893:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1636,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2893:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1640,
                        "mutability": "mutable",
                        "name": "premiums",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1705,
                        "src": "2925:27:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1638,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2925:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1639,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2925:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1642,
                        "mutability": "mutable",
                        "name": "initiator",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1705,
                        "src": "2958:17:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1641,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2958:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1644,
                        "mutability": "mutable",
                        "name": "params",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1705,
                        "src": "2981:21:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1643,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2981:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2856:150:2"
                  },
                  "returnParameters": {
                    "id": 1649,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1648,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1705,
                        "src": "3034:4:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1647,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3034:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3033:6:2"
                  },
                  "scope": 1962,
                  "src": "2831:730:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1917,
                    "nodeType": "Block",
                    "src": "4458:2235:2",
                    "statements": [
                      {
                        "assignments": [
                          1726
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1726,
                            "mutability": "mutable",
                            "name": "vars",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1917,
                            "src": "4464:36:2",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$1615_memory_ptr",
                              "typeString": "struct FlashLiquidationAdapter.LiquidationCallLocalVars"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1725,
                              "name": "LiquidationCallLocalVars",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 1615,
                              "src": "4464:24:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$1615_storage_ptr",
                                "typeString": "struct FlashLiquidationAdapter.LiquidationCallLocalVars"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1727,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4464:36:2"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1740,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1728,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1726,
                              "src": "4506:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$1615_memory_ptr",
                                "typeString": "struct FlashLiquidationAdapter.LiquidationCallLocalVars memory"
                              }
                            },
                            "id": 1730,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "initCollateralBalance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1604,
                            "src": "4506:26:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1737,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "4577:4:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_FlashLiquidationAdapter_$1962",
                                      "typeString": "contract FlashLiquidationAdapter"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_FlashLiquidationAdapter_$1962",
                                      "typeString": "contract FlashLiquidationAdapter"
                                    }
                                  ],
                                  "id": 1736,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4569:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1735,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4569:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1738,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4569:13:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1732,
                                    "name": "collateralAsset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1708,
                                    "src": "4542:15:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1731,
                                  "name": "IERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4012,
                                  "src": "4535:6:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                    "typeString": "type(contract IERC20)"
                                  }
                                },
                                "id": 1733,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4535:23:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$4012",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 1734,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3951,
                              "src": "4535:33:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 1739,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4535:48:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4506:77:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1741,
                        "nodeType": "ExpressionStatement",
                        "src": "4506:77:2"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1744,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1742,
                            "name": "collateralAsset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1708,
                            "src": "4593:15:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1743,
                            "name": "borrowedAsset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1710,
                            "src": "4612:13:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4593:32:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1770,
                        "nodeType": "IfStatement",
                        "src": "4589:321:2",
                        "trueBody": {
                          "id": 1769,
                          "nodeType": "Block",
                          "src": "4627:283:2",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1757,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1745,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1726,
                                    "src": "4635:4:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$1615_memory_ptr",
                                      "typeString": "struct FlashLiquidationAdapter.LiquidationCallLocalVars memory"
                                    }
                                  },
                                  "id": 1747,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "initFlashBorrowedBalance",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1600,
                                  "src": "4635:29:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1754,
                                          "name": "this",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -28,
                                          "src": "4707:4:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_FlashLiquidationAdapter_$1962",
                                            "typeString": "contract FlashLiquidationAdapter"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_FlashLiquidationAdapter_$1962",
                                            "typeString": "contract FlashLiquidationAdapter"
                                          }
                                        ],
                                        "id": 1753,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "4699:7:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 1752,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "4699:7:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 1755,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4699:13:2",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1749,
                                          "name": "borrowedAsset",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1710,
                                          "src": "4674:13:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 1748,
                                        "name": "IERC20",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4012,
                                        "src": "4667:6:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                          "typeString": "type(contract IERC20)"
                                        }
                                      },
                                      "id": 1750,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4667:21:2",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$4012",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 1751,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "balanceOf",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3951,
                                    "src": "4667:31:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address) view external returns (uint256)"
                                    }
                                  },
                                  "id": 1756,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4667:46:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4635:78:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1758,
                              "nodeType": "ExpressionStatement",
                              "src": "4635:78:2"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1767,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1759,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1726,
                                    "src": "4819:4:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$1615_memory_ptr",
                                      "typeString": "struct FlashLiquidationAdapter.LiquidationCallLocalVars memory"
                                    }
                                  },
                                  "id": 1761,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "borrowedAssetLeftovers",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1614,
                                  "src": "4819:27:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1765,
                                      "name": "flashBorrowedAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1718,
                                      "src": "4883:19:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1762,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1726,
                                        "src": "4849:4:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$1615_memory_ptr",
                                          "typeString": "struct FlashLiquidationAdapter.LiquidationCallLocalVars memory"
                                        }
                                      },
                                      "id": 1763,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "initFlashBorrowedBalance",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1600,
                                      "src": "4849:29:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1764,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4346,
                                    "src": "4849:33:2",
                                    "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": 1766,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4849:54:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4819:84:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1768,
                              "nodeType": "ExpressionStatement",
                              "src": "4819:84:2"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1778,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1771,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1726,
                              "src": "4915:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$1615_memory_ptr",
                                "typeString": "struct FlashLiquidationAdapter.LiquidationCallLocalVars memory"
                              }
                            },
                            "id": 1773,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "flashLoanDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1608,
                            "src": "4915:18:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1776,
                                "name": "premium",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1720,
                                "src": "4960:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1774,
                                "name": "flashBorrowedAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1718,
                                "src": "4936:19:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1775,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4329,
                              "src": "4936:23:2",
                              "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": 1777,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4936:32:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4915:53:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1779,
                        "nodeType": "ExpressionStatement",
                        "src": "4915:53:2"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1786,
                                  "name": "LENDING_POOL",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5492,
                                  "src": "5074:12:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                ],
                                "id": 1785,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5066:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1784,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5066:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1787,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5066:21:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1788,
                              "name": "debtToCover",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1714,
                              "src": "5089:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1781,
                                  "name": "borrowedAsset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1710,
                                  "src": "5043:13:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1780,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "5036:6:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 1782,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5036:21:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1783,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3981,
                            "src": "5036:29:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 1789,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5036:65:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1790,
                        "nodeType": "ExpressionStatement",
                        "src": "5036:65:2"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1794,
                              "name": "collateralAsset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1708,
                              "src": "5210:15:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1795,
                              "name": "borrowedAsset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1710,
                              "src": "5227:13:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1796,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1712,
                              "src": "5242:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1797,
                              "name": "debtToCover",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1714,
                              "src": "5248:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 1798,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5261:5:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1791,
                              "name": "LENDING_POOL",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5492,
                              "src": "5181:12:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 1793,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "liquidationCall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6323,
                            "src": "5181:28:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,address,uint256,bool) external"
                            }
                          },
                          "id": 1799,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5181:86:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1800,
                        "nodeType": "ExpressionStatement",
                        "src": "5181:86:2"
                      },
                      {
                        "assignments": [
                          1802
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1802,
                            "mutability": "mutable",
                            "name": "collateralBalanceAfter",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1917,
                            "src": "5312:30:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1801,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5312:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1812,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1809,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "5387:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_FlashLiquidationAdapter_$1962",
                                    "typeString": "contract FlashLiquidationAdapter"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_FlashLiquidationAdapter_$1962",
                                    "typeString": "contract FlashLiquidationAdapter"
                                  }
                                ],
                                "id": 1808,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5379:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1807,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5379:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1810,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5379:13:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1804,
                                  "name": "collateralAsset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1708,
                                  "src": "5352:15:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1803,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "5345:6:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 1805,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5345:23:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1806,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3951,
                            "src": "5345:33:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 1811,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5345:48:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5312:81:2"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1821,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1813,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1726,
                              "src": "5481:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$1615_memory_ptr",
                                "typeString": "struct FlashLiquidationAdapter.LiquidationCallLocalVars memory"
                              }
                            },
                            "id": 1815,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "diffCollateralBalance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1606,
                            "src": "5481:26:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1818,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1726,
                                  "src": "5537:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$1615_memory_ptr",
                                    "typeString": "struct FlashLiquidationAdapter.LiquidationCallLocalVars memory"
                                  }
                                },
                                "id": 1819,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "initCollateralBalance",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1604,
                                "src": "5537:26:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1816,
                                "name": "collateralBalanceAfter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1802,
                                "src": "5510:22:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1817,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4346,
                              "src": "5510:26:2",
                              "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": 1820,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5510:54:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5481:83:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1822,
                        "nodeType": "ExpressionStatement",
                        "src": "5481:83:2"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1825,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1823,
                            "name": "collateralAsset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1708,
                            "src": "5575:15:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1824,
                            "name": "borrowedAsset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1710,
                            "src": "5594:13:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5575:32:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 1888,
                          "nodeType": "Block",
                          "src": "6338:77:2",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1886,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1878,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1726,
                                    "src": "6346:4:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$1615_memory_ptr",
                                      "typeString": "struct FlashLiquidationAdapter.LiquidationCallLocalVars memory"
                                    }
                                  },
                                  "id": 1880,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "remainingTokens",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1612,
                                  "src": "6346:20:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1884,
                                      "name": "premium",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1720,
                                      "src": "6400:7:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1881,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1726,
                                        "src": "6369:4:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$1615_memory_ptr",
                                          "typeString": "struct FlashLiquidationAdapter.LiquidationCallLocalVars memory"
                                        }
                                      },
                                      "id": 1882,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "diffCollateralBalance",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1606,
                                      "src": "6369:26:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1883,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4346,
                                    "src": "6369:30:2",
                                    "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": 1885,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6369:39:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6346:62:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1887,
                              "nodeType": "ExpressionStatement",
                              "src": "6346:62:2"
                            }
                          ]
                        },
                        "id": 1889,
                        "nodeType": "IfStatement",
                        "src": "5571:844:2",
                        "trueBody": {
                          "id": 1877,
                          "nodeType": "Block",
                          "src": "5609:723:2",
                          "statements": [
                            {
                              "assignments": [
                                1827
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1827,
                                  "mutability": "mutable",
                                  "name": "flashBorrowedAssetAfter",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 1877,
                                  "src": "5676:31:2",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1826,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5676:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1837,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1834,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "5750:4:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_FlashLiquidationAdapter_$1962",
                                          "typeString": "contract FlashLiquidationAdapter"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_FlashLiquidationAdapter_$1962",
                                          "typeString": "contract FlashLiquidationAdapter"
                                        }
                                      ],
                                      "id": 1833,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5742:7:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1832,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5742:7:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 1835,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5742:13:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1829,
                                        "name": "borrowedAsset",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1710,
                                        "src": "5717:13:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 1828,
                                      "name": "IERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4012,
                                      "src": "5710:6:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                        "typeString": "type(contract IERC20)"
                                      }
                                    },
                                    "id": 1830,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5710:21:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$4012",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 1831,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3951,
                                  "src": "5710:31:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 1836,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5710:46:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5676:80:2"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1846,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1838,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1726,
                                    "src": "5853:4:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$1615_memory_ptr",
                                      "typeString": "struct FlashLiquidationAdapter.LiquidationCallLocalVars memory"
                                    }
                                  },
                                  "id": 1840,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "diffFlashBorrowedBalance",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1602,
                                  "src": "5853:29:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1843,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1726,
                                        "src": "5913:4:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$1615_memory_ptr",
                                          "typeString": "struct FlashLiquidationAdapter.LiquidationCallLocalVars memory"
                                        }
                                      },
                                      "id": 1844,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "borrowedAssetLeftovers",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1614,
                                      "src": "5913:27:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1841,
                                      "name": "flashBorrowedAssetAfter",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1827,
                                      "src": "5885:23:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1842,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4346,
                                    "src": "5885:27:2",
                                    "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": 1845,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5885:56:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5853:88:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1847,
                              "nodeType": "ExpressionStatement",
                              "src": "5853:88:2"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1864,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1848,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1726,
                                    "src": "6029:4:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$1615_memory_ptr",
                                      "typeString": "struct FlashLiquidationAdapter.LiquidationCallLocalVars memory"
                                    }
                                  },
                                  "id": 1850,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "soldAmount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1610,
                                  "src": "6029:15:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1852,
                                      "name": "collateralAsset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1708,
                                      "src": "6082:15:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 1853,
                                      "name": "borrowedAsset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1710,
                                      "src": "6107:13:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1854,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1726,
                                        "src": "6130:4:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$1615_memory_ptr",
                                          "typeString": "struct FlashLiquidationAdapter.LiquidationCallLocalVars memory"
                                        }
                                      },
                                      "id": 1855,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "diffCollateralBalance",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1606,
                                      "src": "6130:26:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1859,
                                            "name": "vars",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1726,
                                            "src": "6189:4:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$1615_memory_ptr",
                                              "typeString": "struct FlashLiquidationAdapter.LiquidationCallLocalVars memory"
                                            }
                                          },
                                          "id": 1860,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "diffFlashBorrowedBalance",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1602,
                                          "src": "6189:29:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1856,
                                            "name": "vars",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1726,
                                            "src": "6166:4:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$1615_memory_ptr",
                                              "typeString": "struct FlashLiquidationAdapter.LiquidationCallLocalVars memory"
                                            }
                                          },
                                          "id": 1857,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "flashLoanDebt",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1608,
                                          "src": "6166:18:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 1858,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sub",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4346,
                                        "src": "6166:22:2",
                                        "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": 1861,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6166:53:2",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 1862,
                                      "name": "useEthPath",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1716,
                                      "src": "6229:10:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 1851,
                                    "name": "_swapTokensForExactTokens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 639,
                                    "src": "6047:25:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (address,address,uint256,uint256,bool) returns (uint256)"
                                    }
                                  },
                                  "id": 1863,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6047:200:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6029:218:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1865,
                              "nodeType": "ExpressionStatement",
                              "src": "6029:218:2"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1875,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1866,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1726,
                                    "src": "6255:4:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$1615_memory_ptr",
                                      "typeString": "struct FlashLiquidationAdapter.LiquidationCallLocalVars memory"
                                    }
                                  },
                                  "id": 1868,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "remainingTokens",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1612,
                                  "src": "6255:20:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1872,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1726,
                                        "src": "6309:4:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$1615_memory_ptr",
                                          "typeString": "struct FlashLiquidationAdapter.LiquidationCallLocalVars memory"
                                        }
                                      },
                                      "id": 1873,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "soldAmount",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1610,
                                      "src": "6309:15:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1869,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1726,
                                        "src": "6278:4:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$1615_memory_ptr",
                                          "typeString": "struct FlashLiquidationAdapter.LiquidationCallLocalVars memory"
                                        }
                                      },
                                      "id": 1870,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "diffCollateralBalance",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1606,
                                      "src": "6278:26:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1871,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4346,
                                    "src": "6278:30:2",
                                    "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": 1874,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6278:47:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6255:70:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1876,
                              "nodeType": "ExpressionStatement",
                              "src": "6255:70:2"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1896,
                                  "name": "LENDING_POOL",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5492,
                                  "src": "6492:12:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                ],
                                "id": 1895,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6484:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1894,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6484:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1897,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6484:21:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1898,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1726,
                                "src": "6507:4:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$1615_memory_ptr",
                                  "typeString": "struct FlashLiquidationAdapter.LiquidationCallLocalVars memory"
                                }
                              },
                              "id": 1899,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "flashLoanDebt",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1608,
                              "src": "6507:18:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1891,
                                  "name": "borrowedAsset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1710,
                                  "src": "6461:13:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1890,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "6454:6:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 1892,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6454:21:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1893,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3981,
                            "src": "6454:29:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 1900,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6454:72:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1901,
                        "nodeType": "ExpressionStatement",
                        "src": "6454:72:2"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1905,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1902,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1726,
                              "src": "6583:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$1615_memory_ptr",
                                "typeString": "struct FlashLiquidationAdapter.LiquidationCallLocalVars memory"
                              }
                            },
                            "id": 1903,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "remainingTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1612,
                            "src": "6583:20:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1904,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6606:1:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6583:24:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1916,
                        "nodeType": "IfStatement",
                        "src": "6579:110:2",
                        "trueBody": {
                          "id": 1915,
                          "nodeType": "Block",
                          "src": "6609:80:2",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1910,
                                    "name": "initiator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1722,
                                    "src": "6650:9:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1911,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1726,
                                      "src": "6661:4:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$1615_memory_ptr",
                                        "typeString": "struct FlashLiquidationAdapter.LiquidationCallLocalVars memory"
                                      }
                                    },
                                    "id": 1912,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "remainingTokens",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1612,
                                    "src": "6661:20:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1907,
                                        "name": "collateralAsset",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1708,
                                        "src": "6624:15:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 1906,
                                      "name": "IERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4012,
                                      "src": "6617:6:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                        "typeString": "type(contract IERC20)"
                                      }
                                    },
                                    "id": 1908,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6617:23:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$4012",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 1909,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "transfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3961,
                                  "src": "6617:32:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (address,uint256) external returns (bool)"
                                  }
                                },
                                "id": 1913,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6617:65:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1914,
                              "nodeType": "ExpressionStatement",
                              "src": "6617:65:2"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1706,
                    "nodeType": "StructuredDocumentation",
                    "src": "3565:653:2",
                    "text": " @dev\n @param collateralAsset The collateral asset to release and will be exchanged to pay the flash loan premium\n @param borrowedAsset The asset that must be covered\n @param user The user address with a Health Factor below 1\n @param debtToCover The amount of debt to coverage, can be max(-1) to liquidate all possible debt\n @param useEthPath true if the swap needs to occur using ETH in the routing, false otherwise\n @param flashBorrowedAmount Amount of asset requested at the flash loan to liquidate the user position\n @param premium Fee of the requested flash loan\n @param initiator Address of the caller"
                  },
                  "id": 1918,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_liquidateAndSwap",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1723,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1708,
                        "mutability": "mutable",
                        "name": "collateralAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1918,
                        "src": "4253:23:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1707,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4253:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1710,
                        "mutability": "mutable",
                        "name": "borrowedAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1918,
                        "src": "4282:21:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1709,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4282:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1712,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1918,
                        "src": "4309:12:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1711,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4309:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1714,
                        "mutability": "mutable",
                        "name": "debtToCover",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1918,
                        "src": "4327:19:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1713,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4327:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1716,
                        "mutability": "mutable",
                        "name": "useEthPath",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1918,
                        "src": "4352:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1715,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4352:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1718,
                        "mutability": "mutable",
                        "name": "flashBorrowedAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1918,
                        "src": "4373:27:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1717,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4373:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1720,
                        "mutability": "mutable",
                        "name": "premium",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1918,
                        "src": "4406:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1719,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4406:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1722,
                        "mutability": "mutable",
                        "name": "initiator",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1918,
                        "src": "4427:17:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1721,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4427:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4247:201:2"
                  },
                  "returnParameters": {
                    "id": 1724,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4458:0:2"
                  },
                  "scope": 1962,
                  "src": "4221:2472:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1960,
                    "nodeType": "Block",
                    "src": "7425:306:2",
                    "statements": [
                      {
                        "assignments": [
                          1927,
                          1929,
                          1931,
                          1933,
                          1935
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1927,
                            "mutability": "mutable",
                            "name": "collateralAsset",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1960,
                            "src": "7439:23:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1926,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7439:7:2",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 1929,
                            "mutability": "mutable",
                            "name": "borrowedAsset",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1960,
                            "src": "7470:21:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1928,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7470:7:2",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 1931,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1960,
                            "src": "7499:12:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1930,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7499:7:2",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 1933,
                            "mutability": "mutable",
                            "name": "debtToCover",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1960,
                            "src": "7519:19:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1932,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7519:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 1935,
                            "mutability": "mutable",
                            "name": "useEthPath",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1960,
                            "src": "7546:15:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 1934,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "7546:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1951,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1938,
                              "name": "params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1921,
                              "src": "7581:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 1940,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7590:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1939,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7590:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1942,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7599:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1941,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7599:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1944,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7608:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1943,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7608:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1946,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7617:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 1945,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7617:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1948,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7626:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 1947,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7626:4:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                }
                              ],
                              "id": 1949,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "7589:42:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(address),type(uint256),type(bool))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(address),type(uint256),type(bool))"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1936,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "7570:3:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 1937,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7570:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 1950,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7570:62:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_address_payable_$_t_uint256_$_t_bool_$",
                            "typeString": "tuple(address payable,address payable,address payable,uint256,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7431:201:2"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1953,
                              "name": "collateralAsset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1927,
                              "src": "7664:15:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1954,
                              "name": "borrowedAsset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1929,
                              "src": "7681:13:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1955,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1931,
                              "src": "7696:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1956,
                              "name": "debtToCover",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1933,
                              "src": "7702:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1957,
                              "name": "useEthPath",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1935,
                              "src": "7715:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1952,
                            "name": "LiquidationParams",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1598,
                            "src": "7646:17:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_struct$_LiquidationParams_$1598_storage_ptr_$",
                              "typeString": "type(struct FlashLiquidationAdapter.LiquidationParams storage pointer)"
                            }
                          },
                          "id": 1958,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "structConstructorCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7646:80:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidationParams_$1598_memory_ptr",
                            "typeString": "struct FlashLiquidationAdapter.LiquidationParams memory"
                          }
                        },
                        "functionReturnParameters": 1925,
                        "id": 1959,
                        "nodeType": "Return",
                        "src": "7639:87:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1919,
                    "nodeType": "StructuredDocumentation",
                    "src": "6697:632:2",
                    "text": " @dev Decodes the information encoded in the flash loan params\n @param params Additional variadic field to include extra params. Expected parameters:\n   address collateralAsset The collateral asset to claim\n   address borrowedAsset The asset that must be covered and will be exchanged to pay the flash loan premium\n   address user The user address with a Health Factor below 1\n   uint256 debtToCover The amount of debt to cover\n   bool useEthPath Use WETH as connector path between the collateralAsset and borrowedAsset at Uniswap\n @return LiquidationParams struct containing decoded params"
                  },
                  "id": 1961,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_decodeParams",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1922,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1921,
                        "mutability": "mutable",
                        "name": "params",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1961,
                        "src": "7355:19:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1920,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7355:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7354:21:2"
                  },
                  "returnParameters": {
                    "id": 1925,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1924,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1961,
                        "src": "7399:24:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LiquidationParams_$1598_memory_ptr",
                          "typeString": "struct FlashLiquidationAdapter.LiquidationParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 1923,
                          "name": "LiquidationParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 1598,
                          "src": "7399:17:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidationParams_$1598_storage_ptr",
                            "typeString": "struct FlashLiquidationAdapter.LiquidationParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7398:26:2"
                  },
                  "scope": 1962,
                  "src": "7332:399:2",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 1963,
              "src": "871:6862:2"
            }
          ],
          "src": "37:7697:2"
        },
        "id": 2
      },
      "contracts/adapters/UniswapLiquiditySwapAdapter.sol": {
        "ast": {
          "absolutePath": "contracts/adapters/UniswapLiquiditySwapAdapter.sol",
          "exportedSymbols": {
            "UniswapLiquiditySwapAdapter": [
              2676
            ]
          },
          "id": 2677,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1964,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:3"
            },
            {
              "id": 1965,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "61:33:3"
            },
            {
              "absolutePath": "contracts/adapters/BaseUniswapAdapter.sol",
              "file": "./BaseUniswapAdapter.sol",
              "id": 1967,
              "nodeType": "ImportDirective",
              "scope": 2677,
              "sourceUnit": 1558,
              "src": "96:60:3",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 1966,
                    "name": "BaseUniswapAdapter",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "104:18:3",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPoolAddressesProvider.sol",
              "file": "../interfaces/ILendingPoolAddressesProvider.sol",
              "id": 1969,
              "nodeType": "ImportDirective",
              "scope": 2677,
              "sourceUnit": 6618,
              "src": "157:94:3",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 1968,
                    "name": "ILendingPoolAddressesProvider",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "165:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IUniswapV2Router02.sol",
              "file": "../interfaces/IUniswapV2Router02.sol",
              "id": 1971,
              "nodeType": "ImportDirective",
              "scope": 2677,
              "sourceUnit": 7441,
              "src": "252:72:3",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 1970,
                    "name": "IUniswapV2Router02",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "260:18:3",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
              "file": "../dependencies/openzeppelin/contracts/IERC20.sol",
              "id": 1973,
              "nodeType": "ImportDirective",
              "scope": 2677,
              "sourceUnit": 4013,
              "src": "325:73:3",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 1972,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "333:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 1975,
                    "name": "BaseUniswapAdapter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1557,
                    "src": "552:18:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BaseUniswapAdapter_$1557",
                      "typeString": "contract BaseUniswapAdapter"
                    }
                  },
                  "id": 1976,
                  "nodeType": "InheritanceSpecifier",
                  "src": "552:18:3"
                }
              ],
              "contractDependencies": [
                1557,
                3340,
                3427,
                4143,
                5511,
                5547
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 1974,
                "nodeType": "StructuredDocumentation",
                "src": "400:111:3",
                "text": " @title UniswapLiquiditySwapAdapter\n @notice Uniswap V2 Adapter to swap liquidity.\n @author Aave*"
              },
              "fullyImplemented": true,
              "id": 2676,
              "linearizedBaseContracts": [
                2676,
                1557,
                4143,
                3427,
                3340,
                5511,
                5547
              ],
              "name": "UniswapLiquiditySwapAdapter",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "UniswapLiquiditySwapAdapter.PermitParams",
                  "id": 1992,
                  "members": [
                    {
                      "constant": false,
                      "id": 1979,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1992,
                      "src": "601:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1977,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "601:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1978,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "601:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1982,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1992,
                      "src": "623:18:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1980,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "623:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1981,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "623:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1985,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1992,
                      "src": "647:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                        "typeString": "uint8[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1983,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "647:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 1984,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "647:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                          "typeString": "uint8[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1988,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1992,
                      "src": "662:11:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1986,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "662:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 1987,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "662:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1991,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1992,
                      "src": "679:11:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1989,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "679:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 1990,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "679:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "PermitParams",
                  "nodeType": "StructDefinition",
                  "scope": 2676,
                  "src": "575:120:3",
                  "visibility": "public"
                },
                {
                  "canonicalName": "UniswapLiquiditySwapAdapter.SwapParams",
                  "id": 2007,
                  "members": [
                    {
                      "constant": false,
                      "id": 1995,
                      "mutability": "mutable",
                      "name": "assetToSwapToList",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2007,
                      "src": "723:27:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1993,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "723:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1994,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "723:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1998,
                      "mutability": "mutable",
                      "name": "minAmountsToReceive",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2007,
                      "src": "756:29:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1996,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "756:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1997,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "756:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2001,
                      "mutability": "mutable",
                      "name": "swapAllBalance",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2007,
                      "src": "791:21:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                        "typeString": "bool[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1999,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "791:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2000,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "791:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                          "typeString": "bool[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2003,
                      "mutability": "mutable",
                      "name": "permitParams",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2007,
                      "src": "818:25:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PermitParams_$1992_storage_ptr",
                        "typeString": "struct UniswapLiquiditySwapAdapter.PermitParams"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2002,
                        "name": "PermitParams",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1992,
                        "src": "818:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PermitParams_$1992_storage_ptr",
                          "typeString": "struct UniswapLiquiditySwapAdapter.PermitParams"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2006,
                      "mutability": "mutable",
                      "name": "useEthPath",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2007,
                      "src": "849:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                        "typeString": "bool[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2004,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "849:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2005,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "849:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                          "typeString": "bool[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "SwapParams",
                  "nodeType": "StructDefinition",
                  "scope": 2676,
                  "src": "699:172:3",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2021,
                    "nodeType": "Block",
                    "src": "1080:2:3",
                    "statements": []
                  },
                  "documentation": null,
                  "id": 2022,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2016,
                          "name": "addressesProvider",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2009,
                          "src": "1033:17:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                            "typeString": "contract ILendingPoolAddressesProvider"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2017,
                          "name": "uniswapRouter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2011,
                          "src": "1052:13:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                            "typeString": "contract IUniswapV2Router02"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2018,
                          "name": "wethAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2013,
                          "src": "1067:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 2019,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 2015,
                        "name": "BaseUniswapAdapter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1557,
                        "src": "1014:18:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_BaseUniswapAdapter_$1557_$",
                          "typeString": "type(contract BaseUniswapAdapter)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1014:65:3"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2014,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2009,
                        "mutability": "mutable",
                        "name": "addressesProvider",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2022,
                        "src": "892:47:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                          "typeString": "contract ILendingPoolAddressesProvider"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2008,
                          "name": "ILendingPoolAddressesProvider",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6617,
                          "src": "892:29:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                            "typeString": "contract ILendingPoolAddressesProvider"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2011,
                        "mutability": "mutable",
                        "name": "uniswapRouter",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2022,
                        "src": "945:32:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                          "typeString": "contract IUniswapV2Router02"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2010,
                          "name": "IUniswapV2Router02",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 7440,
                          "src": "945:18:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                            "typeString": "contract IUniswapV2Router02"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2013,
                        "mutability": "mutable",
                        "name": "wethAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2022,
                        "src": "983:19:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2012,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "983:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "886:120:3"
                  },
                  "returnParameters": {
                    "id": 2020,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1080:0:3"
                  },
                  "scope": 2676,
                  "src": "875:207:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    5536
                  ],
                  "body": {
                    "id": 2201,
                    "nodeType": "Block",
                    "src": "2526:1399:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2049,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2043,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "2540:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 2044,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2540:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2047,
                                    "name": "LENDING_POOL",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5492,
                                    "src": "2562:12:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                      "typeString": "contract ILendingPool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                      "typeString": "contract ILendingPool"
                                    }
                                  ],
                                  "id": 2046,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2554:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2045,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2554:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 2048,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2554:21:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2540:35:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "43414c4c45525f4d5553545f42455f4c454e44494e475f504f4f4c",
                              "id": 2050,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2577:29:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1a9f77295f7c883a551d4230bdbf48f1affdf43c109506e39540643d43cc3b79",
                                "typeString": "literal_string \"CALLER_MUST_BE_LENDING_POOL\""
                              },
                              "value": "CALLER_MUST_BE_LENDING_POOL"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1a9f77295f7c883a551d4230bdbf48f1affdf43c109506e39540643d43cc3b79",
                                "typeString": "literal_string \"CALLER_MUST_BE_LENDING_POOL\""
                              }
                            ],
                            "id": 2042,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2532:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2532:75:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2052,
                        "nodeType": "ExpressionStatement",
                        "src": "2532:75:3"
                      },
                      {
                        "assignments": [
                          2054
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2054,
                            "mutability": "mutable",
                            "name": "decodedParams",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2201,
                            "src": "2614:31:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_SwapParams_$2007_memory_ptr",
                              "typeString": "struct UniswapLiquiditySwapAdapter.SwapParams"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2053,
                              "name": "SwapParams",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2007,
                              "src": "2614:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SwapParams_$2007_storage_ptr",
                                "typeString": "struct UniswapLiquiditySwapAdapter.SwapParams"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2058,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2056,
                              "name": "params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2036,
                              "src": "2662:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 2055,
                            "name": "_decodeParams",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2675,
                            "src": "2648:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_struct$_SwapParams_$2007_memory_ptr_$",
                              "typeString": "function (bytes memory) pure returns (struct UniswapLiquiditySwapAdapter.SwapParams memory)"
                            }
                          },
                          "id": 2057,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2648:21:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SwapParams_$2007_memory_ptr",
                            "typeString": "struct UniswapLiquiditySwapAdapter.SwapParams memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2614:55:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2126,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 2119,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 2111,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 2103,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 2095,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "id": 2087,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "id": 2079,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            "id": 2072,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 2065,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 2060,
                                                  "name": "assets",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 2026,
                                                  "src": "2691:6:3",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                                    "typeString": "address[] calldata"
                                                  }
                                                },
                                                "id": 2061,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "length",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": null,
                                                "src": "2691:13:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "==",
                                              "rightExpression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 2062,
                                                    "name": "decodedParams",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2054,
                                                    "src": "2708:13:3",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_SwapParams_$2007_memory_ptr",
                                                      "typeString": "struct UniswapLiquiditySwapAdapter.SwapParams memory"
                                                    }
                                                  },
                                                  "id": 2063,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "assetToSwapToList",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 1995,
                                                  "src": "2708:31:3",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                    "typeString": "address[] memory"
                                                  }
                                                },
                                                "id": 2064,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "length",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": null,
                                                "src": "2708:38:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "2691:55:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "&&",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 2071,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 2066,
                                                  "name": "assets",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 2026,
                                                  "src": "2758:6:3",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                                    "typeString": "address[] calldata"
                                                  }
                                                },
                                                "id": 2067,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "length",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": null,
                                                "src": "2758:13:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "==",
                                              "rightExpression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 2068,
                                                    "name": "decodedParams",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2054,
                                                    "src": "2775:13:3",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_SwapParams_$2007_memory_ptr",
                                                      "typeString": "struct UniswapLiquiditySwapAdapter.SwapParams memory"
                                                    }
                                                  },
                                                  "id": 2069,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "minAmountsToReceive",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 1998,
                                                  "src": "2775:33:3",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                    "typeString": "uint256[] memory"
                                                  }
                                                },
                                                "id": 2070,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "length",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": null,
                                                "src": "2775:40:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "2758:57:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "src": "2691:124:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "&&",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 2078,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 2073,
                                                "name": "assets",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2026,
                                                "src": "2827:6:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                                  "typeString": "address[] calldata"
                                                }
                                              },
                                              "id": 2074,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "length",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "2827:13:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 2075,
                                                  "name": "decodedParams",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 2054,
                                                  "src": "2844:13:3",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_SwapParams_$2007_memory_ptr",
                                                    "typeString": "struct UniswapLiquiditySwapAdapter.SwapParams memory"
                                                  }
                                                },
                                                "id": 2076,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "swapAllBalance",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 2001,
                                                "src": "2844:28:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                                                  "typeString": "bool[] memory"
                                                }
                                              },
                                              "id": 2077,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "length",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "2844:35:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "2827:52:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "src": "2691:188:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "&&",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 2086,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2080,
                                              "name": "assets",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2026,
                                              "src": "2891:6:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                                "typeString": "address[] calldata"
                                              }
                                            },
                                            "id": 2081,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "2891:13:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 2082,
                                                  "name": "decodedParams",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 2054,
                                                  "src": "2908:13:3",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_SwapParams_$2007_memory_ptr",
                                                    "typeString": "struct UniswapLiquiditySwapAdapter.SwapParams memory"
                                                  }
                                                },
                                                "id": 2083,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "permitParams",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 2003,
                                                "src": "2908:26:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_PermitParams_$1992_memory_ptr",
                                                  "typeString": "struct UniswapLiquiditySwapAdapter.PermitParams memory"
                                                }
                                              },
                                              "id": 2084,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "amount",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 1979,
                                              "src": "2908:33:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                "typeString": "uint256[] memory"
                                              }
                                            },
                                            "id": 2085,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "2908:40:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "2891:57:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "src": "2691:257:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "&&",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 2094,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2088,
                                            "name": "assets",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2026,
                                            "src": "2960:6:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                              "typeString": "address[] calldata"
                                            }
                                          },
                                          "id": 2089,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "length",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "2960:13:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 2090,
                                                "name": "decodedParams",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2054,
                                                "src": "2977:13:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_SwapParams_$2007_memory_ptr",
                                                  "typeString": "struct UniswapLiquiditySwapAdapter.SwapParams memory"
                                                }
                                              },
                                              "id": 2091,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "permitParams",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 2003,
                                              "src": "2977:26:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PermitParams_$1992_memory_ptr",
                                                "typeString": "struct UniswapLiquiditySwapAdapter.PermitParams memory"
                                              }
                                            },
                                            "id": 2092,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "deadline",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1982,
                                            "src": "2977:35:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                              "typeString": "uint256[] memory"
                                            }
                                          },
                                          "id": 2093,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "length",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "2977:42:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "2960:59:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "src": "2691:328:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 2102,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2096,
                                          "name": "assets",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2026,
                                          "src": "3031:6:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                            "typeString": "address[] calldata"
                                          }
                                        },
                                        "id": 2097,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "length",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "3031:13:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2098,
                                              "name": "decodedParams",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2054,
                                              "src": "3048:13:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_SwapParams_$2007_memory_ptr",
                                                "typeString": "struct UniswapLiquiditySwapAdapter.SwapParams memory"
                                              }
                                            },
                                            "id": 2099,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "permitParams",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2003,
                                            "src": "3048:26:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PermitParams_$1992_memory_ptr",
                                              "typeString": "struct UniswapLiquiditySwapAdapter.PermitParams memory"
                                            }
                                          },
                                          "id": 2100,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "v",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1985,
                                          "src": "3048:28:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                            "typeString": "uint8[] memory"
                                          }
                                        },
                                        "id": 2101,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "length",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "3048:35:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "3031:52:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "2691:392:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2110,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2104,
                                        "name": "assets",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2026,
                                        "src": "3095:6:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 2105,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "3095:13:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2106,
                                            "name": "decodedParams",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2054,
                                            "src": "3112:13:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_SwapParams_$2007_memory_ptr",
                                              "typeString": "struct UniswapLiquiditySwapAdapter.SwapParams memory"
                                            }
                                          },
                                          "id": 2107,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "permitParams",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2003,
                                          "src": "3112:26:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PermitParams_$1992_memory_ptr",
                                            "typeString": "struct UniswapLiquiditySwapAdapter.PermitParams memory"
                                          }
                                        },
                                        "id": 2108,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "r",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 1988,
                                        "src": "3112:28:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                          "typeString": "bytes32[] memory"
                                        }
                                      },
                                      "id": 2109,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "3112:35:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "3095:52:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "2691:456:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2118,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2112,
                                      "name": "assets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2026,
                                      "src": "3159:6:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 2113,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "3159:13:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2114,
                                          "name": "decodedParams",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2054,
                                          "src": "3176:13:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_SwapParams_$2007_memory_ptr",
                                            "typeString": "struct UniswapLiquiditySwapAdapter.SwapParams memory"
                                          }
                                        },
                                        "id": 2115,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "permitParams",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2003,
                                        "src": "3176:26:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PermitParams_$1992_memory_ptr",
                                          "typeString": "struct UniswapLiquiditySwapAdapter.PermitParams memory"
                                        }
                                      },
                                      "id": 2116,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "s",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1991,
                                      "src": "3176:28:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                        "typeString": "bytes32[] memory"
                                      }
                                    },
                                    "id": 2117,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "3176:35:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "3159:52:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "2691:520:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2125,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2120,
                                    "name": "assets",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2026,
                                    "src": "3223:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 2121,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "3223:13:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2122,
                                      "name": "decodedParams",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2054,
                                      "src": "3240:13:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SwapParams_$2007_memory_ptr",
                                        "typeString": "struct UniswapLiquiditySwapAdapter.SwapParams memory"
                                      }
                                    },
                                    "id": 2123,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "useEthPath",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2006,
                                    "src": "3240:24:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                                      "typeString": "bool[] memory"
                                    }
                                  },
                                  "id": 2124,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "3240:31:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3223:48:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2691:580:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e434f4e53495354454e545f504152414d53",
                              "id": 2127,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3279:21:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c90a2b394d579b6dcff388a4e6c10c40aa60af357ae15715043426195953765b",
                                "typeString": "literal_string \"INCONSISTENT_PARAMS\""
                              },
                              "value": "INCONSISTENT_PARAMS"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c90a2b394d579b6dcff388a4e6c10c40aa60af357ae15715043426195953765b",
                                "typeString": "literal_string \"INCONSISTENT_PARAMS\""
                              }
                            ],
                            "id": 2059,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2676:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2128,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2676:630:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2129,
                        "nodeType": "ExpressionStatement",
                        "src": "2676:630:3"
                      },
                      {
                        "body": {
                          "id": 2197,
                          "nodeType": "Block",
                          "src": "3357:546:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 2142,
                                      "name": "assets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2026,
                                      "src": "3389:6:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 2144,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 2143,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2131,
                                      "src": "3396:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3389:9:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2145,
                                        "name": "decodedParams",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2054,
                                        "src": "3408:13:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SwapParams_$2007_memory_ptr",
                                          "typeString": "struct UniswapLiquiditySwapAdapter.SwapParams memory"
                                        }
                                      },
                                      "id": 2146,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "assetToSwapToList",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1995,
                                      "src": "3408:31:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 2148,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 2147,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2131,
                                      "src": "3440:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3408:34:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 2149,
                                      "name": "amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2029,
                                      "src": "3452:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 2151,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 2150,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2131,
                                      "src": "3460:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3452:10:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 2152,
                                      "name": "premiums",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2032,
                                      "src": "3472:8:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 2154,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 2153,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2131,
                                      "src": "3481:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3472:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2155,
                                    "name": "initiator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2034,
                                    "src": "3493:9:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2156,
                                        "name": "decodedParams",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2054,
                                        "src": "3512:13:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SwapParams_$2007_memory_ptr",
                                          "typeString": "struct UniswapLiquiditySwapAdapter.SwapParams memory"
                                        }
                                      },
                                      "id": 2157,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "minAmountsToReceive",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1998,
                                      "src": "3512:33:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 2159,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 2158,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2131,
                                      "src": "3546:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3512:36:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2160,
                                        "name": "decodedParams",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2054,
                                        "src": "3558:13:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SwapParams_$2007_memory_ptr",
                                          "typeString": "struct UniswapLiquiditySwapAdapter.SwapParams memory"
                                        }
                                      },
                                      "id": 2161,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "swapAllBalance",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2001,
                                      "src": "3558:28:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                                        "typeString": "bool[] memory"
                                      }
                                    },
                                    "id": 2163,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 2162,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2131,
                                      "src": "3587:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3558:31:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2165,
                                              "name": "decodedParams",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2054,
                                              "src": "3626:13:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_SwapParams_$2007_memory_ptr",
                                                "typeString": "struct UniswapLiquiditySwapAdapter.SwapParams memory"
                                              }
                                            },
                                            "id": 2166,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "permitParams",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2003,
                                            "src": "3626:26:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PermitParams_$1992_memory_ptr",
                                              "typeString": "struct UniswapLiquiditySwapAdapter.PermitParams memory"
                                            }
                                          },
                                          "id": 2167,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "amount",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1979,
                                          "src": "3626:33:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        "id": 2169,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 2168,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2131,
                                          "src": "3660:1:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "3626:36:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2170,
                                              "name": "decodedParams",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2054,
                                              "src": "3674:13:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_SwapParams_$2007_memory_ptr",
                                                "typeString": "struct UniswapLiquiditySwapAdapter.SwapParams memory"
                                              }
                                            },
                                            "id": 2171,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "permitParams",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2003,
                                            "src": "3674:26:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PermitParams_$1992_memory_ptr",
                                              "typeString": "struct UniswapLiquiditySwapAdapter.PermitParams memory"
                                            }
                                          },
                                          "id": 2172,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "deadline",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1982,
                                          "src": "3674:35:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        "id": 2174,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 2173,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2131,
                                          "src": "3710:1:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "3674:38:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2175,
                                              "name": "decodedParams",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2054,
                                              "src": "3724:13:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_SwapParams_$2007_memory_ptr",
                                                "typeString": "struct UniswapLiquiditySwapAdapter.SwapParams memory"
                                              }
                                            },
                                            "id": 2176,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "permitParams",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2003,
                                            "src": "3724:26:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PermitParams_$1992_memory_ptr",
                                              "typeString": "struct UniswapLiquiditySwapAdapter.PermitParams memory"
                                            }
                                          },
                                          "id": 2177,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "v",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1985,
                                          "src": "3724:28:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                            "typeString": "uint8[] memory"
                                          }
                                        },
                                        "id": 2179,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 2178,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2131,
                                          "src": "3753:1:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "3724:31:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2180,
                                              "name": "decodedParams",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2054,
                                              "src": "3767:13:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_SwapParams_$2007_memory_ptr",
                                                "typeString": "struct UniswapLiquiditySwapAdapter.SwapParams memory"
                                              }
                                            },
                                            "id": 2181,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "permitParams",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2003,
                                            "src": "3767:26:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PermitParams_$1992_memory_ptr",
                                              "typeString": "struct UniswapLiquiditySwapAdapter.PermitParams memory"
                                            }
                                          },
                                          "id": 2182,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "r",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1988,
                                          "src": "3767:28:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                            "typeString": "bytes32[] memory"
                                          }
                                        },
                                        "id": 2184,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 2183,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2131,
                                          "src": "3796:1:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "3767:31:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2185,
                                              "name": "decodedParams",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2054,
                                              "src": "3810:13:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_SwapParams_$2007_memory_ptr",
                                                "typeString": "struct UniswapLiquiditySwapAdapter.SwapParams memory"
                                              }
                                            },
                                            "id": 2186,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "permitParams",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2003,
                                            "src": "3810:26:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PermitParams_$1992_memory_ptr",
                                              "typeString": "struct UniswapLiquiditySwapAdapter.PermitParams memory"
                                            }
                                          },
                                          "id": 2187,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "s",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1991,
                                          "src": "3810:28:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                            "typeString": "bytes32[] memory"
                                          }
                                        },
                                        "id": 2189,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 2188,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2131,
                                          "src": "3839:1:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "3810:31:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 2164,
                                      "name": "PermitSignature",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3255,
                                      "src": "3599:15:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_struct$_PermitSignature_$3255_storage_ptr_$",
                                        "typeString": "type(struct IBaseUniswapAdapter.PermitSignature storage pointer)"
                                      }
                                    },
                                    "id": 2190,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "structConstructorCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3599:252:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PermitSignature_$3255_memory_ptr",
                                      "typeString": "struct IBaseUniswapAdapter.PermitSignature memory"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2191,
                                        "name": "decodedParams",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2054,
                                        "src": "3861:13:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SwapParams_$2007_memory_ptr",
                                          "typeString": "struct UniswapLiquiditySwapAdapter.SwapParams memory"
                                        }
                                      },
                                      "id": 2192,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "useEthPath",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2006,
                                      "src": "3861:24:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                                        "typeString": "bool[] memory"
                                      }
                                    },
                                    "id": 2194,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 2193,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2131,
                                      "src": "3886:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3861:27:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_PermitSignature_$3255_memory_ptr",
                                      "typeString": "struct IBaseUniswapAdapter.PermitSignature memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 2141,
                                  "name": "_swapLiquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2590,
                                  "src": "3365:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_bool_$_t_struct$_PermitSignature_$3255_memory_ptr_$_t_bool_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256,address,uint256,bool,struct IBaseUniswapAdapter.PermitSignature memory,bool)"
                                  }
                                },
                                "id": 2195,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3365:531:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2196,
                              "nodeType": "ExpressionStatement",
                              "src": "3365:531:3"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2137,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2134,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2131,
                            "src": "3333:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2135,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2026,
                              "src": "3337:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 2136,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3337:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3333:17:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2198,
                        "initializationExpression": {
                          "assignments": [
                            2131
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2131,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 2198,
                              "src": "3318:9:3",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2130,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3318:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 2133,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2132,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3330:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3318:13:3"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2139,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "3352:3:3",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 2138,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2131,
                              "src": "3352:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2140,
                          "nodeType": "ExpressionStatement",
                          "src": "3352:3:3"
                        },
                        "nodeType": "ForStatement",
                        "src": "3313:590:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 2199,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3916:4:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 2041,
                        "id": 2200,
                        "nodeType": "Return",
                        "src": "3909:11:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2023,
                    "nodeType": "StructuredDocumentation",
                    "src": "1086:1228:3",
                    "text": " @dev Swaps the received reserve amount from the flash loan into the asset specified in the params.\n The received funds from the swap are then deposited into the protocol on behalf of the user.\n The user should give this contract allowance to pull the ATokens in order to withdraw the underlying asset and\n repay the flash loan.\n @param assets Address of asset to be swapped\n @param amounts Amount of the asset to be swapped\n @param premiums Fee of the flash loan\n @param initiator Address of the user\n @param params Additional variadic field to include extra params. Expected parameters:\n   address[] assetToSwapToList List of the addresses of the reserve to be swapped to and deposited\n   uint256[] minAmountsToReceive List of min amounts to be received from the swap\n   bool[] swapAllBalance Flag indicating if all the user balance should be swapped\n   uint256[] permitAmount List of amounts for the permit signature\n   uint256[] deadline List of deadlines for the permit signature\n   uint8[] v List of v param for the permit signature\n   bytes32[] r List of r param for the permit signature\n   bytes32[] s List of s param for the permit signature"
                  },
                  "functionSelector": "920f5c84",
                  "id": 2202,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "executeOperation",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2038,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2502:8:3"
                  },
                  "parameters": {
                    "id": 2037,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2026,
                        "mutability": "mutable",
                        "name": "assets",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2202,
                        "src": "2348:25:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2024,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2348:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2025,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2348:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2029,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2202,
                        "src": "2379:26:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2027,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2379:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2028,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2379:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2032,
                        "mutability": "mutable",
                        "name": "premiums",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2202,
                        "src": "2411:27:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2030,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2411:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2031,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2411:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2034,
                        "mutability": "mutable",
                        "name": "initiator",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2202,
                        "src": "2444:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2033,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2444:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2036,
                        "mutability": "mutable",
                        "name": "params",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2202,
                        "src": "2467:21:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2035,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2467:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2342:150:3"
                  },
                  "returnParameters": {
                    "id": 2041,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2040,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2202,
                        "src": "2520:4:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2039,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2520:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2519:6:3"
                  },
                  "scope": 2676,
                  "src": "2317:1608:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "canonicalName": "UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars",
                  "id": 2213,
                  "members": [
                    {
                      "constant": false,
                      "id": 2204,
                      "mutability": "mutable",
                      "name": "i",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2213,
                      "src": "3966:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2203,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3966:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2206,
                      "mutability": "mutable",
                      "name": "aTokenInitiatorBalance",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2213,
                      "src": "3981:30:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2205,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3981:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2208,
                      "mutability": "mutable",
                      "name": "amountToSwap",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2213,
                      "src": "4017:20:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2207,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4017:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2210,
                      "mutability": "mutable",
                      "name": "receivedAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2213,
                      "src": "4043:22:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2209,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4043:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2212,
                      "mutability": "mutable",
                      "name": "aToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2213,
                      "src": "4071:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2211,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4071:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "SwapAndDepositLocalVars",
                  "nodeType": "StructDefinition",
                  "scope": 2676,
                  "src": "3929:161:3",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2411,
                    "nodeType": "Block",
                    "src": "5636:1431:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2258,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 2252,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 2246,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2240,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2236,
                                        "name": "assetToSwapFromList",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2217,
                                        "src": "5657:19:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 2237,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "5657:26:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2238,
                                        "name": "assetToSwapToList",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2220,
                                        "src": "5687:17:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 2239,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "5687:24:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "5657:54:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2245,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2241,
                                        "name": "assetToSwapFromList",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2217,
                                        "src": "5723:19:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 2242,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "5723:26:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2243,
                                        "name": "amountToSwapList",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2223,
                                        "src": "5753:16:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                          "typeString": "uint256[] calldata"
                                        }
                                      },
                                      "id": 2244,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "5753:23:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "5723:53:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "5657:119:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2251,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2247,
                                      "name": "assetToSwapFromList",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2217,
                                      "src": "5788:19:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 2248,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "5788:26:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2249,
                                      "name": "minAmountsToReceive",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2226,
                                      "src": "5818:19:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 2250,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "5818:26:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5788:56:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "5657:187:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2257,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2253,
                                    "name": "assetToSwapFromList",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2217,
                                    "src": "5856:19:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 2254,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5856:26:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2255,
                                    "name": "permitParams",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2229,
                                    "src": "5886:12:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_PermitSignature_$3255_calldata_ptr_$dyn_calldata_ptr",
                                      "typeString": "struct IBaseUniswapAdapter.PermitSignature calldata[] calldata"
                                    }
                                  },
                                  "id": 2256,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5886:19:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5856:49:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5657:248:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e434f4e53495354454e545f504152414d53",
                              "id": 2259,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5913:21:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c90a2b394d579b6dcff388a4e6c10c40aa60af357ae15715043426195953765b",
                                "typeString": "literal_string \"INCONSISTENT_PARAMS\""
                              },
                              "value": "INCONSISTENT_PARAMS"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c90a2b394d579b6dcff388a4e6c10c40aa60af357ae15715043426195953765b",
                                "typeString": "literal_string \"INCONSISTENT_PARAMS\""
                              }
                            ],
                            "id": 2235,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5642:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2260,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5642:298:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2261,
                        "nodeType": "ExpressionStatement",
                        "src": "5642:298:3"
                      },
                      {
                        "assignments": [
                          2263
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2263,
                            "mutability": "mutable",
                            "name": "vars",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2411,
                            "src": "5947:35:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                              "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2262,
                              "name": "SwapAndDepositLocalVars",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2213,
                              "src": "5947:23:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_storage_ptr",
                                "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2264,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5947:35:3"
                      },
                      {
                        "body": {
                          "id": 2409,
                          "nodeType": "Block",
                          "src": "6053:1010:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2290,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2280,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2263,
                                    "src": "6061:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                                      "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars memory"
                                    }
                                  },
                                  "id": 2282,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "aToken",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2212,
                                  "src": "6061:11:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 2284,
                                          "name": "assetToSwapFromList",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2217,
                                          "src": "6091:19:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                            "typeString": "address[] calldata"
                                          }
                                        },
                                        "id": 2287,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2285,
                                            "name": "vars",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2263,
                                            "src": "6111:4:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                                              "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars memory"
                                            }
                                          },
                                          "id": 2286,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "i",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2204,
                                          "src": "6111:6:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6091:27:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 2283,
                                      "name": "_getReserveData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 682,
                                      "src": "6075:15:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_struct$_ReserveData_$20520_memory_ptr_$",
                                        "typeString": "function (address) view returns (struct DataTypes.ReserveData memory)"
                                      }
                                    },
                                    "id": 2288,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6075:44:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                      "typeString": "struct DataTypes.ReserveData memory"
                                    }
                                  },
                                  "id": 2289,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "aTokenAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20511,
                                  "src": "6075:58:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "6061:72:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 2291,
                              "nodeType": "ExpressionStatement",
                              "src": "6061:72:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2303,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2292,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2263,
                                    "src": "6142:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                                      "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars memory"
                                    }
                                  },
                                  "id": 2294,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "aTokenInitiatorBalance",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2206,
                                  "src": "6142:27:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2300,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "6202:3:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 2301,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "6202:10:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2296,
                                            "name": "vars",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2263,
                                            "src": "6179:4:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                                              "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars memory"
                                            }
                                          },
                                          "id": 2297,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "aToken",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2212,
                                          "src": "6179:11:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 2295,
                                        "name": "IERC20",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4012,
                                        "src": "6172:6:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                          "typeString": "type(contract IERC20)"
                                        }
                                      },
                                      "id": 2298,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6172:19:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$4012",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 2299,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "balanceOf",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3951,
                                    "src": "6172:29:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address) view external returns (uint256)"
                                    }
                                  },
                                  "id": 2302,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6172:41:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6142:71:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2304,
                              "nodeType": "ExpressionStatement",
                              "src": "6142:71:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2322,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2305,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2263,
                                    "src": "6221:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                                      "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars memory"
                                    }
                                  },
                                  "id": 2307,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "amountToSwap",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2208,
                                  "src": "6221:17:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "condition": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2314,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 2308,
                                        "name": "amountToSwapList",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2223,
                                        "src": "6241:16:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                          "typeString": "uint256[] calldata"
                                        }
                                      },
                                      "id": 2311,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2309,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2263,
                                          "src": "6258:4:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                                            "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars memory"
                                          }
                                        },
                                        "id": 2310,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "i",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2204,
                                        "src": "6258:6:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "6241:24:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2312,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2263,
                                        "src": "6268:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                                          "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars memory"
                                        }
                                      },
                                      "id": 2313,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "aTokenInitiatorBalance",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2206,
                                      "src": "6268:27:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "6241:54:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 2317,
                                      "name": "amountToSwapList",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2223,
                                      "src": "6344:16:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 2320,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2318,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2263,
                                        "src": "6361:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                                          "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars memory"
                                        }
                                      },
                                      "id": 2319,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "i",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2204,
                                      "src": "6361:6:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6344:24:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2321,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "Conditional",
                                  "src": "6241:127:3",
                                  "trueExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2315,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2263,
                                      "src": "6306:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                                        "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars memory"
                                      }
                                    },
                                    "id": 2316,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "aTokenInitiatorBalance",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2206,
                                    "src": "6306:27:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6221:147:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2323,
                              "nodeType": "ExpressionStatement",
                              "src": "6221:147:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 2325,
                                      "name": "assetToSwapFromList",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2217,
                                      "src": "6398:19:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 2328,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2326,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2263,
                                        "src": "6418:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                                          "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars memory"
                                        }
                                      },
                                      "id": 2327,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "i",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2204,
                                      "src": "6418:6:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6398:27:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2329,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2263,
                                      "src": "6435:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                                        "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars memory"
                                      }
                                    },
                                    "id": 2330,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "aToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2212,
                                    "src": "6435:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2331,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "6456:3:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 2332,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "6456:10:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2333,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2263,
                                      "src": "6476:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                                        "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars memory"
                                      }
                                    },
                                    "id": 2334,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amountToSwap",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2208,
                                    "src": "6476:17:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 2335,
                                      "name": "permitParams",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2229,
                                      "src": "6503:12:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_PermitSignature_$3255_calldata_ptr_$dyn_calldata_ptr",
                                        "typeString": "struct IBaseUniswapAdapter.PermitSignature calldata[] calldata"
                                      }
                                    },
                                    "id": 2338,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2336,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2263,
                                        "src": "6516:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                                          "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars memory"
                                        }
                                      },
                                      "id": 2337,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "i",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2204,
                                      "src": "6516:6:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6503:20:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PermitSignature_$3255_calldata_ptr",
                                      "typeString": "struct IBaseUniswapAdapter.PermitSignature calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_PermitSignature_$3255_calldata_ptr",
                                      "typeString": "struct IBaseUniswapAdapter.PermitSignature calldata"
                                    }
                                  ],
                                  "id": 2324,
                                  "name": "_pullAToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 746,
                                  "src": "6377:11:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_struct$_PermitSignature_$3255_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,address,uint256,struct IBaseUniswapAdapter.PermitSignature memory)"
                                  }
                                },
                                "id": 2339,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6377:154:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2340,
                              "nodeType": "ExpressionStatement",
                              "src": "6377:154:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2364,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2341,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2263,
                                    "src": "6540:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                                      "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars memory"
                                    }
                                  },
                                  "id": 2343,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "receivedAmount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2210,
                                  "src": "6540:19:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 2345,
                                        "name": "assetToSwapFromList",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2217,
                                        "src": "6597:19:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 2348,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2346,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2263,
                                          "src": "6617:4:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                                            "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars memory"
                                          }
                                        },
                                        "id": 2347,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "i",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2204,
                                        "src": "6617:6:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "6597:27:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 2349,
                                        "name": "assetToSwapToList",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2220,
                                        "src": "6634:17:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 2352,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2350,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2263,
                                          "src": "6652:4:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                                            "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars memory"
                                          }
                                        },
                                        "id": 2351,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "i",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2204,
                                        "src": "6652:6:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "6634:25:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2353,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2263,
                                        "src": "6669:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                                          "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars memory"
                                        }
                                      },
                                      "id": 2354,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "amountToSwap",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2208,
                                      "src": "6669:17:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 2355,
                                        "name": "minAmountsToReceive",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2226,
                                        "src": "6696:19:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                          "typeString": "uint256[] calldata"
                                        }
                                      },
                                      "id": 2358,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2356,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2263,
                                          "src": "6716:4:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                                            "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars memory"
                                          }
                                        },
                                        "id": 2357,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "i",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2204,
                                        "src": "6716:6:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "6696:27:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 2359,
                                        "name": "useEthPath",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2232,
                                        "src": "6733:10:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_bool_$dyn_calldata_ptr",
                                          "typeString": "bool[] calldata"
                                        }
                                      },
                                      "id": 2362,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2360,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2263,
                                          "src": "6744:4:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                                            "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars memory"
                                          }
                                        },
                                        "id": 2361,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "i",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2204,
                                        "src": "6744:6:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "6733:18:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 2344,
                                    "name": "_swapExactTokensForTokens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 450,
                                    "src": "6562:25:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (address,address,uint256,uint256,bool) returns (uint256)"
                                    }
                                  },
                                  "id": 2363,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6562:197:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6540:219:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2365,
                              "nodeType": "ExpressionStatement",
                              "src": "6540:219:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2375,
                                        "name": "LENDING_POOL",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5492,
                                        "src": "6851:12:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                          "typeString": "contract ILendingPool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                          "typeString": "contract ILendingPool"
                                        }
                                      ],
                                      "id": 2374,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6843:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 2373,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6843:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 2376,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6843:21:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2377,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6866:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 2367,
                                          "name": "assetToSwapToList",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2220,
                                          "src": "6804:17:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                            "typeString": "address[] calldata"
                                          }
                                        },
                                        "id": 2370,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2368,
                                            "name": "vars",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2263,
                                            "src": "6822:4:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                                              "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars memory"
                                            }
                                          },
                                          "id": 2369,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "i",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2204,
                                          "src": "6822:6:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6804:25:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 2366,
                                      "name": "IERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4012,
                                      "src": "6797:6:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                        "typeString": "type(contract IERC20)"
                                      }
                                    },
                                    "id": 2371,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6797:33:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$4012",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 2372,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeApprove",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4247,
                                  "src": "6797:45:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 2378,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6797:71:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2379,
                              "nodeType": "ExpressionStatement",
                              "src": "6797:71:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2389,
                                        "name": "LENDING_POOL",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5492,
                                        "src": "6930:12:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                          "typeString": "contract ILendingPool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                          "typeString": "contract ILendingPool"
                                        }
                                      ],
                                      "id": 2388,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6922:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 2387,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6922:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 2390,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6922:21:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2391,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2263,
                                      "src": "6945:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                                        "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars memory"
                                      }
                                    },
                                    "id": 2392,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "receivedAmount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2210,
                                    "src": "6945:19:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 2381,
                                          "name": "assetToSwapToList",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2220,
                                          "src": "6883:17:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                            "typeString": "address[] calldata"
                                          }
                                        },
                                        "id": 2384,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2382,
                                            "name": "vars",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2263,
                                            "src": "6901:4:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                                              "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars memory"
                                            }
                                          },
                                          "id": 2383,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "i",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2204,
                                          "src": "6901:6:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6883:25:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 2380,
                                      "name": "IERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4012,
                                      "src": "6876:6:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                        "typeString": "type(contract IERC20)"
                                      }
                                    },
                                    "id": 2385,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6876:33:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$4012",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 2386,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeApprove",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4247,
                                  "src": "6876:45:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 2393,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6876:89:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2394,
                              "nodeType": "ExpressionStatement",
                              "src": "6876:89:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 2398,
                                      "name": "assetToSwapToList",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2220,
                                      "src": "6994:17:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 2401,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2399,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2263,
                                        "src": "7012:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                                          "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars memory"
                                        }
                                      },
                                      "id": 2400,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "i",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2204,
                                      "src": "7012:6:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6994:25:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2402,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2263,
                                      "src": "7021:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                                        "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars memory"
                                      }
                                    },
                                    "id": 2403,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "receivedAmount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2210,
                                    "src": "7021:19:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2404,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "7042:3:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 2405,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "7042:10:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2406,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7054:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2395,
                                    "name": "LENDING_POOL",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5492,
                                    "src": "6973:12:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                      "typeString": "contract ILendingPool"
                                    }
                                  },
                                  "id": 2397,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "deposit",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6245,
                                  "src": "6973:20:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint16_$returns$__$",
                                    "typeString": "function (address,uint256,address,uint16) external"
                                  }
                                },
                                "id": 2407,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6973:83:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2408,
                              "nodeType": "ExpressionStatement",
                              "src": "6973:83:3"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2271,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2263,
                              "src": "6006:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                                "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars memory"
                              }
                            },
                            "id": 2272,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "i",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2204,
                            "src": "6006:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2273,
                              "name": "assetToSwapFromList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2217,
                              "src": "6015:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 2274,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6015:26:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6006:35:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2410,
                        "initializationExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2269,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2265,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2263,
                                "src": "5994:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                                  "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars memory"
                                }
                              },
                              "id": 2267,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "i",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2204,
                              "src": "5994:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2268,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6003:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "5994:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2270,
                          "nodeType": "ExpressionStatement",
                          "src": "5994:10:3"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2278,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "6043:8:3",
                            "subExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2276,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2263,
                                "src": "6043:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SwapAndDepositLocalVars_$2213_memory_ptr",
                                  "typeString": "struct UniswapLiquiditySwapAdapter.SwapAndDepositLocalVars memory"
                                }
                              },
                              "id": 2277,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "i",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2204,
                              "src": "6043:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2279,
                          "nodeType": "ExpressionStatement",
                          "src": "6043:8:3"
                        },
                        "nodeType": "ForStatement",
                        "src": "5989:1074:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2214,
                    "nodeType": "StructuredDocumentation",
                    "src": "4094:1254:3",
                    "text": " @dev Swaps an amount of an asset to another and deposits the new asset amount on behalf of the user without using\n a flash loan. This method can be used when the temporary transfer of the collateral asset to this contract\n does not affect the user position.\n The user should give this contract allowance to pull the ATokens in order to withdraw the underlying asset and\n perform the swap.\n @param assetToSwapFromList List of addresses of the underlying asset to be swap from\n @param assetToSwapToList List of addresses of the underlying asset to be swap to and deposited\n @param amountToSwapList List of amounts to be swapped. If the amount exceeds the balance, the total balance is used for the swap\n @param minAmountsToReceive List of min amounts to be received from the swap\n @param permitParams List of struct containing the permit signatures\n   uint256 permitAmount Amount for the permit signature\n   uint256 deadline Deadline for the permit signature\n   uint8 v param for the permit signature\n   bytes32 r param for the permit signature\n   bytes32 s param for the permit signature\n @param useEthPath true if the swap needs to occur using ETH in the routing, false otherwise"
                  },
                  "functionSelector": "d51c9ed7",
                  "id": 2412,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "swapAndDeposit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2233,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2217,
                        "mutability": "mutable",
                        "name": "assetToSwapFromList",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2412,
                        "src": "5380:38:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2215,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5380:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2216,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "5380:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2220,
                        "mutability": "mutable",
                        "name": "assetToSwapToList",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2412,
                        "src": "5424:36:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2218,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5424:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2219,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "5424:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2223,
                        "mutability": "mutable",
                        "name": "amountToSwapList",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2412,
                        "src": "5466:35:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2221,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5466:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2222,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "5466:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2226,
                        "mutability": "mutable",
                        "name": "minAmountsToReceive",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2412,
                        "src": "5507:38:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2224,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5507:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2225,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "5507:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2229,
                        "mutability": "mutable",
                        "name": "permitParams",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2412,
                        "src": "5551:39:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_PermitSignature_$3255_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct IBaseUniswapAdapter.PermitSignature[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 2227,
                            "name": "PermitSignature",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 3255,
                            "src": "5551:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PermitSignature_$3255_storage_ptr",
                              "typeString": "struct IBaseUniswapAdapter.PermitSignature"
                            }
                          },
                          "id": 2228,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "5551:17:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_PermitSignature_$3255_storage_$dyn_storage_ptr",
                            "typeString": "struct IBaseUniswapAdapter.PermitSignature[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2232,
                        "mutability": "mutable",
                        "name": "useEthPath",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2412,
                        "src": "5596:26:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_calldata_ptr",
                          "typeString": "bool[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2230,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "5596:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 2231,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "5596:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                            "typeString": "bool[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5374:252:3"
                  },
                  "returnParameters": {
                    "id": 2234,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5636:0:3"
                  },
                  "scope": 2676,
                  "src": "5351:1716:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "canonicalName": "UniswapLiquiditySwapAdapter.SwapLiquidityLocalVars",
                  "id": 2425,
                  "members": [
                    {
                      "constant": false,
                      "id": 2414,
                      "mutability": "mutable",
                      "name": "aToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2425,
                      "src": "7794:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2413,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7794:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2416,
                      "mutability": "mutable",
                      "name": "aTokenInitiatorBalance",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2425,
                      "src": "7814:30:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2415,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7814:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2418,
                      "mutability": "mutable",
                      "name": "amountToSwap",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2425,
                      "src": "7850:20:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2417,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7850:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2420,
                      "mutability": "mutable",
                      "name": "receivedAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2425,
                      "src": "7876:22:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2419,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7876:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2422,
                      "mutability": "mutable",
                      "name": "flashLoanDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2425,
                      "src": "7904:21:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2421,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7904:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2424,
                      "mutability": "mutable",
                      "name": "amountToPull",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2425,
                      "src": "7931:20:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2423,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7931:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "SwapLiquidityLocalVars",
                  "nodeType": "StructDefinition",
                  "scope": 2676,
                  "src": "7758:198:3",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2589,
                    "nodeType": "Block",
                    "src": "8227:1092:3",
                    "statements": [
                      {
                        "assignments": [
                          2447
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2447,
                            "mutability": "mutable",
                            "name": "vars",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2589,
                            "src": "8233:34:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_SwapLiquidityLocalVars_$2425_memory_ptr",
                              "typeString": "struct UniswapLiquiditySwapAdapter.SwapLiquidityLocalVars"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2446,
                              "name": "SwapLiquidityLocalVars",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2425,
                              "src": "8233:22:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SwapLiquidityLocalVars_$2425_storage_ptr",
                                "typeString": "struct UniswapLiquiditySwapAdapter.SwapLiquidityLocalVars"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2448,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8233:34:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2456,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2449,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2447,
                              "src": "8274:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SwapLiquidityLocalVars_$2425_memory_ptr",
                                "typeString": "struct UniswapLiquiditySwapAdapter.SwapLiquidityLocalVars memory"
                              }
                            },
                            "id": 2451,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "aToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2414,
                            "src": "8274:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2453,
                                  "name": "assetFrom",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2427,
                                  "src": "8304:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2452,
                                "name": "_getReserveData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 682,
                                "src": "8288:15:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_struct$_ReserveData_$20520_memory_ptr_$",
                                  "typeString": "function (address) view returns (struct DataTypes.ReserveData memory)"
                                }
                              },
                              "id": 2454,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8288:26:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                "typeString": "struct DataTypes.ReserveData memory"
                              }
                            },
                            "id": 2455,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "aTokenAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20511,
                            "src": "8288:40:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "8274:54:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2457,
                        "nodeType": "ExpressionStatement",
                        "src": "8274:54:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2468,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2458,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2447,
                              "src": "8335:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SwapLiquidityLocalVars_$2425_memory_ptr",
                                "typeString": "struct UniswapLiquiditySwapAdapter.SwapLiquidityLocalVars memory"
                              }
                            },
                            "id": 2460,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "aTokenInitiatorBalance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2416,
                            "src": "8335:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2466,
                                "name": "initiator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2435,
                                "src": "8395:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2462,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2447,
                                      "src": "8372:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SwapLiquidityLocalVars_$2425_memory_ptr",
                                        "typeString": "struct UniswapLiquiditySwapAdapter.SwapLiquidityLocalVars memory"
                                      }
                                    },
                                    "id": 2463,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "aToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2414,
                                    "src": "8372:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2461,
                                  "name": "IERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4012,
                                  "src": "8365:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                    "typeString": "type(contract IERC20)"
                                  }
                                },
                                "id": 2464,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8365:19:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$4012",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 2465,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3951,
                              "src": "8365:29:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 2467,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8365:40:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8335:70:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2469,
                        "nodeType": "ExpressionStatement",
                        "src": "8335:70:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2470,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2447,
                              "src": "8411:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SwapLiquidityLocalVars_$2425_memory_ptr",
                                "typeString": "struct UniswapLiquiditySwapAdapter.SwapLiquidityLocalVars memory"
                              }
                            },
                            "id": 2472,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amountToSwap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2418,
                            "src": "8411:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2481,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2473,
                                "name": "swapAllBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2439,
                                "src": "8431:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2480,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2477,
                                      "name": "premium",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2433,
                                      "src": "8481:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2474,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2447,
                                        "src": "8449:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SwapLiquidityLocalVars_$2425_memory_ptr",
                                          "typeString": "struct UniswapLiquiditySwapAdapter.SwapLiquidityLocalVars memory"
                                        }
                                      },
                                      "id": 2475,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "aTokenInitiatorBalance",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2416,
                                      "src": "8449:27:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2476,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4346,
                                    "src": "8449:31:3",
                                    "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": 2478,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8449:40:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2479,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2431,
                                  "src": "8493:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8449:50:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "8431:68:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 2487,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2431,
                              "src": "8557:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2488,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "8431:132:3",
                            "trueExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2485,
                                  "name": "premium",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2433,
                                  "src": "8540:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2482,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2447,
                                    "src": "8508:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SwapLiquidityLocalVars_$2425_memory_ptr",
                                      "typeString": "struct UniswapLiquiditySwapAdapter.SwapLiquidityLocalVars memory"
                                    }
                                  },
                                  "id": 2483,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "aTokenInitiatorBalance",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2416,
                                  "src": "8508:27:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 2484,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4346,
                                "src": "8508:31:3",
                                "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": 2486,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8508:40:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8411:152:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2490,
                        "nodeType": "ExpressionStatement",
                        "src": "8411:152:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2502,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2491,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2447,
                              "src": "8570:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SwapLiquidityLocalVars_$2425_memory_ptr",
                                "typeString": "struct UniswapLiquiditySwapAdapter.SwapLiquidityLocalVars memory"
                              }
                            },
                            "id": 2493,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "receivedAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2420,
                            "src": "8570:19:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2495,
                                "name": "assetFrom",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2427,
                                "src": "8625:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2496,
                                "name": "assetTo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2429,
                                "src": "8642:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2497,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2447,
                                  "src": "8657:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_SwapLiquidityLocalVars_$2425_memory_ptr",
                                    "typeString": "struct UniswapLiquiditySwapAdapter.SwapLiquidityLocalVars memory"
                                  }
                                },
                                "id": 2498,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amountToSwap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2418,
                                "src": "8657:17:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2499,
                                "name": "minAmountToReceive",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2437,
                                "src": "8682:18:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2500,
                                "name": "useEthPath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2443,
                                "src": "8708:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "id": 2494,
                              "name": "_swapExactTokensForTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 450,
                              "src": "8592:25:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                "typeString": "function (address,address,uint256,uint256,bool) returns (uint256)"
                              }
                            },
                            "id": 2501,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8592:132:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8570:154:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2503,
                        "nodeType": "ExpressionStatement",
                        "src": "8570:154:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2510,
                                  "name": "LENDING_POOL",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5492,
                                  "src": "8794:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                ],
                                "id": 2509,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8786:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2508,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8786:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2511,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8786:21:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2512,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8809:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2505,
                                  "name": "assetTo",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2429,
                                  "src": "8765:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2504,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "8758:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 2506,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8758:15:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2507,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeApprove",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4247,
                            "src": "8758:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 2513,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8758:53:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2514,
                        "nodeType": "ExpressionStatement",
                        "src": "8758:53:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2521,
                                  "name": "LENDING_POOL",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5492,
                                  "src": "8853:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                ],
                                "id": 2520,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8845:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2519,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8845:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2522,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8845:21:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2523,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2447,
                                "src": "8868:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SwapLiquidityLocalVars_$2425_memory_ptr",
                                  "typeString": "struct UniswapLiquiditySwapAdapter.SwapLiquidityLocalVars memory"
                                }
                              },
                              "id": 2524,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "receivedAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2420,
                              "src": "8868:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2516,
                                  "name": "assetTo",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2429,
                                  "src": "8824:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2515,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "8817:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 2517,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8817:15:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2518,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeApprove",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4247,
                            "src": "8817:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 2525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8817:71:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2526,
                        "nodeType": "ExpressionStatement",
                        "src": "8817:71:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2530,
                              "name": "assetTo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2429,
                              "src": "8915:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2531,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2447,
                                "src": "8924:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SwapLiquidityLocalVars_$2425_memory_ptr",
                                  "typeString": "struct UniswapLiquiditySwapAdapter.SwapLiquidityLocalVars memory"
                                }
                              },
                              "id": 2532,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "receivedAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2420,
                              "src": "8924:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2533,
                              "name": "initiator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2435,
                              "src": "8945:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2534,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8956:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2527,
                              "name": "LENDING_POOL",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5492,
                              "src": "8894:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 2529,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "deposit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6245,
                            "src": "8894:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint16_$returns$__$",
                              "typeString": "function (address,uint256,address,uint16) external"
                            }
                          },
                          "id": 2535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8894:64:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2536,
                        "nodeType": "ExpressionStatement",
                        "src": "8894:64:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2544,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2537,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2447,
                              "src": "8965:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SwapLiquidityLocalVars_$2425_memory_ptr",
                                "typeString": "struct UniswapLiquiditySwapAdapter.SwapLiquidityLocalVars memory"
                              }
                            },
                            "id": 2539,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "flashLoanDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2422,
                            "src": "8965:18:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2542,
                                "name": "premium",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2433,
                                "src": "8997:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2540,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2431,
                                "src": "8986:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2541,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4329,
                              "src": "8986:10:3",
                              "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": 2543,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8986:19:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8965:40:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2545,
                        "nodeType": "ExpressionStatement",
                        "src": "8965:40:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2554,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2546,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2447,
                              "src": "9011:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SwapLiquidityLocalVars_$2425_memory_ptr",
                                "typeString": "struct UniswapLiquiditySwapAdapter.SwapLiquidityLocalVars memory"
                              }
                            },
                            "id": 2548,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amountToPull",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2424,
                            "src": "9011:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2552,
                                "name": "premium",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2433,
                                "src": "9053:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2549,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2447,
                                  "src": "9031:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_SwapLiquidityLocalVars_$2425_memory_ptr",
                                    "typeString": "struct UniswapLiquiditySwapAdapter.SwapLiquidityLocalVars memory"
                                  }
                                },
                                "id": 2550,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amountToSwap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2418,
                                "src": "9031:17:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2551,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4329,
                              "src": "9031:21:3",
                              "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": 2553,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9031:30:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9011:50:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2555,
                        "nodeType": "ExpressionStatement",
                        "src": "9011:50:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2557,
                              "name": "assetFrom",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2427,
                              "src": "9080:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2558,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2447,
                                "src": "9091:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SwapLiquidityLocalVars_$2425_memory_ptr",
                                  "typeString": "struct UniswapLiquiditySwapAdapter.SwapLiquidityLocalVars memory"
                                }
                              },
                              "id": 2559,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "aToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2414,
                              "src": "9091:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2560,
                              "name": "initiator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2435,
                              "src": "9104:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2561,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2447,
                                "src": "9115:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SwapLiquidityLocalVars_$2425_memory_ptr",
                                  "typeString": "struct UniswapLiquiditySwapAdapter.SwapLiquidityLocalVars memory"
                                }
                              },
                              "id": 2562,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "amountToPull",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2424,
                              "src": "9115:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2563,
                              "name": "permitSignature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2441,
                              "src": "9134:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PermitSignature_$3255_memory_ptr",
                                "typeString": "struct IBaseUniswapAdapter.PermitSignature memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_struct$_PermitSignature_$3255_memory_ptr",
                                "typeString": "struct IBaseUniswapAdapter.PermitSignature memory"
                              }
                            ],
                            "id": 2556,
                            "name": "_pullAToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 746,
                            "src": "9068:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_struct$_PermitSignature_$3255_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256,struct IBaseUniswapAdapter.PermitSignature memory)"
                            }
                          },
                          "id": 2564,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9068:82:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2565,
                        "nodeType": "ExpressionStatement",
                        "src": "9068:82:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2572,
                                  "name": "LENDING_POOL",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5492,
                                  "src": "9219:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                ],
                                "id": 2571,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9211:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2570,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9211:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2573,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9211:21:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2574,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9234:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2567,
                                  "name": "assetFrom",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2427,
                                  "src": "9188:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2566,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "9181:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 2568,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9181:17:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2569,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeApprove",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4247,
                            "src": "9181:29:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 2575,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9181:55:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2576,
                        "nodeType": "ExpressionStatement",
                        "src": "9181:55:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2583,
                                  "name": "LENDING_POOL",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5492,
                                  "src": "9280:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                ],
                                "id": 2582,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9272:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2581,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9272:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2584,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9272:21:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2585,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2447,
                                "src": "9295:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SwapLiquidityLocalVars_$2425_memory_ptr",
                                  "typeString": "struct UniswapLiquiditySwapAdapter.SwapLiquidityLocalVars memory"
                                }
                              },
                              "id": 2586,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "flashLoanDebt",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2422,
                              "src": "9295:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2578,
                                  "name": "assetFrom",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2427,
                                  "src": "9249:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2577,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "9242:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 2579,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9242:17:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2580,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeApprove",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4247,
                            "src": "9242:29:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 2587,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9242:72:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2588,
                        "nodeType": "ExpressionStatement",
                        "src": "9242:72:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 2590,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_swapLiquidity",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2444,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2427,
                        "mutability": "mutable",
                        "name": "assetFrom",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2590,
                        "src": "7989:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2426,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7989:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2429,
                        "mutability": "mutable",
                        "name": "assetTo",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2590,
                        "src": "8012:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2428,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8012:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2431,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2590,
                        "src": "8033:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2430,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8033:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2433,
                        "mutability": "mutable",
                        "name": "premium",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2590,
                        "src": "8053:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2432,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8053:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2435,
                        "mutability": "mutable",
                        "name": "initiator",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2590,
                        "src": "8074:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2434,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8074:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2437,
                        "mutability": "mutable",
                        "name": "minAmountToReceive",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2590,
                        "src": "8097:26:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2436,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8097:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2439,
                        "mutability": "mutable",
                        "name": "swapAllBalance",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2590,
                        "src": "8129:19:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2438,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8129:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2441,
                        "mutability": "mutable",
                        "name": "permitSignature",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2590,
                        "src": "8154:38:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PermitSignature_$3255_memory_ptr",
                          "typeString": "struct IBaseUniswapAdapter.PermitSignature"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2440,
                          "name": "PermitSignature",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3255,
                          "src": "8154:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PermitSignature_$3255_storage_ptr",
                            "typeString": "struct IBaseUniswapAdapter.PermitSignature"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2443,
                        "mutability": "mutable",
                        "name": "useEthPath",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2590,
                        "src": "8198:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2442,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8198:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7983:234:3"
                  },
                  "returnParameters": {
                    "id": 2445,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8227:0:3"
                  },
                  "scope": 2676,
                  "src": "7960:1359:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2674,
                    "nodeType": "Block",
                    "src": "10329:654:3",
                    "statements": [
                      {
                        "assignments": [
                          2602,
                          2605,
                          2608,
                          2611,
                          2614,
                          2617,
                          2620,
                          2623,
                          2626
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2602,
                            "mutability": "mutable",
                            "name": "assetToSwapToList",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2674,
                            "src": "10343:34:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 2600,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "10343:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 2601,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "10343:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2605,
                            "mutability": "mutable",
                            "name": "minAmountsToReceive",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2674,
                            "src": "10385:36:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 2603,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "10385:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2604,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "10385:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2608,
                            "mutability": "mutable",
                            "name": "swapAllBalance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2674,
                            "src": "10429:28:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                              "typeString": "bool[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 2606,
                                "name": "bool",
                                "nodeType": "ElementaryTypeName",
                                "src": "10429:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2607,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "10429:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                                "typeString": "bool[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2611,
                            "mutability": "mutable",
                            "name": "permitAmount",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2674,
                            "src": "10465:29:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 2609,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "10465:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2610,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "10465:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2614,
                            "mutability": "mutable",
                            "name": "deadline",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2674,
                            "src": "10502:25:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 2612,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "10502:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2613,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "10502:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2617,
                            "mutability": "mutable",
                            "name": "v",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2674,
                            "src": "10535:16:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                              "typeString": "uint8[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 2615,
                                "name": "uint8",
                                "nodeType": "ElementaryTypeName",
                                "src": "10535:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "id": 2616,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "10535:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                                "typeString": "uint8[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2620,
                            "mutability": "mutable",
                            "name": "r",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2674,
                            "src": "10559:18:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 2618,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "10559:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 2619,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "10559:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                "typeString": "bytes32[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2623,
                            "mutability": "mutable",
                            "name": "s",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2674,
                            "src": "10585:18:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 2621,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "10585:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 2622,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "10585:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                "typeString": "bytes32[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2626,
                            "mutability": "mutable",
                            "name": "useEthPath",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2674,
                            "src": "10611:24:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                              "typeString": "bool[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 2624,
                                "name": "bool",
                                "nodeType": "ElementaryTypeName",
                                "src": "10611:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2625,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "10611:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                                "typeString": "bool[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2659,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2629,
                              "name": "params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2593,
                              "src": "10670:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2631,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "10687:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 2630,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "10687:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 2632,
                                  "indexExpression": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10687:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_address_$dyn_memory_ptr_$",
                                    "typeString": "type(address[] memory)"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2634,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "10698:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 2633,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "10698:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 2635,
                                  "indexExpression": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10698:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "type(uint256[] memory)"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2637,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "10709:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bool_$",
                                      "typeString": "type(bool)"
                                    },
                                    "typeName": {
                                      "id": 2636,
                                      "name": "bool",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "10709:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 2638,
                                  "indexExpression": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10709:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_bool_$dyn_memory_ptr_$",
                                    "typeString": "type(bool[] memory)"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2640,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "10717:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 2639,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "10717:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 2641,
                                  "indexExpression": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10717:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "type(uint256[] memory)"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2643,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "10728:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 2642,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "10728:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 2644,
                                  "indexExpression": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10728:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "type(uint256[] memory)"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2646,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "10739:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint8_$",
                                      "typeString": "type(uint8)"
                                    },
                                    "typeName": {
                                      "id": 2645,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "10739:5:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 2647,
                                  "indexExpression": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10739:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_uint8_$dyn_memory_ptr_$",
                                    "typeString": "type(uint8[] memory)"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2649,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "10748:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 2648,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "10748:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 2650,
                                  "indexExpression": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10748:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                                    "typeString": "type(bytes32[] memory)"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2652,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "10759:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 2651,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "10759:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 2653,
                                  "indexExpression": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10759:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                                    "typeString": "type(bytes32[] memory)"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2655,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "10770:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bool_$",
                                      "typeString": "type(bool)"
                                    },
                                    "typeName": {
                                      "id": 2654,
                                      "name": "bool",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "10770:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 2656,
                                  "indexExpression": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10770:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_bool_$dyn_memory_ptr_$",
                                    "typeString": "type(bool[] memory)"
                                  }
                                }
                              ],
                              "id": 2657,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "10686:91:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_bool_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint8_$dyn_memory_ptr_$_$_t_type$_t_array$_t_bytes32_$dyn_memory_ptr_$_$_t_type$_t_array$_t_bytes32_$dyn_memory_ptr_$_$_t_type$_t_array$_t_bool_$dyn_memory_ptr_$_$",
                                "typeString": "tuple(type(address[] memory),type(uint256[] memory),type(bool[] memory),type(uint256[] memory),type(uint256[] memory),type(uint8[] memory),type(bytes32[] memory),type(bytes32[] memory),type(bool[] memory))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_bool_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint8_$dyn_memory_ptr_$_$_t_type$_t_array$_t_bytes32_$dyn_memory_ptr_$_$_t_type$_t_array$_t_bytes32_$dyn_memory_ptr_$_$_t_type$_t_array$_t_bool_$dyn_memory_ptr_$_$",
                                "typeString": "tuple(type(address[] memory),type(uint256[] memory),type(bool[] memory),type(uint256[] memory),type(uint256[] memory),type(uint8[] memory),type(bytes32[] memory),type(bytes32[] memory),type(bool[] memory))"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2627,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "10650:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 2628,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10650:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 2658,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10650:135:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_bool_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bool_$dyn_memory_ptr_$",
                            "typeString": "tuple(address[] memory,uint256[] memory,bool[] memory,uint256[] memory,uint256[] memory,uint8[] memory,bytes32[] memory,bytes32[] memory,bool[] memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10335:450:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2661,
                              "name": "assetToSwapToList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2602,
                              "src": "10825:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2662,
                              "name": "minAmountsToReceive",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2605,
                              "src": "10852:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2663,
                              "name": "swapAllBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2608,
                              "src": "10881:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                                "typeString": "bool[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2665,
                                  "name": "permitAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2611,
                                  "src": "10918:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2666,
                                  "name": "deadline",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2614,
                                  "src": "10932:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2667,
                                  "name": "v",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2617,
                                  "src": "10942:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                    "typeString": "uint8[] memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2668,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2620,
                                  "src": "10945:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                    "typeString": "bytes32[] memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2669,
                                  "name": "s",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2623,
                                  "src": "10948:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                    "typeString": "bytes32[] memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                    "typeString": "uint8[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                    "typeString": "bytes32[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                    "typeString": "bytes32[] memory"
                                  }
                                ],
                                "id": 2664,
                                "name": "PermitParams",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1992,
                                "src": "10905:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_PermitParams_$1992_storage_ptr_$",
                                  "typeString": "type(struct UniswapLiquiditySwapAdapter.PermitParams storage pointer)"
                                }
                              },
                              "id": 2670,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10905:45:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PermitParams_$1992_memory_ptr",
                                "typeString": "struct UniswapLiquiditySwapAdapter.PermitParams memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2671,
                              "name": "useEthPath",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2626,
                              "src": "10960:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                                "typeString": "bool[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                                "typeString": "bool[] memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_PermitParams_$1992_memory_ptr",
                                "typeString": "struct UniswapLiquiditySwapAdapter.PermitParams memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                                "typeString": "bool[] memory"
                              }
                            ],
                            "id": 2660,
                            "name": "SwapParams",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2007,
                            "src": "10805:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_struct$_SwapParams_$2007_storage_ptr_$",
                              "typeString": "type(struct UniswapLiquiditySwapAdapter.SwapParams storage pointer)"
                            }
                          },
                          "id": 2672,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "structConstructorCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10805:173:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SwapParams_$2007_memory_ptr",
                            "typeString": "struct UniswapLiquiditySwapAdapter.SwapParams memory"
                          }
                        },
                        "functionReturnParameters": 2597,
                        "id": 2673,
                        "nodeType": "Return",
                        "src": "10792:186:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2591,
                    "nodeType": "StructuredDocumentation",
                    "src": "9323:917:3",
                    "text": " @dev Decodes the information encoded in the flash loan params\n @param params Additional variadic field to include extra params. Expected parameters:\n   address[] assetToSwapToList List of the addresses of the reserve to be swapped to and deposited\n   uint256[] minAmountsToReceive List of min amounts to be received from the swap\n   bool[] swapAllBalance Flag indicating if all the user balance should be swapped\n   uint256[] permitAmount List of amounts for the permit signature\n   uint256[] deadline List of deadlines for the permit signature\n   uint8[] v List of v param for the permit signature\n   bytes32[] r List of r param for the permit signature\n   bytes32[] s List of s param for the permit signature\n   bool[] useEthPath true if the swap needs to occur using ETH in the routing, false otherwise\n @return SwapParams struct containing decoded params"
                  },
                  "id": 2675,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_decodeParams",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2594,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2593,
                        "mutability": "mutable",
                        "name": "params",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2675,
                        "src": "10266:19:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2592,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "10266:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10265:21:3"
                  },
                  "returnParameters": {
                    "id": 2597,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2596,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2675,
                        "src": "10310:17:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SwapParams_$2007_memory_ptr",
                          "typeString": "struct UniswapLiquiditySwapAdapter.SwapParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2595,
                          "name": "SwapParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 2007,
                          "src": "10310:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SwapParams_$2007_storage_ptr",
                            "typeString": "struct UniswapLiquiditySwapAdapter.SwapParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10309:19:3"
                  },
                  "scope": 2676,
                  "src": "10243:740:3",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 2677,
              "src": "512:10473:3"
            }
          ],
          "src": "37:10949:3"
        },
        "id": 3
      },
      "contracts/adapters/UniswapRepayAdapter.sol": {
        "ast": {
          "absolutePath": "contracts/adapters/UniswapRepayAdapter.sol",
          "exportedSymbols": {
            "UniswapRepayAdapter": [
              3227
            ]
          },
          "id": 3228,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2678,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:4"
            },
            {
              "id": 2679,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "61:33:4"
            },
            {
              "absolutePath": "contracts/adapters/BaseUniswapAdapter.sol",
              "file": "./BaseUniswapAdapter.sol",
              "id": 2681,
              "nodeType": "ImportDirective",
              "scope": 3228,
              "sourceUnit": 1558,
              "src": "96:60:4",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 2680,
                    "name": "BaseUniswapAdapter",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "104:18:4",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPoolAddressesProvider.sol",
              "file": "../interfaces/ILendingPoolAddressesProvider.sol",
              "id": 2683,
              "nodeType": "ImportDirective",
              "scope": 3228,
              "sourceUnit": 6618,
              "src": "157:94:4",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 2682,
                    "name": "ILendingPoolAddressesProvider",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "165:29:4",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IUniswapV2Router02.sol",
              "file": "../interfaces/IUniswapV2Router02.sol",
              "id": 2685,
              "nodeType": "ImportDirective",
              "scope": 3228,
              "sourceUnit": 7441,
              "src": "252:72:4",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 2684,
                    "name": "IUniswapV2Router02",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "260:18:4",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
              "file": "../dependencies/openzeppelin/contracts/IERC20.sol",
              "id": 2687,
              "nodeType": "ImportDirective",
              "scope": 3228,
              "sourceUnit": 4013,
              "src": "325:73:4",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 2686,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "333:6:4",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/types/DataTypes.sol",
              "file": "../protocol/libraries/types/DataTypes.sol",
              "id": 2689,
              "nodeType": "ImportDirective",
              "scope": 3228,
              "sourceUnit": 20532,
              "src": "399:68:4",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 2688,
                    "name": "DataTypes",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "407:9:4",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 2691,
                    "name": "BaseUniswapAdapter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1557,
                    "src": "632:18:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BaseUniswapAdapter_$1557",
                      "typeString": "contract BaseUniswapAdapter"
                    }
                  },
                  "id": 2692,
                  "nodeType": "InheritanceSpecifier",
                  "src": "632:18:4"
                }
              ],
              "contractDependencies": [
                1557,
                3340,
                3427,
                4143,
                5511,
                5547
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 2690,
                "nodeType": "StructuredDocumentation",
                "src": "469:130:4",
                "text": " @title UniswapRepayAdapter\n @notice Uniswap V2 Adapter to perform a repay of a debt with collateral.\n @author Aave*"
              },
              "fullyImplemented": true,
              "id": 3227,
              "linearizedBaseContracts": [
                3227,
                1557,
                4143,
                3427,
                3340,
                5511,
                5547
              ],
              "name": "UniswapRepayAdapter",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "UniswapRepayAdapter.RepayParams",
                  "id": 2703,
                  "members": [
                    {
                      "constant": false,
                      "id": 2694,
                      "mutability": "mutable",
                      "name": "collateralAsset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2703,
                      "src": "680:23:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2693,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "680:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2696,
                      "mutability": "mutable",
                      "name": "collateralAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2703,
                      "src": "709:24:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2695,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "709:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2698,
                      "mutability": "mutable",
                      "name": "rateMode",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2703,
                      "src": "739:16:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2697,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "739:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2700,
                      "mutability": "mutable",
                      "name": "permitSignature",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2703,
                      "src": "761:31:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PermitSignature_$3255_storage_ptr",
                        "typeString": "struct IBaseUniswapAdapter.PermitSignature"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2699,
                        "name": "PermitSignature",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3255,
                        "src": "761:15:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PermitSignature_$3255_storage_ptr",
                          "typeString": "struct IBaseUniswapAdapter.PermitSignature"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2702,
                      "mutability": "mutable",
                      "name": "useEthPath",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2703,
                      "src": "798:15:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2701,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "798:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "RepayParams",
                  "nodeType": "StructDefinition",
                  "scope": 3227,
                  "src": "655:163:4",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2717,
                    "nodeType": "Block",
                    "src": "1027:2:4",
                    "statements": []
                  },
                  "documentation": null,
                  "id": 2718,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2712,
                          "name": "addressesProvider",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2705,
                          "src": "980:17:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                            "typeString": "contract ILendingPoolAddressesProvider"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2713,
                          "name": "uniswapRouter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2707,
                          "src": "999:13:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                            "typeString": "contract IUniswapV2Router02"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2714,
                          "name": "wethAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2709,
                          "src": "1014:11:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 2715,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 2711,
                        "name": "BaseUniswapAdapter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1557,
                        "src": "961:18:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_BaseUniswapAdapter_$1557_$",
                          "typeString": "type(contract BaseUniswapAdapter)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "961:65:4"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2710,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2705,
                        "mutability": "mutable",
                        "name": "addressesProvider",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2718,
                        "src": "839:47:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                          "typeString": "contract ILendingPoolAddressesProvider"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2704,
                          "name": "ILendingPoolAddressesProvider",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6617,
                          "src": "839:29:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                            "typeString": "contract ILendingPoolAddressesProvider"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2707,
                        "mutability": "mutable",
                        "name": "uniswapRouter",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2718,
                        "src": "892:32:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                          "typeString": "contract IUniswapV2Router02"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2706,
                          "name": "IUniswapV2Router02",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 7440,
                          "src": "892:18:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                            "typeString": "contract IUniswapV2Router02"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2709,
                        "mutability": "mutable",
                        "name": "wethAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2718,
                        "src": "930:19:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2708,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "930:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "833:120:4"
                  },
                  "returnParameters": {
                    "id": 2716,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1027:0:4"
                  },
                  "scope": 3227,
                  "src": "822:207:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    5536
                  ],
                  "body": {
                    "id": 2780,
                    "nodeType": "Block",
                    "src": "2391:438:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2745,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2739,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "2405:3:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 2740,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2405:10:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2743,
                                    "name": "LENDING_POOL",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5492,
                                    "src": "2427:12:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                      "typeString": "contract ILendingPool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                      "typeString": "contract ILendingPool"
                                    }
                                  ],
                                  "id": 2742,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2419:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2741,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2419:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 2744,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2419:21:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2405:35:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "43414c4c45525f4d5553545f42455f4c454e44494e475f504f4f4c",
                              "id": 2746,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2442:29:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1a9f77295f7c883a551d4230bdbf48f1affdf43c109506e39540643d43cc3b79",
                                "typeString": "literal_string \"CALLER_MUST_BE_LENDING_POOL\""
                              },
                              "value": "CALLER_MUST_BE_LENDING_POOL"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1a9f77295f7c883a551d4230bdbf48f1affdf43c109506e39540643d43cc3b79",
                                "typeString": "literal_string \"CALLER_MUST_BE_LENDING_POOL\""
                              }
                            ],
                            "id": 2738,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2397:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2747,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2397:75:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2748,
                        "nodeType": "ExpressionStatement",
                        "src": "2397:75:4"
                      },
                      {
                        "assignments": [
                          2750
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2750,
                            "mutability": "mutable",
                            "name": "decodedParams",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2780,
                            "src": "2479:32:4",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RepayParams_$2703_memory_ptr",
                              "typeString": "struct UniswapRepayAdapter.RepayParams"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2749,
                              "name": "RepayParams",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2703,
                              "src": "2479:11:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RepayParams_$2703_storage_ptr",
                                "typeString": "struct UniswapRepayAdapter.RepayParams"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2754,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2752,
                              "name": "params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2732,
                              "src": "2528:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 2751,
                            "name": "_decodeParams",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3226,
                            "src": "2514:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_struct$_RepayParams_$2703_memory_ptr_$",
                              "typeString": "function (bytes memory) pure returns (struct UniswapRepayAdapter.RepayParams memory)"
                            }
                          },
                          "id": 2753,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2514:21:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RepayParams_$2703_memory_ptr",
                            "typeString": "struct UniswapRepayAdapter.RepayParams memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2479:56:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2756,
                                "name": "decodedParams",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2750,
                                "src": "2563:13:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RepayParams_$2703_memory_ptr",
                                  "typeString": "struct UniswapRepayAdapter.RepayParams memory"
                                }
                              },
                              "id": 2757,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateralAsset",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2694,
                              "src": "2563:29:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2758,
                                "name": "assets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2722,
                                "src": "2600:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 2760,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2759,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2607:1:4",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2600:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2761,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2725,
                                "src": "2617:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 2763,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2762,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2625:1:4",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2617:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2764,
                                "name": "decodedParams",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2750,
                                "src": "2635:13:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RepayParams_$2703_memory_ptr",
                                  "typeString": "struct UniswapRepayAdapter.RepayParams memory"
                                }
                              },
                              "id": 2765,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateralAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2696,
                              "src": "2635:30:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2766,
                                "name": "decodedParams",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2750,
                                "src": "2673:13:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RepayParams_$2703_memory_ptr",
                                  "typeString": "struct UniswapRepayAdapter.RepayParams memory"
                                }
                              },
                              "id": 2767,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "rateMode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2698,
                              "src": "2673:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2768,
                              "name": "initiator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2730,
                              "src": "2703:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2769,
                                "name": "premiums",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2728,
                                "src": "2720:8:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 2771,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2770,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2729:1:4",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2720:11:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2772,
                                "name": "decodedParams",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2750,
                                "src": "2739:13:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RepayParams_$2703_memory_ptr",
                                  "typeString": "struct UniswapRepayAdapter.RepayParams memory"
                                }
                              },
                              "id": 2773,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "permitSignature",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2700,
                              "src": "2739:29:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PermitSignature_$3255_memory_ptr",
                                "typeString": "struct IBaseUniswapAdapter.PermitSignature memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2774,
                                "name": "decodedParams",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2750,
                                "src": "2776:13:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RepayParams_$2703_memory_ptr",
                                  "typeString": "struct UniswapRepayAdapter.RepayParams memory"
                                }
                              },
                              "id": 2775,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "useEthPath",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2702,
                              "src": "2776:24:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_struct$_PermitSignature_$3255_memory_ptr",
                                "typeString": "struct IBaseUniswapAdapter.PermitSignature memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 2755,
                            "name": "_swapAndRepay",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3161,
                            "src": "2542:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_struct$_PermitSignature_$3255_memory_ptr_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,uint256,address,uint256,struct IBaseUniswapAdapter.PermitSignature memory,bool)"
                            }
                          },
                          "id": 2776,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2542:264:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2777,
                        "nodeType": "ExpressionStatement",
                        "src": "2542:264:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 2778,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2820:4:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 2737,
                        "id": 2779,
                        "nodeType": "Return",
                        "src": "2813:11:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2719,
                    "nodeType": "StructuredDocumentation",
                    "src": "1033:1146:4",
                    "text": " @dev Uses the received funds from the flash loan to repay a debt on the protocol on behalf of the user. Then pulls\n the collateral from the user and swaps it to the debt asset to repay the flash loan.\n The user should give this contract allowance to pull the ATokens in order to withdraw the underlying asset, swap it\n and repay the flash loan.\n Supports only one asset on the flash loan.\n @param assets Address of debt asset\n @param amounts Amount of the debt to be repaid\n @param premiums Fee of the flash loan\n @param initiator Address of the user\n @param params Additional variadic field to include extra params. Expected parameters:\n   address collateralAsset Address of the reserve to be swapped\n   uint256 collateralAmount Amount of reserve to be swapped\n   uint256 rateMode Rate modes of the debt to be repaid\n   uint256 permitAmount Amount for the permit signature\n   uint256 deadline Deadline for the permit signature\n   uint8 v V param for the permit signature\n   bytes32 r R param for the permit signature\n   bytes32 s S param for the permit signature"
                  },
                  "functionSelector": "920f5c84",
                  "id": 2781,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "executeOperation",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2734,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2367:8:4"
                  },
                  "parameters": {
                    "id": 2733,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2722,
                        "mutability": "mutable",
                        "name": "assets",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2781,
                        "src": "2213:25:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2720,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2213:7:4",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2721,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2213:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2725,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2781,
                        "src": "2244:26:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2723,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2244:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2724,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2244:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2728,
                        "mutability": "mutable",
                        "name": "premiums",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2781,
                        "src": "2276:27:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2726,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2276:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2727,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2276:9:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2730,
                        "mutability": "mutable",
                        "name": "initiator",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2781,
                        "src": "2309:17:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2729,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2309:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2732,
                        "mutability": "mutable",
                        "name": "params",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2781,
                        "src": "2332:21:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2731,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2332:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2207:150:4"
                  },
                  "returnParameters": {
                    "id": 2737,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2736,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2781,
                        "src": "2385:4:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2735,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2385:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2384:6:4"
                  },
                  "scope": 3227,
                  "src": "2182:647:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 2960,
                    "nodeType": "Block",
                    "src": "3899:1907:4",
                    "statements": [
                      {
                        "assignments": [
                          2802
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2802,
                            "mutability": "mutable",
                            "name": "collateralReserveData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2960,
                            "src": "3905:50:4",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                              "typeString": "struct DataTypes.ReserveData"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2801,
                              "name": "DataTypes.ReserveData",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20520,
                              "src": "3905:21:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2806,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2804,
                              "name": "collateralAsset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2784,
                              "src": "3974:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2803,
                            "name": "_getReserveData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 682,
                            "src": "3958:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_struct$_ReserveData_$20520_memory_ptr_$",
                              "typeString": "function (address) view returns (struct DataTypes.ReserveData memory)"
                            }
                          },
                          "id": 2805,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3958:32:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                            "typeString": "struct DataTypes.ReserveData memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3905:85:4"
                      },
                      {
                        "assignments": [
                          2810
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2810,
                            "mutability": "mutable",
                            "name": "debtReserveData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2960,
                            "src": "3996:44:4",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                              "typeString": "struct DataTypes.ReserveData"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2809,
                              "name": "DataTypes.ReserveData",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20520,
                              "src": "3996:21:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2814,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2812,
                              "name": "debtAsset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2786,
                              "src": "4059:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2811,
                            "name": "_getReserveData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 682,
                            "src": "4043:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_struct$_ReserveData_$20520_memory_ptr_$",
                              "typeString": "function (address) view returns (struct DataTypes.ReserveData memory)"
                            }
                          },
                          "id": 2813,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4043:26:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                            "typeString": "struct DataTypes.ReserveData memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3996:73:4"
                      },
                      {
                        "assignments": [
                          2816
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2816,
                            "mutability": "mutable",
                            "name": "debtToken",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2960,
                            "src": "4076:17:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2815,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4076:7:4",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2830,
                        "initialValue": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                              "typeString": "enum DataTypes.InterestRateMode"
                            },
                            "id": 2824,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2819,
                                  "name": "debtRateMode",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2792,
                                  "src": "4129:12:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2817,
                                  "name": "DataTypes",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20531,
                                  "src": "4102:9:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_DataTypes_$20531_$",
                                    "typeString": "type(library DataTypes)"
                                  }
                                },
                                "id": 2818,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "InterestRateMode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20530,
                                "src": "4102:26:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_InterestRateMode_$20530_$",
                                  "typeString": "type(enum DataTypes.InterestRateMode)"
                                }
                              },
                              "id": 2820,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4102:40:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                "typeString": "enum DataTypes.InterestRateMode"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2821,
                                  "name": "DataTypes",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20531,
                                  "src": "4146:9:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_DataTypes_$20531_$",
                                    "typeString": "type(library DataTypes)"
                                  }
                                },
                                "id": 2822,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "InterestRateMode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20530,
                                "src": "4146:26:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_InterestRateMode_$20530_$",
                                  "typeString": "type(enum DataTypes.InterestRateMode)"
                                }
                              },
                              "id": 2823,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "STABLE",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4146:33:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                "typeString": "enum DataTypes.InterestRateMode"
                              }
                            },
                            "src": "4102:77:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2827,
                              "name": "debtReserveData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2810,
                              "src": "4239:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                "typeString": "struct DataTypes.ReserveData memory"
                              }
                            },
                            "id": 2828,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "variableDebtTokenAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20515,
                            "src": "4239:40:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2829,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "4102:177:4",
                          "trueExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2825,
                              "name": "debtReserveData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2810,
                              "src": "4190:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                "typeString": "struct DataTypes.ReserveData memory"
                              }
                            },
                            "id": 2826,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "stableDebtTokenAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20513,
                            "src": "4190:38:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4076:203:4"
                      },
                      {
                        "assignments": [
                          2832
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2832,
                            "mutability": "mutable",
                            "name": "currentDebt",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2960,
                            "src": "4286:19:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2831,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4286:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2840,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2837,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4336:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2838,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4336:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2834,
                                  "name": "debtToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2816,
                                  "src": "4315:9:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2833,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "4308:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 2835,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4308:17:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2836,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3951,
                            "src": "4308:27:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 2839,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4308:39:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4286:61:4"
                      },
                      {
                        "assignments": [
                          2842
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2842,
                            "mutability": "mutable",
                            "name": "amountToRepay",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2960,
                            "src": "4353:21:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2841,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4353:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2849,
                        "initialValue": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2845,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2843,
                              "name": "debtRepayAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2790,
                              "src": "4377:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2844,
                              "name": "currentDebt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2832,
                              "src": "4396:11:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4377:30:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "id": 2847,
                            "name": "currentDebt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2832,
                            "src": "4428:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2848,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "4377:62:4",
                          "trueExpression": {
                            "argumentTypes": null,
                            "id": 2846,
                            "name": "debtRepayAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2790,
                            "src": "4410:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4353:86:4"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2852,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2850,
                            "name": "collateralAsset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2784,
                            "src": "4450:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2851,
                            "name": "debtAsset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2786,
                            "src": "4469:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4450:28:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2926,
                          "nodeType": "Block",
                          "src": "5279:204:4",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2917,
                                    "name": "collateralAsset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2784,
                                    "src": "5340:15:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2918,
                                      "name": "collateralReserveData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2802,
                                      "src": "5365:21:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                        "typeString": "struct DataTypes.ReserveData memory"
                                      }
                                    },
                                    "id": 2919,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "aTokenAddress",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20511,
                                    "src": "5365:35:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2920,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "5410:3:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 2921,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "5410:10:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2922,
                                    "name": "amountToRepay",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2842,
                                    "src": "5430:13:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2923,
                                    "name": "permitSignature",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2794,
                                    "src": "5453:15:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PermitSignature_$3255_calldata_ptr",
                                      "typeString": "struct IBaseUniswapAdapter.PermitSignature calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_PermitSignature_$3255_calldata_ptr",
                                      "typeString": "struct IBaseUniswapAdapter.PermitSignature calldata"
                                    }
                                  ],
                                  "id": 2916,
                                  "name": "_pullAToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 746,
                                  "src": "5319:11:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_struct$_PermitSignature_$3255_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,address,uint256,struct IBaseUniswapAdapter.PermitSignature memory)"
                                  }
                                },
                                "id": 2924,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5319:157:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2925,
                              "nodeType": "ExpressionStatement",
                              "src": "5319:157:4"
                            }
                          ]
                        },
                        "id": 2927,
                        "nodeType": "IfStatement",
                        "src": "4446:1037:4",
                        "trueBody": {
                          "id": 2915,
                          "nodeType": "Block",
                          "src": "4480:793:4",
                          "statements": [
                            {
                              "assignments": [
                                2854
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2854,
                                  "mutability": "mutable",
                                  "name": "maxCollateralToSwap",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 2915,
                                  "src": "4488:27:4",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2853,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4488:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2856,
                              "initialValue": {
                                "argumentTypes": null,
                                "id": 2855,
                                "name": "collateralAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2788,
                                "src": "4518:16:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4488:46:4"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2859,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2857,
                                  "name": "amountToRepay",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2842,
                                  "src": "4546:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2858,
                                  "name": "debtRepayAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2790,
                                  "src": "4562:15:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4546:31:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 2871,
                              "nodeType": "IfStatement",
                              "src": "4542:137:4",
                              "trueBody": {
                                "id": 2870,
                                "nodeType": "Block",
                                "src": "4579:100:4",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2868,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 2860,
                                        "name": "maxCollateralToSwap",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2854,
                                        "src": "4589:19:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 2866,
                                            "name": "debtRepayAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2790,
                                            "src": "4654:15:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 2863,
                                                "name": "amountToRepay",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2842,
                                                "src": "4635:13:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 2861,
                                                "name": "maxCollateralToSwap",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2854,
                                                "src": "4611:19:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 2862,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 4409,
                                              "src": "4611:23:4",
                                              "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": 2864,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "4611:38:4",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 2865,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "div",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4426,
                                          "src": "4611:42:4",
                                          "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": 2867,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4611:59:4",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4589:81:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2869,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4589:81:4"
                                  }
                                ]
                              }
                            },
                            {
                              "assignments": [
                                2876
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2876,
                                  "mutability": "mutable",
                                  "name": "amounts",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 2915,
                                  "src": "4756:24:4",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 2874,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4756:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2875,
                                    "length": null,
                                    "nodeType": "ArrayTypeName",
                                    "src": "4756:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                      "typeString": "uint256[]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2883,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2878,
                                    "name": "collateralAsset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2784,
                                    "src": "4805:15:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2879,
                                    "name": "debtAsset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2786,
                                    "src": "4822:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2880,
                                    "name": "amountToRepay",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2842,
                                    "src": "4833:13:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2881,
                                    "name": "useEthPath",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2796,
                                    "src": "4848:10:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 2877,
                                  "name": "_getAmountsIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1533,
                                  "src": "4791:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "function (address,address,uint256,bool) view returns (uint256[] memory)"
                                  }
                                },
                                "id": 2882,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4791:68:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4756:103:4"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2889,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 2885,
                                        "name": "amounts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2876,
                                        "src": "4875:7:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 2887,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 2886,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4883:1:4",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4875:10:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 2888,
                                      "name": "maxCollateralToSwap",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2854,
                                      "src": "4889:19:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4875:33:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "736c69707061676520746f6f2068696768",
                                    "id": 2890,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4910:19:4",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_df414fe509967a1d524dcece4be9d49ee70180bcbce61d6ab8d253a04c08a1eb",
                                      "typeString": "literal_string \"slippage too high\""
                                    },
                                    "value": "slippage too high"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_df414fe509967a1d524dcece4be9d49ee70180bcbce61d6ab8d253a04c08a1eb",
                                      "typeString": "literal_string \"slippage too high\""
                                    }
                                  ],
                                  "id": 2884,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "4867:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 2891,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4867:63:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2892,
                              "nodeType": "ExpressionStatement",
                              "src": "4867:63:4"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2894,
                                    "name": "collateralAsset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2784,
                                    "src": "4992:15:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2895,
                                      "name": "collateralReserveData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2802,
                                      "src": "5017:21:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                        "typeString": "struct DataTypes.ReserveData memory"
                                      }
                                    },
                                    "id": 2896,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "aTokenAddress",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20511,
                                    "src": "5017:35:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2897,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "5062:3:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 2898,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "5062:10:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 2899,
                                      "name": "amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2876,
                                      "src": "5082:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 2901,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 2900,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5090:1:4",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5082:10:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2902,
                                    "name": "permitSignature",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2794,
                                    "src": "5102:15:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PermitSignature_$3255_calldata_ptr",
                                      "typeString": "struct IBaseUniswapAdapter.PermitSignature calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_PermitSignature_$3255_calldata_ptr",
                                      "typeString": "struct IBaseUniswapAdapter.PermitSignature calldata"
                                    }
                                  ],
                                  "id": 2893,
                                  "name": "_pullAToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 746,
                                  "src": "4971:11:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_struct$_PermitSignature_$3255_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,address,uint256,struct IBaseUniswapAdapter.PermitSignature memory)"
                                  }
                                },
                                "id": 2903,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4971:154:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2904,
                              "nodeType": "ExpressionStatement",
                              "src": "4971:154:4"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2906,
                                    "name": "collateralAsset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2784,
                                    "src": "5200:15:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2907,
                                    "name": "debtAsset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2786,
                                    "src": "5217:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 2908,
                                      "name": "amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2876,
                                      "src": "5228:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 2910,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 2909,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5236:1:4",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5228:10:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2911,
                                    "name": "amountToRepay",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2842,
                                    "src": "5240:13:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2912,
                                    "name": "useEthPath",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2796,
                                    "src": "5255:10:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 2905,
                                  "name": "_swapTokensForExactTokens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 639,
                                  "src": "5174:25:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                    "typeString": "function (address,address,uint256,uint256,bool) returns (uint256)"
                                  }
                                },
                                "id": 2913,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5174:92:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2914,
                              "nodeType": "ExpressionStatement",
                              "src": "5174:92:4"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2934,
                                  "name": "LENDING_POOL",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5492,
                                  "src": "5635:12:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                ],
                                "id": 2933,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5627:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2932,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5627:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2935,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5627:21:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2936,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5650:1:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2929,
                                  "name": "debtAsset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2786,
                                  "src": "5604:9:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2928,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "5597:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 2930,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5597:17:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2931,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeApprove",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4247,
                            "src": "5597:29:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 2937,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5597:55:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2938,
                        "nodeType": "ExpressionStatement",
                        "src": "5597:55:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2945,
                                  "name": "LENDING_POOL",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5492,
                                  "src": "5696:12:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                ],
                                "id": 2944,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5688:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2943,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5688:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2946,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5688:21:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2947,
                              "name": "amountToRepay",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2842,
                              "src": "5711:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2940,
                                  "name": "debtAsset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2786,
                                  "src": "5665:9:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2939,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "5658:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 2941,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5658:17:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2942,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeApprove",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4247,
                            "src": "5658:29:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 2948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5658:67:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2949,
                        "nodeType": "ExpressionStatement",
                        "src": "5658:67:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2953,
                              "name": "debtAsset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2786,
                              "src": "5750:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2954,
                              "name": "amountToRepay",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2842,
                              "src": "5761:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2955,
                              "name": "debtRateMode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2792,
                              "src": "5776:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2956,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "5790:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2957,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5790:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2950,
                              "name": "LENDING_POOL",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5492,
                              "src": "5731:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 2952,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "repay",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6285,
                            "src": "5731:18:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address,uint256,uint256,address) external returns (uint256)"
                            }
                          },
                          "id": 2958,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5731:70:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2959,
                        "nodeType": "ExpressionStatement",
                        "src": "5731:70:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2782,
                    "nodeType": "StructuredDocumentation",
                    "src": "2833:824:4",
                    "text": " @dev Swaps the user collateral for the debt asset and then repay the debt on the protocol on behalf of the user\n without using flash loans. This method can be used when the temporary transfer of the collateral asset to this\n contract does not affect the user position.\n The user should give this contract allowance to pull the ATokens in order to withdraw the underlying asset\n @param collateralAsset Address of asset to be swapped\n @param debtAsset Address of debt asset\n @param collateralAmount Amount of the collateral to be swapped\n @param debtRepayAmount Amount of the debt to be repaid\n @param debtRateMode Rate mode of the debt to be repaid\n @param permitSignature struct containing the permit signature\n @param useEthPath struct containing the permit signature"
                  },
                  "functionSelector": "e6813563",
                  "id": 2961,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "swapAndRepay",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2797,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2784,
                        "mutability": "mutable",
                        "name": "collateralAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2961,
                        "src": "3687:23:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2783,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3687:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2786,
                        "mutability": "mutable",
                        "name": "debtAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2961,
                        "src": "3716:17:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2785,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3716:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2788,
                        "mutability": "mutable",
                        "name": "collateralAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2961,
                        "src": "3739:24:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2787,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3739:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2790,
                        "mutability": "mutable",
                        "name": "debtRepayAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2961,
                        "src": "3769:23:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2789,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3769:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2792,
                        "mutability": "mutable",
                        "name": "debtRateMode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2961,
                        "src": "3798:20:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2791,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3798:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2794,
                        "mutability": "mutable",
                        "name": "permitSignature",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2961,
                        "src": "3824:40:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PermitSignature_$3255_calldata_ptr",
                          "typeString": "struct IBaseUniswapAdapter.PermitSignature"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2793,
                          "name": "PermitSignature",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3255,
                          "src": "3824:15:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PermitSignature_$3255_storage_ptr",
                            "typeString": "struct IBaseUniswapAdapter.PermitSignature"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2796,
                        "mutability": "mutable",
                        "name": "useEthPath",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2961,
                        "src": "3870:15:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2795,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3870:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3681:208:4"
                  },
                  "returnParameters": {
                    "id": 2798,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3899:0:4"
                  },
                  "scope": 3227,
                  "src": "3660:2146:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 3160,
                    "nodeType": "Block",
                    "src": "6657:1917:4",
                    "statements": [
                      {
                        "assignments": [
                          2986
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2986,
                            "mutability": "mutable",
                            "name": "collateralReserveData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3160,
                            "src": "6663:50:4",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                              "typeString": "struct DataTypes.ReserveData"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2985,
                              "name": "DataTypes.ReserveData",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20520,
                              "src": "6663:21:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2990,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2988,
                              "name": "collateralAsset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2964,
                              "src": "6732:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2987,
                            "name": "_getReserveData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 682,
                            "src": "6716:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_struct$_ReserveData_$20520_memory_ptr_$",
                              "typeString": "function (address) view returns (struct DataTypes.ReserveData memory)"
                            }
                          },
                          "id": 2989,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6716:32:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                            "typeString": "struct DataTypes.ReserveData memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6663:85:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2997,
                                  "name": "LENDING_POOL",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5492,
                                  "src": "6906:12:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                ],
                                "id": 2996,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6898:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2995,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6898:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2998,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6898:21:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2999,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6921:1:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2992,
                                  "name": "debtAsset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2966,
                                  "src": "6875:9:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2991,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "6868:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 2993,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6868:17:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2994,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeApprove",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4247,
                            "src": "6868:29:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 3000,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6868:55:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3001,
                        "nodeType": "ExpressionStatement",
                        "src": "6868:55:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3008,
                                  "name": "LENDING_POOL",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5492,
                                  "src": "6967:12:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                ],
                                "id": 3007,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6959:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3006,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6959:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 3009,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6959:21:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3010,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2968,
                              "src": "6982:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3003,
                                  "name": "debtAsset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2966,
                                  "src": "6936:9:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3002,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "6929:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 3004,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6929:17:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 3005,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeApprove",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4247,
                            "src": "6929:29:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 3011,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6929:60:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3012,
                        "nodeType": "ExpressionStatement",
                        "src": "6929:60:4"
                      },
                      {
                        "assignments": [
                          3014
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3014,
                            "mutability": "mutable",
                            "name": "repaidAmount",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3160,
                            "src": "6995:20:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3013,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6995:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3024,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3021,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "7054:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_UniswapRepayAdapter_$3227",
                                    "typeString": "contract UniswapRepayAdapter"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_UniswapRepayAdapter_$3227",
                                    "typeString": "contract UniswapRepayAdapter"
                                  }
                                ],
                                "id": 3020,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7046:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3019,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7046:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 3022,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7046:13:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3016,
                                  "name": "debtAsset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2966,
                                  "src": "7025:9:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3015,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "7018:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 3017,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7018:17:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 3018,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3951,
                            "src": "7018:27:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 3023,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7018:42:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6995:65:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3028,
                              "name": "debtAsset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2966,
                              "src": "7085:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3029,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2968,
                              "src": "7096:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3030,
                              "name": "rateMode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2972,
                              "src": "7104:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3031,
                              "name": "initiator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2974,
                              "src": "7114:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3025,
                              "name": "LENDING_POOL",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5492,
                              "src": "7066:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 3027,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "repay",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6285,
                            "src": "7066:18:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address,uint256,uint256,address) external returns (uint256)"
                            }
                          },
                          "id": 3032,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7066:58:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3033,
                        "nodeType": "ExpressionStatement",
                        "src": "7066:58:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3047,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3034,
                            "name": "repaidAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3014,
                            "src": "7130:12:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3043,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "7198:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_UniswapRepayAdapter_$3227",
                                          "typeString": "contract UniswapRepayAdapter"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_UniswapRepayAdapter_$3227",
                                          "typeString": "contract UniswapRepayAdapter"
                                        }
                                      ],
                                      "id": 3042,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7190:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3041,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7190:7:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 3044,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7190:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3038,
                                        "name": "debtAsset",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2966,
                                        "src": "7169:9:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 3037,
                                      "name": "IERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4012,
                                      "src": "7162:6:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                        "typeString": "type(contract IERC20)"
                                      }
                                    },
                                    "id": 3039,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7162:17:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$4012",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 3040,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3951,
                                  "src": "7162:27:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 3045,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7162:42:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3035,
                                "name": "repaidAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3014,
                                "src": "7145:12:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3036,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4346,
                              "src": "7145:16:4",
                              "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": 3046,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7145:60:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7130:75:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3048,
                        "nodeType": "ExpressionStatement",
                        "src": "7130:75:4"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3049,
                            "name": "collateralAsset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2964,
                            "src": "7216:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3050,
                            "name": "debtAsset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2966,
                            "src": "7235:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "7216:28:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 3133,
                          "nodeType": "Block",
                          "src": "8096:215:4",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3122,
                                    "name": "collateralAsset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2964,
                                    "src": "8157:15:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3123,
                                      "name": "collateralReserveData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2986,
                                      "src": "8182:21:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                        "typeString": "struct DataTypes.ReserveData memory"
                                      }
                                    },
                                    "id": 3124,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "aTokenAddress",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20511,
                                    "src": "8182:35:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3125,
                                    "name": "initiator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2974,
                                    "src": "8227:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3128,
                                        "name": "premium",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2976,
                                        "src": "8263:7:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3126,
                                        "name": "repaidAmount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3014,
                                        "src": "8246:12:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 3127,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "add",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4329,
                                      "src": "8246:16:4",
                                      "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": 3129,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8246:25:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3130,
                                    "name": "permitSignature",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2978,
                                    "src": "8281:15:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PermitSignature_$3255_memory_ptr",
                                      "typeString": "struct IBaseUniswapAdapter.PermitSignature memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_PermitSignature_$3255_memory_ptr",
                                      "typeString": "struct IBaseUniswapAdapter.PermitSignature memory"
                                    }
                                  ],
                                  "id": 3121,
                                  "name": "_pullAToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 746,
                                  "src": "8136:11:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_struct$_PermitSignature_$3255_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,address,uint256,struct IBaseUniswapAdapter.PermitSignature memory)"
                                  }
                                },
                                "id": 3131,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8136:168:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3132,
                              "nodeType": "ExpressionStatement",
                              "src": "8136:168:4"
                            }
                          ]
                        },
                        "id": 3134,
                        "nodeType": "IfStatement",
                        "src": "7212:1099:4",
                        "trueBody": {
                          "id": 3120,
                          "nodeType": "Block",
                          "src": "7246:844:4",
                          "statements": [
                            {
                              "assignments": [
                                3053
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3053,
                                  "mutability": "mutable",
                                  "name": "maxCollateralToSwap",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 3120,
                                  "src": "7254:27:4",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3052,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7254:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3055,
                              "initialValue": {
                                "argumentTypes": null,
                                "id": 3054,
                                "name": "collateralAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2970,
                                "src": "7284:16:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7254:46:4"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3058,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3056,
                                  "name": "repaidAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3014,
                                  "src": "7312:12:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 3057,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2968,
                                  "src": "7327:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7312:21:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 3070,
                              "nodeType": "IfStatement",
                              "src": "7308:117:4",
                              "trueBody": {
                                "id": 3069,
                                "nodeType": "Block",
                                "src": "7335:90:4",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3067,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 3059,
                                        "name": "maxCollateralToSwap",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3053,
                                        "src": "7345:19:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 3065,
                                            "name": "amount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2968,
                                            "src": "7409:6:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 3062,
                                                "name": "repaidAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3014,
                                                "src": "7391:12:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 3060,
                                                "name": "maxCollateralToSwap",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3053,
                                                "src": "7367:19:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 3061,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 4409,
                                              "src": "7367:23:4",
                                              "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": 3063,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "7367:37:4",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 3064,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "div",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4426,
                                          "src": "7367:41:4",
                                          "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": 3066,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7367:49:4",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7345:71:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3068,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7345:71:4"
                                  }
                                ]
                              }
                            },
                            {
                              "assignments": [
                                3072
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3072,
                                  "mutability": "mutable",
                                  "name": "neededForFlashLoanDebt",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 3120,
                                  "src": "7433:30:4",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3071,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7433:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3077,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3075,
                                    "name": "premium",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2976,
                                    "src": "7483:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3073,
                                    "name": "repaidAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3014,
                                    "src": "7466:12:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3074,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4329,
                                  "src": "7466:16:4",
                                  "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": 3076,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7466:25:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7433:58:4"
                            },
                            {
                              "assignments": [
                                3082
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3082,
                                  "mutability": "mutable",
                                  "name": "amounts",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 3120,
                                  "src": "7499:24:4",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 3080,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7499:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3081,
                                    "length": null,
                                    "nodeType": "ArrayTypeName",
                                    "src": "7499:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                      "typeString": "uint256[]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3089,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3084,
                                    "name": "collateralAsset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2964,
                                    "src": "7548:15:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3085,
                                    "name": "debtAsset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2966,
                                    "src": "7565:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3086,
                                    "name": "neededForFlashLoanDebt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3072,
                                    "src": "7576:22:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3087,
                                    "name": "useEthPath",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2980,
                                    "src": "7600:10:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 3083,
                                  "name": "_getAmountsIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1533,
                                  "src": "7534:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "function (address,address,uint256,bool) view returns (uint256[] memory)"
                                  }
                                },
                                "id": 3088,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7534:77:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7499:112:4"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3095,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 3091,
                                        "name": "amounts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3082,
                                        "src": "7627:7:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 3093,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 3092,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7635:1:4",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "7627:10:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 3094,
                                      "name": "maxCollateralToSwap",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3053,
                                      "src": "7641:19:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "7627:33:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "736c69707061676520746f6f2068696768",
                                    "id": 3096,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7662:19:4",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_df414fe509967a1d524dcece4be9d49ee70180bcbce61d6ab8d253a04c08a1eb",
                                      "typeString": "literal_string \"slippage too high\""
                                    },
                                    "value": "slippage too high"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_df414fe509967a1d524dcece4be9d49ee70180bcbce61d6ab8d253a04c08a1eb",
                                      "typeString": "literal_string \"slippage too high\""
                                    }
                                  ],
                                  "id": 3090,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "7619:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 3097,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7619:63:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3098,
                              "nodeType": "ExpressionStatement",
                              "src": "7619:63:4"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3100,
                                    "name": "collateralAsset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2964,
                                    "src": "7744:15:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3101,
                                      "name": "collateralReserveData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2986,
                                      "src": "7769:21:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                        "typeString": "struct DataTypes.ReserveData memory"
                                      }
                                    },
                                    "id": 3102,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "aTokenAddress",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20511,
                                    "src": "7769:35:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3103,
                                    "name": "initiator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2974,
                                    "src": "7814:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3104,
                                      "name": "amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3082,
                                      "src": "7833:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 3106,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 3105,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7841:1:4",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7833:10:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3107,
                                    "name": "permitSignature",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2978,
                                    "src": "7853:15:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PermitSignature_$3255_memory_ptr",
                                      "typeString": "struct IBaseUniswapAdapter.PermitSignature memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_PermitSignature_$3255_memory_ptr",
                                      "typeString": "struct IBaseUniswapAdapter.PermitSignature memory"
                                    }
                                  ],
                                  "id": 3099,
                                  "name": "_pullAToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 746,
                                  "src": "7723:11:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_struct$_PermitSignature_$3255_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,address,uint256,struct IBaseUniswapAdapter.PermitSignature memory)"
                                  }
                                },
                                "id": 3108,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7723:153:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3109,
                              "nodeType": "ExpressionStatement",
                              "src": "7723:153:4"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3111,
                                    "name": "collateralAsset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2964,
                                    "src": "7969:15:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3112,
                                    "name": "debtAsset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2966,
                                    "src": "7994:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3113,
                                      "name": "amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3082,
                                      "src": "8013:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 3115,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 3114,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8021:1:4",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8013:10:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3116,
                                    "name": "neededForFlashLoanDebt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3072,
                                    "src": "8033:22:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3117,
                                    "name": "useEthPath",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2980,
                                    "src": "8065:10:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 3110,
                                  "name": "_swapTokensForExactTokens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 639,
                                  "src": "7934:25:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                    "typeString": "function (address,address,uint256,uint256,bool) returns (uint256)"
                                  }
                                },
                                "id": 3118,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7934:149:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3119,
                              "nodeType": "ExpressionStatement",
                              "src": "7934:149:4"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3141,
                                  "name": "LENDING_POOL",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5492,
                                  "src": "8473:12:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                ],
                                "id": 3140,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8465:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3139,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8465:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 3142,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8465:21:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3143,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8488:1:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3136,
                                  "name": "debtAsset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2966,
                                  "src": "8442:9:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3135,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "8435:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 3137,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8435:17:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 3138,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeApprove",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4247,
                            "src": "8435:29:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 3144,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8435:55:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3145,
                        "nodeType": "ExpressionStatement",
                        "src": "8435:55:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3152,
                                  "name": "LENDING_POOL",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5492,
                                  "src": "8534:12:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                ],
                                "id": 3151,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8526:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3150,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8526:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 3153,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8526:21:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3156,
                                  "name": "premium",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2976,
                                  "src": "8560:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3154,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2968,
                                  "src": "8549:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 3155,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4329,
                                "src": "8549:10:4",
                                "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": 3157,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8549:19:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3147,
                                  "name": "debtAsset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2966,
                                  "src": "8503:9:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3146,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "8496:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 3148,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8496:17:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 3149,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeApprove",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4247,
                            "src": "8496:29:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 3158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8496:73:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3159,
                        "nodeType": "ExpressionStatement",
                        "src": "8496:73:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2962,
                    "nodeType": "StructuredDocumentation",
                    "src": "5810:575:4",
                    "text": " @dev Perform the repay of the debt, pulls the initiator collateral and swaps to repay the flash loan\n @param collateralAsset Address of token to be swapped\n @param debtAsset Address of debt token to be received from the swap\n @param amount Amount of the debt to be repaid\n @param collateralAmount Amount of the reserve to be swapped\n @param rateMode Rate mode of the debt to be repaid\n @param initiator Address of the user\n @param premium Fee of the flash loan\n @param permitSignature struct containing the permit signature"
                  },
                  "id": 3161,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_swapAndRepay",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2981,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2964,
                        "mutability": "mutable",
                        "name": "collateralAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3161,
                        "src": "6416:23:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2963,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6416:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2966,
                        "mutability": "mutable",
                        "name": "debtAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3161,
                        "src": "6445:17:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2965,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6445:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2968,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3161,
                        "src": "6468:14:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2967,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6468:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2970,
                        "mutability": "mutable",
                        "name": "collateralAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3161,
                        "src": "6488:24:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2969,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6488:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2972,
                        "mutability": "mutable",
                        "name": "rateMode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3161,
                        "src": "6518:16:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2971,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6518:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2974,
                        "mutability": "mutable",
                        "name": "initiator",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3161,
                        "src": "6540:17:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2973,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6540:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2976,
                        "mutability": "mutable",
                        "name": "premium",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3161,
                        "src": "6563:15:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2975,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6563:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2978,
                        "mutability": "mutable",
                        "name": "permitSignature",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3161,
                        "src": "6584:38:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PermitSignature_$3255_memory_ptr",
                          "typeString": "struct IBaseUniswapAdapter.PermitSignature"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 2977,
                          "name": "PermitSignature",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3255,
                          "src": "6584:15:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PermitSignature_$3255_storage_ptr",
                            "typeString": "struct IBaseUniswapAdapter.PermitSignature"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2980,
                        "mutability": "mutable",
                        "name": "useEthPath",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3161,
                        "src": "6628:15:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2979,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6628:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6410:237:4"
                  },
                  "returnParameters": {
                    "id": 2982,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6657:0:4"
                  },
                  "scope": 3227,
                  "src": "6388:2186:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3225,
                    "nodeType": "Block",
                    "src": "9395:543:4",
                    "statements": [
                      {
                        "assignments": [
                          3170,
                          3172,
                          3174,
                          3176,
                          3178,
                          3180,
                          3182,
                          3184,
                          3186
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3170,
                            "mutability": "mutable",
                            "name": "collateralAsset",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3225,
                            "src": "9409:23:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3169,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "9409:7:4",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3172,
                            "mutability": "mutable",
                            "name": "collateralAmount",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3225,
                            "src": "9440:24:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3171,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9440:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3174,
                            "mutability": "mutable",
                            "name": "rateMode",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3225,
                            "src": "9472:16:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3173,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9472:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3176,
                            "mutability": "mutable",
                            "name": "permitAmount",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3225,
                            "src": "9496:20:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3175,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9496:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3178,
                            "mutability": "mutable",
                            "name": "deadline",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3225,
                            "src": "9524:16:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3177,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9524:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3180,
                            "mutability": "mutable",
                            "name": "v",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3225,
                            "src": "9548:7:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "typeName": {
                              "id": 3179,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "9548:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3182,
                            "mutability": "mutable",
                            "name": "r",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3225,
                            "src": "9563:9:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 3181,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9563:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3184,
                            "mutability": "mutable",
                            "name": "s",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3225,
                            "src": "9580:9:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 3183,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9580:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3186,
                            "mutability": "mutable",
                            "name": "useEthPath",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3225,
                            "src": "9597:15:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3185,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "9597:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3210,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3189,
                              "name": "params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3164,
                              "src": "9647:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 3191,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9664:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3190,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9664:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3193,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9673:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 3192,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9673:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3195,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9682:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 3194,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9682:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3197,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9691:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 3196,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9691:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3199,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9700:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 3198,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9700:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3201,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9709:5:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint8_$",
                                    "typeString": "type(uint8)"
                                  },
                                  "typeName": {
                                    "id": 3200,
                                    "name": "uint8",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9709:5:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3203,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9716:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 3202,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9716:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3205,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9725:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 3204,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9725:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3207,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9734:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 3206,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9734:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                }
                              ],
                              "id": 3208,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "9663:76:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_uint8_$_$_t_type$_t_bytes32_$_$_t_type$_t_bytes32_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(uint256),type(uint256),type(uint256),type(uint256),type(uint8),type(bytes32),type(bytes32),type(bool))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_uint8_$_$_t_type$_t_bytes32_$_$_t_type$_t_bytes32_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(uint256),type(uint256),type(uint256),type(uint256),type(uint8),type(bytes32),type(bytes32),type(bool))"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3187,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "9627:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 3188,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "9627:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 3209,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9627:120:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bool_$",
                            "typeString": "tuple(address payable,uint256,uint256,uint256,uint256,uint8,bytes32,bytes32,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9401:346:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3212,
                              "name": "collateralAsset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3170,
                              "src": "9788:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3213,
                              "name": "collateralAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3172,
                              "src": "9813:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3214,
                              "name": "rateMode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3174,
                              "src": "9839:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3216,
                                  "name": "permitAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3176,
                                  "src": "9873:12:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3217,
                                  "name": "deadline",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3178,
                                  "src": "9887:8:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3218,
                                  "name": "v",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3180,
                                  "src": "9897:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3219,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3182,
                                  "src": "9900:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3220,
                                  "name": "s",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3184,
                                  "src": "9903:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 3215,
                                "name": "PermitSignature",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3255,
                                "src": "9857:15:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_PermitSignature_$3255_storage_ptr_$",
                                  "typeString": "type(struct IBaseUniswapAdapter.PermitSignature storage pointer)"
                                }
                              },
                              "id": 3221,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9857:48:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PermitSignature_$3255_memory_ptr",
                                "typeString": "struct IBaseUniswapAdapter.PermitSignature memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3222,
                              "name": "useEthPath",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3186,
                              "src": "9915:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_struct$_PermitSignature_$3255_memory_ptr",
                                "typeString": "struct IBaseUniswapAdapter.PermitSignature memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 3211,
                            "name": "RepayParams",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2703,
                            "src": "9767:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_struct$_RepayParams_$2703_storage_ptr_$",
                              "typeString": "type(struct UniswapRepayAdapter.RepayParams storage pointer)"
                            }
                          },
                          "id": 3223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "structConstructorCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9767:166:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RepayParams_$2703_memory_ptr",
                            "typeString": "struct UniswapRepayAdapter.RepayParams memory"
                          }
                        },
                        "functionReturnParameters": 3168,
                        "id": 3224,
                        "nodeType": "Return",
                        "src": "9754:179:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3162,
                    "nodeType": "StructuredDocumentation",
                    "src": "8578:727:4",
                    "text": " @dev Decodes debt information encoded in the flash loan params\n @param params Additional variadic field to include extra params. Expected parameters:\n   address collateralAsset Address of the reserve to be swapped\n   uint256 collateralAmount Amount of reserve to be swapped\n   uint256 rateMode Rate modes of the debt to be repaid\n   uint256 permitAmount Amount for the permit signature\n   uint256 deadline Deadline for the permit signature\n   uint8 v V param for the permit signature\n   bytes32 r R param for the permit signature\n   bytes32 s S param for the permit signature\n   bool useEthPath use WETH path route\n @return RepayParams struct containing decoded params"
                  },
                  "id": 3226,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_decodeParams",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3165,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3164,
                        "mutability": "mutable",
                        "name": "params",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3226,
                        "src": "9331:19:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3163,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9331:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9330:21:4"
                  },
                  "returnParameters": {
                    "id": 3168,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3167,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3226,
                        "src": "9375:18:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RepayParams_$2703_memory_ptr",
                          "typeString": "struct UniswapRepayAdapter.RepayParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 3166,
                          "name": "RepayParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 2703,
                          "src": "9375:11:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RepayParams_$2703_storage_ptr",
                            "typeString": "struct UniswapRepayAdapter.RepayParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9374:20:4"
                  },
                  "scope": 3227,
                  "src": "9308:630:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3228,
              "src": "600:9340:4"
            }
          ],
          "src": "37:9904:4"
        },
        "id": 4
      },
      "contracts/adapters/interfaces/IBaseUniswapAdapter.sol": {
        "ast": {
          "absolutePath": "contracts/adapters/interfaces/IBaseUniswapAdapter.sol",
          "exportedSymbols": {
            "IBaseUniswapAdapter": [
              3340
            ]
          },
          "id": 3341,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3229,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:5"
            },
            {
              "id": 3230,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "61:33:5"
            },
            {
              "absolutePath": "contracts/interfaces/IPriceOracleGetter.sol",
              "file": "../../interfaces/IPriceOracleGetter.sol",
              "id": 3232,
              "nodeType": "ImportDirective",
              "scope": 3341,
              "sourceUnit": 6919,
              "src": "96:75:5",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 3231,
                    "name": "IPriceOracleGetter",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "104:18:5",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IUniswapV2Router02.sol",
              "file": "../../interfaces/IUniswapV2Router02.sol",
              "id": 3234,
              "nodeType": "ImportDirective",
              "scope": 3341,
              "sourceUnit": 7441,
              "src": "172:75:5",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 3233,
                    "name": "IUniswapV2Router02",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "180:18:5",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 3340,
              "linearizedBaseContracts": [
                3340
              ],
              "name": "IBaseUniswapAdapter",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 3244,
                  "name": "Swapped",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3243,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3236,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "fromAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3244,
                        "src": "297:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3235,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "297:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3238,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "toAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3244,
                        "src": "316:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3237,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "316:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3240,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "fromAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3244,
                        "src": "333:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3239,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "333:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3242,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "receivedAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3244,
                        "src": "353:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3241,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "353:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "296:80:5"
                  },
                  "src": "283:94:5"
                },
                {
                  "canonicalName": "IBaseUniswapAdapter.PermitSignature",
                  "id": 3255,
                  "members": [
                    {
                      "constant": false,
                      "id": 3246,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3255,
                      "src": "410:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3245,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "410:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3248,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3255,
                      "src": "430:16:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3247,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "430:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3250,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3255,
                      "src": "452:7:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 3249,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "452:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3252,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3255,
                      "src": "465:9:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 3251,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "465:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3254,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3255,
                      "src": "480:9:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 3253,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "480:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "PermitSignature",
                  "nodeType": "StructDefinition",
                  "scope": 3340,
                  "src": "381:113:5",
                  "visibility": "public"
                },
                {
                  "canonicalName": "IBaseUniswapAdapter.AmountCalc",
                  "id": 3267,
                  "members": [
                    {
                      "constant": false,
                      "id": 3257,
                      "mutability": "mutable",
                      "name": "calculatedAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3267,
                      "src": "522:24:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3256,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "522:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3259,
                      "mutability": "mutable",
                      "name": "relativePrice",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3267,
                      "src": "552:21:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3258,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "552:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3261,
                      "mutability": "mutable",
                      "name": "amountInUsd",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3267,
                      "src": "579:19:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3260,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "579:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3263,
                      "mutability": "mutable",
                      "name": "amountOutUsd",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3267,
                      "src": "604:20:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3262,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "604:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3266,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3267,
                      "src": "630:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3264,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "630:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3265,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "630:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "AmountCalc",
                  "nodeType": "StructDefinition",
                  "scope": 3340,
                  "src": "498:151:5",
                  "visibility": "public"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "040141e5",
                  "id": 3272,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "WETH_ADDRESS",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3268,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "674:2:5"
                  },
                  "returnParameters": {
                    "id": 3271,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3270,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3272,
                        "src": "695:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3269,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "695:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "694:9:5"
                  },
                  "scope": 3340,
                  "src": "653:51:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "32e4b286",
                  "id": 3277,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "MAX_SLIPPAGE_PERCENT",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3273,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "737:2:5"
                  },
                  "returnParameters": {
                    "id": 3276,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3275,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3277,
                        "src": "758:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3274,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "758:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "757:9:5"
                  },
                  "scope": 3340,
                  "src": "708:59:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "074b2e43",
                  "id": 3282,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "FLASHLOAN_PREMIUM_TOTAL",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3278,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "803:2:5"
                  },
                  "returnParameters": {
                    "id": 3281,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3280,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3282,
                        "src": "824:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3279,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "824:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "823:9:5"
                  },
                  "scope": 3340,
                  "src": "771:62:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "9d1211bf",
                  "id": 3287,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "USD_ADDRESS",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3283,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "857:2:5"
                  },
                  "returnParameters": {
                    "id": 3286,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3285,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3287,
                        "src": "878:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3284,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "878:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "877:9:5"
                  },
                  "scope": 3340,
                  "src": "837:50:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "38013f02",
                  "id": 3292,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ORACLE",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3288,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "906:2:5"
                  },
                  "returnParameters": {
                    "id": 3291,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3290,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3292,
                        "src": "927:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                          "typeString": "contract IPriceOracleGetter"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 3289,
                          "name": "IPriceOracleGetter",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6918,
                          "src": "927:18:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                            "typeString": "contract IPriceOracleGetter"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "926:20:5"
                  },
                  "scope": 3340,
                  "src": "891:56:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "d8264920",
                  "id": 3297,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "UNISWAP_ROUTER",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3293,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "974:2:5"
                  },
                  "returnParameters": {
                    "id": 3296,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3295,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3297,
                        "src": "995:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                          "typeString": "contract IUniswapV2Router02"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 3294,
                          "name": "IUniswapV2Router02",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 7440,
                          "src": "995:18:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                            "typeString": "contract IUniswapV2Router02"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "994:20:5"
                  },
                  "scope": 3340,
                  "src": "951:64:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 3298,
                    "nodeType": "StructuredDocumentation",
                    "src": "1019:628:5",
                    "text": " @dev Given an input asset amount, returns the maximum output amount of the other asset and the prices\n @param amountIn Amount of reserveIn\n @param reserveIn Address of the asset to be swap from\n @param reserveOut Address of the asset to be swap to\n @return uint256 Amount out of the reserveOut\n @return uint256 The price of out amount denominated in the reserveIn currency (18 decimals)\n @return uint256 In amount of reserveIn value denominated in USD (8 decimals)\n @return uint256 Out amount of reserveOut value denominated in USD (8 decimals)\n @return address[] The exchange path"
                  },
                  "functionSelector": "baf7fa99",
                  "id": 3318,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountsOut",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3305,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3300,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3318,
                        "src": "1678:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3299,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1678:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3302,
                        "mutability": "mutable",
                        "name": "reserveIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3318,
                        "src": "1700:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3301,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1700:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3304,
                        "mutability": "mutable",
                        "name": "reserveOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3318,
                        "src": "1723:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3303,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1723:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1672:73:5"
                  },
                  "returnParameters": {
                    "id": 3317,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3307,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3318,
                        "src": "1788:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3306,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1788:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3309,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3318,
                        "src": "1803:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3308,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1803:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3311,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3318,
                        "src": "1818:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3310,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1818:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3313,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3318,
                        "src": "1833:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3312,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1833:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3316,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3318,
                        "src": "1848:16:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3314,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1848:7:5",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 3315,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1848:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1780:90:5"
                  },
                  "scope": 3340,
                  "src": "1650:221:5",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 3319,
                    "nodeType": "StructuredDocumentation",
                    "src": "1875:631:5",
                    "text": " @dev Returns the minimum input asset amount required to buy the given output asset amount and the prices\n @param amountOut Amount of reserveOut\n @param reserveIn Address of the asset to be swap from\n @param reserveOut Address of the asset to be swap to\n @return uint256 Amount in of the reserveIn\n @return uint256 The price of in amount denominated in the reserveOut currency (18 decimals)\n @return uint256 In amount of reserveIn value denominated in USD (8 decimals)\n @return uint256 Out amount of reserveOut value denominated in USD (8 decimals)\n @return address[] The exchange path"
                  },
                  "functionSelector": "cdf58cd6",
                  "id": 3339,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountsIn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3326,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3321,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3339,
                        "src": "2536:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3320,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2536:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3323,
                        "mutability": "mutable",
                        "name": "reserveIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3339,
                        "src": "2559:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3322,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2559:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3325,
                        "mutability": "mutable",
                        "name": "reserveOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3339,
                        "src": "2582:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3324,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2582:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2530:74:5"
                  },
                  "returnParameters": {
                    "id": 3338,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3328,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3339,
                        "src": "2647:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3327,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2647:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3330,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3339,
                        "src": "2662:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3329,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2662:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3332,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3339,
                        "src": "2677:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3331,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2677:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3334,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3339,
                        "src": "2692:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3333,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2692:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3337,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3339,
                        "src": "2707:16:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3335,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2707:7:5",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 3336,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2707:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2639:90:5"
                  },
                  "scope": 3340,
                  "src": "2509:221:5",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3341,
              "src": "249:2483:5"
            }
          ],
          "src": "37:2696:5"
        },
        "id": 5
      },
      "contracts/dependencies/openzeppelin/contracts/Address.sol": {
        "ast": {
          "absolutePath": "contracts/dependencies/openzeppelin/contracts/Address.sol",
          "exportedSymbols": {
            "Address": [
              3404
            ]
          },
          "id": 3405,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3342,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:6"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 3343,
                "nodeType": "StructuredDocumentation",
                "src": "62:67:6",
                "text": " @dev Collection of functions related to the address type"
              },
              "fullyImplemented": true,
              "id": 3404,
              "linearizedBaseContracts": [
                3404
              ],
              "name": "Address",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 3368,
                    "nodeType": "Block",
                    "src": "752:520:6",
                    "statements": [
                      {
                        "assignments": [
                          3352
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3352,
                            "mutability": "mutable",
                            "name": "codehash",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3368,
                            "src": "988:16:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 3351,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "988:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3353,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "988:16:6"
                      },
                      {
                        "assignments": [
                          3355
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3355,
                            "mutability": "mutable",
                            "name": "accountHash",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3368,
                            "src": "1010:19:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 3354,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1010:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3357,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "307863356432343630313836663732333363393237653764623264636337303363306535303062363533636138323237336237626661643830343564383561343730",
                          "id": 3356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1032:66:6",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_89477152217924674838424037953991966239322087453347756267410168184682657981552_by_1",
                            "typeString": "int_const 8947...(69 digits omitted)...1552"
                          },
                          "value": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1010:88:6"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "1165:46:6",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1173:32:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "account",
                                    "nodeType": "YulIdentifier",
                                    "src": "1197:7:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "extcodehash",
                                  "nodeType": "YulIdentifier",
                                  "src": "1185:11:6"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1185:20:6"
                              },
                              "variableNames": [
                                {
                                  "name": "codehash",
                                  "nodeType": "YulIdentifier",
                                  "src": "1173:8:6"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 3346,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1197:7:6",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3352,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1173:8:6",
                            "valueSize": 1
                          }
                        ],
                        "id": 3358,
                        "nodeType": "InlineAssembly",
                        "src": "1156:55:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 3365,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 3361,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3359,
                                  "name": "codehash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3352,
                                  "src": "1224:8:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 3360,
                                  "name": "accountHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3355,
                                  "src": "1236:11:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "1224:23:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 3364,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3362,
                                  "name": "codehash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3352,
                                  "src": "1251:8:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "307830",
                                  "id": 3363,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1263:3:6",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0x0"
                                },
                                "src": "1251:15:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1224:42:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 3366,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1223:44:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 3350,
                        "id": 3367,
                        "nodeType": "Return",
                        "src": "1216:51:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3344,
                    "nodeType": "StructuredDocumentation",
                    "src": "150:533:6",
                    "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n  - an externally-owned account\n  - a contract in construction\n  - an address where a contract will be created\n  - an address where a contract lived, but was destroyed\n ===="
                  },
                  "id": 3369,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isContract",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3347,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3346,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3369,
                        "src": "706:15:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3345,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "706:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "705:17:6"
                  },
                  "returnParameters": {
                    "id": 3350,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3349,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3369,
                        "src": "746:4:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3348,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "746:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "745:6:6"
                  },
                  "scope": 3404,
                  "src": "686:586:6",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3402,
                    "nodeType": "Block",
                    "src": "2226:300:6",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3384,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 3380,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "2248:4:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Address_$3404",
                                        "typeString": "library Address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_Address_$3404",
                                        "typeString": "library Address"
                                      }
                                    ],
                                    "id": 3379,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2240:7:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 3378,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2240:7:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 3381,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2240:13:6",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 3382,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2240:21:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3383,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3374,
                                "src": "2265:6:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2240:31:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365",
                              "id": 3385,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2273:31:6",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9",
                                "typeString": "literal_string \"Address: insufficient balance\""
                              },
                              "value": "Address: insufficient balance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9",
                                "typeString": "literal_string \"Address: insufficient balance\""
                              }
                            ],
                            "id": 3377,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2232:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2232:73:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3387,
                        "nodeType": "ExpressionStatement",
                        "src": "2232:73:6"
                      },
                      {
                        "assignments": [
                          3389,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3389,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3402,
                            "src": "2386:12:6",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3388,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2386:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 3396,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "",
                              "id": 3394,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2434:2:6",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3390,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3372,
                                "src": "2404:9:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "id": 3391,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2404:14:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 3393,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "argumentTypes": null,
                                "id": 3392,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3374,
                                "src": "2426:6:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "2404:29:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 3395,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2404:33:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2385:52:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3398,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3389,
                              "src": "2451:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564",
                              "id": 3399,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2460:60:6",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae",
                                "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""
                              },
                              "value": "Address: unable to send value, recipient may have reverted"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae",
                                "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""
                              }
                            ],
                            "id": 3397,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2443:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3400,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2443:78:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3401,
                        "nodeType": "ExpressionStatement",
                        "src": "2443:78:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3370,
                    "nodeType": "StructuredDocumentation",
                    "src": "1276:876:6",
                    "text": " @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."
                  },
                  "id": 3403,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sendValue",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3375,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3372,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3403,
                        "src": "2174:25:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 3371,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2174:15:6",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3374,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3403,
                        "src": "2201:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3373,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2201:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2173:43:6"
                  },
                  "returnParameters": {
                    "id": 3376,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2226:0:6"
                  },
                  "scope": 3404,
                  "src": "2155:371:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3405,
              "src": "130:2398:6"
            }
          ],
          "src": "37:2492:6"
        },
        "id": 6
      },
      "contracts/dependencies/openzeppelin/contracts/Context.sol": {
        "ast": {
          "absolutePath": "contracts/dependencies/openzeppelin/contracts/Context.sol",
          "exportedSymbols": {
            "Context": [
              3427
            ]
          },
          "id": 3428,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3406,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:7"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 3427,
              "linearizedBaseContracts": [
                3427
              ],
              "name": "Context",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 3414,
                    "nodeType": "Block",
                    "src": "657:28:7",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3411,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "670:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 3412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "670:10:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 3410,
                        "id": 3413,
                        "nodeType": "Return",
                        "src": "663:17:7"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3415,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3407,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "606:2:7"
                  },
                  "returnParameters": {
                    "id": 3410,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3409,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3415,
                        "src": "640:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 3408,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "640:15:7",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "639:17:7"
                  },
                  "scope": 3427,
                  "src": "587:98:7",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3425,
                    "nodeType": "Block",
                    "src": "754:155:7",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3420,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -28,
                          "src": "760:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Context_$3427",
                            "typeString": "contract Context"
                          }
                        },
                        "id": 3421,
                        "nodeType": "ExpressionStatement",
                        "src": "760:4:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3422,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "896:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 3423,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "896:8:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 3419,
                        "id": 3424,
                        "nodeType": "Return",
                        "src": "889:15:7"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3426,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3416,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "706:2:7"
                  },
                  "returnParameters": {
                    "id": 3419,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3418,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3426,
                        "src": "740:12:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3417,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "740:5:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "739:14:7"
                  },
                  "scope": 3427,
                  "src": "689:220:7",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 3428,
              "src": "557:354:7"
            }
          ],
          "src": "32:880:7"
        },
        "id": 7
      },
      "contracts/dependencies/openzeppelin/contracts/ERC20.sol": {
        "ast": {
          "absolutePath": "contracts/dependencies/openzeppelin/contracts/ERC20.sol",
          "exportedSymbols": {
            "ERC20": [
              3934
            ]
          },
          "id": 3935,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3429,
              "literals": [
                "solidity",
                "^",
                "0.6",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:8"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/Context.sol",
              "file": "./Context.sol",
              "id": 3430,
              "nodeType": "ImportDirective",
              "scope": 3935,
              "sourceUnit": 3428,
              "src": "58:23:8",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
              "file": "./IERC20.sol",
              "id": 3431,
              "nodeType": "ImportDirective",
              "scope": 3935,
              "sourceUnit": 4013,
              "src": "82:22:8",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeMath.sol",
              "file": "./SafeMath.sol",
              "id": 3432,
              "nodeType": "ImportDirective",
              "scope": 3935,
              "sourceUnit": 4497,
              "src": "105:24:8",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/Address.sol",
              "file": "./Address.sol",
              "id": 3433,
              "nodeType": "ImportDirective",
              "scope": 3935,
              "sourceUnit": 3405,
              "src": "130:23:8",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 3435,
                    "name": "Context",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3427,
                    "src": "1336:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Context_$3427",
                      "typeString": "contract Context"
                    }
                  },
                  "id": 3436,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1336:7:8"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 3437,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4012,
                    "src": "1345:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$4012",
                      "typeString": "contract IERC20"
                    }
                  },
                  "id": 3438,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1345:6:8"
                }
              ],
              "contractDependencies": [
                3427,
                4012
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 3434,
                "nodeType": "StructuredDocumentation",
                "src": "155:1162:8",
                "text": " @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n We have followed general OpenZeppelin guidelines: functions revert instead\n of returning `false` on failure. This behavior is nonetheless conventional\n and does not conflict with the expectations of ERC20 applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}."
              },
              "fullyImplemented": true,
              "id": 3934,
              "linearizedBaseContracts": [
                3934,
                4012,
                3427
              ],
              "name": "ERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 3441,
                  "libraryName": {
                    "contractScope": null,
                    "id": 3439,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4496,
                    "src": "1362:8:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$4496",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1356:27:8",
                  "typeName": {
                    "id": 3440,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1375:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 3444,
                  "libraryName": {
                    "contractScope": null,
                    "id": 3442,
                    "name": "Address",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3404,
                    "src": "1392:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Address_$3404",
                      "typeString": "library Address"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1386:26:8",
                  "typeName": {
                    "id": 3443,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1404:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 3448,
                  "mutability": "mutable",
                  "name": "_balances",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3934,
                  "src": "1416:45:8",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 3447,
                    "keyType": {
                      "id": 3445,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1424:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1416:27:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 3446,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1435:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 3454,
                  "mutability": "mutable",
                  "name": "_allowances",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3934,
                  "src": "1466:67:8",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "typeName": {
                    "id": 3453,
                    "keyType": {
                      "id": 3449,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1474:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1466:47:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                      "typeString": "mapping(address => mapping(address => uint256))"
                    },
                    "valueType": {
                      "id": 3452,
                      "keyType": {
                        "id": 3450,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1493:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1485:27:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "valueType": {
                        "id": 3451,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1504:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 3456,
                  "mutability": "mutable",
                  "name": "_totalSupply",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3934,
                  "src": "1538:28:8",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3455,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1538:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 3458,
                  "mutability": "mutable",
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3934,
                  "src": "1571:21:8",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3457,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1571:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3460,
                  "mutability": "mutable",
                  "name": "_symbol",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3934,
                  "src": "1596:23:8",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3459,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1596:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3462,
                  "mutability": "mutable",
                  "name": "_decimals",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3934,
                  "src": "1623:23:8",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3461,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1623:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 3482,
                    "nodeType": "Block",
                    "src": "2010:65:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3472,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3470,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3458,
                            "src": "2016:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3471,
                            "name": "name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3465,
                            "src": "2024:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "2016:12:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 3473,
                        "nodeType": "ExpressionStatement",
                        "src": "2016:12:8"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3474,
                            "name": "_symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3460,
                            "src": "2034:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3475,
                            "name": "symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3467,
                            "src": "2044:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "2034:16:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 3477,
                        "nodeType": "ExpressionStatement",
                        "src": "2034:16:8"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3480,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3478,
                            "name": "_decimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3462,
                            "src": "2056:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "3138",
                            "id": 3479,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2068:2:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_18_by_1",
                              "typeString": "int_const 18"
                            },
                            "value": "18"
                          },
                          "src": "2056:14:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 3481,
                        "nodeType": "ExpressionStatement",
                        "src": "2056:14:8"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3463,
                    "nodeType": "StructuredDocumentation",
                    "src": "1651:295:8",
                    "text": " @dev Sets the values for {name} and {symbol}, initializes {decimals} with\n a default value of 18.\n To select a different value for {decimals}, use {_setupDecimals}.\n All three of these values are immutable: they can only be set once during\n construction."
                  },
                  "id": 3483,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3468,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3465,
                        "mutability": "mutable",
                        "name": "name",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3483,
                        "src": "1961:18:8",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3464,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1961:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3467,
                        "mutability": "mutable",
                        "name": "symbol",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3483,
                        "src": "1981:20:8",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3466,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1981:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1960:42:8"
                  },
                  "returnParameters": {
                    "id": 3469,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2010:0:8"
                  },
                  "scope": 3934,
                  "src": "1949:126:8",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3491,
                    "nodeType": "Block",
                    "src": "2184:23:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3489,
                          "name": "_name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3458,
                          "src": "2197:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 3488,
                        "id": 3490,
                        "nodeType": "Return",
                        "src": "2190:12:8"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3484,
                    "nodeType": "StructuredDocumentation",
                    "src": "2079:50:8",
                    "text": " @dev Returns the name of the token."
                  },
                  "functionSelector": "06fdde03",
                  "id": 3492,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3485,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2145:2:8"
                  },
                  "returnParameters": {
                    "id": 3488,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3487,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3492,
                        "src": "2169:13:8",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3486,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2169:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2168:15:8"
                  },
                  "scope": 3934,
                  "src": "2132:75:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3500,
                    "nodeType": "Block",
                    "src": "2364:25:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3498,
                          "name": "_symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3460,
                          "src": "2377:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 3497,
                        "id": 3499,
                        "nodeType": "Return",
                        "src": "2370:14:8"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3493,
                    "nodeType": "StructuredDocumentation",
                    "src": "2211:96:8",
                    "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name."
                  },
                  "functionSelector": "95d89b41",
                  "id": 3501,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3494,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2325:2:8"
                  },
                  "returnParameters": {
                    "id": 3497,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3496,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3501,
                        "src": "2349:13:8",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3495,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2349:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2348:15:8"
                  },
                  "scope": 3934,
                  "src": "2310:79:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3509,
                    "nodeType": "Block",
                    "src": "3032:27:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3507,
                          "name": "_decimals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3462,
                          "src": "3045:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "functionReturnParameters": 3506,
                        "id": 3508,
                        "nodeType": "Return",
                        "src": "3038:16:8"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3502,
                    "nodeType": "StructuredDocumentation",
                    "src": "2393:588:8",
                    "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5,05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n called.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."
                  },
                  "functionSelector": "313ce567",
                  "id": 3510,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decimals",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3503,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3001:2:8"
                  },
                  "returnParameters": {
                    "id": 3506,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3505,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3510,
                        "src": "3025:5:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 3504,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "3025:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3024:7:8"
                  },
                  "scope": 3934,
                  "src": "2984:75:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3943
                  ],
                  "body": {
                    "id": 3519,
                    "nodeType": "Block",
                    "src": "3173:30:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3517,
                          "name": "_totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3456,
                          "src": "3186:12:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3516,
                        "id": 3518,
                        "nodeType": "Return",
                        "src": "3179:19:8"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3511,
                    "nodeType": "StructuredDocumentation",
                    "src": "3063:45:8",
                    "text": " @dev See {IERC20-totalSupply}."
                  },
                  "functionSelector": "18160ddd",
                  "id": 3520,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3513,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3146:8:8"
                  },
                  "parameters": {
                    "id": 3512,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3131:2:8"
                  },
                  "returnParameters": {
                    "id": 3516,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3515,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3520,
                        "src": "3164:7:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3514,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3164:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3163:9:8"
                  },
                  "scope": 3934,
                  "src": "3111:92:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3951
                  ],
                  "body": {
                    "id": 3533,
                    "nodeType": "Block",
                    "src": "3328:36:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3529,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3448,
                            "src": "3341:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 3531,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3530,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3523,
                            "src": "3351:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3341:18:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3528,
                        "id": 3532,
                        "nodeType": "Return",
                        "src": "3334:25:8"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3521,
                    "nodeType": "StructuredDocumentation",
                    "src": "3207:43:8",
                    "text": " @dev See {IERC20-balanceOf}."
                  },
                  "functionSelector": "70a08231",
                  "id": 3534,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3525,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3301:8:8"
                  },
                  "parameters": {
                    "id": 3524,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3523,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3534,
                        "src": "3272:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3522,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3272:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3271:17:8"
                  },
                  "returnParameters": {
                    "id": 3528,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3527,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3534,
                        "src": "3319:7:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3526,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3319:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3318:9:8"
                  },
                  "scope": 3934,
                  "src": "3253:111:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3961
                  ],
                  "body": {
                    "id": 3554,
                    "nodeType": "Block",
                    "src": "3641:70:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 3546,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3415,
                                "src": "3657:10:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 3547,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3657:12:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3548,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3537,
                              "src": "3671:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3549,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3539,
                              "src": "3682:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3545,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3755,
                            "src": "3647:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3550,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3647:42:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3551,
                        "nodeType": "ExpressionStatement",
                        "src": "3647:42:8"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 3552,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3702:4:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 3544,
                        "id": 3553,
                        "nodeType": "Return",
                        "src": "3695:11:8"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3535,
                    "nodeType": "StructuredDocumentation",
                    "src": "3368:178:8",
                    "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `recipient` cannot be the zero address.\n - the caller must have a balance of at least `amount`."
                  },
                  "functionSelector": "a9059cbb",
                  "id": 3555,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3541,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3617:8:8"
                  },
                  "parameters": {
                    "id": 3540,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3537,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3555,
                        "src": "3567:17:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3536,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3567:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3539,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3555,
                        "src": "3586:14:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3538,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3586:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3566:35:8"
                  },
                  "returnParameters": {
                    "id": 3544,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3543,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3555,
                        "src": "3635:4:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3542,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3635:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3634:6:8"
                  },
                  "scope": 3934,
                  "src": "3549:162:8",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3971
                  ],
                  "body": {
                    "id": 3572,
                    "nodeType": "Block",
                    "src": "3881:45:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3566,
                              "name": "_allowances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3454,
                              "src": "3894:11:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 3568,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3567,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3558,
                              "src": "3906:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3894:18:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 3570,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3569,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3560,
                            "src": "3913:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3894:27:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3565,
                        "id": 3571,
                        "nodeType": "Return",
                        "src": "3887:34:8"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3556,
                    "nodeType": "StructuredDocumentation",
                    "src": "3715:43:8",
                    "text": " @dev See {IERC20-allowance}."
                  },
                  "functionSelector": "dd62ed3e",
                  "id": 3573,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3562,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3848:8:8"
                  },
                  "parameters": {
                    "id": 3561,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3558,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3573,
                        "src": "3780:13:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3557,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3780:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3560,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3573,
                        "src": "3795:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3559,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3795:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3779:32:8"
                  },
                  "returnParameters": {
                    "id": 3565,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3564,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3573,
                        "src": "3870:7:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3563,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3870:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3869:9:8"
                  },
                  "scope": 3934,
                  "src": "3761:165:8",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3981
                  ],
                  "body": {
                    "id": 3593,
                    "nodeType": "Block",
                    "src": "4137:67:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 3585,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3415,
                                "src": "4152:10:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 3586,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4152:12:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3587,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3576,
                              "src": "4166:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3588,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3578,
                              "src": "4175:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3584,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3911,
                            "src": "4143:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3589,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4143:39:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3590,
                        "nodeType": "ExpressionStatement",
                        "src": "4143:39:8"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 3591,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4195:4:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 3583,
                        "id": 3592,
                        "nodeType": "Return",
                        "src": "4188:11:8"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3574,
                    "nodeType": "StructuredDocumentation",
                    "src": "3930:115:8",
                    "text": " @dev See {IERC20-approve}.\n Requirements:\n - `spender` cannot be the zero address."
                  },
                  "functionSelector": "095ea7b3",
                  "id": 3594,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3580,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4113:8:8"
                  },
                  "parameters": {
                    "id": 3579,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3576,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3594,
                        "src": "4065:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3575,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4065:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3578,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3594,
                        "src": "4082:14:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3577,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4082:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4064:33:8"
                  },
                  "returnParameters": {
                    "id": 3583,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3582,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3594,
                        "src": "4131:4:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3581,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4131:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4130:6:8"
                  },
                  "scope": 3934,
                  "src": "4048:156:8",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3993
                  ],
                  "body": {
                    "id": 3631,
                    "nodeType": "Block",
                    "src": "4766:215:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3608,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3597,
                              "src": "4782:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3609,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3599,
                              "src": "4790:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3610,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3601,
                              "src": "4801:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3607,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3755,
                            "src": "4772:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3611,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4772:36:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3612,
                        "nodeType": "ExpressionStatement",
                        "src": "4772:36:8"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3614,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3597,
                              "src": "4830:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 3615,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3415,
                                "src": "4844:10:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 3616,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4844:12:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3624,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3601,
                                  "src": "4902:6:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365",
                                  "id": 3625,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4910:42:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330",
                                    "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\""
                                  },
                                  "value": "ERC20: transfer amount exceeds allowance"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330",
                                    "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3617,
                                      "name": "_allowances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3454,
                                      "src": "4864:11:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 3619,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 3618,
                                      "name": "sender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3597,
                                      "src": "4876:6:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4864:19:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3622,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 3620,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3415,
                                      "src": "4884:10:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                        "typeString": "function () view returns (address payable)"
                                      }
                                    },
                                    "id": 3621,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4884:12:8",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4864:33:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 3623,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4374,
                                "src": "4864:37:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                                }
                              },
                              "id": 3626,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4864:89:8",
                              "tryCall": false,
                              "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": 3613,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3911,
                            "src": "4814:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3627,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4814:145:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3628,
                        "nodeType": "ExpressionStatement",
                        "src": "4814:145:8"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 3629,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4972:4:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 3606,
                        "id": 3630,
                        "nodeType": "Return",
                        "src": "4965:11:8"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3595,
                    "nodeType": "StructuredDocumentation",
                    "src": "4208:427:8",
                    "text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20};\n Requirements:\n - `sender` and `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`.\n - the caller must have allowance for ``sender``'s tokens of at least\n `amount`."
                  },
                  "functionSelector": "23b872dd",
                  "id": 3632,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3603,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4742:8:8"
                  },
                  "parameters": {
                    "id": 3602,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3597,
                        "mutability": "mutable",
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3632,
                        "src": "4665:14:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3596,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4665:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3599,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3632,
                        "src": "4685:17:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3598,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4685:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3601,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3632,
                        "src": "4708:14:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3600,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4708:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4659:67:8"
                  },
                  "returnParameters": {
                    "id": 3606,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3605,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3632,
                        "src": "4760:4:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3604,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4760:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4759:6:8"
                  },
                  "scope": 3934,
                  "src": "4638:343:8",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3659,
                    "nodeType": "Block",
                    "src": "5444:111:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 3643,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3415,
                                "src": "5459:10:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 3644,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5459:12:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3645,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3635,
                              "src": "5473:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3653,
                                  "name": "addedValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3637,
                                  "src": "5521:10:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3646,
                                      "name": "_allowances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3454,
                                      "src": "5482:11:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 3649,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 3647,
                                        "name": "_msgSender",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3415,
                                        "src": "5494:10:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                          "typeString": "function () view returns (address payable)"
                                        }
                                      },
                                      "id": 3648,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5494:12:8",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5482:25:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3651,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3650,
                                    "name": "spender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3635,
                                    "src": "5508:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5482:34:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 3652,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4329,
                                "src": "5482:38:8",
                                "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": 3654,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5482:50:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3642,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3911,
                            "src": "5450:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3655,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5450:83:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3656,
                        "nodeType": "ExpressionStatement",
                        "src": "5450:83:8"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 3657,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5546:4:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 3641,
                        "id": 3658,
                        "nodeType": "Return",
                        "src": "5539:11:8"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3633,
                    "nodeType": "StructuredDocumentation",
                    "src": "4985:362:8",
                    "text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address."
                  },
                  "functionSelector": "39509351",
                  "id": 3660,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "increaseAllowance",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3638,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3635,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3660,
                        "src": "5377:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3634,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5377:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3637,
                        "mutability": "mutable",
                        "name": "addedValue",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3660,
                        "src": "5394:18:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3636,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5394:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5376:37:8"
                  },
                  "returnParameters": {
                    "id": 3641,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3640,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3660,
                        "src": "5438:4:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3639,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5438:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5437:6:8"
                  },
                  "scope": 3934,
                  "src": "5350:205:8",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3688,
                    "nodeType": "Block",
                    "src": "6125:205:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 3671,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3415,
                                "src": "6147:10:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 3672,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6147:12:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3673,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3663,
                              "src": "6167:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3681,
                                  "name": "subtractedValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3665,
                                  "src": "6230:15:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f",
                                  "id": 3682,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6255:39:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
                                    "typeString": "literal_string \"ERC20: decreased allowance below zero\""
                                  },
                                  "value": "ERC20: decreased allowance below zero"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
                                    "typeString": "literal_string \"ERC20: decreased allowance below zero\""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3674,
                                      "name": "_allowances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3454,
                                      "src": "6182:11:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 3677,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 3675,
                                        "name": "_msgSender",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3415,
                                        "src": "6194:10:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                          "typeString": "function () view returns (address payable)"
                                        }
                                      },
                                      "id": 3676,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6194:12:8",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6182:25:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3679,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3678,
                                    "name": "spender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3663,
                                    "src": "6208:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6182:34:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 3680,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4374,
                                "src": "6182:38:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                                }
                              },
                              "id": 3683,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6182:120:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3670,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3911,
                            "src": "6131:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3684,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6131:177:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3685,
                        "nodeType": "ExpressionStatement",
                        "src": "6131:177:8"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 3686,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6321:4:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 3669,
                        "id": 3687,
                        "nodeType": "Return",
                        "src": "6314:11:8"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3661,
                    "nodeType": "StructuredDocumentation",
                    "src": "5559:450:8",
                    "text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."
                  },
                  "functionSelector": "a457c2d7",
                  "id": 3689,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decreaseAllowance",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3666,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3663,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3689,
                        "src": "6039:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3662,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6039:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3665,
                        "mutability": "mutable",
                        "name": "subtractedValue",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3689,
                        "src": "6056:23:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3664,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6056:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6038:42:8"
                  },
                  "returnParameters": {
                    "id": 3669,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3668,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3689,
                        "src": "6117:4:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3667,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6117:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6116:6:8"
                  },
                  "scope": 3934,
                  "src": "6012:318:8",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3754,
                    "nodeType": "Block",
                    "src": "6877:417:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3705,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3700,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3692,
                                "src": "6891:6:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 3703,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6909:1:8",
                                    "subdenomination": null,
                                    "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": 3702,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6901:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3701,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6901:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 3704,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6901:10:8",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6891:20:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373",
                              "id": 3706,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6913:39:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
                                "typeString": "literal_string \"ERC20: transfer from the zero address\""
                              },
                              "value": "ERC20: transfer from the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
                                "typeString": "literal_string \"ERC20: transfer from the zero address\""
                              }
                            ],
                            "id": 3699,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6883:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6883:70:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3708,
                        "nodeType": "ExpressionStatement",
                        "src": "6883:70:8"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3715,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3710,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3694,
                                "src": "6967:9:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 3713,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6988:1:8",
                                    "subdenomination": null,
                                    "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": 3712,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6980:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3711,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6980:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 3714,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6980:10:8",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6967:23:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373",
                              "id": 3716,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6992:37:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
                                "typeString": "literal_string \"ERC20: transfer to the zero address\""
                              },
                              "value": "ERC20: transfer to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
                                "typeString": "literal_string \"ERC20: transfer to the zero address\""
                              }
                            ],
                            "id": 3709,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6959:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3717,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6959:71:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3718,
                        "nodeType": "ExpressionStatement",
                        "src": "6959:71:8"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3720,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3692,
                              "src": "7058:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3721,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3694,
                              "src": "7066:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3722,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3696,
                              "src": "7077:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3719,
                            "name": "_beforeTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3933,
                            "src": "7037:20:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3723,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7037:47:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3724,
                        "nodeType": "ExpressionStatement",
                        "src": "7037:47:8"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3735,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3725,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3448,
                              "src": "7091:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3727,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3726,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3692,
                              "src": "7101:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7091:17:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3732,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3696,
                                "src": "7133:6:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365",
                                "id": 3733,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7141:40:8",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
                                  "typeString": "literal_string \"ERC20: transfer amount exceeds balance\""
                                },
                                "value": "ERC20: transfer amount exceeds balance"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
                                  "typeString": "literal_string \"ERC20: transfer amount exceeds balance\""
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3728,
                                  "name": "_balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3448,
                                  "src": "7111:9:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 3730,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3729,
                                  "name": "sender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3692,
                                  "src": "7121:6:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7111:17:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3731,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4374,
                              "src": "7111:21:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                              }
                            },
                            "id": 3734,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7111:71:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7091:91:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3736,
                        "nodeType": "ExpressionStatement",
                        "src": "7091:91:8"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3746,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3737,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3448,
                              "src": "7188:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3739,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3738,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3694,
                              "src": "7198:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7188:20:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3744,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3696,
                                "src": "7236:6:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3740,
                                  "name": "_balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3448,
                                  "src": "7211:9:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 3742,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3741,
                                  "name": "recipient",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3694,
                                  "src": "7221:9:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7211:20:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3743,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4329,
                              "src": "7211:24:8",
                              "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": 3745,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7211:32:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7188:55:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3747,
                        "nodeType": "ExpressionStatement",
                        "src": "7188:55:8"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3749,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3692,
                              "src": "7263:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3750,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3694,
                              "src": "7271:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3751,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3696,
                              "src": "7282:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3748,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4002,
                            "src": "7254:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3752,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7254:35:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3753,
                        "nodeType": "EmitStatement",
                        "src": "7249:40:8"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3690,
                    "nodeType": "StructuredDocumentation",
                    "src": "6334:437:8",
                    "text": " @dev Moves tokens `amount` from `sender` to `recipient`.\n This is internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `sender` cannot be the zero address.\n - `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`."
                  },
                  "id": 3755,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3697,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3692,
                        "mutability": "mutable",
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3755,
                        "src": "6798:14:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3691,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6798:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3694,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3755,
                        "src": "6818:17:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3693,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6818:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3696,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3755,
                        "src": "6841:14:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3695,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6841:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6792:67:8"
                  },
                  "returnParameters": {
                    "id": 3698,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6877:0:8"
                  },
                  "scope": 3934,
                  "src": "6774:520:8",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3809,
                    "nodeType": "Block",
                    "src": "7609:283:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3769,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3764,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3758,
                                "src": "7623:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 3767,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7642:1:8",
                                    "subdenomination": null,
                                    "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": 3766,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7634:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3765,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7634:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 3768,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7634:10:8",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "7623:21:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373",
                              "id": 3770,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7646:33:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
                                "typeString": "literal_string \"ERC20: mint to the zero address\""
                              },
                              "value": "ERC20: mint to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
                                "typeString": "literal_string \"ERC20: mint to the zero address\""
                              }
                            ],
                            "id": 3763,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7615:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3771,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7615:65:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3772,
                        "nodeType": "ExpressionStatement",
                        "src": "7615:65:8"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3776,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7716:1:8",
                                  "subdenomination": null,
                                  "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": 3775,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7708:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3774,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7708:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 3777,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7708:10:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3778,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3758,
                              "src": "7720:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3779,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3760,
                              "src": "7729:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3773,
                            "name": "_beforeTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3933,
                            "src": "7687:20:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3780,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7687:49:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3781,
                        "nodeType": "ExpressionStatement",
                        "src": "7687:49:8"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3787,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3782,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3456,
                            "src": "7743:12:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3785,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3760,
                                "src": "7775:6:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3783,
                                "name": "_totalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3456,
                                "src": "7758:12:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3784,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4329,
                              "src": "7758:16:8",
                              "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": 3786,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7758:24:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7743:39:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3788,
                        "nodeType": "ExpressionStatement",
                        "src": "7743:39:8"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3798,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3789,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3448,
                              "src": "7788:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3791,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3790,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3758,
                              "src": "7798:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7788:18:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3796,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3760,
                                "src": "7832:6:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3792,
                                  "name": "_balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3448,
                                  "src": "7809:9:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 3794,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3793,
                                  "name": "account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3758,
                                  "src": "7819:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7809:18:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3795,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4329,
                              "src": "7809:22:8",
                              "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": 3797,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7809:30:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7788:51:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3799,
                        "nodeType": "ExpressionStatement",
                        "src": "7788:51:8"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3803,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7867:1:8",
                                  "subdenomination": null,
                                  "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": 3802,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7859:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3801,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7859:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 3804,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7859:10:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3805,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3758,
                              "src": "7871:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3806,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3760,
                              "src": "7880:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3800,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4002,
                            "src": "7850:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3807,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7850:37:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3808,
                        "nodeType": "EmitStatement",
                        "src": "7845:42:8"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3756,
                    "nodeType": "StructuredDocumentation",
                    "src": "7298:243:8",
                    "text": "@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements\n - `to` cannot be the zero address."
                  },
                  "id": 3810,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3761,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3758,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3810,
                        "src": "7559:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3757,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7559:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3760,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3810,
                        "src": "7576:14:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3759,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7576:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7558:33:8"
                  },
                  "returnParameters": {
                    "id": 3762,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7609:0:8"
                  },
                  "scope": 3934,
                  "src": "7544:348:8",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3865,
                    "nodeType": "Block",
                    "src": "8252:323:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3824,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3819,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3813,
                                "src": "8266:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 3822,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8285:1:8",
                                    "subdenomination": null,
                                    "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": 3821,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8277:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3820,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8277:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 3823,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8277:10:8",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "8266:21:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373",
                              "id": 3825,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8289:35:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
                                "typeString": "literal_string \"ERC20: burn from the zero address\""
                              },
                              "value": "ERC20: burn from the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
                                "typeString": "literal_string \"ERC20: burn from the zero address\""
                              }
                            ],
                            "id": 3818,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8258:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3826,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8258:67:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3827,
                        "nodeType": "ExpressionStatement",
                        "src": "8258:67:8"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3829,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3813,
                              "src": "8353:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3832,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8370:1:8",
                                  "subdenomination": null,
                                  "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": 3831,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8362:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3830,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8362:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 3833,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8362:10:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3834,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3815,
                              "src": "8374:6:8",
                              "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": 3828,
                            "name": "_beforeTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3933,
                            "src": "8332:20:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3835,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8332:49:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3836,
                        "nodeType": "ExpressionStatement",
                        "src": "8332:49:8"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3847,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3837,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3448,
                              "src": "8388:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3839,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3838,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3813,
                              "src": "8398:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8388:18:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3844,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3815,
                                "src": "8432:6:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365",
                                "id": 3845,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8440:36:8",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd",
                                  "typeString": "literal_string \"ERC20: burn amount exceeds balance\""
                                },
                                "value": "ERC20: burn amount exceeds balance"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd",
                                  "typeString": "literal_string \"ERC20: burn amount exceeds balance\""
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3840,
                                  "name": "_balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3448,
                                  "src": "8409:9:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 3842,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3841,
                                  "name": "account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3813,
                                  "src": "8419:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "8409:18:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3843,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4374,
                              "src": "8409:22:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                              }
                            },
                            "id": 3846,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8409:68:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8388:89:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3848,
                        "nodeType": "ExpressionStatement",
                        "src": "8388:89:8"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3854,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3849,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3456,
                            "src": "8483:12:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3852,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3815,
                                "src": "8515:6:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3850,
                                "name": "_totalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3456,
                                "src": "8498:12:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3851,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4346,
                              "src": "8498:16:8",
                              "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": 3853,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8498:24:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8483:39:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3855,
                        "nodeType": "ExpressionStatement",
                        "src": "8483:39:8"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3857,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3813,
                              "src": "8542:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3860,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8559:1:8",
                                  "subdenomination": null,
                                  "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": 3859,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8551:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3858,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8551:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 3861,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8551:10:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3862,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3815,
                              "src": "8563:6:8",
                              "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": 3856,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4002,
                            "src": "8533:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3863,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8533:37:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3864,
                        "nodeType": "EmitStatement",
                        "src": "8528:42:8"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3811,
                    "nodeType": "StructuredDocumentation",
                    "src": "7896:288:8",
                    "text": " @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens."
                  },
                  "id": 3866,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3816,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3813,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3866,
                        "src": "8202:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3812,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8202:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3815,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3866,
                        "src": "8219:14:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3814,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8219:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8201:33:8"
                  },
                  "returnParameters": {
                    "id": 3817,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8252:0:8"
                  },
                  "scope": 3934,
                  "src": "8187:388:8",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3910,
                    "nodeType": "Block",
                    "src": "9071:239:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3882,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3877,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3869,
                                "src": "9085:5:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 3880,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9102:1:8",
                                    "subdenomination": null,
                                    "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": 3879,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9094:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3878,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9094:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 3881,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9094:10:8",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "9085:19:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373",
                              "id": 3883,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9106:38:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
                                "typeString": "literal_string \"ERC20: approve from the zero address\""
                              },
                              "value": "ERC20: approve from the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
                                "typeString": "literal_string \"ERC20: approve from the zero address\""
                              }
                            ],
                            "id": 3876,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9077:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3884,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9077:68:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3885,
                        "nodeType": "ExpressionStatement",
                        "src": "9077:68:8"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3892,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3887,
                                "name": "spender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3871,
                                "src": "9159:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 3890,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9178:1:8",
                                    "subdenomination": null,
                                    "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": 3889,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9170:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3888,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9170:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 3891,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9170:10:8",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "9159:21:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373",
                              "id": 3893,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9182:36:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
                                "typeString": "literal_string \"ERC20: approve to the zero address\""
                              },
                              "value": "ERC20: approve to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
                                "typeString": "literal_string \"ERC20: approve to the zero address\""
                              }
                            ],
                            "id": 3886,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9151:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3894,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9151:68:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3895,
                        "nodeType": "ExpressionStatement",
                        "src": "9151:68:8"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3902,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3896,
                                "name": "_allowances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3454,
                                "src": "9226:11:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 3899,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3897,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3869,
                                "src": "9238:5:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9226:18:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3900,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3898,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3871,
                              "src": "9245:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9226:27:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3901,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3873,
                            "src": "9256:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9226:36:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3903,
                        "nodeType": "ExpressionStatement",
                        "src": "9226:36:8"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3905,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3869,
                              "src": "9282:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3906,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3871,
                              "src": "9289:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3907,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3873,
                              "src": "9298:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3904,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4011,
                            "src": "9273:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3908,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9273:32:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3909,
                        "nodeType": "EmitStatement",
                        "src": "9268:37:8"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3867,
                    "nodeType": "StructuredDocumentation",
                    "src": "8579:390:8",
                    "text": " @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n This is internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address."
                  },
                  "id": 3911,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_approve",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3874,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3869,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3911,
                        "src": "8995:13:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3868,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8995:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3871,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3911,
                        "src": "9014:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3870,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9014:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3873,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3911,
                        "src": "9035:14:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3872,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9035:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8989:64:8"
                  },
                  "returnParameters": {
                    "id": 3875,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9071:0:8"
                  },
                  "scope": 3934,
                  "src": "8972:338:8",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3921,
                    "nodeType": "Block",
                    "src": "9667:32:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3917,
                            "name": "_decimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3462,
                            "src": "9673:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3918,
                            "name": "decimals_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3914,
                            "src": "9685:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "9673:21:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 3920,
                        "nodeType": "ExpressionStatement",
                        "src": "9673:21:8"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3912,
                    "nodeType": "StructuredDocumentation",
                    "src": "9314:300:8",
                    "text": " @dev Sets {decimals} to a value other than the default one of 18.\n WARNING: This function should only be called from the constructor. Most\n applications that interact with token contracts will not expect\n {decimals} to ever change, and may work incorrectly if it does."
                  },
                  "id": 3922,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setupDecimals",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3915,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3914,
                        "mutability": "mutable",
                        "name": "decimals_",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3922,
                        "src": "9641:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 3913,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "9641:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9640:17:8"
                  },
                  "returnParameters": {
                    "id": 3916,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9667:0:8"
                  },
                  "scope": 3934,
                  "src": "9617:82:8",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3932,
                    "nodeType": "Block",
                    "src": "10361:2:8",
                    "statements": []
                  },
                  "documentation": {
                    "id": 3923,
                    "nodeType": "StructuredDocumentation",
                    "src": "9703:550:8",
                    "text": " @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be to transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
                  },
                  "id": 3933,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_beforeTokenTransfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3930,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3925,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3933,
                        "src": "10291:12:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3924,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10291:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3927,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3933,
                        "src": "10309:10:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3926,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10309:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3929,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3933,
                        "src": "10325:14:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3928,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10325:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10285:58:8"
                  },
                  "returnParameters": {
                    "id": 3931,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10361:0:8"
                  },
                  "scope": 3934,
                  "src": "10256:107:8",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 3935,
              "src": "1318:9047:8"
            }
          ],
          "src": "33:10333:8"
        },
        "id": 8
      },
      "contracts/dependencies/openzeppelin/contracts/IERC20.sol": {
        "ast": {
          "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
          "exportedSymbols": {
            "IERC20": [
              4012
            ]
          },
          "id": 4013,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3936,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:9"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 3937,
                "nodeType": "StructuredDocumentation",
                "src": "62:70:9",
                "text": " @dev Interface of the ERC20 standard as defined in the EIP."
              },
              "fullyImplemented": false,
              "id": 4012,
              "linearizedBaseContracts": [
                4012
              ],
              "name": "IERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": {
                    "id": 3938,
                    "nodeType": "StructuredDocumentation",
                    "src": "154:62:9",
                    "text": " @dev Returns the amount of tokens in existence."
                  },
                  "functionSelector": "18160ddd",
                  "id": 3943,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3939,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "239:2:9"
                  },
                  "returnParameters": {
                    "id": 3942,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3941,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3943,
                        "src": "265:7:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3940,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "265:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "264:9:9"
                  },
                  "scope": 4012,
                  "src": "219:55:9",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 3944,
                    "nodeType": "StructuredDocumentation",
                    "src": "278:68:9",
                    "text": " @dev Returns the amount of tokens owned by `account`."
                  },
                  "functionSelector": "70a08231",
                  "id": 3951,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3947,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3946,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3951,
                        "src": "368:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3945,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "368:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "367:17:9"
                  },
                  "returnParameters": {
                    "id": 3950,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3949,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3951,
                        "src": "408:7:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3948,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "408:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "407:9:9"
                  },
                  "scope": 4012,
                  "src": "349:68:9",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 3952,
                    "nodeType": "StructuredDocumentation",
                    "src": "421:197:9",
                    "text": " @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
                  },
                  "functionSelector": "a9059cbb",
                  "id": 3961,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3957,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3954,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3961,
                        "src": "639:17:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3953,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "639:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3956,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3961,
                        "src": "658:14:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3955,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "658:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "638:35:9"
                  },
                  "returnParameters": {
                    "id": 3960,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3959,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3961,
                        "src": "692:4:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3958,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "692:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "691:6:9"
                  },
                  "scope": 4012,
                  "src": "621:77:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 3962,
                    "nodeType": "StructuredDocumentation",
                    "src": "702:252:9",
                    "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."
                  },
                  "functionSelector": "dd62ed3e",
                  "id": 3971,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3967,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3964,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3971,
                        "src": "976:13:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3963,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "976:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3966,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3971,
                        "src": "991:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3965,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "991:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "975:32:9"
                  },
                  "returnParameters": {
                    "id": 3970,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3969,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3971,
                        "src": "1031:7:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3968,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1031:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1030:9:9"
                  },
                  "scope": 4012,
                  "src": "957:83:9",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 3972,
                    "nodeType": "StructuredDocumentation",
                    "src": "1044:616:9",
                    "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."
                  },
                  "functionSelector": "095ea7b3",
                  "id": 3981,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3977,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3974,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3981,
                        "src": "1680:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3973,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1680:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3976,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3981,
                        "src": "1697:14:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3975,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1697:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1679:33:9"
                  },
                  "returnParameters": {
                    "id": 3980,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3979,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3981,
                        "src": "1731:4:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3978,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1731:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1730:6:9"
                  },
                  "scope": 4012,
                  "src": "1663:74:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 3982,
                    "nodeType": "StructuredDocumentation",
                    "src": "1741:280:9",
                    "text": " @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
                  },
                  "functionSelector": "23b872dd",
                  "id": 3993,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3989,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3984,
                        "mutability": "mutable",
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3993,
                        "src": "2051:14:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3983,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2051:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3986,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3993,
                        "src": "2071:17:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3985,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2071:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3988,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3993,
                        "src": "2094:14:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3987,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2094:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2045:67:9"
                  },
                  "returnParameters": {
                    "id": 3992,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3991,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3993,
                        "src": "2131:4:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3990,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2131:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2130:6:9"
                  },
                  "scope": 4012,
                  "src": "2024:113:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 3994,
                    "nodeType": "StructuredDocumentation",
                    "src": "2141:148:9",
                    "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."
                  },
                  "id": 4002,
                  "name": "Transfer",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4001,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3996,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4002,
                        "src": "2307:20:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3995,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2307:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3998,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4002,
                        "src": "2329:18:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3997,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2329:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4000,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4002,
                        "src": "2349:13:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3999,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2349:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2306:57:9"
                  },
                  "src": "2292:72:9"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 4003,
                    "nodeType": "StructuredDocumentation",
                    "src": "2368:142:9",
                    "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."
                  },
                  "id": 4011,
                  "name": "Approval",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4010,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4005,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4011,
                        "src": "2528:21:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4004,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2528:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4007,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4011,
                        "src": "2551:23:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4006,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2551:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4009,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4011,
                        "src": "2576:13:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4008,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2576:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2527:63:9"
                  },
                  "src": "2513:78:9"
                }
              ],
              "scope": 4013,
              "src": "133:2460:9"
            }
          ],
          "src": "37:2557:9"
        },
        "id": 9
      },
      "contracts/dependencies/openzeppelin/contracts/IERC20Detailed.sol": {
        "ast": {
          "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20Detailed.sol",
          "exportedSymbols": {
            "IERC20Detailed": [
              4034
            ]
          },
          "id": 4035,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4014,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:10"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
              "file": "./IERC20.sol",
              "id": 4016,
              "nodeType": "ImportDirective",
              "scope": 4035,
              "sourceUnit": 4013,
              "src": "62:36:10",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 4015,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4017,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4012,
                    "src": "128:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$4012",
                      "typeString": "contract IERC20"
                    }
                  },
                  "id": 4018,
                  "nodeType": "InheritanceSpecifier",
                  "src": "128:6:10"
                }
              ],
              "contractDependencies": [
                4012
              ],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 4034,
              "linearizedBaseContracts": [
                4034,
                4012
              ],
              "name": "IERC20Detailed",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "06fdde03",
                  "id": 4023,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4019,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "152:2:10"
                  },
                  "returnParameters": {
                    "id": 4022,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4021,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4023,
                        "src": "178:13:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4020,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "178:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "177:15:10"
                  },
                  "scope": 4034,
                  "src": "139:54:10",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "95d89b41",
                  "id": 4028,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4024,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "212:2:10"
                  },
                  "returnParameters": {
                    "id": 4027,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4026,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4028,
                        "src": "238:13:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4025,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "238:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "237:15:10"
                  },
                  "scope": 4034,
                  "src": "197:56:10",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "313ce567",
                  "id": 4033,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decimals",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4029,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "274:2:10"
                  },
                  "returnParameters": {
                    "id": 4032,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4031,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4033,
                        "src": "300:5:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 4030,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "300:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "299:7:10"
                  },
                  "scope": 4034,
                  "src": "257:50:10",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 4035,
              "src": "100:209:10"
            }
          ],
          "src": "37:273:10"
        },
        "id": 10
      },
      "contracts/dependencies/openzeppelin/contracts/Ownable.sol": {
        "ast": {
          "absolutePath": "contracts/dependencies/openzeppelin/contracts/Ownable.sol",
          "exportedSymbols": {
            "Ownable": [
              4143
            ]
          },
          "id": 4144,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4036,
              "literals": [
                "solidity",
                "^",
                "0.6",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:11"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/Context.sol",
              "file": "./Context.sol",
              "id": 4037,
              "nodeType": "ImportDirective",
              "scope": 4144,
              "sourceUnit": 3428,
              "src": "58:23:11",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4039,
                    "name": "Context",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3427,
                    "src": "598:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Context_$3427",
                      "typeString": "contract Context"
                    }
                  },
                  "id": 4040,
                  "nodeType": "InheritanceSpecifier",
                  "src": "598:7:11"
                }
              ],
              "contractDependencies": [
                3427
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 4038,
                "nodeType": "StructuredDocumentation",
                "src": "83:494:11",
                "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."
              },
              "fullyImplemented": true,
              "id": 4143,
              "linearizedBaseContracts": [
                4143,
                3427
              ],
              "name": "Ownable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 4042,
                  "mutability": "mutable",
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4143,
                  "src": "610:22:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4041,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "610:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 4048,
                  "name": "OwnershipTransferred",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4047,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4044,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "previousOwner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4048,
                        "src": "664:29:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4043,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "664:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4046,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4048,
                        "src": "695:24:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4045,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "695:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "663:57:11"
                  },
                  "src": "637:84:11"
                },
                {
                  "body": {
                    "id": 4069,
                    "nodeType": "Block",
                    "src": "838:121:11",
                    "statements": [
                      {
                        "assignments": [
                          4053
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4053,
                            "mutability": "mutable",
                            "name": "msgSender",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4069,
                            "src": "844:17:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 4052,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "844:7:11",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4056,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4054,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3415,
                            "src": "864:10:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 4055,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "864:12:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "844:32:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4059,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4057,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4042,
                            "src": "882:6:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4058,
                            "name": "msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4053,
                            "src": "891:9:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "882:18:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4060,
                        "nodeType": "ExpressionStatement",
                        "src": "882:18:11"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 4064,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "940:1:11",
                                  "subdenomination": null,
                                  "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": 4063,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "932:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 4062,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "932:7:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 4065,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "932:10:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4066,
                              "name": "msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4053,
                              "src": "944:9:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4061,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4048,
                            "src": "911:20:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 4067,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "911:43:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4068,
                        "nodeType": "EmitStatement",
                        "src": "906:48:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4049,
                    "nodeType": "StructuredDocumentation",
                    "src": "725:87:11",
                    "text": " @dev Initializes the contract setting the deployer as the initial owner."
                  },
                  "id": 4070,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4050,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "826:2:11"
                  },
                  "returnParameters": {
                    "id": 4051,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "838:0:11"
                  },
                  "scope": 4143,
                  "src": "815:144:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4078,
                    "nodeType": "Block",
                    "src": "1074:24:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4076,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4042,
                          "src": "1087:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 4075,
                        "id": 4077,
                        "nodeType": "Return",
                        "src": "1080:13:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4071,
                    "nodeType": "StructuredDocumentation",
                    "src": "963:61:11",
                    "text": " @dev Returns the address of the current owner."
                  },
                  "functionSelector": "8da5cb5b",
                  "id": 4079,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "owner",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4072,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1041:2:11"
                  },
                  "returnParameters": {
                    "id": 4075,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4074,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4079,
                        "src": "1065:7:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4073,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1065:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1064:9:11"
                  },
                  "scope": 4143,
                  "src": "1027:71:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4091,
                    "nodeType": "Block",
                    "src": "1199:85:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 4086,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4083,
                                "name": "_owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4042,
                                "src": "1213:6:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 4084,
                                  "name": "_msgSender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3415,
                                  "src": "1223:10:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                    "typeString": "function () view returns (address payable)"
                                  }
                                },
                                "id": 4085,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1223:12:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1213:22:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                              "id": 4087,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1237:34:11",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                                "typeString": "literal_string \"Ownable: caller is not the owner\""
                              },
                              "value": "Ownable: caller is not the owner"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                                "typeString": "literal_string \"Ownable: caller is not the owner\""
                              }
                            ],
                            "id": 4082,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1205:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4088,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1205:67:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4089,
                        "nodeType": "ExpressionStatement",
                        "src": "1205:67:11"
                      },
                      {
                        "id": 4090,
                        "nodeType": "PlaceholderStatement",
                        "src": "1278:1:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4080,
                    "nodeType": "StructuredDocumentation",
                    "src": "1102:73:11",
                    "text": " @dev Throws if called by any account other than the owner."
                  },
                  "id": 4092,
                  "name": "onlyOwner",
                  "nodeType": "ModifierDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4081,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1196:2:11"
                  },
                  "src": "1178:106:11",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4113,
                    "nodeType": "Block",
                    "src": "1664:81:11",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4099,
                              "name": "_owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4042,
                              "src": "1696:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 4102,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1712:1:11",
                                  "subdenomination": null,
                                  "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": 4101,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1704:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 4100,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1704:7:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 4103,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1704:10:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 4098,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4048,
                            "src": "1675:20:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 4104,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1675:40:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4105,
                        "nodeType": "EmitStatement",
                        "src": "1670:45:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4111,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4106,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4042,
                            "src": "1721:6:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4109,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1738:1:11",
                                "subdenomination": null,
                                "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": 4108,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1730:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 4107,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1730:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 4110,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1730:10:11",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "1721:19:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4112,
                        "nodeType": "ExpressionStatement",
                        "src": "1721:19:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4093,
                    "nodeType": "StructuredDocumentation",
                    "src": "1288:319:11",
                    "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner."
                  },
                  "functionSelector": "715018a6",
                  "id": 4114,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 4096,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 4095,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "1654:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1654:9:11"
                    }
                  ],
                  "name": "renounceOwnership",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4094,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1636:2:11"
                  },
                  "returnParameters": {
                    "id": 4097,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1664:0:11"
                  },
                  "scope": 4143,
                  "src": "1610:135:11",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4141,
                    "nodeType": "Block",
                    "src": "1954:156:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 4128,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4123,
                                "name": "newOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4117,
                                "src": "1968:8:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 4126,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1988:1:11",
                                    "subdenomination": null,
                                    "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": 4125,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1980:7:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 4124,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1980:7:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 4127,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1980:10:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1968:22:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373",
                              "id": 4129,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1992:40:11",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
                                "typeString": "literal_string \"Ownable: new owner is the zero address\""
                              },
                              "value": "Ownable: new owner is the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
                                "typeString": "literal_string \"Ownable: new owner is the zero address\""
                              }
                            ],
                            "id": 4122,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1960:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4130,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1960:73:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4131,
                        "nodeType": "ExpressionStatement",
                        "src": "1960:73:11"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4133,
                              "name": "_owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4042,
                              "src": "2065:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4134,
                              "name": "newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4117,
                              "src": "2073:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4132,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4048,
                            "src": "2044:20:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 4135,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2044:38:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4136,
                        "nodeType": "EmitStatement",
                        "src": "2039:43:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4137,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4042,
                            "src": "2088:6:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4138,
                            "name": "newOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4117,
                            "src": "2097:8:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2088:17:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4140,
                        "nodeType": "ExpressionStatement",
                        "src": "2088:17:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4115,
                    "nodeType": "StructuredDocumentation",
                    "src": "1749:132:11",
                    "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."
                  },
                  "functionSelector": "f2fde38b",
                  "id": 4142,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 4120,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 4119,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "1944:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1944:9:11"
                    }
                  ],
                  "name": "transferOwnership",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4118,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4117,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4142,
                        "src": "1911:16:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4116,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1911:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1910:18:11"
                  },
                  "returnParameters": {
                    "id": 4121,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1954:0:11"
                  },
                  "scope": 4143,
                  "src": "1884:226:11",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 4144,
              "src": "578:1534:11"
            }
          ],
          "src": "33:2080:11"
        },
        "id": 11
      },
      "contracts/dependencies/openzeppelin/contracts/SafeERC20.sol": {
        "ast": {
          "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeERC20.sol",
          "exportedSymbols": {
            "SafeERC20": [
              4300
            ]
          },
          "id": 4301,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4145,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:12"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
              "file": "./IERC20.sol",
              "id": 4147,
              "nodeType": "ImportDirective",
              "scope": 4301,
              "sourceUnit": 4013,
              "src": "58:36:12",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 4146,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "66:6:12",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeMath.sol",
              "file": "./SafeMath.sol",
              "id": 4149,
              "nodeType": "ImportDirective",
              "scope": 4301,
              "sourceUnit": 4497,
              "src": "95:40:12",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 4148,
                    "name": "SafeMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "103:8:12",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/Address.sol",
              "file": "./Address.sol",
              "id": 4151,
              "nodeType": "ImportDirective",
              "scope": 4301,
              "sourceUnit": 3405,
              "src": "136:38:12",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 4150,
                    "name": "Address",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "144:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 4152,
                "nodeType": "StructuredDocumentation",
                "src": "176:457:12",
                "text": " @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."
              },
              "fullyImplemented": true,
              "id": 4300,
              "linearizedBaseContracts": [
                4300
              ],
              "name": "SafeERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 4155,
                  "libraryName": {
                    "contractScope": null,
                    "id": 4153,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4496,
                    "src": "662:8:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$4496",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "656:27:12",
                  "typeName": {
                    "id": 4154,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "675:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 4158,
                  "libraryName": {
                    "contractScope": null,
                    "id": 4156,
                    "name": "Address",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3404,
                    "src": "692:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Address_$3404",
                      "typeString": "library Address"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "686:26:12",
                  "typeName": {
                    "id": 4157,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "704:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                {
                  "body": {
                    "id": 4179,
                    "nodeType": "Block",
                    "src": "804:96:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4168,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4160,
                              "src": "829:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4171,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4160,
                                      "src": "859:5:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$4012",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 4172,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "transfer",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3961,
                                    "src": "859:14:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 4173,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "859:23:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4174,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4162,
                                  "src": "884:2:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4175,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4164,
                                  "src": "888:5:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4169,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "836:3:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 4170,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "836:22:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 4176,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "836:58:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 4167,
                            "name": "callOptionalReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4299,
                            "src": "810:18:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (contract IERC20,bytes memory)"
                            }
                          },
                          "id": 4177,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "810:85:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4178,
                        "nodeType": "ExpressionStatement",
                        "src": "810:85:12"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 4180,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4165,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4160,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4180,
                        "src": "743:12:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$4012",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 4159,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4012,
                          "src": "743:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$4012",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4162,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4180,
                        "src": "761:10:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4161,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "761:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4164,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4180,
                        "src": "777:13:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4163,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "777:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "737:57:12"
                  },
                  "returnParameters": {
                    "id": 4166,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "804:0:12"
                  },
                  "scope": 4300,
                  "src": "716:184:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4204,
                    "nodeType": "Block",
                    "src": "1014:106:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4192,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4182,
                              "src": "1039:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4195,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4182,
                                      "src": "1069:5:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$4012",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 4196,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "transferFrom",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3993,
                                    "src": "1069:18:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 4197,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1069:27:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4198,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4184,
                                  "src": "1098:4:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4199,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4186,
                                  "src": "1104:2:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4200,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4188,
                                  "src": "1108:5:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4193,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1046:3:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 4194,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1046:22:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 4201,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1046:68:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 4191,
                            "name": "callOptionalReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4299,
                            "src": "1020:18:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (contract IERC20,bytes memory)"
                            }
                          },
                          "id": 4202,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1020:95:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4203,
                        "nodeType": "ExpressionStatement",
                        "src": "1020:95:12"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 4205,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4189,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4182,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4205,
                        "src": "935:12:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$4012",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 4181,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4012,
                          "src": "935:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$4012",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4184,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4205,
                        "src": "953:12:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4183,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "953:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4186,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4205,
                        "src": "971:10:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4185,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "971:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4188,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4205,
                        "src": "987:13:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4187,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "987:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "929:75:12"
                  },
                  "returnParameters": {
                    "id": 4190,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1014:0:12"
                  },
                  "scope": 4300,
                  "src": "904:216:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4246,
                    "nodeType": "Block",
                    "src": "1216:253:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 4230,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4217,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 4215,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4211,
                                      "src": "1238:5:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 4216,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1247:1:12",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "1238:10:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 4218,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1237:12:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4228,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 4223,
                                              "name": "this",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -28,
                                              "src": "1278:4:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_SafeERC20_$4300",
                                                "typeString": "library SafeERC20"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_contract$_SafeERC20_$4300",
                                                "typeString": "library SafeERC20"
                                              }
                                            ],
                                            "id": 4222,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "1270:7:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": {
                                              "id": 4221,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "1270:7:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": null,
                                                "typeString": null
                                              }
                                            }
                                          },
                                          "id": 4224,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1270:13:12",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 4225,
                                          "name": "spender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4209,
                                          "src": "1285:7:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 4219,
                                          "name": "token",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4207,
                                          "src": "1254:5:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$4012",
                                            "typeString": "contract IERC20"
                                          }
                                        },
                                        "id": 4220,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "allowance",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3971,
                                        "src": "1254:15:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                          "typeString": "function (address,address) view external returns (uint256)"
                                        }
                                      },
                                      "id": 4226,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1254:39:12",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 4227,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1297:1:12",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "1254:44:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 4229,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1253:46:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1237:62:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365",
                              "id": 4231,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1307:56:12",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25",
                                "typeString": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""
                              },
                              "value": "SafeERC20: approve from non-zero to non-zero allowance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25",
                                "typeString": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""
                              }
                            ],
                            "id": 4214,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1222:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4232,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1222:147:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4233,
                        "nodeType": "ExpressionStatement",
                        "src": "1222:147:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4235,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4207,
                              "src": "1394:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4238,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4207,
                                      "src": "1424:5:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$4012",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 4239,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "approve",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3981,
                                    "src": "1424:13:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 4240,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1424:22:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4241,
                                  "name": "spender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4209,
                                  "src": "1448:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4242,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4211,
                                  "src": "1457:5:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4236,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1401:3:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 4237,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1401:22:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 4243,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1401:62:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 4234,
                            "name": "callOptionalReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4299,
                            "src": "1375:18:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (contract IERC20,bytes memory)"
                            }
                          },
                          "id": 4244,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1375:89:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4245,
                        "nodeType": "ExpressionStatement",
                        "src": "1375:89:12"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 4247,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeApprove",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4212,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4207,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4247,
                        "src": "1150:12:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$4012",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 4206,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4012,
                          "src": "1150:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$4012",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4209,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4247,
                        "src": "1168:15:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4208,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1168:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4211,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4247,
                        "src": "1189:13:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4210,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1189:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1144:62:12"
                  },
                  "returnParameters": {
                    "id": 4213,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1216:0:12"
                  },
                  "scope": 4300,
                  "src": "1124:345:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4298,
                    "nodeType": "Block",
                    "src": "1542:486:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 4257,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4249,
                                      "src": "1564:5:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$4012",
                                        "typeString": "contract IERC20"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IERC20_$4012",
                                        "typeString": "contract IERC20"
                                      }
                                    ],
                                    "id": 4256,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1556:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 4255,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1556:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 4258,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1556:14:12",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 4259,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3369,
                                "src": "1556:25:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 4260,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1556:27:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374",
                              "id": 4261,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1585:33:12",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f6ce7bfd656f35145dec774d6f7e67f4cba158373d2dd7a0f8273e232f86148d",
                                "typeString": "literal_string \"SafeERC20: call to non-contract\""
                              },
                              "value": "SafeERC20: call to non-contract"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f6ce7bfd656f35145dec774d6f7e67f4cba158373d2dd7a0f8273e232f86148d",
                                "typeString": "literal_string \"SafeERC20: call to non-contract\""
                              }
                            ],
                            "id": 4254,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1548:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4262,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1548:71:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4263,
                        "nodeType": "ExpressionStatement",
                        "src": "1548:71:12"
                      },
                      {
                        "assignments": [
                          4265,
                          4267
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4265,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4298,
                            "src": "1682:12:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 4264,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1682:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 4267,
                            "mutability": "mutable",
                            "name": "returndata",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4298,
                            "src": "1696:23:12",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 4266,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1696:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4275,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4273,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4251,
                              "src": "1743:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4270,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4249,
                                  "src": "1731:5:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$4012",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$4012",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 4269,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1723:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 4268,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1723:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 4271,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1723:14:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 4272,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1723:19:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 4274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1723:25:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1681:67:12"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4277,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4265,
                              "src": "1762:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564",
                              "id": 4278,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1771:34:12",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b",
                                "typeString": "literal_string \"SafeERC20: low-level call failed\""
                              },
                              "value": "SafeERC20: low-level call failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b",
                                "typeString": "literal_string \"SafeERC20: low-level call failed\""
                              }
                            ],
                            "id": 4276,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1754:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4279,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1754:52:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4280,
                        "nodeType": "ExpressionStatement",
                        "src": "1754:52:12"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4284,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4281,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4267,
                              "src": "1817:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 4282,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1817:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4283,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1837:1:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1817:21:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4297,
                        "nodeType": "IfStatement",
                        "src": "1813:211:12",
                        "trueBody": {
                          "id": 4296,
                          "nodeType": "Block",
                          "src": "1840:184:12",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 4288,
                                        "name": "returndata",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4267,
                                        "src": "1951:10:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "id": 4290,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "1964:4:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bool_$",
                                              "typeString": "type(bool)"
                                            },
                                            "typeName": {
                                              "id": 4289,
                                              "name": "bool",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "1964:4:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": null,
                                                "typeString": null
                                              }
                                            }
                                          }
                                        ],
                                        "id": 4291,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "1963:6:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        },
                                        {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 4286,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "1940:3:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 4287,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "decode",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "1940:10:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 4292,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1940:30:12",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564",
                                    "id": 4293,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1972:44:12",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd",
                                      "typeString": "literal_string \"SafeERC20: ERC20 operation did not succeed\""
                                    },
                                    "value": "SafeERC20: ERC20 operation did not succeed"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd",
                                      "typeString": "literal_string \"SafeERC20: ERC20 operation did not succeed\""
                                    }
                                  ],
                                  "id": 4285,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "1932:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 4294,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1932:85:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4295,
                              "nodeType": "ExpressionStatement",
                              "src": "1932:85:12"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 4299,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "callOptionalReturn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4252,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4249,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4299,
                        "src": "1501:12:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$4012",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 4248,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4012,
                          "src": "1501:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$4012",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4251,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4299,
                        "src": "1515:17:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4250,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1515:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1500:33:12"
                  },
                  "returnParameters": {
                    "id": 4253,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1542:0:12"
                  },
                  "scope": 4300,
                  "src": "1473:555:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 4301,
              "src": "634:1396:12"
            }
          ],
          "src": "33:1998:12"
        },
        "id": 12
      },
      "contracts/dependencies/openzeppelin/contracts/SafeMath.sol": {
        "ast": {
          "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeMath.sol",
          "exportedSymbols": {
            "SafeMath": [
              4496
            ]
          },
          "id": 4497,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4302,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:13"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 4303,
                "nodeType": "StructuredDocumentation",
                "src": "62:563:13",
                "text": " @dev Wrappers over Solidity's arithmetic operations with added overflow\n checks.\n Arithmetic operations in Solidity wrap on overflow. This can easily result\n in bugs, because programmers usually assume that an overflow raises an\n error, which is the standard behavior in high level programming languages.\n `SafeMath` restores this intuition by reverting the transaction when an\n operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always."
              },
              "fullyImplemented": true,
              "id": 4496,
              "linearizedBaseContracts": [
                4496
              ],
              "name": "SafeMath",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 4328,
                    "nodeType": "Block",
                    "src": "918:95:13",
                    "statements": [
                      {
                        "assignments": [
                          4314
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4314,
                            "mutability": "mutable",
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4328,
                            "src": "924:9:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4313,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "924:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4318,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4317,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4315,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4306,
                            "src": "936:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4316,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4308,
                            "src": "940:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "936:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "924:17:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4322,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4320,
                                "name": "c",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4314,
                                "src": "955:1:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 4321,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4306,
                                "src": "960:1:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "955:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "536166654d6174683a206164646974696f6e206f766572666c6f77",
                              "id": 4323,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "963:29:13",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a",
                                "typeString": "literal_string \"SafeMath: addition overflow\""
                              },
                              "value": "SafeMath: addition overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a",
                                "typeString": "literal_string \"SafeMath: addition overflow\""
                              }
                            ],
                            "id": 4319,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "947:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4324,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "947:46:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4325,
                        "nodeType": "ExpressionStatement",
                        "src": "947:46:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4326,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4314,
                          "src": "1007:1:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 4312,
                        "id": 4327,
                        "nodeType": "Return",
                        "src": "1000:8:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4304,
                    "nodeType": "StructuredDocumentation",
                    "src": "647:201:13",
                    "text": " @dev Returns the addition of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow."
                  },
                  "id": 4329,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4309,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4306,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4329,
                        "src": "864:9:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4305,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "864:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4308,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4329,
                        "src": "875:9:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4307,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "875:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "863:22:13"
                  },
                  "returnParameters": {
                    "id": 4312,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4311,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4329,
                        "src": "909:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4310,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "909:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "908:9:13"
                  },
                  "scope": 4496,
                  "src": "851:162:13",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4345,
                    "nodeType": "Block",
                    "src": "1324:61:13",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4340,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4332,
                              "src": "1341:1:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4341,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4334,
                              "src": "1344:1:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "536166654d6174683a207375627472616374696f6e206f766572666c6f77",
                              "id": 4342,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1347:32:13",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862",
                                "typeString": "literal_string \"SafeMath: subtraction overflow\""
                              },
                              "value": "SafeMath: subtraction overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862",
                                "typeString": "literal_string \"SafeMath: subtraction overflow\""
                              }
                            ],
                            "id": 4339,
                            "name": "sub",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4346,
                              4374
                            ],
                            "referencedDeclaration": 4374,
                            "src": "1337:3:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                            }
                          },
                          "id": 4343,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1337:43:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 4338,
                        "id": 4344,
                        "nodeType": "Return",
                        "src": "1330:50:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4330,
                    "nodeType": "StructuredDocumentation",
                    "src": "1017:237:13",
                    "text": " @dev Returns the subtraction of two unsigned integers, reverting on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."
                  },
                  "id": 4346,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sub",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4335,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4332,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4346,
                        "src": "1270:9:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4331,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1270:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4334,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4346,
                        "src": "1281:9:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4333,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1281:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1269:22:13"
                  },
                  "returnParameters": {
                    "id": 4338,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4337,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4346,
                        "src": "1315:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4336,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1315:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1314:9:13"
                  },
                  "scope": 4496,
                  "src": "1257:128:13",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4373,
                    "nodeType": "Block",
                    "src": "1760:78:13",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4361,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4359,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4351,
                                "src": "1774:1:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 4360,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4349,
                                "src": "1779:1:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1774:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4362,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4353,
                              "src": "1782:12:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 4358,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1766:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1766:29:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4364,
                        "nodeType": "ExpressionStatement",
                        "src": "1766:29:13"
                      },
                      {
                        "assignments": [
                          4366
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4366,
                            "mutability": "mutable",
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4373,
                            "src": "1801:9:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4365,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1801:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4370,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4369,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4367,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4349,
                            "src": "1813:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4368,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4351,
                            "src": "1817:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1813:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1801:17:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4371,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4366,
                          "src": "1832:1:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 4357,
                        "id": 4372,
                        "nodeType": "Return",
                        "src": "1825:8:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4347,
                    "nodeType": "StructuredDocumentation",
                    "src": "1389:257:13",
                    "text": " @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."
                  },
                  "id": 4374,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sub",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4354,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4349,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4374,
                        "src": "1667:9:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4348,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1667:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4351,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4374,
                        "src": "1682:9:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4350,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1682:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4353,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4374,
                        "src": "1697:26:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4352,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1697:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1661:66:13"
                  },
                  "returnParameters": {
                    "id": 4357,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4356,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4374,
                        "src": "1751:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4355,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1751:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1750:9:13"
                  },
                  "scope": 4496,
                  "src": "1649:189:13",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4408,
                    "nodeType": "Block",
                    "src": "2125:352:13",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4384,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4377,
                            "src": "2341:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4385,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2346:1:13",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2341:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4390,
                        "nodeType": "IfStatement",
                        "src": "2337:35:13",
                        "trueBody": {
                          "id": 4389,
                          "nodeType": "Block",
                          "src": "2349:23:13",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4387,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2364:1:13",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 4383,
                              "id": 4388,
                              "nodeType": "Return",
                              "src": "2357:8:13"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          4392
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4392,
                            "mutability": "mutable",
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4408,
                            "src": "2378:9:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4391,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2378:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4396,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4395,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4393,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4377,
                            "src": "2390:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4394,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4379,
                            "src": "2394:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2390:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2378:17:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4402,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4400,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 4398,
                                  "name": "c",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4392,
                                  "src": "2409:1:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 4399,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4377,
                                  "src": "2413:1:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2409:5:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 4401,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4379,
                                "src": "2418:1:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2409:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77",
                              "id": 4403,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2421:35:13",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3",
                                "typeString": "literal_string \"SafeMath: multiplication overflow\""
                              },
                              "value": "SafeMath: multiplication overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3",
                                "typeString": "literal_string \"SafeMath: multiplication overflow\""
                              }
                            ],
                            "id": 4397,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2401:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4404,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2401:56:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4405,
                        "nodeType": "ExpressionStatement",
                        "src": "2401:56:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4406,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4392,
                          "src": "2471:1:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 4383,
                        "id": 4407,
                        "nodeType": "Return",
                        "src": "2464:8:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4375,
                    "nodeType": "StructuredDocumentation",
                    "src": "1842:213:13",
                    "text": " @dev Returns the multiplication of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `*` operator.\n Requirements:\n - Multiplication cannot overflow."
                  },
                  "id": 4409,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mul",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4380,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4377,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4409,
                        "src": "2071:9:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4376,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2071:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4379,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4409,
                        "src": "2082:9:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4378,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2082:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2070:22:13"
                  },
                  "returnParameters": {
                    "id": 4383,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4382,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4409,
                        "src": "2116:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4381,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2116:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2115:9:13"
                  },
                  "scope": 4496,
                  "src": "2058:419:13",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4425,
                    "nodeType": "Block",
                    "src": "2975:57:13",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4420,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4412,
                              "src": "2992:1:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4421,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4414,
                              "src": "2995:1:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "536166654d6174683a206469766973696f6e206279207a65726f",
                              "id": 4422,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2998:28:13",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f",
                                "typeString": "literal_string \"SafeMath: division by zero\""
                              },
                              "value": "SafeMath: division by zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f",
                                "typeString": "literal_string \"SafeMath: division by zero\""
                              }
                            ],
                            "id": 4419,
                            "name": "div",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4426,
                              4454
                            ],
                            "referencedDeclaration": 4454,
                            "src": "2988:3:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                            }
                          },
                          "id": 4423,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2988:39:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 4418,
                        "id": 4424,
                        "nodeType": "Return",
                        "src": "2981:46:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4410,
                    "nodeType": "StructuredDocumentation",
                    "src": "2481:424:13",
                    "text": " @dev Returns the integer division of two unsigned integers. Reverts on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."
                  },
                  "id": 4426,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "div",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4415,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4412,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4426,
                        "src": "2921:9:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4411,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2921:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4414,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4426,
                        "src": "2932:9:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4413,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2932:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2920:22:13"
                  },
                  "returnParameters": {
                    "id": 4418,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4417,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4426,
                        "src": "2966:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4416,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2966:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2965:9:13"
                  },
                  "scope": 4496,
                  "src": "2908:124:13",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4453,
                    "nodeType": "Block",
                    "src": "3594:221:13",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4441,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4439,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4431,
                                "src": "3670:1:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4440,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3674:1:13",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3670:5:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4442,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4433,
                              "src": "3677:12:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 4438,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3662:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4443,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3662:28:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4444,
                        "nodeType": "ExpressionStatement",
                        "src": "3662:28:13"
                      },
                      {
                        "assignments": [
                          4446
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4446,
                            "mutability": "mutable",
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4453,
                            "src": "3696:9:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4445,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3696:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4450,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4449,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4447,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4429,
                            "src": "3708:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4448,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4431,
                            "src": "3712:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3708:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3696:17:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4451,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4446,
                          "src": "3809:1:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 4437,
                        "id": 4452,
                        "nodeType": "Return",
                        "src": "3802:8:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4427,
                    "nodeType": "StructuredDocumentation",
                    "src": "3036:444:13",
                    "text": " @dev Returns the integer division of two unsigned integers. Reverts with custom message on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."
                  },
                  "id": 4454,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "div",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4434,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4429,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4454,
                        "src": "3501:9:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4428,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3501:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4431,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4454,
                        "src": "3516:9:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4430,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3516:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4433,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4454,
                        "src": "3531:26:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4432,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3531:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3495:66:13"
                  },
                  "returnParameters": {
                    "id": 4437,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4436,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4454,
                        "src": "3585:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4435,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3585:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3584:9:13"
                  },
                  "scope": 4496,
                  "src": "3483:332:13",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4470,
                    "nodeType": "Block",
                    "src": "4302:55:13",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4465,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4457,
                              "src": "4319:1:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4466,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4459,
                              "src": "4322:1:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "536166654d6174683a206d6f64756c6f206279207a65726f",
                              "id": 4467,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4325:26:13",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832",
                                "typeString": "literal_string \"SafeMath: modulo by zero\""
                              },
                              "value": "SafeMath: modulo by zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832",
                                "typeString": "literal_string \"SafeMath: modulo by zero\""
                              }
                            ],
                            "id": 4464,
                            "name": "mod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4471,
                              4495
                            ],
                            "referencedDeclaration": 4495,
                            "src": "4315:3:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                            }
                          },
                          "id": 4468,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4315:37:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 4463,
                        "id": 4469,
                        "nodeType": "Return",
                        "src": "4308:44:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4455,
                    "nodeType": "StructuredDocumentation",
                    "src": "3819:413:13",
                    "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n Reverts when dividing by zero.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."
                  },
                  "id": 4471,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mod",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4460,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4457,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4471,
                        "src": "4248:9:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4456,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4248:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4459,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4471,
                        "src": "4259:9:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4458,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4259:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4247:22:13"
                  },
                  "returnParameters": {
                    "id": 4463,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4462,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4471,
                        "src": "4293:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4461,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4293:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4292:9:13"
                  },
                  "scope": 4496,
                  "src": "4235:122:13",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4494,
                    "nodeType": "Block",
                    "src": "4908:58:13",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4486,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4484,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4476,
                                "src": "4922:1:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4485,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4927:1:13",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4922:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4487,
                              "name": "errorMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4478,
                              "src": "4930:12:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 4483,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4914:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4914:29:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4489,
                        "nodeType": "ExpressionStatement",
                        "src": "4914:29:13"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4492,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4490,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4474,
                            "src": "4956:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "%",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4491,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4476,
                            "src": "4960:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4956:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 4482,
                        "id": 4493,
                        "nodeType": "Return",
                        "src": "4949:12:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4472,
                    "nodeType": "StructuredDocumentation",
                    "src": "4361:433:13",
                    "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n Reverts with custom message when dividing by zero.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."
                  },
                  "id": 4495,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mod",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4479,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4474,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4495,
                        "src": "4815:9:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4473,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4815:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4476,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4495,
                        "src": "4830:9:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4475,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4830:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4478,
                        "mutability": "mutable",
                        "name": "errorMessage",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4495,
                        "src": "4845:26:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4477,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "4845:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4809:66:13"
                  },
                  "returnParameters": {
                    "id": 4482,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4481,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4495,
                        "src": "4899:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4480,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4899:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4898:9:13"
                  },
                  "scope": 4496,
                  "src": "4797:169:13",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 4497,
              "src": "626:4342:13"
            }
          ],
          "src": "37:4932:13"
        },
        "id": 13
      },
      "contracts/dependencies/openzeppelin/upgradeability/AdminUpgradeabilityProxy.sol": {
        "ast": {
          "absolutePath": "contracts/dependencies/openzeppelin/upgradeability/AdminUpgradeabilityProxy.sol",
          "exportedSymbols": {
            "AdminUpgradeabilityProxy": [
              4553
            ]
          },
          "id": 4554,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4498,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:14"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/upgradeability/BaseAdminUpgradeabilityProxy.sol",
              "file": "./BaseAdminUpgradeabilityProxy.sol",
              "id": 4499,
              "nodeType": "ImportDirective",
              "scope": 4554,
              "sourceUnit": 4724,
              "src": "62:44:14",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4501,
                    "name": "BaseAdminUpgradeabilityProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4723,
                    "src": "319:28:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BaseAdminUpgradeabilityProxy_$4723",
                      "typeString": "contract BaseAdminUpgradeabilityProxy"
                    }
                  },
                  "id": 4502,
                  "nodeType": "InheritanceSpecifier",
                  "src": "319:28:14"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4503,
                    "name": "UpgradeabilityProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5019,
                    "src": "349:19:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UpgradeabilityProxy_$5019",
                      "typeString": "contract UpgradeabilityProxy"
                    }
                  },
                  "id": 4504,
                  "nodeType": "InheritanceSpecifier",
                  "src": "349:19:14"
                }
              ],
              "contractDependencies": [
                4723,
                4788,
                4966,
                5019
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 4500,
                "nodeType": "StructuredDocumentation",
                "src": "108:173:14",
                "text": " @title AdminUpgradeabilityProxy\n @dev Extends from BaseAdminUpgradeabilityProxy with a constructor for\n initializing the implementation, admin, and init data."
              },
              "fullyImplemented": true,
              "id": 4553,
              "linearizedBaseContracts": [
                4553,
                5019,
                4723,
                4788,
                4966
              ],
              "name": "AdminUpgradeabilityProxy",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 4538,
                    "nodeType": "Block",
                    "src": "1075:110:14",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 4531,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4519,
                                "name": "ADMIN_SLOT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4570,
                                "src": "1088:10:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4529,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "hexValue": "656970313936372e70726f78792e61646d696e",
                                              "id": 4525,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "1128:21:14",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104",
                                                "typeString": "literal_string \"eip1967.proxy.admin\""
                                              },
                                              "value": "eip1967.proxy.admin"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_stringliteral_b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104",
                                                "typeString": "literal_string \"eip1967.proxy.admin\""
                                              }
                                            ],
                                            "id": 4524,
                                            "name": "keccak256",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -8,
                                            "src": "1118:9:14",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                              "typeString": "function (bytes memory) pure returns (bytes32)"
                                            }
                                          },
                                          "id": 4526,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1118:32:14",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "id": 4523,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "1110:7:14",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 4522,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1110:7:14",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 4527,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1110:41:14",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 4528,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1154:1:14",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "1110:45:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4521,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1102:7:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 4520,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1102:7:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 4530,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1102:54:14",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "1088:68:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4518,
                            "name": "assert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -3,
                            "src": "1081:6:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4532,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1081:76:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4533,
                        "nodeType": "ExpressionStatement",
                        "src": "1081:76:14"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4535,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4509,
                              "src": "1173:6:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4534,
                            "name": "_setAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4702,
                            "src": "1163:9:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 4536,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1163:17:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4537,
                        "nodeType": "ExpressionStatement",
                        "src": "1163:17:14"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4505,
                    "nodeType": "StructuredDocumentation",
                    "src": "373:569:14",
                    "text": " Contract constructor.\n @param _logic address of the initial implementation.\n @param _admin Address of the proxy administrator.\n @param _data Data to send as msg.data to the implementation to initialize the proxied contract.\n It should include the signature and the parameters of the function to be called, as described in\n https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.\n This parameter is optional, if no data is given the initialization call to proxied contract will be skipped."
                  },
                  "id": 4539,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4514,
                          "name": "_logic",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4507,
                          "src": "1060:6:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 4515,
                          "name": "_data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4511,
                          "src": "1068:5:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "id": 4516,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 4513,
                        "name": "UpgradeabilityProxy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5019,
                        "src": "1040:19:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_UpgradeabilityProxy_$5019_$",
                          "typeString": "type(contract UpgradeabilityProxy)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1040:34:14"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4512,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4507,
                        "mutability": "mutable",
                        "name": "_logic",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4539,
                        "src": "962:14:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4506,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "962:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4509,
                        "mutability": "mutable",
                        "name": "_admin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4539,
                        "src": "982:14:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4508,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "982:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4511,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4539,
                        "src": "1002:18:14",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4510,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1002:5:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "956:68:14"
                  },
                  "returnParameters": {
                    "id": 4517,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1075:0:14"
                  },
                  "scope": 4553,
                  "src": "945:240:14",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4722,
                    4952
                  ],
                  "body": {
                    "id": 4551,
                    "nodeType": "Block",
                    "src": "1340:55:14",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4546,
                              "name": "BaseAdminUpgradeabilityProxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4723,
                              "src": "1346:28:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_BaseAdminUpgradeabilityProxy_$4723_$",
                                "typeString": "type(contract BaseAdminUpgradeabilityProxy)"
                              }
                            },
                            "id": 4548,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_willFallback",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4722,
                            "src": "1346:42:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 4549,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1346:44:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4550,
                        "nodeType": "ExpressionStatement",
                        "src": "1346:44:14"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4540,
                    "nodeType": "StructuredDocumentation",
                    "src": "1189:68:14",
                    "text": " @dev Only fall back when the sender is not the admin."
                  },
                  "id": 4552,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_willFallback",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4544,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "contractScope": null,
                        "id": 4542,
                        "name": "BaseAdminUpgradeabilityProxy",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4723,
                        "src": "1303:28:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BaseAdminUpgradeabilityProxy_$4723",
                          "typeString": "contract BaseAdminUpgradeabilityProxy"
                        }
                      },
                      {
                        "contractScope": null,
                        "id": 4543,
                        "name": "Proxy",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4966,
                        "src": "1333:5:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Proxy_$4966",
                          "typeString": "contract Proxy"
                        }
                      }
                    ],
                    "src": "1294:45:14"
                  },
                  "parameters": {
                    "id": 4541,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1282:2:14"
                  },
                  "returnParameters": {
                    "id": 4545,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1340:0:14"
                  },
                  "scope": 4553,
                  "src": "1260:135:14",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 4554,
              "src": "282:1115:14"
            }
          ],
          "src": "37:1361:14"
        },
        "id": 14
      },
      "contracts/dependencies/openzeppelin/upgradeability/BaseAdminUpgradeabilityProxy.sol": {
        "ast": {
          "absolutePath": "contracts/dependencies/openzeppelin/upgradeability/BaseAdminUpgradeabilityProxy.sol",
          "exportedSymbols": {
            "BaseAdminUpgradeabilityProxy": [
              4723
            ]
          },
          "id": 4724,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4555,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:15"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/upgradeability/UpgradeabilityProxy.sol",
              "file": "./UpgradeabilityProxy.sol",
              "id": 4556,
              "nodeType": "ImportDirective",
              "scope": 4724,
              "sourceUnit": 5020,
              "src": "62:35:15",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4558,
                    "name": "BaseUpgradeabilityProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4788,
                    "src": "503:23:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BaseUpgradeabilityProxy_$4788",
                      "typeString": "contract BaseUpgradeabilityProxy"
                    }
                  },
                  "id": 4559,
                  "nodeType": "InheritanceSpecifier",
                  "src": "503:23:15"
                }
              ],
              "contractDependencies": [
                4788,
                4966
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 4557,
                "nodeType": "StructuredDocumentation",
                "src": "99:362:15",
                "text": " @title BaseAdminUpgradeabilityProxy\n @dev This contract combines an upgradeability proxy with an authorization\n mechanism for administrative tasks.\n All external functions in this contract must be guarded by the\n `ifAdmin` modifier. See ethereum/solidity#3864 for a Solidity\n feature proposal that would enable this to be done automatically."
              },
              "fullyImplemented": true,
              "id": 4723,
              "linearizedBaseContracts": [
                4723,
                4788,
                4966
              ],
              "name": "BaseAdminUpgradeabilityProxy",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 4560,
                    "nodeType": "StructuredDocumentation",
                    "src": "531:177:15",
                    "text": " @dev Emitted when the administration has been transferred.\n @param previousAdmin Address of the previous admin.\n @param newAdmin Address of the new admin."
                  },
                  "id": 4566,
                  "name": "AdminChanged",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4565,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4562,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "previousAdmin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4566,
                        "src": "730:21:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4561,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "730:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4564,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "newAdmin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4566,
                        "src": "753:16:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4563,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "753:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "729:41:15"
                  },
                  "src": "711:60:15"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 4567,
                    "nodeType": "StructuredDocumentation",
                    "src": "775:181:15",
                    "text": " @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n validated in the constructor."
                  },
                  "id": 4570,
                  "mutability": "constant",
                  "name": "ADMIN_SLOT",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4723,
                  "src": "959:109:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4568,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "959:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033",
                    "id": 4569,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1002:66:15",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1",
                      "typeString": "int_const 8195...(69 digits omitted)...7091"
                    },
                    "value": "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4585,
                    "nodeType": "Block",
                    "src": "1277:86:15",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 4577,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4573,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "1287:3:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 4574,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1287:10:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 4575,
                              "name": "_admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4690,
                              "src": "1301:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 4576,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1301:8:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1287:22:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 4583,
                          "nodeType": "Block",
                          "src": "1333:26:15",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 4580,
                                  "name": "_fallback",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4965,
                                  "src": "1341:9:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                    "typeString": "function ()"
                                  }
                                },
                                "id": 4581,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1341:11:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4582,
                              "nodeType": "ExpressionStatement",
                              "src": "1341:11:15"
                            }
                          ]
                        },
                        "id": 4584,
                        "nodeType": "IfStatement",
                        "src": "1283:76:15",
                        "trueBody": {
                          "id": 4579,
                          "nodeType": "Block",
                          "src": "1311:16:15",
                          "statements": [
                            {
                              "id": 4578,
                              "nodeType": "PlaceholderStatement",
                              "src": "1319:1:15"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4571,
                    "nodeType": "StructuredDocumentation",
                    "src": "1073:182:15",
                    "text": " @dev Modifier to check whether the `msg.sender` is the admin.\n If it is, it will run the function. Otherwise, it will delegate the call\n to the implementation."
                  },
                  "id": 4586,
                  "name": "ifAdmin",
                  "nodeType": "ModifierDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4572,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1274:2:15"
                  },
                  "src": "1258:105:15",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4597,
                    "nodeType": "Block",
                    "src": "1476:26:15",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4594,
                            "name": "_admin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4690,
                            "src": "1489:6:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 4595,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1489:8:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 4593,
                        "id": 4596,
                        "nodeType": "Return",
                        "src": "1482:15:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4587,
                    "nodeType": "StructuredDocumentation",
                    "src": "1367:54:15",
                    "text": " @return The address of the proxy admin."
                  },
                  "functionSelector": "f851a440",
                  "id": 4598,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 4590,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 4589,
                        "name": "ifAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4586,
                        "src": "1450:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1450:7:15"
                    }
                  ],
                  "name": "admin",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4588,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1438:2:15"
                  },
                  "returnParameters": {
                    "id": 4593,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4592,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4598,
                        "src": "1467:7:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4591,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1467:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1466:9:15"
                  },
                  "scope": 4723,
                  "src": "1424:78:15",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 4609,
                    "nodeType": "Block",
                    "src": "1627:35:15",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4606,
                            "name": "_implementation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4752
                            ],
                            "referencedDeclaration": 4752,
                            "src": "1640:15:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 4607,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1640:17:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 4605,
                        "id": 4608,
                        "nodeType": "Return",
                        "src": "1633:24:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4599,
                    "nodeType": "StructuredDocumentation",
                    "src": "1506:57:15",
                    "text": " @return The address of the implementation."
                  },
                  "functionSelector": "5c60da1b",
                  "id": 4610,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 4602,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 4601,
                        "name": "ifAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4586,
                        "src": "1601:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1601:7:15"
                    }
                  ],
                  "name": "implementation",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4600,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1589:2:15"
                  },
                  "returnParameters": {
                    "id": 4605,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4604,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4610,
                        "src": "1618:7:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4603,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1618:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1617:9:15"
                  },
                  "scope": 4723,
                  "src": "1566:96:15",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 4638,
                    "nodeType": "Block",
                    "src": "1894:168:15",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 4624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4619,
                                "name": "newAdmin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4613,
                                "src": "1908:8:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 4622,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1928:1:15",
                                    "subdenomination": null,
                                    "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": 4621,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1920:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 4620,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1920:7:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 4623,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1920:10:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1908:22:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f2061646472657373",
                              "id": 4625,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1932:56:15",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_37112268ceb11e15373f32f9374a1f3287d0a3e6e5a9a435ac06367e6cd0cf00",
                                "typeString": "literal_string \"Cannot change the admin of a proxy to the zero address\""
                              },
                              "value": "Cannot change the admin of a proxy to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_37112268ceb11e15373f32f9374a1f3287d0a3e6e5a9a435ac06367e6cd0cf00",
                                "typeString": "literal_string \"Cannot change the admin of a proxy to the zero address\""
                              }
                            ],
                            "id": 4618,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1900:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4626,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1900:89:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4627,
                        "nodeType": "ExpressionStatement",
                        "src": "1900:89:15"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 4629,
                                "name": "_admin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4690,
                                "src": "2013:6:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 4630,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2013:8:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4631,
                              "name": "newAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4613,
                              "src": "2023:8:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4628,
                            "name": "AdminChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4566,
                            "src": "2000:12:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 4632,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2000:32:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4633,
                        "nodeType": "EmitStatement",
                        "src": "1995:37:15"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4635,
                              "name": "newAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4613,
                              "src": "2048:8:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4634,
                            "name": "_setAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4702,
                            "src": "2038:9:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 4636,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2038:19:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4637,
                        "nodeType": "ExpressionStatement",
                        "src": "2038:19:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4611,
                    "nodeType": "StructuredDocumentation",
                    "src": "1666:169:15",
                    "text": " @dev Changes the admin of the proxy.\n Only the current admin can call this function.\n @param newAdmin Address to transfer proxy administration to."
                  },
                  "functionSelector": "8f283970",
                  "id": 4639,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 4616,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 4615,
                        "name": "ifAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4586,
                        "src": "1886:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1886:7:15"
                    }
                  ],
                  "name": "changeAdmin",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4614,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4613,
                        "mutability": "mutable",
                        "name": "newAdmin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4639,
                        "src": "1859:16:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4612,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1859:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1858:18:15"
                  },
                  "returnParameters": {
                    "id": 4617,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1894:0:15"
                  },
                  "scope": 4723,
                  "src": "1838:224:15",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 4651,
                    "nodeType": "Block",
                    "src": "2309:40:15",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4648,
                              "name": "newImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4642,
                              "src": "2326:17:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4647,
                            "name": "_upgradeTo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4767,
                            "src": "2315:10:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 4649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2315:29:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4650,
                        "nodeType": "ExpressionStatement",
                        "src": "2315:29:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4640,
                    "nodeType": "StructuredDocumentation",
                    "src": "2066:177:15",
                    "text": " @dev Upgrade the backing implementation of the proxy.\n Only the admin can call this function.\n @param newImplementation Address of the new implementation."
                  },
                  "functionSelector": "3659cfe6",
                  "id": 4652,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 4645,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 4644,
                        "name": "ifAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4586,
                        "src": "2301:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2301:7:15"
                    }
                  ],
                  "name": "upgradeTo",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4643,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4642,
                        "mutability": "mutable",
                        "name": "newImplementation",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4652,
                        "src": "2265:25:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4641,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2265:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2264:27:15"
                  },
                  "returnParameters": {
                    "id": 4646,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2309:0:15"
                  },
                  "scope": 4723,
                  "src": "2246:103:15",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 4677,
                    "nodeType": "Block",
                    "src": "2979:123:15",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4663,
                              "name": "newImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4655,
                              "src": "2996:17:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4662,
                            "name": "_upgradeTo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4767,
                            "src": "2985:10:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 4664,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2985:29:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4665,
                        "nodeType": "ExpressionStatement",
                        "src": "2985:29:15"
                      },
                      {
                        "assignments": [
                          4667,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4667,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4677,
                            "src": "3021:12:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 4666,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "3021:4:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 4672,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4670,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4657,
                              "src": "3070:4:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4668,
                              "name": "newImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4655,
                              "src": "3039:17:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 4669,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "delegatecall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3039:30:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) returns (bool,bytes memory)"
                            }
                          },
                          "id": 4671,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3039:36:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3020:55:15"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4674,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4667,
                              "src": "3089:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4673,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3081:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3081:16:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4676,
                        "nodeType": "ExpressionStatement",
                        "src": "3081:16:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4653,
                    "nodeType": "StructuredDocumentation",
                    "src": "2353:510:15",
                    "text": " @dev Upgrade the backing implementation of the proxy and call a function\n on the new implementation.\n This is useful to initialize the proxied contract.\n @param newImplementation Address of the new implementation.\n @param data Data to send as msg.data in the low level call.\n It should include the signature and the parameters of the function to be called, as described in\n https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding."
                  },
                  "functionSelector": "4f1ef286",
                  "id": 4678,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 4660,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 4659,
                        "name": "ifAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4586,
                        "src": "2969:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2969:7:15"
                    }
                  ],
                  "name": "upgradeToAndCall",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4658,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4655,
                        "mutability": "mutable",
                        "name": "newImplementation",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4678,
                        "src": "2892:25:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4654,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2892:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4657,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4678,
                        "src": "2919:19:15",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4656,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2919:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2891:48:15"
                  },
                  "returnParameters": {
                    "id": 4661,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2979:0:15"
                  },
                  "scope": 4723,
                  "src": "2866:236:15",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 4689,
                    "nodeType": "Block",
                    "src": "3205:113:15",
                    "statements": [
                      {
                        "assignments": [
                          4685
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4685,
                            "mutability": "mutable",
                            "name": "slot",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4689,
                            "src": "3211:12:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 4684,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "3211:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4687,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 4686,
                          "name": "ADMIN_SLOT",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4570,
                          "src": "3226:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3211:25:15"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "3282:32:15",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3290:18:15",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "slot",
                                    "nodeType": "YulIdentifier",
                                    "src": "3303:4:15"
                                  }
                                ],
                                "functionName": {
                                  "name": "sload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3297:5:15"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3297:11:15"
                              },
                              "variableNames": [
                                {
                                  "name": "adm",
                                  "nodeType": "YulIdentifier",
                                  "src": "3290:3:15"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 4682,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3290:3:15",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4685,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3303:4:15",
                            "valueSize": 1
                          }
                        ],
                        "id": 4688,
                        "nodeType": "InlineAssembly",
                        "src": "3273:41:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4679,
                    "nodeType": "StructuredDocumentation",
                    "src": "3106:42:15",
                    "text": " @return adm The admin slot."
                  },
                  "id": 4690,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_admin",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4680,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3166:2:15"
                  },
                  "returnParameters": {
                    "id": 4683,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4682,
                        "mutability": "mutable",
                        "name": "adm",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4690,
                        "src": "3192:11:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4681,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3192:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3191:13:15"
                  },
                  "scope": 4723,
                  "src": "3151:167:15",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4701,
                    "nodeType": "Block",
                    "src": "3480:117:15",
                    "statements": [
                      {
                        "assignments": [
                          4697
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4697,
                            "mutability": "mutable",
                            "name": "slot",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4701,
                            "src": "3486:12:15",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 4696,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "3486:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4699,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 4698,
                          "name": "ADMIN_SLOT",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4570,
                          "src": "3501:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3486:25:15"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "3557:36:15",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "slot",
                                    "nodeType": "YulIdentifier",
                                    "src": "3572:4:15"
                                  },
                                  {
                                    "name": "newAdmin",
                                    "nodeType": "YulIdentifier",
                                    "src": "3578:8:15"
                                  }
                                ],
                                "functionName": {
                                  "name": "sstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3565:6:15"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3565:22:15"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3565:22:15"
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 4693,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3578:8:15",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4697,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3572:4:15",
                            "valueSize": 1
                          }
                        ],
                        "id": 4700,
                        "nodeType": "InlineAssembly",
                        "src": "3548:45:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4691,
                    "nodeType": "StructuredDocumentation",
                    "src": "3322:109:15",
                    "text": " @dev Sets the address of the proxy admin.\n @param newAdmin Address of the new proxy admin."
                  },
                  "id": 4702,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setAdmin",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4694,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4693,
                        "mutability": "mutable",
                        "name": "newAdmin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4702,
                        "src": "3453:16:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4692,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3453:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3452:18:15"
                  },
                  "returnParameters": {
                    "id": 4695,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3480:0:15"
                  },
                  "scope": 4723,
                  "src": "3434:163:15",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    4952
                  ],
                  "body": {
                    "id": 4721,
                    "nodeType": "Block",
                    "src": "3723:123:15",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 4712,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4708,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "3737:3:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 4709,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3737:10:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 4710,
                                  "name": "_admin",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4690,
                                  "src": "3751:6:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                    "typeString": "function () view returns (address)"
                                  }
                                },
                                "id": 4711,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3751:8:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3737:22:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e",
                              "id": 4713,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3761:52:15",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_08b466bde770d6d309a22d90ec051a62ad397be6218a53e741989877ec297fc9",
                                "typeString": "literal_string \"Cannot call fallback function from the proxy admin\""
                              },
                              "value": "Cannot call fallback function from the proxy admin"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_08b466bde770d6d309a22d90ec051a62ad397be6218a53e741989877ec297fc9",
                                "typeString": "literal_string \"Cannot call fallback function from the proxy admin\""
                              }
                            ],
                            "id": 4707,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3729:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4714,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3729:85:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4715,
                        "nodeType": "ExpressionStatement",
                        "src": "3729:85:15"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4716,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "3820:5:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_BaseAdminUpgradeabilityProxy_$4723",
                                "typeString": "contract super BaseAdminUpgradeabilityProxy"
                              }
                            },
                            "id": 4718,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_willFallback",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4952,
                            "src": "3820:19:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 4719,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3820:21:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4720,
                        "nodeType": "ExpressionStatement",
                        "src": "3820:21:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4703,
                    "nodeType": "StructuredDocumentation",
                    "src": "3601:68:15",
                    "text": " @dev Only fall back when the sender is not the admin."
                  },
                  "id": 4722,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_willFallback",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4705,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3714:8:15"
                  },
                  "parameters": {
                    "id": 4704,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3694:2:15"
                  },
                  "returnParameters": {
                    "id": 4706,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3723:0:15"
                  },
                  "scope": 4723,
                  "src": "3672:174:15",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 4724,
              "src": "462:3386:15"
            }
          ],
          "src": "37:3812:15"
        },
        "id": 15
      },
      "contracts/dependencies/openzeppelin/upgradeability/BaseUpgradeabilityProxy.sol": {
        "ast": {
          "absolutePath": "contracts/dependencies/openzeppelin/upgradeability/BaseUpgradeabilityProxy.sol",
          "exportedSymbols": {
            "BaseUpgradeabilityProxy": [
              4788
            ]
          },
          "id": 4789,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4725,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:16"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/upgradeability/Proxy.sol",
              "file": "./Proxy.sol",
              "id": 4726,
              "nodeType": "ImportDirective",
              "scope": 4789,
              "sourceUnit": 4967,
              "src": "62:21:16",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/Address.sol",
              "file": "../contracts/Address.sol",
              "id": 4727,
              "nodeType": "ImportDirective",
              "scope": 4789,
              "sourceUnit": 3405,
              "src": "84:34:16",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4729,
                    "name": "Proxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4966,
                    "src": "372:5:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Proxy_$4966",
                      "typeString": "contract Proxy"
                    }
                  },
                  "id": 4730,
                  "nodeType": "InheritanceSpecifier",
                  "src": "372:5:16"
                }
              ],
              "contractDependencies": [
                4966
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 4728,
                "nodeType": "StructuredDocumentation",
                "src": "120:215:16",
                "text": " @title BaseUpgradeabilityProxy\n @dev This contract implements a proxy that allows to change the\n implementation address to which it will delegate.\n Such a change is called an implementation upgrade."
              },
              "fullyImplemented": true,
              "id": 4788,
              "linearizedBaseContracts": [
                4788,
                4966
              ],
              "name": "BaseUpgradeabilityProxy",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 4731,
                    "nodeType": "StructuredDocumentation",
                    "src": "382:126:16",
                    "text": " @dev Emitted when the implementation is upgraded.\n @param implementation Address of the new implementation."
                  },
                  "id": 4735,
                  "name": "Upgraded",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4734,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4733,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "implementation",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4735,
                        "src": "526:30:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4732,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "526:7:16",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "525:32:16"
                  },
                  "src": "511:47:16"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 4736,
                    "nodeType": "StructuredDocumentation",
                    "src": "562:206:16",
                    "text": " @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n validated in the constructor."
                  },
                  "id": 4739,
                  "mutability": "constant",
                  "name": "IMPLEMENTATION_SLOT",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4788,
                  "src": "771:118:16",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4737,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "771:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263",
                    "id": 4738,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "823:66:16",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1",
                      "typeString": "int_const 2444...(69 digits omitted)...5612"
                    },
                    "value": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"
                  },
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    4939
                  ],
                  "body": {
                    "id": 4751,
                    "nodeType": "Block",
                    "src": "1081:123:16",
                    "statements": [
                      {
                        "assignments": [
                          4747
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4747,
                            "mutability": "mutable",
                            "name": "slot",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4751,
                            "src": "1087:12:16",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 4746,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1087:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4749,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 4748,
                          "name": "IMPLEMENTATION_SLOT",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4739,
                          "src": "1102:19:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1087:34:16"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "1167:33:16",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1175:19:16",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "slot",
                                    "nodeType": "YulIdentifier",
                                    "src": "1189:4:16"
                                  }
                                ],
                                "functionName": {
                                  "name": "sload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1183:5:16"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1183:11:16"
                              },
                              "variableNames": [
                                {
                                  "name": "impl",
                                  "nodeType": "YulIdentifier",
                                  "src": "1175:4:16"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 4744,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1175:4:16",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4747,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1189:4:16",
                            "valueSize": 1
                          }
                        ],
                        "id": 4750,
                        "nodeType": "InlineAssembly",
                        "src": "1158:42:16"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4740,
                    "nodeType": "StructuredDocumentation",
                    "src": "894:111:16",
                    "text": " @dev Returns the current implementation.\n @return impl Address of the current implementation"
                  },
                  "id": 4752,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_implementation",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4742,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1049:8:16"
                  },
                  "parameters": {
                    "id": 4741,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1032:2:16"
                  },
                  "returnParameters": {
                    "id": 4745,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4744,
                        "mutability": "mutable",
                        "name": "impl",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4752,
                        "src": "1067:12:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4743,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1067:7:16",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1066:14:16"
                  },
                  "scope": 4788,
                  "src": "1008:196:16",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4766,
                    "nodeType": "Block",
                    "src": "1395:86:16",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4759,
                              "name": "newImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4755,
                              "src": "1420:17:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4758,
                            "name": "_setImplementation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4787,
                            "src": "1401:18:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 4760,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1401:37:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4761,
                        "nodeType": "ExpressionStatement",
                        "src": "1401:37:16"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4763,
                              "name": "newImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4755,
                              "src": "1458:17:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4762,
                            "name": "Upgraded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4735,
                            "src": "1449:8:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 4764,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1449:27:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4765,
                        "nodeType": "EmitStatement",
                        "src": "1444:32:16"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4753,
                    "nodeType": "StructuredDocumentation",
                    "src": "1208:128:16",
                    "text": " @dev Upgrades the proxy to a new implementation.\n @param newImplementation Address of the new implementation."
                  },
                  "id": 4767,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_upgradeTo",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4756,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4755,
                        "mutability": "mutable",
                        "name": "newImplementation",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4767,
                        "src": "1359:25:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4754,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1359:7:16",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1358:27:16"
                  },
                  "returnParameters": {
                    "id": 4757,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1395:0:16"
                  },
                  "scope": 4788,
                  "src": "1339:142:16",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4786,
                    "nodeType": "Block",
                    "src": "1682:270:16",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4776,
                                  "name": "newImplementation",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4770,
                                  "src": "1722:17:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4774,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3404,
                                  "src": "1703:7:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$3404_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 4775,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3369,
                                "src": "1703:18:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 4777,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1703:37:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373",
                              "id": 4778,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1748:61:16",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b5145a64ce8c406e5785204fe5b300f0ceda96d6636350b38fdccb9cd8c0c37c",
                                "typeString": "literal_string \"Cannot set a proxy implementation to a non-contract address\""
                              },
                              "value": "Cannot set a proxy implementation to a non-contract address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b5145a64ce8c406e5785204fe5b300f0ceda96d6636350b38fdccb9cd8c0c37c",
                                "typeString": "literal_string \"Cannot set a proxy implementation to a non-contract address\""
                              }
                            ],
                            "id": 4773,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1688:7:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4779,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1688:127:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4780,
                        "nodeType": "ExpressionStatement",
                        "src": "1688:127:16"
                      },
                      {
                        "assignments": [
                          4782
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4782,
                            "mutability": "mutable",
                            "name": "slot",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4786,
                            "src": "1822:12:16",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 4781,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1822:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4784,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 4783,
                          "name": "IMPLEMENTATION_SLOT",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4739,
                          "src": "1837:19:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1822:34:16"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "1903:45:16",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "slot",
                                    "nodeType": "YulIdentifier",
                                    "src": "1918:4:16"
                                  },
                                  {
                                    "name": "newImplementation",
                                    "nodeType": "YulIdentifier",
                                    "src": "1924:17:16"
                                  }
                                ],
                                "functionName": {
                                  "name": "sstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1911:6:16"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1911:31:16"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1911:31:16"
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 4770,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1924:17:16",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4782,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1918:4:16",
                            "valueSize": 1
                          }
                        ],
                        "id": 4785,
                        "nodeType": "InlineAssembly",
                        "src": "1894:54:16"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4768,
                    "nodeType": "StructuredDocumentation",
                    "src": "1485:130:16",
                    "text": " @dev Sets the implementation address of the proxy.\n @param newImplementation Address of the new implementation."
                  },
                  "id": 4787,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setImplementation",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4771,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4770,
                        "mutability": "mutable",
                        "name": "newImplementation",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4787,
                        "src": "1646:25:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4769,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1646:7:16",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1645:27:16"
                  },
                  "returnParameters": {
                    "id": 4772,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1682:0:16"
                  },
                  "scope": 4788,
                  "src": "1618:334:16",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 4789,
              "src": "336:1618:16"
            }
          ],
          "src": "37:1918:16"
        },
        "id": 16
      },
      "contracts/dependencies/openzeppelin/upgradeability/InitializableAdminUpgradeabilityProxy.sol": {
        "ast": {
          "absolutePath": "contracts/dependencies/openzeppelin/upgradeability/InitializableAdminUpgradeabilityProxy.sol",
          "exportedSymbols": {
            "InitializableAdminUpgradeabilityProxy": [
              4859
            ]
          },
          "id": 4860,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4790,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:17"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/upgradeability/BaseAdminUpgradeabilityProxy.sol",
              "file": "./BaseAdminUpgradeabilityProxy.sol",
              "id": 4791,
              "nodeType": "ImportDirective",
              "scope": 4860,
              "sourceUnit": 4724,
              "src": "62:44:17",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/upgradeability/InitializableUpgradeabilityProxy.sol",
              "file": "./InitializableUpgradeabilityProxy.sol",
              "id": 4792,
              "nodeType": "ImportDirective",
              "scope": 4860,
              "sourceUnit": 4923,
              "src": "107:48:17",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4794,
                    "name": "BaseAdminUpgradeabilityProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4723,
                    "src": "397:28:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BaseAdminUpgradeabilityProxy_$4723",
                      "typeString": "contract BaseAdminUpgradeabilityProxy"
                    }
                  },
                  "id": 4795,
                  "nodeType": "InheritanceSpecifier",
                  "src": "397:28:17"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4796,
                    "name": "InitializableUpgradeabilityProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4922,
                    "src": "429:32:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_InitializableUpgradeabilityProxy_$4922",
                      "typeString": "contract InitializableUpgradeabilityProxy"
                    }
                  },
                  "id": 4797,
                  "nodeType": "InheritanceSpecifier",
                  "src": "429:32:17"
                }
              ],
              "contractDependencies": [
                4723,
                4788,
                4922,
                4966
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 4793,
                "nodeType": "StructuredDocumentation",
                "src": "157:187:17",
                "text": " @title InitializableAdminUpgradeabilityProxy\n @dev Extends from BaseAdminUpgradeabilityProxy with an initializer for\n initializing the implementation, admin, and init data."
              },
              "fullyImplemented": true,
              "id": 4859,
              "linearizedBaseContracts": [
                4859,
                4922,
                4723,
                4788,
                4966
              ],
              "name": "InitializableAdminUpgradeabilityProxy",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 4844,
                    "nodeType": "Block",
                    "src": "1135:217:17",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 4814,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 4808,
                                  "name": "_implementation",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    4752
                                  ],
                                  "referencedDeclaration": 4752,
                                  "src": "1149:15:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                    "typeString": "function () view returns (address)"
                                  }
                                },
                                "id": 4809,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1149:17:17",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 4812,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1178:1:17",
                                    "subdenomination": null,
                                    "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": 4811,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1170:7:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 4810,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1170:7:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 4813,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1170:10:17",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1149:31:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4807,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1141:7:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1141:40:17",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4816,
                        "nodeType": "ExpressionStatement",
                        "src": "1141:40:17"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4820,
                              "name": "logic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4800,
                              "src": "1231:5:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4821,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4804,
                              "src": "1238:4:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4817,
                              "name": "InitializableUpgradeabilityProxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4922,
                              "src": "1187:32:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_InitializableUpgradeabilityProxy_$4922_$",
                                "typeString": "type(contract InitializableUpgradeabilityProxy)"
                              }
                            },
                            "id": 4819,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "initialize",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4921,
                            "src": "1187:43:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,bytes memory)"
                            }
                          },
                          "id": 4822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1187:56:17",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4823,
                        "nodeType": "ExpressionStatement",
                        "src": "1187:56:17"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 4837,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4825,
                                "name": "ADMIN_SLOT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4570,
                                "src": "1256:10:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4835,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "hexValue": "656970313936372e70726f78792e61646d696e",
                                              "id": 4831,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "1296:21:17",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104",
                                                "typeString": "literal_string \"eip1967.proxy.admin\""
                                              },
                                              "value": "eip1967.proxy.admin"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_stringliteral_b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104",
                                                "typeString": "literal_string \"eip1967.proxy.admin\""
                                              }
                                            ],
                                            "id": 4830,
                                            "name": "keccak256",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -8,
                                            "src": "1286:9:17",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                              "typeString": "function (bytes memory) pure returns (bytes32)"
                                            }
                                          },
                                          "id": 4832,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1286:32:17",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "id": 4829,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "1278:7:17",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 4828,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1278:7:17",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 4833,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1278:41:17",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 4834,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1322:1:17",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "1278:45:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4827,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1270:7:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 4826,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1270:7:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 4836,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1270:54:17",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "1256:68:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4824,
                            "name": "assert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -3,
                            "src": "1249:6:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4838,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1249:76:17",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4839,
                        "nodeType": "ExpressionStatement",
                        "src": "1249:76:17"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4841,
                              "name": "admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4802,
                              "src": "1341:5:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4840,
                            "name": "_setAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4702,
                            "src": "1331:9:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 4842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1331:16:17",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4843,
                        "nodeType": "ExpressionStatement",
                        "src": "1331:16:17"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4798,
                    "nodeType": "StructuredDocumentation",
                    "src": "466:566:17",
                    "text": " Contract initializer.\n @param logic address of the initial implementation.\n @param admin Address of the proxy administrator.\n @param data Data to send as msg.data to the implementation to initialize the proxied contract.\n It should include the signature and the parameters of the function to be called, as described in\n https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.\n This parameter is optional, if no data is given the initialization call to proxied contract will be skipped."
                  },
                  "functionSelector": "cf7a1d77",
                  "id": 4845,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "initialize",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4805,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4800,
                        "mutability": "mutable",
                        "name": "logic",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4845,
                        "src": "1060:13:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4799,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1060:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4802,
                        "mutability": "mutable",
                        "name": "admin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4845,
                        "src": "1079:13:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4801,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1079:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4804,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4845,
                        "src": "1098:17:17",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4803,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1098:5:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1054:65:17"
                  },
                  "returnParameters": {
                    "id": 4806,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1135:0:17"
                  },
                  "scope": 4859,
                  "src": "1035:317:17",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4722,
                    4952
                  ],
                  "body": {
                    "id": 4857,
                    "nodeType": "Block",
                    "src": "1507:55:17",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4852,
                              "name": "BaseAdminUpgradeabilityProxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4723,
                              "src": "1513:28:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_BaseAdminUpgradeabilityProxy_$4723_$",
                                "typeString": "type(contract BaseAdminUpgradeabilityProxy)"
                              }
                            },
                            "id": 4854,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_willFallback",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4722,
                            "src": "1513:42:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 4855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1513:44:17",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4856,
                        "nodeType": "ExpressionStatement",
                        "src": "1513:44:17"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4846,
                    "nodeType": "StructuredDocumentation",
                    "src": "1356:68:17",
                    "text": " @dev Only fall back when the sender is not the admin."
                  },
                  "id": 4858,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_willFallback",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4850,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "contractScope": null,
                        "id": 4848,
                        "name": "BaseAdminUpgradeabilityProxy",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4723,
                        "src": "1470:28:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BaseAdminUpgradeabilityProxy_$4723",
                          "typeString": "contract BaseAdminUpgradeabilityProxy"
                        }
                      },
                      {
                        "contractScope": null,
                        "id": 4849,
                        "name": "Proxy",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4966,
                        "src": "1500:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Proxy_$4966",
                          "typeString": "contract Proxy"
                        }
                      }
                    ],
                    "src": "1461:45:17"
                  },
                  "parameters": {
                    "id": 4847,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1449:2:17"
                  },
                  "returnParameters": {
                    "id": 4851,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1507:0:17"
                  },
                  "scope": 4859,
                  "src": "1427:135:17",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 4860,
              "src": "345:1219:17"
            }
          ],
          "src": "37:1528:17"
        },
        "id": 17
      },
      "contracts/dependencies/openzeppelin/upgradeability/InitializableUpgradeabilityProxy.sol": {
        "ast": {
          "absolutePath": "contracts/dependencies/openzeppelin/upgradeability/InitializableUpgradeabilityProxy.sol",
          "exportedSymbols": {
            "InitializableUpgradeabilityProxy": [
              4922
            ]
          },
          "id": 4923,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4861,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:18"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/upgradeability/BaseUpgradeabilityProxy.sol",
              "file": "./BaseUpgradeabilityProxy.sol",
              "id": 4862,
              "nodeType": "ImportDirective",
              "scope": 4923,
              "sourceUnit": 4789,
              "src": "62:39:18",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4864,
                    "name": "BaseUpgradeabilityProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4788,
                    "src": "309:23:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BaseUpgradeabilityProxy_$4788",
                      "typeString": "contract BaseUpgradeabilityProxy"
                    }
                  },
                  "id": 4865,
                  "nodeType": "InheritanceSpecifier",
                  "src": "309:23:18"
                }
              ],
              "contractDependencies": [
                4788,
                4966
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 4863,
                "nodeType": "StructuredDocumentation",
                "src": "103:160:18",
                "text": " @title InitializableUpgradeabilityProxy\n @dev Extends BaseUpgradeabilityProxy with an initializer for initializing\n implementation and init data."
              },
              "fullyImplemented": true,
              "id": 4922,
              "linearizedBaseContracts": [
                4922,
                4788,
                4966
              ],
              "name": "InitializableUpgradeabilityProxy",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 4920,
                    "nodeType": "Block",
                    "src": "930:294:18",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 4880,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 4874,
                                  "name": "_implementation",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    4752
                                  ],
                                  "referencedDeclaration": 4752,
                                  "src": "944:15:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                    "typeString": "function () view returns (address)"
                                  }
                                },
                                "id": 4875,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "944:17:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 4878,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "973:1:18",
                                    "subdenomination": null,
                                    "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": 4877,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "965:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 4876,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "965:7:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 4879,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "965:10:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "944:31:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4873,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "936:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "936:40:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4882,
                        "nodeType": "ExpressionStatement",
                        "src": "936:40:18"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 4896,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4884,
                                "name": "IMPLEMENTATION_SLOT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4739,
                                "src": "989:19:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4894,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "hexValue": "656970313936372e70726f78792e696d706c656d656e746174696f6e",
                                              "id": 4890,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "1038:30:18",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd",
                                                "typeString": "literal_string \"eip1967.proxy.implementation\""
                                              },
                                              "value": "eip1967.proxy.implementation"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_stringliteral_360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd",
                                                "typeString": "literal_string \"eip1967.proxy.implementation\""
                                              }
                                            ],
                                            "id": 4889,
                                            "name": "keccak256",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -8,
                                            "src": "1028:9:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                              "typeString": "function (bytes memory) pure returns (bytes32)"
                                            }
                                          },
                                          "id": 4891,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1028:41:18",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "id": 4888,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "1020:7:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 4887,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1020:7:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 4892,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1020:50:18",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 4893,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1073:1:18",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "1020:54:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4886,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1012:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 4885,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1012:7:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 4895,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1012:63:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "989:86:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4883,
                            "name": "assert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -3,
                            "src": "982:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4897,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "982:94:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4898,
                        "nodeType": "ExpressionStatement",
                        "src": "982:94:18"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4900,
                              "name": "_logic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4868,
                              "src": "1101:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4899,
                            "name": "_setImplementation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4787,
                            "src": "1082:18:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 4901,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1082:26:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4902,
                        "nodeType": "ExpressionStatement",
                        "src": "1082:26:18"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4906,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4903,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4870,
                              "src": "1118:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 4904,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1118:12:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4905,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1133:1:18",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1118:16:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4919,
                        "nodeType": "IfStatement",
                        "src": "1114:106:18",
                        "trueBody": {
                          "id": 4918,
                          "nodeType": "Block",
                          "src": "1136:84:18",
                          "statements": [
                            {
                              "assignments": [
                                4908,
                                null
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4908,
                                  "mutability": "mutable",
                                  "name": "success",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 4918,
                                  "src": "1145:12:18",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 4907,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1145:4:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                },
                                null
                              ],
                              "id": 4913,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4911,
                                    "name": "_data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4870,
                                    "src": "1183:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4909,
                                    "name": "_logic",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4868,
                                    "src": "1163:6:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 4910,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "delegatecall",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1163:19:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory) returns (bool,bytes memory)"
                                  }
                                },
                                "id": 4912,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1163:26:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(bool,bytes memory)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1144:45:18"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4915,
                                    "name": "success",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4908,
                                    "src": "1205:7:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 4914,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "1197:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                                    "typeString": "function (bool) pure"
                                  }
                                },
                                "id": 4916,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1197:16:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4917,
                              "nodeType": "ExpressionStatement",
                              "src": "1197:16:18"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4866,
                    "nodeType": "StructuredDocumentation",
                    "src": "337:519:18",
                    "text": " @dev Contract initializer.\n @param _logic Address of the initial implementation.\n @param _data Data to send as msg.data to the implementation to initialize the proxied contract.\n It should include the signature and the parameters of the function to be called, as described in\n https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.\n This parameter is optional, if no data is given the initialization call to proxied contract will be skipped."
                  },
                  "functionSelector": "d1f57894",
                  "id": 4921,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "initialize",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4871,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4868,
                        "mutability": "mutable",
                        "name": "_logic",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4921,
                        "src": "879:14:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4867,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "879:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4870,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4921,
                        "src": "895:18:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4869,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "895:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "878:36:18"
                  },
                  "returnParameters": {
                    "id": 4872,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "930:0:18"
                  },
                  "scope": 4922,
                  "src": "859:365:18",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 4923,
              "src": "264:962:18"
            }
          ],
          "src": "37:1190:18"
        },
        "id": 18
      },
      "contracts/dependencies/openzeppelin/upgradeability/Proxy.sol": {
        "ast": {
          "absolutePath": "contracts/dependencies/openzeppelin/upgradeability/Proxy.sol",
          "exportedSymbols": {
            "Proxy": [
              4966
            ]
          },
          "id": 4967,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4924,
              "literals": [
                "solidity",
                "^",
                "0.6",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:19"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 4925,
                "nodeType": "StructuredDocumentation",
                "src": "62:290:19",
                "text": " @title Proxy\n @dev Implements delegation of calls to other contracts, with proper\n forwarding of return values and bubbling of failures.\n It defines a fallback function that delegates all calls to the address\n returned by the abstract _implementation() internal function."
              },
              "fullyImplemented": false,
              "id": 4966,
              "linearizedBaseContracts": [
                4966
              ],
              "name": "Proxy",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 4932,
                    "nodeType": "Block",
                    "src": "492:22:19",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4929,
                            "name": "_fallback",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4965,
                            "src": "498:9:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 4930,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "498:11:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4931,
                        "nodeType": "ExpressionStatement",
                        "src": "498:11:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4926,
                    "nodeType": "StructuredDocumentation",
                    "src": "381:80:19",
                    "text": " @dev Fallback function.\n Implemented entirely in `_fallback`."
                  },
                  "id": 4933,
                  "implemented": true,
                  "kind": "fallback",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4927,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "472:2:19"
                  },
                  "returnParameters": {
                    "id": 4928,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "492:0:19"
                  },
                  "scope": 4966,
                  "src": "464:50:19",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 4934,
                    "nodeType": "StructuredDocumentation",
                    "src": "518:57:19",
                    "text": " @return The Address of the implementation."
                  },
                  "id": 4939,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_implementation",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4935,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "602:2:19"
                  },
                  "returnParameters": {
                    "id": 4938,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4937,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4939,
                        "src": "636:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4936,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "636:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "635:9:19"
                  },
                  "scope": 4966,
                  "src": "578:67:19",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4946,
                    "nodeType": "Block",
                    "src": "983:764:19",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "1029:714:19",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1258:1:19",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1261:1:19",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "1264:12:19"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1264:14:19"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1245:12:19"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1245:34:19"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1245:34:19"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1388:74:19",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "gas",
                                      "nodeType": "YulIdentifier",
                                      "src": "1415:3:19"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1415:5:19"
                                  },
                                  {
                                    "name": "implementation",
                                    "nodeType": "YulIdentifier",
                                    "src": "1422:14:19"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1438:1:19",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "1441:12:19"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1441:14:19"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1457:1:19",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1460:1:19",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "delegatecall",
                                  "nodeType": "YulIdentifier",
                                  "src": "1402:12:19"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1402:60:19"
                              },
                              "variables": [
                                {
                                  "name": "result",
                                  "nodeType": "YulTypedName",
                                  "src": "1392:6:19",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1518:1:19",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1521:1:19",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "1524:14:19"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1524:16:19"
                                  }
                                ],
                                "functionName": {
                                  "name": "returndatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1503:14:19"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1503:38:19"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1503:38:19"
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "1622:49:19",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1641:1:19",
                                              "type": "",
                                              "value": "0"
                                            },
                                            {
                                              "arguments": [],
                                              "functionName": {
                                                "name": "returndatasize",
                                                "nodeType": "YulIdentifier",
                                                "src": "1644:14:19"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1644:16:19"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "1634:6:19"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1634:27:19"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "1634:27:19"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "1615:56:19",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1620:1:19",
                                    "type": "",
                                    "value": "0"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "1688:49:19",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1707:1:19",
                                              "type": "",
                                              "value": "0"
                                            },
                                            {
                                              "arguments": [],
                                              "functionName": {
                                                "name": "returndatasize",
                                                "nodeType": "YulIdentifier",
                                                "src": "1710:14:19"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1710:16:19"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "return",
                                            "nodeType": "YulIdentifier",
                                            "src": "1700:6:19"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1700:27:19"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "1700:27:19"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "1680:57:19",
                                  "value": "default"
                                }
                              ],
                              "expression": {
                                "name": "result",
                                "nodeType": "YulIdentifier",
                                "src": "1556:6:19"
                              },
                              "nodeType": "YulSwitch",
                              "src": "1549:188:19"
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 4942,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1422:14:19",
                            "valueSize": 1
                          }
                        ],
                        "id": 4945,
                        "nodeType": "InlineAssembly",
                        "src": "1020:723:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4940,
                    "nodeType": "StructuredDocumentation",
                    "src": "649:279:19",
                    "text": " @dev Delegates execution to an implementation contract.\n This is a low level function that doesn't return to its internal call site.\n It will return to the external caller whatever the implementation returns.\n @param implementation Address to delegate."
                  },
                  "id": 4947,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_delegate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4943,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4942,
                        "mutability": "mutable",
                        "name": "implementation",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4947,
                        "src": "950:22:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4941,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "950:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "949:24:19"
                  },
                  "returnParameters": {
                    "id": 4944,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "983:0:19"
                  },
                  "scope": 4966,
                  "src": "931:816:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4951,
                    "nodeType": "Block",
                    "src": "1998:2:19",
                    "statements": []
                  },
                  "documentation": {
                    "id": 4948,
                    "nodeType": "StructuredDocumentation",
                    "src": "1751:202:19",
                    "text": " @dev Function that is run as the first thing in the fallback function.\n Can be redefined in derived contracts to add functionality.\n Redefinitions must call super._willFallback()."
                  },
                  "id": 4952,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_willFallback",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4949,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1978:2:19"
                  },
                  "returnParameters": {
                    "id": 4950,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1998:0:19"
                  },
                  "scope": 4966,
                  "src": "1956:44:19",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4964,
                    "nodeType": "Block",
                    "src": "2125:60:19",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4956,
                            "name": "_willFallback",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4952,
                            "src": "2131:13:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 4957,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2131:15:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4958,
                        "nodeType": "ExpressionStatement",
                        "src": "2131:15:19"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 4960,
                                "name": "_implementation",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4939,
                                "src": "2162:15:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 4961,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2162:17:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4959,
                            "name": "_delegate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4947,
                            "src": "2152:9:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 4962,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2152:28:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4963,
                        "nodeType": "ExpressionStatement",
                        "src": "2152:28:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4953,
                    "nodeType": "StructuredDocumentation",
                    "src": "2004:88:19",
                    "text": " @dev fallback implementation.\n Extracted to enable manual triggering."
                  },
                  "id": 4965,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_fallback",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4954,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2113:2:19"
                  },
                  "returnParameters": {
                    "id": 4955,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2125:0:19"
                  },
                  "scope": 4966,
                  "src": "2095:90:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 4967,
              "src": "353:1834:19"
            }
          ],
          "src": "37:2151:19"
        },
        "id": 19
      },
      "contracts/dependencies/openzeppelin/upgradeability/UpgradeabilityProxy.sol": {
        "ast": {
          "absolutePath": "contracts/dependencies/openzeppelin/upgradeability/UpgradeabilityProxy.sol",
          "exportedSymbols": {
            "UpgradeabilityProxy": [
              5019
            ]
          },
          "id": 5020,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4968,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:20"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/upgradeability/BaseUpgradeabilityProxy.sol",
              "file": "./BaseUpgradeabilityProxy.sol",
              "id": 4969,
              "nodeType": "ImportDirective",
              "scope": 5020,
              "sourceUnit": 4789,
              "src": "62:39:20",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4971,
                    "name": "BaseUpgradeabilityProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4788,
                    "src": "282:23:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BaseUpgradeabilityProxy_$4788",
                      "typeString": "contract BaseUpgradeabilityProxy"
                    }
                  },
                  "id": 4972,
                  "nodeType": "InheritanceSpecifier",
                  "src": "282:23:20"
                }
              ],
              "contractDependencies": [
                4788,
                4966
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 4970,
                "nodeType": "StructuredDocumentation",
                "src": "103:146:20",
                "text": " @title UpgradeabilityProxy\n @dev Extends BaseUpgradeabilityProxy with a constructor for initializing\n implementation and init data."
              },
              "fullyImplemented": true,
              "id": 5019,
              "linearizedBaseContracts": [
                5019,
                4788,
                4966
              ],
              "name": "UpgradeabilityProxy",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 5017,
                    "nodeType": "Block",
                    "src": "895:248:20",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 4993,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4981,
                                "name": "IMPLEMENTATION_SLOT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4739,
                                "src": "908:19:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4991,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "hexValue": "656970313936372e70726f78792e696d706c656d656e746174696f6e",
                                              "id": 4987,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "957:30:20",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd",
                                                "typeString": "literal_string \"eip1967.proxy.implementation\""
                                              },
                                              "value": "eip1967.proxy.implementation"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_stringliteral_360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd",
                                                "typeString": "literal_string \"eip1967.proxy.implementation\""
                                              }
                                            ],
                                            "id": 4986,
                                            "name": "keccak256",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -8,
                                            "src": "947:9:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                              "typeString": "function (bytes memory) pure returns (bytes32)"
                                            }
                                          },
                                          "id": 4988,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "947:41:20",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "id": 4985,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "939:7:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 4984,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "939:7:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 4989,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "939:50:20",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 4990,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "992:1:20",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "939:54:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4983,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "931:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 4982,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "931:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 4992,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "931:63:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "908:86:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4980,
                            "name": "assert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -3,
                            "src": "901:6:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4994,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "901:94:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4995,
                        "nodeType": "ExpressionStatement",
                        "src": "901:94:20"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4997,
                              "name": "_logic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4975,
                              "src": "1020:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4996,
                            "name": "_setImplementation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4787,
                            "src": "1001:18:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 4998,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1001:26:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4999,
                        "nodeType": "ExpressionStatement",
                        "src": "1001:26:20"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5003,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5000,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4977,
                              "src": "1037:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 5001,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1037:12:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5002,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1052:1:20",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1037:16:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 5016,
                        "nodeType": "IfStatement",
                        "src": "1033:106:20",
                        "trueBody": {
                          "id": 5015,
                          "nodeType": "Block",
                          "src": "1055:84:20",
                          "statements": [
                            {
                              "assignments": [
                                5005,
                                null
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5005,
                                  "mutability": "mutable",
                                  "name": "success",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 5015,
                                  "src": "1064:12:20",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 5004,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1064:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                },
                                null
                              ],
                              "id": 5010,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 5008,
                                    "name": "_data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4977,
                                    "src": "1102:5:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5006,
                                    "name": "_logic",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4975,
                                    "src": "1082:6:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 5007,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "delegatecall",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1082:19:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory) returns (bool,bytes memory)"
                                  }
                                },
                                "id": 5009,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1082:26:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(bool,bytes memory)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1063:45:20"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 5012,
                                    "name": "success",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5005,
                                    "src": "1124:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 5011,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "1116:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                                    "typeString": "function (bool) pure"
                                  }
                                },
                                "id": 5013,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1116:16:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5014,
                              "nodeType": "ExpressionStatement",
                              "src": "1116:16:20"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4973,
                    "nodeType": "StructuredDocumentation",
                    "src": "310:519:20",
                    "text": " @dev Contract constructor.\n @param _logic Address of the initial implementation.\n @param _data Data to send as msg.data to the implementation to initialize the proxied contract.\n It should include the signature and the parameters of the function to be called, as described in\n https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.\n This parameter is optional, if no data is given the initialization call to proxied contract will be skipped."
                  },
                  "id": 5018,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4978,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4975,
                        "mutability": "mutable",
                        "name": "_logic",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5018,
                        "src": "844:14:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4974,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "844:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4977,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5018,
                        "src": "860:18:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4976,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "860:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "843:36:20"
                  },
                  "returnParameters": {
                    "id": 4979,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "895:0:20"
                  },
                  "scope": 5019,
                  "src": "832:311:20",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 5020,
              "src": "250:895:20"
            }
          ],
          "src": "37:1109:20"
        },
        "id": 20
      },
      "contracts/deployments/ATokensAndRatesHelper.sol": {
        "ast": {
          "absolutePath": "contracts/deployments/ATokensAndRatesHelper.sol",
          "exportedSymbols": {
            "ATokensAndRatesHelper": [
              5252
            ]
          },
          "id": 5253,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5021,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:21"
            },
            {
              "id": 5022,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "61:33:21"
            },
            {
              "absolutePath": "contracts/protocol/lendingpool/LendingPool.sol",
              "file": "../protocol/lendingpool/LendingPool.sol",
              "id": 5024,
              "nodeType": "ImportDirective",
              "scope": 5253,
              "sourceUnit": 13935,
              "src": "96:68:21",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5023,
                    "name": "LendingPool",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "104:11:21",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/configuration/LendingPoolAddressesProvider.sol",
              "file": "../protocol/configuration/LendingPoolAddressesProvider.sol",
              "id": 5026,
              "nodeType": "ImportDirective",
              "scope": 5253,
              "sourceUnit": 11254,
              "src": "165:108:21",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5025,
                    "name": "LendingPoolAddressesProvider",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "176:28:21",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/lendingpool/LendingPoolConfigurator.sol",
              "file": "../protocol/lendingpool/LendingPoolConfigurator.sol",
              "id": 5028,
              "nodeType": "ImportDirective",
              "scope": 5253,
              "sourceUnit": 15747,
              "src": "274:92:21",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5027,
                    "name": "LendingPoolConfigurator",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "282:23:21",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/tokenization/AToken.sol",
              "file": "../protocol/tokenization/AToken.sol",
              "id": 5030,
              "nodeType": "ImportDirective",
              "scope": 5253,
              "sourceUnit": 21295,
              "src": "367:59:21",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5029,
                    "name": "AToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "375:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/lendingpool/DefaultReserveInterestRateStrategy.sol",
              "file": "../protocol/lendingpool/DefaultReserveInterestRateStrategy.sol",
              "id": 5032,
              "nodeType": "ImportDirective",
              "scope": 5253,
              "sourceUnit": 11938,
              "src": "427:118:21",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5031,
                    "name": "DefaultReserveInterestRateStrategy",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "438:34:21",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/Ownable.sol",
              "file": "../dependencies/openzeppelin/contracts/Ownable.sol",
              "id": 5034,
              "nodeType": "ImportDirective",
              "scope": 5253,
              "sourceUnit": 4144,
              "src": "546:75:21",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5033,
                    "name": "Ownable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "554:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/deployments/StringLib.sol",
              "file": "./StringLib.sol",
              "id": 5036,
              "nodeType": "ImportDirective",
              "scope": 5253,
              "sourceUnit": 5465,
              "src": "622:42:21",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5035,
                    "name": "StringLib",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "630:9:21",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 5037,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4143,
                    "src": "700:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$4143",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 5038,
                  "nodeType": "InheritanceSpecifier",
                  "src": "700:7:21"
                }
              ],
              "contractDependencies": [
                3427,
                4143,
                11937,
                21294
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 5252,
              "linearizedBaseContracts": [
                5252,
                4143,
                3427
              ],
              "name": "ATokensAndRatesHelper",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 5040,
                  "mutability": "mutable",
                  "name": "pool",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5252,
                  "src": "712:28:21",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 5039,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "712:15:21",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 5042,
                  "mutability": "mutable",
                  "name": "addressesProvider",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5252,
                  "src": "744:33:21",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5041,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "744:7:21",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 5044,
                  "mutability": "mutable",
                  "name": "poolConfigurator",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5252,
                  "src": "781:32:21",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5043,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "781:7:21",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 5050,
                  "name": "deployedContracts",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5049,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5046,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "aToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5050,
                        "src": "841:14:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5045,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "841:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5048,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "strategy",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5050,
                        "src": "857:16:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5047,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "857:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "840:34:21"
                  },
                  "src": "817:58:21"
                },
                {
                  "canonicalName": "ATokensAndRatesHelper.InitDeploymentInput",
                  "id": 5057,
                  "members": [
                    {
                      "constant": false,
                      "id": 5052,
                      "mutability": "mutable",
                      "name": "asset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5057,
                      "src": "912:13:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5051,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "912:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5056,
                      "mutability": "mutable",
                      "name": "rates",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5057,
                      "src": "931:16:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr",
                        "typeString": "uint256[6]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5053,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "931:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5055,
                        "length": {
                          "argumentTypes": null,
                          "hexValue": "36",
                          "id": 5054,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "939:1:21",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_6_by_1",
                            "typeString": "int_const 6"
                          },
                          "value": "6"
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "931:10:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr",
                          "typeString": "uint256[6]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "InitDeploymentInput",
                  "nodeType": "StructDefinition",
                  "scope": 5252,
                  "src": "879:73:21",
                  "visibility": "public"
                },
                {
                  "canonicalName": "ATokensAndRatesHelper.ConfigureReserveInput",
                  "id": 5072,
                  "members": [
                    {
                      "constant": false,
                      "id": 5059,
                      "mutability": "mutable",
                      "name": "asset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5072,
                      "src": "991:13:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5058,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "991:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5061,
                      "mutability": "mutable",
                      "name": "baseLTV",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5072,
                      "src": "1010:15:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5060,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1010:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5063,
                      "mutability": "mutable",
                      "name": "liquidationThreshold",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5072,
                      "src": "1031:28:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5062,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1031:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5065,
                      "mutability": "mutable",
                      "name": "liquidationBonus",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5072,
                      "src": "1065:24:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5064,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1065:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5067,
                      "mutability": "mutable",
                      "name": "reserveFactor",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5072,
                      "src": "1095:21:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5066,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1095:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5069,
                      "mutability": "mutable",
                      "name": "stableBorrowingEnabled",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5072,
                      "src": "1122:27:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 5068,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1122:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5071,
                      "mutability": "mutable",
                      "name": "borrowingEnabled",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5072,
                      "src": "1155:21:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 5070,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1155:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "ConfigureReserveInput",
                  "nodeType": "StructDefinition",
                  "scope": 5252,
                  "src": "956:225:21",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5093,
                    "nodeType": "Block",
                    "src": "1298:109:21",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5083,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 5081,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5040,
                            "src": "1304:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 5082,
                            "name": "_pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5074,
                            "src": "1311:5:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "1304:12:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "id": 5084,
                        "nodeType": "ExpressionStatement",
                        "src": "1304:12:21"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 5085,
                            "name": "addressesProvider",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5042,
                            "src": "1322:17:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 5086,
                            "name": "_addressesProvider",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5076,
                            "src": "1342:18:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1322:38:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5088,
                        "nodeType": "ExpressionStatement",
                        "src": "1322:38:21"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5091,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 5089,
                            "name": "poolConfigurator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5044,
                            "src": "1366:16:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 5090,
                            "name": "_poolConfigurator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5078,
                            "src": "1385:17:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1366:36:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5092,
                        "nodeType": "ExpressionStatement",
                        "src": "1366:36:21"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 5094,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5079,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5074,
                        "mutability": "mutable",
                        "name": "_pool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5094,
                        "src": "1202:21:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 5073,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1202:15:21",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5076,
                        "mutability": "mutable",
                        "name": "_addressesProvider",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5094,
                        "src": "1229:26:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5075,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1229:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5078,
                        "mutability": "mutable",
                        "name": "_poolConfigurator",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5094,
                        "src": "1261:25:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5077,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1261:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1196:94:21"
                  },
                  "returnParameters": {
                    "id": 5080,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1298:0:21"
                  },
                  "scope": 5252,
                  "src": "1185:222:21",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5169,
                    "nodeType": "Block",
                    "src": "1498:507:21",
                    "statements": [
                      {
                        "body": {
                          "id": 5167,
                          "nodeType": "Block",
                          "src": "1553:448:21",
                          "statements": [
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 5117,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "NewExpression",
                                          "src": "1601:10:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_AToken_$21294_$",
                                            "typeString": "function () returns (contract AToken)"
                                          },
                                          "typeName": {
                                            "contractScope": null,
                                            "id": 5116,
                                            "name": "AToken",
                                            "nodeType": "UserDefinedTypeName",
                                            "referencedDeclaration": 21294,
                                            "src": "1605:6:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_AToken_$21294",
                                              "typeString": "contract AToken"
                                            }
                                          }
                                        },
                                        "id": 5118,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1601:12:21",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_AToken_$21294",
                                          "typeString": "contract AToken"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_AToken_$21294",
                                          "typeString": "contract AToken"
                                        }
                                      ],
                                      "id": 5115,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1593:7:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 5114,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1593:7:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 5119,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1593:21:21",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 5125,
                                                "name": "addressesProvider",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5042,
                                                "src": "1724:17:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "id": 5124,
                                              "name": "LendingPoolAddressesProvider",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 11253,
                                              "src": "1695:28:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_LendingPoolAddressesProvider_$11253_$",
                                                "typeString": "type(contract LendingPoolAddressesProvider)"
                                              }
                                            },
                                            "id": 5126,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "1695:47:21",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_LendingPoolAddressesProvider_$11253",
                                              "typeString": "contract LendingPoolAddressesProvider"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                  "argumentTypes": null,
                                                  "id": 5127,
                                                  "name": "inputParams",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5097,
                                                  "src": "1756:11:21",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_InitDeploymentInput_$5057_calldata_ptr_$dyn_calldata_ptr",
                                                    "typeString": "struct ATokensAndRatesHelper.InitDeploymentInput calldata[] calldata"
                                                  }
                                                },
                                                "id": 5129,
                                                "indexExpression": {
                                                  "argumentTypes": null,
                                                  "id": 5128,
                                                  "name": "i",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5103,
                                                  "src": "1768:1:21",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "1756:14:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_InitDeploymentInput_$5057_calldata_ptr",
                                                  "typeString": "struct ATokensAndRatesHelper.InitDeploymentInput calldata"
                                                }
                                              },
                                              "id": 5130,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "rates",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 5056,
                                              "src": "1756:20:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$6_calldata_ptr",
                                                "typeString": "uint256[6] calldata"
                                              }
                                            },
                                            "id": 5132,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "30",
                                              "id": 5131,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "1777:1:21",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              },
                                              "value": "0"
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "1756:23:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                  "argumentTypes": null,
                                                  "id": 5133,
                                                  "name": "inputParams",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5097,
                                                  "src": "1793:11:21",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_InitDeploymentInput_$5057_calldata_ptr_$dyn_calldata_ptr",
                                                    "typeString": "struct ATokensAndRatesHelper.InitDeploymentInput calldata[] calldata"
                                                  }
                                                },
                                                "id": 5135,
                                                "indexExpression": {
                                                  "argumentTypes": null,
                                                  "id": 5134,
                                                  "name": "i",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5103,
                                                  "src": "1805:1:21",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "1793:14:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_InitDeploymentInput_$5057_calldata_ptr",
                                                  "typeString": "struct ATokensAndRatesHelper.InitDeploymentInput calldata"
                                                }
                                              },
                                              "id": 5136,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "rates",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 5056,
                                              "src": "1793:20:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$6_calldata_ptr",
                                                "typeString": "uint256[6] calldata"
                                              }
                                            },
                                            "id": 5138,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "31",
                                              "id": 5137,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "1814:1:21",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "1793:23:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                  "argumentTypes": null,
                                                  "id": 5139,
                                                  "name": "inputParams",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5097,
                                                  "src": "1830:11:21",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_InitDeploymentInput_$5057_calldata_ptr_$dyn_calldata_ptr",
                                                    "typeString": "struct ATokensAndRatesHelper.InitDeploymentInput calldata[] calldata"
                                                  }
                                                },
                                                "id": 5141,
                                                "indexExpression": {
                                                  "argumentTypes": null,
                                                  "id": 5140,
                                                  "name": "i",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5103,
                                                  "src": "1842:1:21",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "1830:14:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_InitDeploymentInput_$5057_calldata_ptr",
                                                  "typeString": "struct ATokensAndRatesHelper.InitDeploymentInput calldata"
                                                }
                                              },
                                              "id": 5142,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "rates",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 5056,
                                              "src": "1830:20:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$6_calldata_ptr",
                                                "typeString": "uint256[6] calldata"
                                              }
                                            },
                                            "id": 5144,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "32",
                                              "id": 5143,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "1851:1:21",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_2_by_1",
                                                "typeString": "int_const 2"
                                              },
                                              "value": "2"
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "1830:23:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                  "argumentTypes": null,
                                                  "id": 5145,
                                                  "name": "inputParams",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5097,
                                                  "src": "1867:11:21",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_InitDeploymentInput_$5057_calldata_ptr_$dyn_calldata_ptr",
                                                    "typeString": "struct ATokensAndRatesHelper.InitDeploymentInput calldata[] calldata"
                                                  }
                                                },
                                                "id": 5147,
                                                "indexExpression": {
                                                  "argumentTypes": null,
                                                  "id": 5146,
                                                  "name": "i",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5103,
                                                  "src": "1879:1:21",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "1867:14:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_InitDeploymentInput_$5057_calldata_ptr",
                                                  "typeString": "struct ATokensAndRatesHelper.InitDeploymentInput calldata"
                                                }
                                              },
                                              "id": 5148,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "rates",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 5056,
                                              "src": "1867:20:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$6_calldata_ptr",
                                                "typeString": "uint256[6] calldata"
                                              }
                                            },
                                            "id": 5150,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "33",
                                              "id": 5149,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "1888:1:21",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_3_by_1",
                                                "typeString": "int_const 3"
                                              },
                                              "value": "3"
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "1867:23:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                  "argumentTypes": null,
                                                  "id": 5151,
                                                  "name": "inputParams",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5097,
                                                  "src": "1904:11:21",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_InitDeploymentInput_$5057_calldata_ptr_$dyn_calldata_ptr",
                                                    "typeString": "struct ATokensAndRatesHelper.InitDeploymentInput calldata[] calldata"
                                                  }
                                                },
                                                "id": 5153,
                                                "indexExpression": {
                                                  "argumentTypes": null,
                                                  "id": 5152,
                                                  "name": "i",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5103,
                                                  "src": "1916:1:21",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "1904:14:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_InitDeploymentInput_$5057_calldata_ptr",
                                                  "typeString": "struct ATokensAndRatesHelper.InitDeploymentInput calldata"
                                                }
                                              },
                                              "id": 5154,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "rates",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 5056,
                                              "src": "1904:20:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$6_calldata_ptr",
                                                "typeString": "uint256[6] calldata"
                                              }
                                            },
                                            "id": 5156,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "34",
                                              "id": 5155,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "1925:1:21",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_4_by_1",
                                                "typeString": "int_const 4"
                                              },
                                              "value": "4"
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "1904:23:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                  "argumentTypes": null,
                                                  "id": 5157,
                                                  "name": "inputParams",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5097,
                                                  "src": "1941:11:21",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_InitDeploymentInput_$5057_calldata_ptr_$dyn_calldata_ptr",
                                                    "typeString": "struct ATokensAndRatesHelper.InitDeploymentInput calldata[] calldata"
                                                  }
                                                },
                                                "id": 5159,
                                                "indexExpression": {
                                                  "argumentTypes": null,
                                                  "id": 5158,
                                                  "name": "i",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5103,
                                                  "src": "1953:1:21",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "1941:14:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_InitDeploymentInput_$5057_calldata_ptr",
                                                  "typeString": "struct ATokensAndRatesHelper.InitDeploymentInput calldata"
                                                }
                                              },
                                              "id": 5160,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "rates",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 5056,
                                              "src": "1941:20:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$6_calldata_ptr",
                                                "typeString": "uint256[6] calldata"
                                              }
                                            },
                                            "id": 5162,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "35",
                                              "id": 5161,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "1962:1:21",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_5_by_1",
                                                "typeString": "int_const 5"
                                              },
                                              "value": "5"
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "1941:23:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_LendingPoolAddressesProvider_$11253",
                                              "typeString": "contract LendingPoolAddressesProvider"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 5123,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "NewExpression",
                                          "src": "1643:38:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_creation_nonpayable$_t_contract$_ILendingPoolAddressesProvider_$6617_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_contract$_DefaultReserveInterestRateStrategy_$11937_$",
                                            "typeString": "function (contract ILendingPoolAddressesProvider,uint256,uint256,uint256,uint256,uint256,uint256) returns (contract DefaultReserveInterestRateStrategy)"
                                          },
                                          "typeName": {
                                            "contractScope": null,
                                            "id": 5122,
                                            "name": "DefaultReserveInterestRateStrategy",
                                            "nodeType": "UserDefinedTypeName",
                                            "referencedDeclaration": 11937,
                                            "src": "1647:34:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_DefaultReserveInterestRateStrategy_$11937",
                                              "typeString": "contract DefaultReserveInterestRateStrategy"
                                            }
                                          }
                                        },
                                        "id": 5163,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1643:333:21",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_DefaultReserveInterestRateStrategy_$11937",
                                          "typeString": "contract DefaultReserveInterestRateStrategy"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_DefaultReserveInterestRateStrategy_$11937",
                                          "typeString": "contract DefaultReserveInterestRateStrategy"
                                        }
                                      ],
                                      "id": 5121,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1624:7:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 5120,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1624:7:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 5164,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1624:362:21",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 5113,
                                  "name": "deployedContracts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5050,
                                  "src": "1566:17:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                                    "typeString": "function (address,address)"
                                  }
                                },
                                "id": 5165,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1566:428:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5166,
                              "nodeType": "EmitStatement",
                              "src": "1561:433:21"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5109,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5106,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5103,
                            "src": "1524:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5107,
                              "name": "inputParams",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5097,
                              "src": "1528:11:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_InitDeploymentInput_$5057_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct ATokensAndRatesHelper.InitDeploymentInput calldata[] calldata"
                              }
                            },
                            "id": 5108,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1528:18:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1524:22:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5168,
                        "initializationExpression": {
                          "assignments": [
                            5103
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 5103,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 5168,
                              "src": "1509:9:21",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 5102,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1509:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 5105,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5104,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1521:1:21",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1509:13:21"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 5111,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "1548:3:21",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 5110,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5103,
                              "src": "1548:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5112,
                          "nodeType": "ExpressionStatement",
                          "src": "1548:3:21"
                        },
                        "nodeType": "ForStatement",
                        "src": "1504:497:21"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "fc123602",
                  "id": 5170,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 5100,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 5099,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "1488:9:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1488:9:21"
                    }
                  ],
                  "name": "initDeployment",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5098,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5097,
                        "mutability": "mutable",
                        "name": "inputParams",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5170,
                        "src": "1435:42:21",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_InitDeploymentInput_$5057_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct ATokensAndRatesHelper.InitDeploymentInput[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 5095,
                            "name": "InitDeploymentInput",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 5057,
                            "src": "1435:19:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_InitDeploymentInput_$5057_storage_ptr",
                              "typeString": "struct ATokensAndRatesHelper.InitDeploymentInput"
                            }
                          },
                          "id": 5096,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1435:21:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_InitDeploymentInput_$5057_storage_$dyn_storage_ptr",
                            "typeString": "struct ATokensAndRatesHelper.InitDeploymentInput[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1434:44:21"
                  },
                  "returnParameters": {
                    "id": 5101,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1498:0:21"
                  },
                  "scope": 5252,
                  "src": "1411:594:21",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 5250,
                    "nodeType": "Block",
                    "src": "2101:638:21",
                    "statements": [
                      {
                        "assignments": [
                          5179
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5179,
                            "mutability": "mutable",
                            "name": "configurator",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 5250,
                            "src": "2107:36:21",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_LendingPoolConfigurator_$15746",
                              "typeString": "contract LendingPoolConfigurator"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 5178,
                              "name": "LendingPoolConfigurator",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 15746,
                              "src": "2107:23:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_LendingPoolConfigurator_$15746",
                                "typeString": "contract LendingPoolConfigurator"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5183,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5181,
                              "name": "poolConfigurator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5044,
                              "src": "2170:16:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 5180,
                            "name": "LendingPoolConfigurator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15746,
                            "src": "2146:23:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_LendingPoolConfigurator_$15746_$",
                              "typeString": "type(contract LendingPoolConfigurator)"
                            }
                          },
                          "id": 5182,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2146:41:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_LendingPoolConfigurator_$15746",
                            "typeString": "contract LendingPoolConfigurator"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2107:80:21"
                      },
                      {
                        "body": {
                          "id": 5248,
                          "nodeType": "Block",
                          "src": "2242:493:21",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 5198,
                                        "name": "inputParams",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5173,
                                        "src": "2301:11:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_ConfigureReserveInput_$5072_calldata_ptr_$dyn_calldata_ptr",
                                          "typeString": "struct ATokensAndRatesHelper.ConfigureReserveInput calldata[] calldata"
                                        }
                                      },
                                      "id": 5200,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 5199,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5185,
                                        "src": "2313:1:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2301:14:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ConfigureReserveInput_$5072_calldata_ptr",
                                        "typeString": "struct ATokensAndRatesHelper.ConfigureReserveInput calldata"
                                      }
                                    },
                                    "id": 5201,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "asset",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5059,
                                    "src": "2301:20:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 5202,
                                        "name": "inputParams",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5173,
                                        "src": "2331:11:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_ConfigureReserveInput_$5072_calldata_ptr_$dyn_calldata_ptr",
                                          "typeString": "struct ATokensAndRatesHelper.ConfigureReserveInput calldata[] calldata"
                                        }
                                      },
                                      "id": 5204,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 5203,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5185,
                                        "src": "2343:1:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2331:14:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ConfigureReserveInput_$5072_calldata_ptr",
                                        "typeString": "struct ATokensAndRatesHelper.ConfigureReserveInput calldata"
                                      }
                                    },
                                    "id": 5205,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "baseLTV",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5061,
                                    "src": "2331:22:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 5206,
                                        "name": "inputParams",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5173,
                                        "src": "2363:11:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_ConfigureReserveInput_$5072_calldata_ptr_$dyn_calldata_ptr",
                                          "typeString": "struct ATokensAndRatesHelper.ConfigureReserveInput calldata[] calldata"
                                        }
                                      },
                                      "id": 5208,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 5207,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5185,
                                        "src": "2375:1:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2363:14:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ConfigureReserveInput_$5072_calldata_ptr",
                                        "typeString": "struct ATokensAndRatesHelper.ConfigureReserveInput calldata"
                                      }
                                    },
                                    "id": 5209,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "liquidationThreshold",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5063,
                                    "src": "2363:35:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 5210,
                                        "name": "inputParams",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5173,
                                        "src": "2408:11:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_ConfigureReserveInput_$5072_calldata_ptr_$dyn_calldata_ptr",
                                          "typeString": "struct ATokensAndRatesHelper.ConfigureReserveInput calldata[] calldata"
                                        }
                                      },
                                      "id": 5212,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 5211,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5185,
                                        "src": "2420:1:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2408:14:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ConfigureReserveInput_$5072_calldata_ptr",
                                        "typeString": "struct ATokensAndRatesHelper.ConfigureReserveInput calldata"
                                      }
                                    },
                                    "id": 5213,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "liquidationBonus",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5065,
                                    "src": "2408:31:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5195,
                                    "name": "configurator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5179,
                                    "src": "2250:12:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_LendingPoolConfigurator_$15746",
                                      "typeString": "contract LendingPoolConfigurator"
                                    }
                                  },
                                  "id": 5197,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "configureReserveAsCollateral",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15352,
                                  "src": "2250:41:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256,uint256) external"
                                  }
                                },
                                "id": 5214,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2250:197:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5215,
                              "nodeType": "ExpressionStatement",
                              "src": "2250:197:21"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 5216,
                                    "name": "inputParams",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5173,
                                    "src": "2460:11:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_ConfigureReserveInput_$5072_calldata_ptr_$dyn_calldata_ptr",
                                      "typeString": "struct ATokensAndRatesHelper.ConfigureReserveInput calldata[] calldata"
                                    }
                                  },
                                  "id": 5218,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 5217,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5185,
                                    "src": "2472:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2460:14:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ConfigureReserveInput_$5072_calldata_ptr",
                                    "typeString": "struct ATokensAndRatesHelper.ConfigureReserveInput calldata"
                                  }
                                },
                                "id": 5219,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "borrowingEnabled",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5071,
                                "src": "2460:31:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 5234,
                              "nodeType": "IfStatement",
                              "src": "2456:184:21",
                              "trueBody": {
                                "id": 5233,
                                "nodeType": "Block",
                                "src": "2493:147:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 5223,
                                              "name": "inputParams",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5173,
                                              "src": "2552:11:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_ConfigureReserveInput_$5072_calldata_ptr_$dyn_calldata_ptr",
                                                "typeString": "struct ATokensAndRatesHelper.ConfigureReserveInput calldata[] calldata"
                                              }
                                            },
                                            "id": 5225,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 5224,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5185,
                                              "src": "2564:1:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "2552:14:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_ConfigureReserveInput_$5072_calldata_ptr",
                                              "typeString": "struct ATokensAndRatesHelper.ConfigureReserveInput calldata"
                                            }
                                          },
                                          "id": 5226,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "asset",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 5059,
                                          "src": "2552:20:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 5227,
                                              "name": "inputParams",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5173,
                                              "src": "2584:11:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_ConfigureReserveInput_$5072_calldata_ptr_$dyn_calldata_ptr",
                                                "typeString": "struct ATokensAndRatesHelper.ConfigureReserveInput calldata[] calldata"
                                              }
                                            },
                                            "id": 5229,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 5228,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5185,
                                              "src": "2596:1:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "2584:14:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_ConfigureReserveInput_$5072_calldata_ptr",
                                              "typeString": "struct ATokensAndRatesHelper.ConfigureReserveInput calldata"
                                            }
                                          },
                                          "id": 5230,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "stableBorrowingEnabled",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 5069,
                                          "src": "2584:37:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 5220,
                                          "name": "configurator",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5179,
                                          "src": "2503:12:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_LendingPoolConfigurator_$15746",
                                            "typeString": "contract LendingPoolConfigurator"
                                          }
                                        },
                                        "id": 5222,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "enableBorrowingOnReserve",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 15212,
                                        "src": "2503:37:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bool_$returns$__$",
                                          "typeString": "function (address,bool) external"
                                        }
                                      },
                                      "id": 5231,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2503:128:21",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 5232,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2503:128:21"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 5238,
                                        "name": "inputParams",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5173,
                                        "src": "2677:11:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_ConfigureReserveInput_$5072_calldata_ptr_$dyn_calldata_ptr",
                                          "typeString": "struct ATokensAndRatesHelper.ConfigureReserveInput calldata[] calldata"
                                        }
                                      },
                                      "id": 5240,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 5239,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5185,
                                        "src": "2689:1:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2677:14:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ConfigureReserveInput_$5072_calldata_ptr",
                                        "typeString": "struct ATokensAndRatesHelper.ConfigureReserveInput calldata"
                                      }
                                    },
                                    "id": 5241,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "asset",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5059,
                                    "src": "2677:20:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 5242,
                                        "name": "inputParams",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5173,
                                        "src": "2699:11:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_ConfigureReserveInput_$5072_calldata_ptr_$dyn_calldata_ptr",
                                          "typeString": "struct ATokensAndRatesHelper.ConfigureReserveInput calldata[] calldata"
                                        }
                                      },
                                      "id": 5244,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 5243,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5185,
                                        "src": "2711:1:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2699:14:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ConfigureReserveInput_$5072_calldata_ptr",
                                        "typeString": "struct ATokensAndRatesHelper.ConfigureReserveInput calldata"
                                      }
                                    },
                                    "id": 5245,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "reserveFactor",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5067,
                                    "src": "2699:28:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5235,
                                    "name": "configurator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5179,
                                    "src": "2647:12:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_LendingPoolConfigurator_$15746",
                                      "typeString": "contract LendingPoolConfigurator"
                                    }
                                  },
                                  "id": 5237,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "setReserveFactor",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15611,
                                  "src": "2647:29:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256) external"
                                  }
                                },
                                "id": 5246,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2647:81:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5247,
                              "nodeType": "ExpressionStatement",
                              "src": "2647:81:21"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5191,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5188,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5185,
                            "src": "2213:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5189,
                              "name": "inputParams",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5173,
                              "src": "2217:11:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_ConfigureReserveInput_$5072_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct ATokensAndRatesHelper.ConfigureReserveInput calldata[] calldata"
                              }
                            },
                            "id": 5190,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2217:18:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2213:22:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5249,
                        "initializationExpression": {
                          "assignments": [
                            5185
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 5185,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 5249,
                              "src": "2198:9:21",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 5184,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2198:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 5187,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5186,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2210:1:21",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2198:13:21"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 5193,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "2237:3:21",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 5192,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5185,
                              "src": "2237:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5194,
                          "nodeType": "ExpressionStatement",
                          "src": "2237:3:21"
                        },
                        "nodeType": "ForStatement",
                        "src": "2193:542:21"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "9dd8aad5",
                  "id": 5251,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 5176,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 5175,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "2091:9:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2091:9:21"
                    }
                  ],
                  "name": "configureReserves",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5174,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5173,
                        "mutability": "mutable",
                        "name": "inputParams",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5251,
                        "src": "2036:44:21",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_ConfigureReserveInput_$5072_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct ATokensAndRatesHelper.ConfigureReserveInput[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 5171,
                            "name": "ConfigureReserveInput",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 5072,
                            "src": "2036:21:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ConfigureReserveInput_$5072_storage_ptr",
                              "typeString": "struct ATokensAndRatesHelper.ConfigureReserveInput"
                            }
                          },
                          "id": 5172,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2036:23:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_ConfigureReserveInput_$5072_storage_$dyn_storage_ptr",
                            "typeString": "struct ATokensAndRatesHelper.ConfigureReserveInput[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2035:46:21"
                  },
                  "returnParameters": {
                    "id": 5177,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2101:0:21"
                  },
                  "scope": 5252,
                  "src": "2009:730:21",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5253,
              "src": "666:2075:21"
            }
          ],
          "src": "37:2705:21"
        },
        "id": 21
      },
      "contracts/deployments/StableAndVariableTokensHelper.sol": {
        "ast": {
          "absolutePath": "contracts/deployments/StableAndVariableTokensHelper.sol",
          "exportedSymbols": {
            "StableAndVariableTokensHelper": [
              5442
            ]
          },
          "id": 5443,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5254,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:22"
            },
            {
              "id": 5255,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "61:33:22"
            },
            {
              "absolutePath": "contracts/protocol/tokenization/StableDebtToken.sol",
              "file": "../protocol/tokenization/StableDebtToken.sol",
              "id": 5257,
              "nodeType": "ImportDirective",
              "scope": 5443,
              "sourceUnit": 22905,
              "src": "96:77:22",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5256,
                    "name": "StableDebtToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "104:15:22",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/tokenization/VariableDebtToken.sol",
              "file": "../protocol/tokenization/VariableDebtToken.sol",
              "id": 5259,
              "nodeType": "ImportDirective",
              "scope": 5443,
              "sourceUnit": 25783,
              "src": "174:81:22",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5258,
                    "name": "VariableDebtToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "182:17:22",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mocks/oracle/LendingRateOracle.sol",
              "file": "../mocks/oracle/LendingRateOracle.sol",
              "id": 5261,
              "nodeType": "ImportDirective",
              "scope": 5443,
              "sourceUnit": 10239,
              "src": "256:72:22",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5260,
                    "name": "LendingRateOracle",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "264:17:22",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/Ownable.sol",
              "file": "../dependencies/openzeppelin/contracts/Ownable.sol",
              "id": 5263,
              "nodeType": "ImportDirective",
              "scope": 5443,
              "sourceUnit": 4144,
              "src": "329:75:22",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5262,
                    "name": "Ownable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "337:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/deployments/StringLib.sol",
              "file": "./StringLib.sol",
              "id": 5265,
              "nodeType": "ImportDirective",
              "scope": 5443,
              "sourceUnit": 5465,
              "src": "405:42:22",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5264,
                    "name": "StringLib",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "413:9:22",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 5266,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4143,
                    "src": "491:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$4143",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 5267,
                  "nodeType": "InheritanceSpecifier",
                  "src": "491:7:22"
                }
              ],
              "contractDependencies": [
                3427,
                4143,
                22904,
                25782
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 5442,
              "linearizedBaseContracts": [
                5442,
                4143,
                3427
              ],
              "name": "StableAndVariableTokensHelper",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 5269,
                  "mutability": "mutable",
                  "name": "pool",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5442,
                  "src": "503:28:22",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 5268,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "503:15:22",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 5271,
                  "mutability": "mutable",
                  "name": "addressesProvider",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 5442,
                  "src": "535:33:22",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5270,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "535:7:22",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 5277,
                  "name": "deployedContracts",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5276,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5273,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "stableToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5277,
                        "src": "596:19:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5272,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "596:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5275,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "variableToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5277,
                        "src": "617:21:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5274,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "617:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "595:44:22"
                  },
                  "src": "572:68:22"
                },
                {
                  "body": {
                    "id": 5292,
                    "nodeType": "Block",
                    "src": "714:67:22",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5286,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 5284,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5269,
                            "src": "720:4:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 5285,
                            "name": "_pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5279,
                            "src": "727:5:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "720:12:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "id": 5287,
                        "nodeType": "ExpressionStatement",
                        "src": "720:12:22"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 5288,
                            "name": "addressesProvider",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5271,
                            "src": "738:17:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 5289,
                            "name": "_addressesProvider",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5281,
                            "src": "758:18:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "738:38:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5291,
                        "nodeType": "ExpressionStatement",
                        "src": "738:38:22"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 5293,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5282,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5279,
                        "mutability": "mutable",
                        "name": "_pool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5293,
                        "src": "656:21:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 5278,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "656:15:22",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5281,
                        "mutability": "mutable",
                        "name": "_addressesProvider",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5293,
                        "src": "679:26:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5280,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "679:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "655:51:22"
                  },
                  "returnParameters": {
                    "id": 5283,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "714:0:22"
                  },
                  "scope": 5442,
                  "src": "644:137:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5351,
                    "nodeType": "Block",
                    "src": "882:294:22",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5309,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5305,
                                  "name": "tokens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5296,
                                  "src": "896:6:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 5306,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "896:13:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5307,
                                  "name": "symbols",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5299,
                                  "src": "913:7:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "string calldata[] calldata"
                                  }
                                },
                                "id": 5308,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "913:14:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "896:31:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "417272617973206e6f742073616d65206c656e677468",
                              "id": 5310,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "929:24:22",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e757f51a6661d0f97866e4e2f688f20421941b6b709a81884b686b51d594800b",
                                "typeString": "literal_string \"Arrays not same length\""
                              },
                              "value": "Arrays not same length"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e757f51a6661d0f97866e4e2f688f20421941b6b709a81884b686b51d594800b",
                                "typeString": "literal_string \"Arrays not same length\""
                              }
                            ],
                            "id": 5304,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "888:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5311,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "888:66:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5312,
                        "nodeType": "ExpressionStatement",
                        "src": "888:66:22"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              "id": 5319,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5314,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5269,
                                "src": "968:4:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 5317,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "984:1:22",
                                    "subdenomination": null,
                                    "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": 5316,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "976:7:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 5315,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "976:7:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 5318,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "976:10:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "968:18:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "506f6f6c2063616e206e6f74206265207a65726f2061646472657373",
                              "id": 5320,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "988:30:22",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9e949ddf6bd658067a6d5abc20b94cbc87f5f9e2e70141f0b505e6193d3cce65",
                                "typeString": "literal_string \"Pool can not be zero address\""
                              },
                              "value": "Pool can not be zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9e949ddf6bd658067a6d5abc20b94cbc87f5f9e2e70141f0b505e6193d3cce65",
                                "typeString": "literal_string \"Pool can not be zero address\""
                              }
                            ],
                            "id": 5313,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "960:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "960:59:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5322,
                        "nodeType": "ExpressionStatement",
                        "src": "960:59:22"
                      },
                      {
                        "body": {
                          "id": 5349,
                          "nodeType": "Block",
                          "src": "1069:103:22",
                          "statements": [
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 5338,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "NewExpression",
                                          "src": "1108:19:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_StableDebtToken_$22904_$",
                                            "typeString": "function () returns (contract StableDebtToken)"
                                          },
                                          "typeName": {
                                            "contractScope": null,
                                            "id": 5337,
                                            "name": "StableDebtToken",
                                            "nodeType": "UserDefinedTypeName",
                                            "referencedDeclaration": 22904,
                                            "src": "1112:15:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_StableDebtToken_$22904",
                                              "typeString": "contract StableDebtToken"
                                            }
                                          }
                                        },
                                        "id": 5339,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1108:21:22",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_StableDebtToken_$22904",
                                          "typeString": "contract StableDebtToken"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_StableDebtToken_$22904",
                                          "typeString": "contract StableDebtToken"
                                        }
                                      ],
                                      "id": 5336,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1100:7:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 5335,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1100:7:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 5340,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1100:30:22",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 5344,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "NewExpression",
                                          "src": "1140:21:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_VariableDebtToken_$25782_$",
                                            "typeString": "function () returns (contract VariableDebtToken)"
                                          },
                                          "typeName": {
                                            "contractScope": null,
                                            "id": 5343,
                                            "name": "VariableDebtToken",
                                            "nodeType": "UserDefinedTypeName",
                                            "referencedDeclaration": 25782,
                                            "src": "1144:17:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_VariableDebtToken_$25782",
                                              "typeString": "contract VariableDebtToken"
                                            }
                                          }
                                        },
                                        "id": 5345,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1140:23:22",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_VariableDebtToken_$25782",
                                          "typeString": "contract VariableDebtToken"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_VariableDebtToken_$25782",
                                          "typeString": "contract VariableDebtToken"
                                        }
                                      ],
                                      "id": 5342,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1132:7:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 5341,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1132:7:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 5346,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1132:32:22",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 5334,
                                  "name": "deployedContracts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5277,
                                  "src": "1082:17:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                                    "typeString": "function (address,address)"
                                  }
                                },
                                "id": 5347,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1082:83:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5348,
                              "nodeType": "EmitStatement",
                              "src": "1077:88:22"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5330,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5327,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5324,
                            "src": "1045:1:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5328,
                              "name": "tokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5296,
                              "src": "1049:6:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 5329,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1049:13:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1045:17:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5350,
                        "initializationExpression": {
                          "assignments": [
                            5324
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 5324,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 5350,
                              "src": "1030:9:22",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 5323,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1030:7:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 5326,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5325,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1042:1:22",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1030:13:22"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 5332,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "1064:3:22",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 5331,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5324,
                              "src": "1064:1:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5333,
                          "nodeType": "ExpressionStatement",
                          "src": "1064:3:22"
                        },
                        "nodeType": "ForStatement",
                        "src": "1025:147:22"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "54fe1c94",
                  "id": 5352,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 5302,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 5301,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "872:9:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "872:9:22"
                    }
                  ],
                  "name": "initDeployment",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5300,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5296,
                        "mutability": "mutable",
                        "name": "tokens",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5352,
                        "src": "809:25:22",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5294,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "809:7:22",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 5295,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "809:9:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5299,
                        "mutability": "mutable",
                        "name": "symbols",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5352,
                        "src": "836:25:22",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "string[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5297,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "836:6:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage_ptr",
                              "typeString": "string"
                            }
                          },
                          "id": 5298,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "836:8:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                            "typeString": "string[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "808:54:22"
                  },
                  "returnParameters": {
                    "id": 5303,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "882:0:22"
                  },
                  "scope": 5442,
                  "src": "785:391:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 5399,
                    "nodeType": "Block",
                    "src": "1314:261:22",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5370,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5366,
                                  "name": "assets",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5355,
                                  "src": "1328:6:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 5367,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1328:13:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5368,
                                  "name": "rates",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5358,
                                  "src": "1345:5:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                    "typeString": "uint256[] calldata"
                                  }
                                },
                                "id": 5369,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1345:12:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1328:29:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "417272617973206e6f742073616d65206c656e677468",
                              "id": 5371,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1359:24:22",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e757f51a6661d0f97866e4e2f688f20421941b6b709a81884b686b51d594800b",
                                "typeString": "literal_string \"Arrays not same length\""
                              },
                              "value": "Arrays not same length"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e757f51a6661d0f97866e4e2f688f20421941b6b709a81884b686b51d594800b",
                                "typeString": "literal_string \"Arrays not same length\""
                              }
                            ],
                            "id": 5365,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1320:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5372,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1320:64:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5373,
                        "nodeType": "ExpressionStatement",
                        "src": "1320:64:22"
                      },
                      {
                        "body": {
                          "id": 5397,
                          "nodeType": "Block",
                          "src": "1435:136:22",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 5389,
                                      "name": "assets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5355,
                                      "src": "1544:6:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 5391,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 5390,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5375,
                                      "src": "1551:1:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1544:9:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 5392,
                                      "name": "rates",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5358,
                                      "src": "1555:5:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 5394,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 5393,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5375,
                                      "src": "1561:1:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1555:8:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 5386,
                                        "name": "oracle",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5360,
                                        "src": "1516:6:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 5385,
                                      "name": "LendingRateOracle",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10238,
                                      "src": "1498:17:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_LendingRateOracle_$10238_$",
                                        "typeString": "type(contract LendingRateOracle)"
                                      }
                                    },
                                    "id": 5387,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1498:25:22",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_LendingRateOracle_$10238",
                                      "typeString": "contract LendingRateOracle"
                                    }
                                  },
                                  "id": 5388,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "setMarketBorrowRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 10209,
                                  "src": "1498:45:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256) external"
                                  }
                                },
                                "id": 5395,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1498:66:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5396,
                              "nodeType": "ExpressionStatement",
                              "src": "1498:66:22"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5378,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5375,
                            "src": "1411:1:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5379,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5355,
                              "src": "1415:6:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 5380,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1415:13:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1411:17:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5398,
                        "initializationExpression": {
                          "assignments": [
                            5375
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 5375,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 5398,
                              "src": "1396:9:22",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 5374,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1396:7:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 5377,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5376,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1408:1:22",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1396:13:22"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 5383,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "1430:3:22",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 5382,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5375,
                              "src": "1430:1:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5384,
                          "nodeType": "ExpressionStatement",
                          "src": "1430:3:22"
                        },
                        "nodeType": "ForStatement",
                        "src": "1391:180:22"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "c2d30321",
                  "id": 5400,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 5363,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 5362,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "1304:9:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1304:9:22"
                    }
                  ],
                  "name": "setOracleBorrowRates",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5361,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5355,
                        "mutability": "mutable",
                        "name": "assets",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5400,
                        "src": "1215:25:22",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5353,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1215:7:22",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 5354,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1215:9:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5358,
                        "mutability": "mutable",
                        "name": "rates",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5400,
                        "src": "1246:24:22",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5356,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1246:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5357,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1246:9:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5360,
                        "mutability": "mutable",
                        "name": "oracle",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5400,
                        "src": "1276:14:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5359,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1276:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1209:85:22"
                  },
                  "returnParameters": {
                    "id": 5364,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1314:0:22"
                  },
                  "scope": 5442,
                  "src": "1180:395:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 5440,
                    "nodeType": "Block",
                    "src": "1657:208:22",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 5415,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5410,
                                "name": "admin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5404,
                                "src": "1671:5:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 5413,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1688:1:22",
                                    "subdenomination": null,
                                    "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": 5412,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1680:7:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 5411,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1680:7:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 5414,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1680:10:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1671:19:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6f776e65722063616e206e6f74206265207a65726f",
                              "id": 5416,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1692:23:22",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d1d18f3c06dc323e2ac6ed35b73ab93b63995ccc487df908512a39c3d298fc44",
                                "typeString": "literal_string \"owner can not be zero\""
                              },
                              "value": "owner can not be zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d1d18f3c06dc323e2ac6ed35b73ab93b63995ccc487df908512a39c3d298fc44",
                                "typeString": "literal_string \"owner can not be zero\""
                              }
                            ],
                            "id": 5409,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1663:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5417,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1663:53:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5418,
                        "nodeType": "ExpressionStatement",
                        "src": "1663:53:22"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 5429,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 5421,
                                        "name": "oracle",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5402,
                                        "src": "1748:6:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 5420,
                                      "name": "LendingRateOracle",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10238,
                                      "src": "1730:17:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_LendingRateOracle_$10238_$",
                                        "typeString": "type(contract LendingRateOracle)"
                                      }
                                    },
                                    "id": 5422,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1730:25:22",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_LendingRateOracle_$10238",
                                      "typeString": "contract LendingRateOracle"
                                    }
                                  },
                                  "id": 5423,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "owner",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4079,
                                  "src": "1730:31:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                    "typeString": "function () view external returns (address)"
                                  }
                                },
                                "id": 5424,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1730:33:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 5427,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "1775:4:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_StableAndVariableTokensHelper_$5442",
                                      "typeString": "contract StableAndVariableTokensHelper"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_StableAndVariableTokensHelper_$5442",
                                      "typeString": "contract StableAndVariableTokensHelper"
                                    }
                                  ],
                                  "id": 5426,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1767:7:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 5425,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1767:7:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 5428,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1767:13:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1730:50:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "68656c706572206973206e6f74206f776e6572",
                              "id": 5430,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1782:21:22",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a8253e7b2ebd710ee9cff33ec8ec94831e00bc56cc2c0fb9799a7aa190915389",
                                "typeString": "literal_string \"helper is not owner\""
                              },
                              "value": "helper is not owner"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a8253e7b2ebd710ee9cff33ec8ec94831e00bc56cc2c0fb9799a7aa190915389",
                                "typeString": "literal_string \"helper is not owner\""
                              }
                            ],
                            "id": 5419,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1722:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5431,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1722:82:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5432,
                        "nodeType": "ExpressionStatement",
                        "src": "1722:82:22"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5437,
                              "name": "admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5404,
                              "src": "1854:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5434,
                                  "name": "oracle",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5402,
                                  "src": "1828:6:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 5433,
                                "name": "LendingRateOracle",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10238,
                                "src": "1810:17:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_LendingRateOracle_$10238_$",
                                  "typeString": "type(contract LendingRateOracle)"
                                }
                              },
                              "id": 5435,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1810:25:22",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_LendingRateOracle_$10238",
                                "typeString": "contract LendingRateOracle"
                              }
                            },
                            "id": 5436,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferOwnership",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4142,
                            "src": "1810:43:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address) external"
                            }
                          },
                          "id": 5438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1810:50:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5439,
                        "nodeType": "ExpressionStatement",
                        "src": "1810:50:22"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "563b1cb3",
                  "id": 5441,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 5407,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 5406,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "1647:9:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1647:9:22"
                    }
                  ],
                  "name": "setOracleOwnership",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5405,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5402,
                        "mutability": "mutable",
                        "name": "oracle",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5441,
                        "src": "1607:14:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5401,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1607:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5404,
                        "mutability": "mutable",
                        "name": "admin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5441,
                        "src": "1623:13:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5403,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1623:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1606:31:22"
                  },
                  "returnParameters": {
                    "id": 5408,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1657:0:22"
                  },
                  "scope": 5442,
                  "src": "1579:286:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5443,
              "src": "449:1418:22"
            }
          ],
          "src": "37:1831:22"
        },
        "id": 22
      },
      "contracts/deployments/StringLib.sol": {
        "ast": {
          "absolutePath": "contracts/deployments/StringLib.sol",
          "exportedSymbols": {
            "StringLib": [
              5464
            ]
          },
          "id": 5465,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5444,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:23"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": null,
              "fullyImplemented": true,
              "id": 5464,
              "linearizedBaseContracts": [
                5464
              ],
              "name": "StringLib",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 5462,
                    "nodeType": "Block",
                    "src": "172:48:23",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5457,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5446,
                                  "src": "209:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 5458,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5448,
                                  "src": "212:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5455,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "192:3:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 5456,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "192:16:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 5459,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "192:22:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 5454,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "185:6:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 5453,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "185:6:23",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 5460,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "185:30:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 5452,
                        "id": 5461,
                        "nodeType": "Return",
                        "src": "178:37:23"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 5463,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "concat",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5449,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5446,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5463,
                        "src": "100:15:23",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5445,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "100:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5448,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5463,
                        "src": "117:15:23",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5447,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "117:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "99:34:23"
                  },
                  "returnParameters": {
                    "id": 5452,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5451,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5463,
                        "src": "157:13:23",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5450,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "157:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "156:15:23"
                  },
                  "scope": 5464,
                  "src": "84:136:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 5465,
              "src": "62:160:23"
            }
          ],
          "src": "37:186:23"
        },
        "id": 23
      },
      "contracts/flashloan/base/FlashLoanReceiverBase.sol": {
        "ast": {
          "absolutePath": "contracts/flashloan/base/FlashLoanReceiverBase.sol",
          "exportedSymbols": {
            "FlashLoanReceiverBase": [
              5511
            ]
          },
          "id": 5512,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5466,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:24"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeMath.sol",
              "file": "../../dependencies/openzeppelin/contracts/SafeMath.sol",
              "id": 5468,
              "nodeType": "ImportDirective",
              "scope": 5512,
              "sourceUnit": 4497,
              "src": "62:80:24",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5467,
                    "name": "SafeMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:8:24",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
              "file": "../../dependencies/openzeppelin/contracts/IERC20.sol",
              "id": 5470,
              "nodeType": "ImportDirective",
              "scope": 5512,
              "sourceUnit": 4013,
              "src": "143:76:24",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5469,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "151:6:24",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeERC20.sol",
              "file": "../../dependencies/openzeppelin/contracts/SafeERC20.sol",
              "id": 5472,
              "nodeType": "ImportDirective",
              "scope": 5512,
              "sourceUnit": 4301,
              "src": "220:82:24",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5471,
                    "name": "SafeERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "228:9:24",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/flashloan/interfaces/IFlashLoanReceiver.sol",
              "file": "../interfaces/IFlashLoanReceiver.sol",
              "id": 5474,
              "nodeType": "ImportDirective",
              "scope": 5512,
              "sourceUnit": 5548,
              "src": "303:72:24",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5473,
                    "name": "IFlashLoanReceiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "311:18:24",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPoolAddressesProvider.sol",
              "file": "../../interfaces/ILendingPoolAddressesProvider.sol",
              "id": 5476,
              "nodeType": "ImportDirective",
              "scope": 5512,
              "sourceUnit": 6618,
              "src": "376:97:24",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5475,
                    "name": "ILendingPoolAddressesProvider",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "384:29:24",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPool.sol",
              "file": "../../interfaces/ILendingPool.sol",
              "id": 5478,
              "nodeType": "ImportDirective",
              "scope": 5512,
              "sourceUnit": 6467,
              "src": "474:63:24",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5477,
                    "name": "ILendingPool",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "482:12:24",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 5479,
                    "name": "IFlashLoanReceiver",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5547,
                    "src": "582:18:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IFlashLoanReceiver_$5547",
                      "typeString": "contract IFlashLoanReceiver"
                    }
                  },
                  "id": 5480,
                  "nodeType": "InheritanceSpecifier",
                  "src": "582:18:24"
                }
              ],
              "contractDependencies": [
                5547
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": false,
              "id": 5511,
              "linearizedBaseContracts": [
                5511,
                5547
              ],
              "name": "FlashLoanReceiverBase",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 5483,
                  "libraryName": {
                    "contractScope": null,
                    "id": 5481,
                    "name": "SafeERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4300,
                    "src": "611:9:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeERC20_$4300",
                      "typeString": "library SafeERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "605:27:24",
                  "typeName": {
                    "contractScope": null,
                    "id": 5482,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4012,
                    "src": "625:6:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$4012",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "id": 5486,
                  "libraryName": {
                    "contractScope": null,
                    "id": 5484,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4496,
                    "src": "641:8:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$4496",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "635:27:24",
                  "typeName": {
                    "id": 5485,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "654:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "baseFunctions": [
                    5541
                  ],
                  "constant": false,
                  "functionSelector": "0542975c",
                  "id": 5489,
                  "mutability": "immutable",
                  "name": "ADDRESSES_PROVIDER",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 5488,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "713:8:24"
                  },
                  "scope": 5511,
                  "src": "666:74:24",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                    "typeString": "contract ILendingPoolAddressesProvider"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5487,
                    "name": "ILendingPoolAddressesProvider",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6617,
                    "src": "666:29:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                      "typeString": "contract ILendingPoolAddressesProvider"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    5546
                  ],
                  "constant": false,
                  "functionSelector": "b4dcfc77",
                  "id": 5492,
                  "mutability": "immutable",
                  "name": "LENDING_POOL",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 5491,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "774:8:24"
                  },
                  "scope": 5511,
                  "src": "744:51:24",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                    "typeString": "contract ILendingPool"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5490,
                    "name": "ILendingPool",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6466,
                    "src": "744:12:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                      "typeString": "contract ILendingPool"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5509,
                    "nodeType": "Block",
                    "src": "859:100:24",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 5497,
                            "name": "ADDRESSES_PROVIDER",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5489,
                            "src": "865:18:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                              "typeString": "contract ILendingPoolAddressesProvider"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 5498,
                            "name": "provider",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5494,
                            "src": "886:8:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                              "typeString": "contract ILendingPoolAddressesProvider"
                            }
                          },
                          "src": "865:29:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                            "typeString": "contract ILendingPoolAddressesProvider"
                          }
                        },
                        "id": 5500,
                        "nodeType": "ExpressionStatement",
                        "src": "865:29:24"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5507,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 5501,
                            "name": "LENDING_POOL",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5492,
                            "src": "900:12:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPool_$6466",
                              "typeString": "contract ILendingPool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5503,
                                    "name": "provider",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5494,
                                    "src": "928:8:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                                      "typeString": "contract ILendingPoolAddressesProvider"
                                    }
                                  },
                                  "id": 5504,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getLendingPool",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6551,
                                  "src": "928:23:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                    "typeString": "function () view external returns (address)"
                                  }
                                },
                                "id": 5505,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "928:25:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 5502,
                              "name": "ILendingPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6466,
                              "src": "915:12:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ILendingPool_$6466_$",
                                "typeString": "type(contract ILendingPool)"
                              }
                            },
                            "id": 5506,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "915:39:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPool_$6466",
                              "typeString": "contract ILendingPool"
                            }
                          },
                          "src": "900:54:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "id": 5508,
                        "nodeType": "ExpressionStatement",
                        "src": "900:54:24"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 5510,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5495,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5494,
                        "mutability": "mutable",
                        "name": "provider",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5510,
                        "src": "812:38:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                          "typeString": "contract ILendingPoolAddressesProvider"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 5493,
                          "name": "ILendingPoolAddressesProvider",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6617,
                          "src": "812:29:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                            "typeString": "contract ILendingPoolAddressesProvider"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "811:40:24"
                  },
                  "returnParameters": {
                    "id": 5496,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "859:0:24"
                  },
                  "scope": 5511,
                  "src": "800:159:24",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 5512,
              "src": "539:422:24"
            }
          ],
          "src": "37:925:24"
        },
        "id": 24
      },
      "contracts/flashloan/interfaces/IFlashLoanReceiver.sol": {
        "ast": {
          "absolutePath": "contracts/flashloan/interfaces/IFlashLoanReceiver.sol",
          "exportedSymbols": {
            "IFlashLoanReceiver": [
              5547
            ]
          },
          "id": 5548,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5513,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:25"
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPoolAddressesProvider.sol",
              "file": "../../interfaces/ILendingPoolAddressesProvider.sol",
              "id": 5515,
              "nodeType": "ImportDirective",
              "scope": 5548,
              "sourceUnit": 6618,
              "src": "62:97:25",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5514,
                    "name": "ILendingPoolAddressesProvider",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:29:25",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPool.sol",
              "file": "../../interfaces/ILendingPool.sol",
              "id": 5517,
              "nodeType": "ImportDirective",
              "scope": 5548,
              "sourceUnit": 6467,
              "src": "160:63:25",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5516,
                    "name": "ILendingPool",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "168:12:25",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 5518,
                "nodeType": "StructuredDocumentation",
                "src": "225:215:25",
                "text": " @title IFlashLoanReceiver interface\n @notice Interface for the Aave fee IFlashLoanReceiver.\n @author Aave\n @dev implement this interface to develop a flashloan-compatible flashLoanReceiver contract*"
              },
              "fullyImplemented": false,
              "id": 5547,
              "linearizedBaseContracts": [
                5547
              ],
              "name": "IFlashLoanReceiver",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "920f5c84",
                  "id": 5536,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "executeOperation",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5532,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5521,
                        "mutability": "mutable",
                        "name": "assets",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5536,
                        "src": "505:25:25",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5519,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "505:7:25",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 5520,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "505:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5524,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5536,
                        "src": "536:26:25",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5522,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "536:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5523,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "536:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5527,
                        "mutability": "mutable",
                        "name": "premiums",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5536,
                        "src": "568:27:25",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5525,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "568:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5526,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "568:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5529,
                        "mutability": "mutable",
                        "name": "initiator",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5536,
                        "src": "601:17:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5528,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "601:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5531,
                        "mutability": "mutable",
                        "name": "params",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5536,
                        "src": "624:21:25",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5530,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "624:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "499:150:25"
                  },
                  "returnParameters": {
                    "id": 5535,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5534,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5536,
                        "src": "668:4:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5533,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "668:4:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "667:6:25"
                  },
                  "scope": 5547,
                  "src": "474:200:25",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "0542975c",
                  "id": 5541,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ADDRESSES_PROVIDER",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5537,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "705:2:25"
                  },
                  "returnParameters": {
                    "id": 5540,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5539,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5541,
                        "src": "731:29:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                          "typeString": "contract ILendingPoolAddressesProvider"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 5538,
                          "name": "ILendingPoolAddressesProvider",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6617,
                          "src": "731:29:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                            "typeString": "contract ILendingPoolAddressesProvider"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "730:31:25"
                  },
                  "scope": 5547,
                  "src": "678:84:25",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "b4dcfc77",
                  "id": 5546,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "LENDING_POOL",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5542,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "787:2:25"
                  },
                  "returnParameters": {
                    "id": 5545,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5544,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5546,
                        "src": "813:12:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPool_$6466",
                          "typeString": "contract ILendingPool"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 5543,
                          "name": "ILendingPool",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6466,
                          "src": "813:12:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "812:14:25"
                  },
                  "scope": 5547,
                  "src": "766:61:25",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5548,
              "src": "441:388:25"
            }
          ],
          "src": "37:793:25"
        },
        "id": 25
      },
      "contracts/interfaces/IAToken.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IAToken.sol",
          "exportedSymbols": {
            "IAToken": [
              5667
            ]
          },
          "id": 5668,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5549,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:26"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
              "file": "../dependencies/openzeppelin/contracts/IERC20.sol",
              "id": 5551,
              "nodeType": "ImportDirective",
              "scope": 5668,
              "sourceUnit": 4013,
              "src": "62:73:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5550,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:6:26",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IScaledBalanceToken.sol",
              "file": "./IScaledBalanceToken.sol",
              "id": 5553,
              "nodeType": "ImportDirective",
              "scope": 5668,
              "sourceUnit": 7006,
              "src": "136:62:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5552,
                    "name": "IScaledBalanceToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "144:19:26",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IInitializableAToken.sol",
              "file": "./IInitializableAToken.sol",
              "id": 5555,
              "nodeType": "ImportDirective",
              "scope": 5668,
              "sourceUnit": 6016,
              "src": "199:64:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5554,
                    "name": "IInitializableAToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "207:20:26",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IAaveIncentivesController.sol",
              "file": "./IAaveIncentivesController.sol",
              "id": 5557,
              "nodeType": "ImportDirective",
              "scope": 5668,
              "sourceUnit": 5823,
              "src": "264:74:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5556,
                    "name": "IAaveIncentivesController",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "272:25:26",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 5558,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4012,
                    "src": "361:6:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$4012",
                      "typeString": "contract IERC20"
                    }
                  },
                  "id": 5559,
                  "nodeType": "InheritanceSpecifier",
                  "src": "361:6:26"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 5560,
                    "name": "IScaledBalanceToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7005,
                    "src": "369:19:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IScaledBalanceToken_$7005",
                      "typeString": "contract IScaledBalanceToken"
                    }
                  },
                  "id": 5561,
                  "nodeType": "InheritanceSpecifier",
                  "src": "369:19:26"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 5562,
                    "name": "IInitializableAToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6015,
                    "src": "390:20:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IInitializableAToken_$6015",
                      "typeString": "contract IInitializableAToken"
                    }
                  },
                  "id": 5563,
                  "nodeType": "InheritanceSpecifier",
                  "src": "390:20:26"
                }
              ],
              "contractDependencies": [
                4012,
                6015,
                7005
              ],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 5667,
              "linearizedBaseContracts": [
                5667,
                6015,
                7005,
                4012
              ],
              "name": "IAToken",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 5564,
                    "nodeType": "StructuredDocumentation",
                    "src": "415:191:26",
                    "text": " @dev Emitted after the mint action\n @param from The address performing the mint\n @param value The amount being\n @param index The new liquidity index of the reserve*"
                  },
                  "id": 5572,
                  "name": "Mint",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5571,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5566,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5572,
                        "src": "620:20:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5565,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "620:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5568,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5572,
                        "src": "642:13:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5567,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "642:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5570,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "index",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5572,
                        "src": "657:13:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5569,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "657:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "619:52:26"
                  },
                  "src": "609:63:26"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 5573,
                    "nodeType": "StructuredDocumentation",
                    "src": "676:287:26",
                    "text": " @dev Mints `amount` aTokens to `user`\n @param user The address receiving the minted tokens\n @param amount The amount of tokens getting minted\n @param index The new liquidity index of the reserve\n @return `true` if the the previous balance of the user was 0"
                  },
                  "functionSelector": "156e29f6",
                  "id": 5584,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5580,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5575,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5584,
                        "src": "985:12:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5574,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "985:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5577,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5584,
                        "src": "1003:14:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5576,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1003:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5579,
                        "mutability": "mutable",
                        "name": "index",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5584,
                        "src": "1023:13:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5578,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1023:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "979:61:26"
                  },
                  "returnParameters": {
                    "id": 5583,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5582,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5584,
                        "src": "1059:4:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5581,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1059:4:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1058:6:26"
                  },
                  "scope": 5667,
                  "src": "966:99:26",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 5585,
                    "nodeType": "StructuredDocumentation",
                    "src": "1069:279:26",
                    "text": " @dev Emitted after aTokens are burned\n @param from The owner of the aTokens, getting them burned\n @param target The address that will receive the underlying\n @param value The amount being burned\n @param index The new liquidity index of the reserve*"
                  },
                  "id": 5595,
                  "name": "Burn",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5594,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5587,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5595,
                        "src": "1362:20:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5586,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1362:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5589,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5595,
                        "src": "1384:22:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5588,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1384:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5591,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5595,
                        "src": "1408:13:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5590,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1408:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5593,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "index",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5595,
                        "src": "1423:13:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5592,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1423:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1361:76:26"
                  },
                  "src": "1351:87:26"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 5596,
                    "nodeType": "StructuredDocumentation",
                    "src": "1442:249:26",
                    "text": " @dev Emitted during the transfer action\n @param from The user whose tokens are being transferred\n @param to The recipient\n @param value The amount being transferred\n @param index The new liquidity index of the reserve*"
                  },
                  "id": 5606,
                  "name": "BalanceTransfer",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5605,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5598,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5606,
                        "src": "1716:20:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5597,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1716:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5600,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5606,
                        "src": "1738:18:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5599,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1738:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5602,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5606,
                        "src": "1758:13:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5601,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1758:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5604,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "index",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5606,
                        "src": "1773:13:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5603,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1773:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1715:72:26"
                  },
                  "src": "1694:94:26"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 5607,
                    "nodeType": "StructuredDocumentation",
                    "src": "1792:359:26",
                    "text": " @dev Burns aTokens from `user` and sends the equivalent amount of underlying to `receiverOfUnderlying`\n @param user The owner of the aTokens, getting them burned\n @param receiverOfUnderlying The address that will receive the underlying\n @param amount The amount being burned\n @param index The new liquidity index of the reserve*"
                  },
                  "functionSelector": "d7020d0a",
                  "id": 5618,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5616,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5609,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5618,
                        "src": "2173:12:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5608,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2173:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5611,
                        "mutability": "mutable",
                        "name": "receiverOfUnderlying",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5618,
                        "src": "2191:28:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5610,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2191:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5613,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5618,
                        "src": "2225:14:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5612,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2225:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5615,
                        "mutability": "mutable",
                        "name": "index",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5618,
                        "src": "2245:13:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5614,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2245:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2167:95:26"
                  },
                  "returnParameters": {
                    "id": 5617,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2271:0:26"
                  },
                  "scope": 5667,
                  "src": "2154:118:26",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 5619,
                    "nodeType": "StructuredDocumentation",
                    "src": "2276:169:26",
                    "text": " @dev Mints aTokens to the reserve treasury\n @param amount The amount of tokens getting minted\n @param index The new liquidity index of the reserve"
                  },
                  "functionSelector": "7df5bd3b",
                  "id": 5626,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mintToTreasury",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5624,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5621,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5626,
                        "src": "2472:14:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5620,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2472:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5623,
                        "mutability": "mutable",
                        "name": "index",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5626,
                        "src": "2488:13:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5622,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2488:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2471:31:26"
                  },
                  "returnParameters": {
                    "id": 5625,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2511:0:26"
                  },
                  "scope": 5667,
                  "src": "2448:64:26",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 5627,
                    "nodeType": "StructuredDocumentation",
                    "src": "2516:291:26",
                    "text": " @dev Transfers aTokens in the event of a borrow being liquidated, in case the liquidators reclaims the aToken\n @param from The address getting liquidated, current owner of the aTokens\n @param to The recipient\n @param value The amount of tokens getting transferred*"
                  },
                  "functionSelector": "f866c319",
                  "id": 5636,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferOnLiquidation",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5634,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5629,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5636,
                        "src": "2846:12:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5628,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2846:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5631,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5636,
                        "src": "2864:10:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5630,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2864:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5633,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5636,
                        "src": "2880:13:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5632,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2880:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2840:57:26"
                  },
                  "returnParameters": {
                    "id": 5635,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2906:0:26"
                  },
                  "scope": 5667,
                  "src": "2810:97:26",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 5637,
                    "nodeType": "StructuredDocumentation",
                    "src": "2911:287:26",
                    "text": " @dev Transfers the underlying asset to `target`. Used by the LendingPool to transfer\n assets in borrow(), withdraw() and flashLoan()\n @param user The recipient of the underlying\n @param amount The amount getting transferred\n @return The amount transferred*"
                  },
                  "functionSelector": "4efecaa5",
                  "id": 5646,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferUnderlyingTo",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5642,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5639,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5646,
                        "src": "3231:12:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5638,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3231:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5641,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5646,
                        "src": "3245:14:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5640,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3245:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3230:30:26"
                  },
                  "returnParameters": {
                    "id": 5645,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5644,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5646,
                        "src": "3279:7:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5643,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3279:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3278:9:26"
                  },
                  "scope": 5667,
                  "src": "3201:87:26",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 5647,
                    "nodeType": "StructuredDocumentation",
                    "src": "3292:180:26",
                    "text": " @dev Invoked to execute actions on the aToken side after a repayment.\n @param user The user executing the repayment\n @param amount The amount getting repaid*"
                  },
                  "functionSelector": "88dd91a1",
                  "id": 5654,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "handleRepayment",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5652,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5649,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5654,
                        "src": "3500:12:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5648,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3500:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5651,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5654,
                        "src": "3514:14:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5650,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3514:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3499:30:26"
                  },
                  "returnParameters": {
                    "id": 5653,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3538:0:26"
                  },
                  "scope": 5667,
                  "src": "3475:64:26",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 5655,
                    "nodeType": "StructuredDocumentation",
                    "src": "3543:78:26",
                    "text": " @dev Returns the address of the incentives controller contract*"
                  },
                  "functionSelector": "75d26413",
                  "id": 5660,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getIncentivesController",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5656,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3656:2:26"
                  },
                  "returnParameters": {
                    "id": 5659,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5658,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5660,
                        "src": "3682:25:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                          "typeString": "contract IAaveIncentivesController"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 5657,
                          "name": "IAaveIncentivesController",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5822,
                          "src": "3682:25:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3681:27:26"
                  },
                  "scope": 5667,
                  "src": "3624:85:26",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 5661,
                    "nodeType": "StructuredDocumentation",
                    "src": "3713:101:26",
                    "text": " @dev Returns the address of the underlying asset of this aToken (E.g. WETH for aWETH)*"
                  },
                  "functionSelector": "b16a19de",
                  "id": 5666,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "UNDERLYING_ASSET_ADDRESS",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5662,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3850:2:26"
                  },
                  "returnParameters": {
                    "id": 5665,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5664,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5666,
                        "src": "3876:7:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5663,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3876:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3875:9:26"
                  },
                  "scope": 5667,
                  "src": "3817:68:26",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5668,
              "src": "340:3547:26"
            }
          ],
          "src": "37:3851:26"
        },
        "id": 26
      },
      "contracts/interfaces/IAaveIncentivesController.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IAaveIncentivesController.sol",
          "exportedSymbols": {
            "IAaveIncentivesController": [
              5822
            ]
          },
          "id": 5823,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5669,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:27"
            },
            {
              "id": 5670,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "61:33:27"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 5822,
              "linearizedBaseContracts": [
                5822
              ],
              "name": "IAaveIncentivesController",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 5676,
                  "name": "RewardsAccrued",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5675,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5672,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5676,
                        "src": "157:20:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5671,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "157:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5674,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5676,
                        "src": "179:14:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5673,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "179:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "156:38:27"
                  },
                  "src": "136:59:27"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 5684,
                  "name": "RewardsClaimed",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5683,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5678,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5684,
                        "src": "220:20:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5677,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "220:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5680,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5684,
                        "src": "242:18:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5679,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "242:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5682,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5684,
                        "src": "262:14:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5681,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "262:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "219:58:27"
                  },
                  "src": "199:79:27"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 5694,
                  "name": "RewardsClaimed",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5693,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5686,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5694,
                        "src": "308:20:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5685,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "308:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5688,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5694,
                        "src": "334:18:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5687,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "334:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5690,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "claimer",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5694,
                        "src": "358:23:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5689,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "358:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5692,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5694,
                        "src": "387:14:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5691,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "387:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "302:103:27"
                  },
                  "src": "282:124:27"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 5700,
                  "name": "ClaimerSet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5699,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5696,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5700,
                        "src": "427:20:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5695,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "427:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5698,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "claimer",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5700,
                        "src": "449:23:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5697,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "449:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "426:47:27"
                  },
                  "src": "410:64:27"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "1652e7b7",
                  "id": 5711,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAssetData",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5703,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5702,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5711,
                        "src": "746:13:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5701,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "746:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "745:15:27"
                  },
                  "returnParameters": {
                    "id": 5710,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5705,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5711,
                        "src": "803:7:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 5704,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "803:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5707,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5711,
                        "src": "818:7:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 5706,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "818:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5709,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5711,
                        "src": "833:7:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5708,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "833:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "795:51:27"
                  },
                  "scope": 5822,
                  "src": "724:123:27",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 5712,
                    "nodeType": "StructuredDocumentation",
                    "src": "851:179:27",
                    "text": " @dev Whitelists an address to claim the rewards on behalf of another address\n @param user The address of the user\n @param claimer The address of the claimer"
                  },
                  "functionSelector": "f5cf673b",
                  "id": 5719,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setClaimer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5717,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5714,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5719,
                        "src": "1053:12:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5713,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1053:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5716,
                        "mutability": "mutable",
                        "name": "claimer",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5719,
                        "src": "1067:15:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5715,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1067:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1052:31:27"
                  },
                  "returnParameters": {
                    "id": 5718,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1092:0:27"
                  },
                  "scope": 5822,
                  "src": "1033:60:27",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 5720,
                    "nodeType": "StructuredDocumentation",
                    "src": "1097:164:27",
                    "text": " @dev Returns the whitelisted claimer for a certain address (0x0 if not set)\n @param user The address of the user\n @return The claimer address"
                  },
                  "functionSelector": "74d945ec",
                  "id": 5727,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getClaimer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5723,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5722,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5727,
                        "src": "1284:12:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5721,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1284:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1283:14:27"
                  },
                  "returnParameters": {
                    "id": 5726,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5725,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5727,
                        "src": "1321:7:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5724,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1321:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1320:9:27"
                  },
                  "scope": 5822,
                  "src": "1264:66:27",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 5728,
                    "nodeType": "StructuredDocumentation",
                    "src": "1334:171:27",
                    "text": " @dev Configure assets for a certain rewards emission\n @param assets The assets to incentivize\n @param emissionsPerSecond The emission for each asset"
                  },
                  "functionSelector": "79f171b2",
                  "id": 5737,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "configureAssets",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5735,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5731,
                        "mutability": "mutable",
                        "name": "assets",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5737,
                        "src": "1533:25:27",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5729,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1533:7:27",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 5730,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1533:9:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5734,
                        "mutability": "mutable",
                        "name": "emissionsPerSecond",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5737,
                        "src": "1560:37:27",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5732,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1560:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5733,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1560:9:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1532:66:27"
                  },
                  "returnParameters": {
                    "id": 5736,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1611:0:27"
                  },
                  "scope": 5822,
                  "src": "1508:104:27",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 5738,
                    "nodeType": "StructuredDocumentation",
                    "src": "1616:303:27",
                    "text": " @dev Called by the corresponding asset on any update that affects the rewards distribution\n @param asset The address of the user\n @param userBalance The balance of the user of the asset in the lending pool\n @param totalSupply The total supply of the asset in the lending pool*"
                  },
                  "functionSelector": "31873e2e",
                  "id": 5747,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "handleAction",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5745,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5740,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5747,
                        "src": "1949:13:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5739,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1949:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5742,
                        "mutability": "mutable",
                        "name": "userBalance",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5747,
                        "src": "1968:19:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5741,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1968:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5744,
                        "mutability": "mutable",
                        "name": "totalSupply",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5747,
                        "src": "1993:19:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5743,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1993:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1943:73:27"
                  },
                  "returnParameters": {
                    "id": 5746,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2025:0:27"
                  },
                  "scope": 5822,
                  "src": "1922:104:27",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 5748,
                    "nodeType": "StructuredDocumentation",
                    "src": "2030:161:27",
                    "text": " @dev Returns the total of rewards of an user, already accrued + not yet accrued\n @param user The address of the user\n @return The rewards*"
                  },
                  "functionSelector": "8b599f26",
                  "id": 5758,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRewardsBalance",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5754,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5751,
                        "mutability": "mutable",
                        "name": "assets",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5758,
                        "src": "2221:25:27",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5749,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2221:7:27",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 5750,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2221:9:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5753,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5758,
                        "src": "2248:12:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5752,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2248:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2220:41:27"
                  },
                  "returnParameters": {
                    "id": 5757,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5756,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5758,
                        "src": "2297:7:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5755,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2297:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2296:9:27"
                  },
                  "scope": 5822,
                  "src": "2194:112:27",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "919cd40f",
                  "id": 5763,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "DISTRIBUTION_END",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5759,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2335:2:27"
                  },
                  "returnParameters": {
                    "id": 5762,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5761,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5763,
                        "src": "2361:7:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5760,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2361:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2360:9:27"
                  },
                  "scope": 5822,
                  "src": "2310:60:27",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 5764,
                    "nodeType": "StructuredDocumentation",
                    "src": "2374:252:27",
                    "text": " @dev Claims reward for an user, on all the assets of the lending pool, accumulating the pending rewards\n @param amount Amount of rewards to claim\n @param to Address that will be receiving the rewards\n @return Rewards claimed*"
                  },
                  "functionSelector": "3111e7b3",
                  "id": 5776,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "claimRewards",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5772,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5767,
                        "mutability": "mutable",
                        "name": "assets",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5776,
                        "src": "2656:25:27",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5765,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2656:7:27",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 5766,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2656:9:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5769,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5776,
                        "src": "2687:14:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5768,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2687:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5771,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5776,
                        "src": "2707:10:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5770,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2707:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2650:71:27"
                  },
                  "returnParameters": {
                    "id": 5775,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5774,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5776,
                        "src": "2740:7:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5773,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2740:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2739:9:27"
                  },
                  "scope": 5822,
                  "src": "2629:120:27",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 5777,
                    "nodeType": "StructuredDocumentation",
                    "src": "2753:418:27",
                    "text": " @dev Claims reward for an user on behalf, on all the assets of the lending pool, accumulating the pending rewards. The caller must\n be whitelisted via \"allowClaimOnBehalf\" function by the RewardsAdmin role manager\n @param amount Amount of rewards to claim\n @param user Address to check and claim rewards\n @param to Address that will be receiving the rewards\n @return Rewards claimed*"
                  },
                  "functionSelector": "6d34b96e",
                  "id": 5791,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "claimRewardsOnBehalf",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5787,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5780,
                        "mutability": "mutable",
                        "name": "assets",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5791,
                        "src": "3209:25:27",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5778,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3209:7:27",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 5779,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3209:9:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5782,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5791,
                        "src": "3240:14:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5781,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3240:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5784,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5791,
                        "src": "3260:12:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5783,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3260:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5786,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5791,
                        "src": "3278:10:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5785,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3278:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3203:89:27"
                  },
                  "returnParameters": {
                    "id": 5790,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5789,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5791,
                        "src": "3311:7:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5788,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3311:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3310:9:27"
                  },
                  "scope": 5822,
                  "src": "3174:146:27",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 5792,
                    "nodeType": "StructuredDocumentation",
                    "src": "3324:142:27",
                    "text": " @dev returns the unclaimed rewards of the user\n @param user the address of the user\n @return the unclaimed user rewards"
                  },
                  "functionSelector": "198fa81e",
                  "id": 5799,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUserUnclaimedRewards",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5795,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5794,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5799,
                        "src": "3502:12:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5793,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3502:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3501:14:27"
                  },
                  "returnParameters": {
                    "id": 5798,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5797,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5799,
                        "src": "3539:7:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5796,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3539:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3538:9:27"
                  },
                  "scope": 5822,
                  "src": "3469:79:27",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 5800,
                    "nodeType": "StructuredDocumentation",
                    "src": "3552:187:27",
                    "text": " @dev returns the unclaimed rewards of the user\n @param user the address of the user\n @param asset The asset to incentivize\n @return the user index for the asset"
                  },
                  "functionSelector": "3373ee4c",
                  "id": 5809,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUserAssetData",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5805,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5802,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5809,
                        "src": "3768:12:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5801,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3768:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5804,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5809,
                        "src": "3782:13:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5803,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3782:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3767:29:27"
                  },
                  "returnParameters": {
                    "id": 5808,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5807,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5809,
                        "src": "3820:7:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5806,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3820:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3819:9:27"
                  },
                  "scope": 5822,
                  "src": "3742:87:27",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 5810,
                    "nodeType": "StructuredDocumentation",
                    "src": "3833:104:27",
                    "text": " @dev for backward compatibility with previous implementation of the Incentives controller"
                  },
                  "functionSelector": "99248ea7",
                  "id": 5815,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "REWARD_TOKEN",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5811,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3961:2:27"
                  },
                  "returnParameters": {
                    "id": 5814,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5813,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5815,
                        "src": "3987:7:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5812,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3987:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3986:9:27"
                  },
                  "scope": 5822,
                  "src": "3940:56:27",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 5816,
                    "nodeType": "StructuredDocumentation",
                    "src": "4000:104:27",
                    "text": " @dev for backward compatibility with previous implementation of the Incentives controller"
                  },
                  "functionSelector": "aaf5eb68",
                  "id": 5821,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "PRECISION",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5817,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4125:2:27"
                  },
                  "returnParameters": {
                    "id": 5820,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5819,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5821,
                        "src": "4151:5:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 5818,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "4151:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4150:7:27"
                  },
                  "scope": 5822,
                  "src": "4107:51:27",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5823,
              "src": "96:4064:27"
            }
          ],
          "src": "37:4124:27"
        },
        "id": 27
      },
      "contracts/interfaces/IChainlinkAggregator.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IChainlinkAggregator.sol",
          "exportedSymbols": {
            "IChainlinkAggregator": [
              5868
            ]
          },
          "id": 5869,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5824,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:28"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 5868,
              "linearizedBaseContracts": [
                5868
              ],
              "name": "IChainlinkAggregator",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "50d25bcd",
                  "id": 5829,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "latestAnswer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5825,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "118:2:28"
                  },
                  "returnParameters": {
                    "id": 5828,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5827,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5829,
                        "src": "144:6:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 5826,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "144:6:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "143:8:28"
                  },
                  "scope": 5868,
                  "src": "97:55:28",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "8205bf6a",
                  "id": 5834,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "latestTimestamp",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5830,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "180:2:28"
                  },
                  "returnParameters": {
                    "id": 5833,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5832,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5834,
                        "src": "206:7:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5831,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "206:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "205:9:28"
                  },
                  "scope": 5868,
                  "src": "156:59:28",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "668a0f02",
                  "id": 5839,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "latestRound",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5835,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "239:2:28"
                  },
                  "returnParameters": {
                    "id": 5838,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5837,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5839,
                        "src": "265:7:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5836,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "265:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "264:9:28"
                  },
                  "scope": 5868,
                  "src": "219:55:28",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "b5ab58dc",
                  "id": 5846,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAnswer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5842,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5841,
                        "mutability": "mutable",
                        "name": "roundId",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5846,
                        "src": "297:15:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5840,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "297:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "296:17:28"
                  },
                  "returnParameters": {
                    "id": 5845,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5844,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5846,
                        "src": "337:6:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 5843,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "337:6:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "336:8:28"
                  },
                  "scope": 5868,
                  "src": "278:67:28",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "b633620c",
                  "id": 5853,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTimestamp",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5849,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5848,
                        "mutability": "mutable",
                        "name": "roundId",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5853,
                        "src": "371:15:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5847,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "371:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "370:17:28"
                  },
                  "returnParameters": {
                    "id": 5852,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5851,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5853,
                        "src": "411:7:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5850,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "411:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "410:9:28"
                  },
                  "scope": 5868,
                  "src": "349:71:28",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 5861,
                  "name": "AnswerUpdated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5860,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5855,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "current",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5861,
                        "src": "444:22:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 5854,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "444:6:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5857,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "roundId",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5861,
                        "src": "468:23:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5856,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "468:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5859,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5861,
                        "src": "493:17:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5858,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "493:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "443:68:28"
                  },
                  "src": "424:88:28"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 5867,
                  "name": "NewRound",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5866,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5863,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "roundId",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5867,
                        "src": "530:23:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5862,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "530:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5865,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "startedBy",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5867,
                        "src": "555:25:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5864,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "555:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "529:52:28"
                  },
                  "src": "515:67:28"
                }
              ],
              "scope": 5869,
              "src": "62:522:28"
            }
          ],
          "src": "37:548:28"
        },
        "id": 28
      },
      "contracts/interfaces/ICreditDelegationToken.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/ICreditDelegationToken.sol",
          "exportedSymbols": {
            "ICreditDelegationToken": [
              5899
            ]
          },
          "id": 5900,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5870,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:29"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 5899,
              "linearizedBaseContracts": [
                5899
              ],
              "name": "ICreditDelegationToken",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 5880,
                  "name": "BorrowAllowanceDelegated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5879,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5872,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "fromUser",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5880,
                        "src": "135:24:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5871,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "135:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5874,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "toUser",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5880,
                        "src": "165:22:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5873,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "165:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5876,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5880,
                        "src": "193:13:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5875,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "193:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5878,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5880,
                        "src": "212:14:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5877,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "212:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "129:101:29"
                  },
                  "src": "99:132:29"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 5881,
                    "nodeType": "StructuredDocumentation",
                    "src": "235:355:29",
                    "text": " @dev delegates borrowing power to a user on the specific debt token\n @param delegatee the address receiving the delegated borrowing power\n @param amount the maximum amount being delegated. Delegation will still\n respect the liquidation constraints (even if delegated, a delegatee cannot\n force a delegator HF to go below 1)*"
                  },
                  "functionSelector": "c04a8a10",
                  "id": 5888,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approveDelegation",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5886,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5883,
                        "mutability": "mutable",
                        "name": "delegatee",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5888,
                        "src": "620:17:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5882,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "620:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5885,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5888,
                        "src": "639:14:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5884,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "639:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "619:35:29"
                  },
                  "returnParameters": {
                    "id": 5887,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "663:0:29"
                  },
                  "scope": 5899,
                  "src": "593:71:29",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 5889,
                    "nodeType": "StructuredDocumentation",
                    "src": "668:205:29",
                    "text": " @dev returns the borrow allowance of the user\n @param fromUser The user to giving allowance\n @param toUser The user to give allowance to\n @return the current allowance of toUser*"
                  },
                  "functionSelector": "6bd76d24",
                  "id": 5898,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "borrowAllowance",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5894,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5891,
                        "mutability": "mutable",
                        "name": "fromUser",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5898,
                        "src": "901:16:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5890,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "901:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5893,
                        "mutability": "mutable",
                        "name": "toUser",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5898,
                        "src": "919:14:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5892,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "919:7:29",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "900:34:29"
                  },
                  "returnParameters": {
                    "id": 5897,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5896,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5898,
                        "src": "958:7:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5895,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "958:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "957:9:29"
                  },
                  "scope": 5899,
                  "src": "876:91:29",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5900,
              "src": "62:907:29"
            }
          ],
          "src": "37:933:29"
        },
        "id": 29
      },
      "contracts/interfaces/IDelegationToken.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IDelegationToken.sol",
          "exportedSymbols": {
            "IDelegationToken": [
              5908
            ]
          },
          "id": 5909,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5901,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:30"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 5902,
                "nodeType": "StructuredDocumentation",
                "src": "62:130:30",
                "text": " @title IDelegationToken\n @dev Implements an interface for tokens with delegation COMP/UNI compatible\n @author Aave*"
              },
              "fullyImplemented": false,
              "id": 5908,
              "linearizedBaseContracts": [
                5908
              ],
              "name": "IDelegationToken",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "5c19a95c",
                  "id": 5907,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "delegate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5905,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5904,
                        "mutability": "mutable",
                        "name": "delegatee",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5907,
                        "src": "242:17:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5903,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "242:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "241:19:30"
                  },
                  "returnParameters": {
                    "id": 5906,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "269:0:30"
                  },
                  "scope": 5908,
                  "src": "224:46:30",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5909,
              "src": "193:79:30"
            }
          ],
          "src": "37:236:30"
        },
        "id": 30
      },
      "contracts/interfaces/IERC20WithPermit.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IERC20WithPermit.sol",
          "exportedSymbols": {
            "IERC20WithPermit": [
              5932
            ]
          },
          "id": 5933,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5910,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:31"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
              "file": "../dependencies/openzeppelin/contracts/IERC20.sol",
              "id": 5912,
              "nodeType": "ImportDirective",
              "scope": 5933,
              "sourceUnit": 4013,
              "src": "62:73:31",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5911,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 5913,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4012,
                    "src": "167:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$4012",
                      "typeString": "contract IERC20"
                    }
                  },
                  "id": 5914,
                  "nodeType": "InheritanceSpecifier",
                  "src": "167:6:31"
                }
              ],
              "contractDependencies": [
                4012
              ],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 5932,
              "linearizedBaseContracts": [
                5932,
                4012
              ],
              "name": "IERC20WithPermit",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "d505accf",
                  "id": 5931,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "permit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5929,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5916,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5931,
                        "src": "199:13:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5915,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "199:7:31",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5918,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5931,
                        "src": "218:15:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5917,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "218:7:31",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5920,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5931,
                        "src": "239:13:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5919,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "239:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5922,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5931,
                        "src": "258:16:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5921,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "258:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5924,
                        "mutability": "mutable",
                        "name": "v",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5931,
                        "src": "280:7:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 5923,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "280:5:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5926,
                        "mutability": "mutable",
                        "name": "r",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5931,
                        "src": "293:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5925,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "293:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5928,
                        "mutability": "mutable",
                        "name": "s",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5931,
                        "src": "308:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5927,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "308:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "193:128:31"
                  },
                  "returnParameters": {
                    "id": 5930,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "330:0:31"
                  },
                  "scope": 5932,
                  "src": "178:153:31",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5933,
              "src": "137:196:31"
            }
          ],
          "src": "37:297:31"
        },
        "id": 31
      },
      "contracts/interfaces/IExchangeAdapter.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IExchangeAdapter.sol",
          "exportedSymbols": {
            "IExchangeAdapter": [
              5968
            ]
          },
          "id": 5969,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5934,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:32"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
              "file": "../dependencies/openzeppelin/contracts/IERC20.sol",
              "id": 5936,
              "nodeType": "ImportDirective",
              "scope": 5969,
              "sourceUnit": 4013,
              "src": "62:73:32",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5935,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:6:32",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 5968,
              "linearizedBaseContracts": [
                5968
              ],
              "name": "IExchangeAdapter",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 5948,
                  "name": "Exchange",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5947,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5938,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5948,
                        "src": "188:20:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5937,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "188:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5940,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5948,
                        "src": "214:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5939,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "214:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5942,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "platform",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5948,
                        "src": "238:24:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5941,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "238:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5944,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "fromAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5948,
                        "src": "268:18:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5943,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "268:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5946,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "toAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5948,
                        "src": "292:16:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5945,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "292:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "182:130:32"
                  },
                  "src": "168:145:32"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "93ed4309",
                  "id": 5954,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approveExchange",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5952,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5951,
                        "mutability": "mutable",
                        "name": "tokens",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5954,
                        "src": "342:24:32",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20_$4012_$dyn_calldata_ptr",
                          "typeString": "contract IERC20[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 5949,
                            "name": "IERC20",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4012,
                            "src": "342:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$4012",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 5950,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "342:8:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$4012_$dyn_storage_ptr",
                            "typeString": "contract IERC20[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "341:26:32"
                  },
                  "returnParameters": {
                    "id": 5953,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "376:0:32"
                  },
                  "scope": 5968,
                  "src": "317:60:32",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "0ed2fc95",
                  "id": 5967,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "exchange",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5963,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5956,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5967,
                        "src": "404:12:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5955,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "404:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5958,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5967,
                        "src": "422:10:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5957,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "422:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5960,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5967,
                        "src": "438:14:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5959,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "438:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5962,
                        "mutability": "mutable",
                        "name": "maxSlippage",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5967,
                        "src": "458:19:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5961,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "458:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "398:83:32"
                  },
                  "returnParameters": {
                    "id": 5966,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5965,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5967,
                        "src": "500:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5964,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "500:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "499:9:32"
                  },
                  "scope": 5968,
                  "src": "381:128:32",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5969,
              "src": "137:374:32"
            }
          ],
          "src": "37:475:32"
        },
        "id": 32
      },
      "contracts/interfaces/IInitializableAToken.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IInitializableAToken.sol",
          "exportedSymbols": {
            "IInitializableAToken": [
              6015
            ]
          },
          "id": 6016,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5970,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:33"
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPool.sol",
              "file": "./ILendingPool.sol",
              "id": 5972,
              "nodeType": "ImportDirective",
              "scope": 6016,
              "sourceUnit": 6467,
              "src": "62:48:33",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5971,
                    "name": "ILendingPool",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:12:33",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IAaveIncentivesController.sol",
              "file": "./IAaveIncentivesController.sol",
              "id": 5974,
              "nodeType": "ImportDirective",
              "scope": 6016,
              "sourceUnit": 5823,
              "src": "111:74:33",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 5973,
                    "name": "IAaveIncentivesController",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "119:25:33",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 5975,
                "nodeType": "StructuredDocumentation",
                "src": "187:114:33",
                "text": " @title IInitializableAToken\n @notice Interface for the initialize function on AToken\n @author Aave*"
              },
              "fullyImplemented": false,
              "id": 6015,
              "linearizedBaseContracts": [
                6015
              ],
              "name": "IInitializableAToken",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 5976,
                    "nodeType": "StructuredDocumentation",
                    "src": "337:552:33",
                    "text": " @dev Emitted when an aToken is initialized\n @param underlyingAsset The address of the underlying asset\n @param pool The address of the associated lending pool\n @param treasury The address of the treasury\n @param incentivesController The address of the incentives controller for this aToken\n @param aTokenDecimals the decimals of the underlying\n @param aTokenName the name of the aToken\n @param aTokenSymbol the symbol of the aToken\n @param params A set of encoded parameters for additional initialization*"
                  },
                  "id": 5994,
                  "name": "Initialized",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5993,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5978,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "underlyingAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5994,
                        "src": "915:31:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5977,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "915:7:33",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5980,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5994,
                        "src": "952:20:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5979,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "952:7:33",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5982,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "treasury",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5994,
                        "src": "978:16:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5981,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "978:7:33",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5984,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "incentivesController",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5994,
                        "src": "1000:28:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5983,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1000:7:33",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5986,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "aTokenDecimals",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5994,
                        "src": "1034:20:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 5985,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "1034:5:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5988,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "aTokenName",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5994,
                        "src": "1060:17:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5987,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1060:6:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5990,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "aTokenSymbol",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5994,
                        "src": "1083:19:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5989,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1083:6:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5992,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "params",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 5994,
                        "src": "1108:12:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5991,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1108:5:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "909:215:33"
                  },
                  "src": "892:233:33"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 5995,
                    "nodeType": "StructuredDocumentation",
                    "src": "1129:589:33",
                    "text": " @dev Initializes the aToken\n @param pool The address of the lending pool where this aToken will be used\n @param treasury The address of the Aave treasury, receiving the fees on this aToken\n @param underlyingAsset The address of the underlying asset of this aToken (E.g. WETH for aWETH)\n @param incentivesController The smart contract managing potential incentives distribution\n @param aTokenDecimals The decimals of the aToken, same as the underlying asset's\n @param aTokenName The name of the aToken\n @param aTokenSymbol The symbol of the aToken"
                  },
                  "functionSelector": "183fb413",
                  "id": 6014,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "initialize",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6012,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5997,
                        "mutability": "mutable",
                        "name": "pool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6014,
                        "src": "1746:17:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPool_$6466",
                          "typeString": "contract ILendingPool"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 5996,
                          "name": "ILendingPool",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6466,
                          "src": "1746:12:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5999,
                        "mutability": "mutable",
                        "name": "treasury",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6014,
                        "src": "1769:16:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5998,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1769:7:33",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6001,
                        "mutability": "mutable",
                        "name": "underlyingAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6014,
                        "src": "1791:23:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6000,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1791:7:33",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6003,
                        "mutability": "mutable",
                        "name": "incentivesController",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6014,
                        "src": "1820:46:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                          "typeString": "contract IAaveIncentivesController"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 6002,
                          "name": "IAaveIncentivesController",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5822,
                          "src": "1820:25:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6005,
                        "mutability": "mutable",
                        "name": "aTokenDecimals",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6014,
                        "src": "1872:20:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 6004,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "1872:5:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6007,
                        "mutability": "mutable",
                        "name": "aTokenName",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6014,
                        "src": "1898:26:33",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 6006,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1898:6:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6009,
                        "mutability": "mutable",
                        "name": "aTokenSymbol",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6014,
                        "src": "1930:28:33",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 6008,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1930:6:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6011,
                        "mutability": "mutable",
                        "name": "params",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6014,
                        "src": "1964:21:33",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6010,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1964:5:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1740:249:33"
                  },
                  "returnParameters": {
                    "id": 6013,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1998:0:33"
                  },
                  "scope": 6015,
                  "src": "1721:278:33",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 6016,
              "src": "302:1699:33"
            }
          ],
          "src": "37:1965:33"
        },
        "id": 33
      },
      "contracts/interfaces/IInitializableDebtToken.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IInitializableDebtToken.sol",
          "exportedSymbols": {
            "IInitializableDebtToken": [
              6058
            ]
          },
          "id": 6059,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 6017,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:34"
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPool.sol",
              "file": "./ILendingPool.sol",
              "id": 6019,
              "nodeType": "ImportDirective",
              "scope": 6059,
              "sourceUnit": 6467,
              "src": "62:48:34",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 6018,
                    "name": "ILendingPool",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:12:34",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IAaveIncentivesController.sol",
              "file": "./IAaveIncentivesController.sol",
              "id": 6021,
              "nodeType": "ImportDirective",
              "scope": 6059,
              "sourceUnit": 5823,
              "src": "111:74:34",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 6020,
                    "name": "IAaveIncentivesController",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "119:25:34",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 6022,
                "nodeType": "StructuredDocumentation",
                "src": "187:134:34",
                "text": " @title IInitializableDebtToken\n @notice Interface for the initialize function common between debt tokens\n @author Aave*"
              },
              "fullyImplemented": false,
              "id": 6058,
              "linearizedBaseContracts": [
                6058
              ],
              "name": "IInitializableDebtToken",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6023,
                    "nodeType": "StructuredDocumentation",
                    "src": "360:523:34",
                    "text": " @dev Emitted when a debt token is initialized\n @param underlyingAsset The address of the underlying asset\n @param pool The address of the associated lending pool\n @param incentivesController The address of the incentives controller for this aToken\n @param debtTokenDecimals the decimals of the debt token\n @param debtTokenName the name of the debt token\n @param debtTokenSymbol the symbol of the debt token\n @param params A set of encoded parameters for additional initialization*"
                  },
                  "id": 6039,
                  "name": "Initialized",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6038,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6025,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "underlyingAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6039,
                        "src": "909:31:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6024,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "909:7:34",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6027,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6039,
                        "src": "946:20:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6026,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "946:7:34",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6029,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "incentivesController",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6039,
                        "src": "972:28:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6028,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "972:7:34",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6031,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "debtTokenDecimals",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6039,
                        "src": "1006:23:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 6030,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "1006:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6033,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "debtTokenName",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6039,
                        "src": "1035:20:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 6032,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1035:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6035,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "debtTokenSymbol",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6039,
                        "src": "1061:22:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 6034,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1061:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6037,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "params",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6039,
                        "src": "1089:12:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6036,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1089:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "903:202:34"
                  },
                  "src": "886:220:34"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 6040,
                    "nodeType": "StructuredDocumentation",
                    "src": "1110:515:34",
                    "text": " @dev Initializes the debt token.\n @param pool The address of the lending pool where this aToken will be used\n @param underlyingAsset The address of the underlying asset of this aToken (E.g. WETH for aWETH)\n @param incentivesController The smart contract managing potential incentives distribution\n @param debtTokenDecimals The decimals of the debtToken, same as the underlying asset's\n @param debtTokenName The name of the token\n @param debtTokenSymbol The symbol of the token"
                  },
                  "functionSelector": "c222ec8a",
                  "id": 6057,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "initialize",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6055,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6042,
                        "mutability": "mutable",
                        "name": "pool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6057,
                        "src": "1653:17:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPool_$6466",
                          "typeString": "contract ILendingPool"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 6041,
                          "name": "ILendingPool",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6466,
                          "src": "1653:12:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6044,
                        "mutability": "mutable",
                        "name": "underlyingAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6057,
                        "src": "1676:23:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6043,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1676:7:34",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6046,
                        "mutability": "mutable",
                        "name": "incentivesController",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6057,
                        "src": "1705:46:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                          "typeString": "contract IAaveIncentivesController"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 6045,
                          "name": "IAaveIncentivesController",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5822,
                          "src": "1705:25:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6048,
                        "mutability": "mutable",
                        "name": "debtTokenDecimals",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6057,
                        "src": "1757:23:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 6047,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "1757:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6050,
                        "mutability": "mutable",
                        "name": "debtTokenName",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6057,
                        "src": "1786:27:34",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 6049,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1786:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6052,
                        "mutability": "mutable",
                        "name": "debtTokenSymbol",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6057,
                        "src": "1819:29:34",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 6051,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1819:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6054,
                        "mutability": "mutable",
                        "name": "params",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6057,
                        "src": "1854:21:34",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6053,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1854:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1647:232:34"
                  },
                  "returnParameters": {
                    "id": 6056,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1888:0:34"
                  },
                  "scope": 6058,
                  "src": "1628:261:34",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 6059,
              "src": "322:1569:34"
            }
          ],
          "src": "37:1855:34"
        },
        "id": 34
      },
      "contracts/interfaces/IInitializableStaticATokenLM.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IInitializableStaticATokenLM.sol",
          "exportedSymbols": {
            "IInitializableStaticATokenLM": [
              6091
            ]
          },
          "id": 6092,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 6060,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:35"
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPool.sol",
              "file": "./ILendingPool.sol",
              "id": 6062,
              "nodeType": "ImportDirective",
              "scope": 6092,
              "sourceUnit": 6467,
              "src": "62:48:35",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 6061,
                    "name": "ILendingPool",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:12:35",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IAaveIncentivesController.sol",
              "file": "./IAaveIncentivesController.sol",
              "id": 6064,
              "nodeType": "ImportDirective",
              "scope": 6092,
              "sourceUnit": 5823,
              "src": "111:74:35",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 6063,
                    "name": "IAaveIncentivesController",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "119:25:35",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 6065,
                "nodeType": "StructuredDocumentation",
                "src": "187:130:35",
                "text": " @title IInitializableStaticATokenLM\n @notice Interface for the initialize function on StaticATokenLM\n @author Aave*"
              },
              "fullyImplemented": false,
              "id": 6091,
              "linearizedBaseContracts": [
                6091
              ],
              "name": "IInitializableStaticATokenLM",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6066,
                    "nodeType": "StructuredDocumentation",
                    "src": "361:336:35",
                    "text": " @dev Emitted when a StaticATokenLM is initialized\n @param pool The address of the lending pool where the underlying aToken is used\n @param aToken The address of the underlying aToken (aWETH)\n @param staticATokenName The name of the Static aToken\n @param staticATokenSymbol The symbol of the Static aToken*"
                  },
                  "id": 6076,
                  "name": "Initialized",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6075,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6068,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6076,
                        "src": "723:20:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6067,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "723:7:35",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6070,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "aToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6076,
                        "src": "749:14:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6069,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "749:7:35",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6072,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "staticATokenName",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6076,
                        "src": "769:23:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 6071,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "769:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6074,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "staticATokenSymbol",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6076,
                        "src": "798:25:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 6073,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "798:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "717:110:35"
                  },
                  "src": "700:128:35"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 6077,
                    "nodeType": "StructuredDocumentation",
                    "src": "832:385:35",
                    "text": " @dev Initializes the StaticATokenLM\n @param pool The address of the lending pool where the underlying aToken is used\n @param aToken The address of the underlying aToken (aWETH)\n @param staticATokenName The name of the Static aToken\n @param staticATokenSymbol The symbol of the Static aToken\n @param l1TokenBridge The address of the bridge to Starknet"
                  },
                  "functionSelector": "362925c2",
                  "id": 6090,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "initialize",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6088,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6079,
                        "mutability": "mutable",
                        "name": "pool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6090,
                        "src": "1245:17:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPool_$6466",
                          "typeString": "contract ILendingPool"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 6078,
                          "name": "ILendingPool",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6466,
                          "src": "1245:12:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6081,
                        "mutability": "mutable",
                        "name": "aToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6090,
                        "src": "1268:14:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6080,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1268:7:35",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6083,
                        "mutability": "mutable",
                        "name": "staticATokenName",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6090,
                        "src": "1288:32:35",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 6082,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1288:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6085,
                        "mutability": "mutable",
                        "name": "staticATokenSymbol",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6090,
                        "src": "1326:34:35",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 6084,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1326:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6087,
                        "mutability": "mutable",
                        "name": "l1TokenBridge",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6090,
                        "src": "1366:21:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6086,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1366:7:35",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1239:152:35"
                  },
                  "returnParameters": {
                    "id": 6089,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1400:0:35"
                  },
                  "scope": 6091,
                  "src": "1220:181:35",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 6092,
              "src": "318:1085:35"
            }
          ],
          "src": "37:1367:35"
        },
        "id": 35
      },
      "contracts/interfaces/ILendingPool.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/ILendingPool.sol",
          "exportedSymbols": {
            "ILendingPool": [
              6466
            ]
          },
          "id": 6467,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 6093,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:36"
            },
            {
              "id": 6094,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "61:33:36"
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPoolAddressesProvider.sol",
              "file": "./ILendingPoolAddressesProvider.sol",
              "id": 6096,
              "nodeType": "ImportDirective",
              "scope": 6467,
              "sourceUnit": 6618,
              "src": "96:82:36",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 6095,
                    "name": "ILendingPoolAddressesProvider",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "104:29:36",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/types/DataTypes.sol",
              "file": "../protocol/libraries/types/DataTypes.sol",
              "id": 6098,
              "nodeType": "ImportDirective",
              "scope": 6467,
              "sourceUnit": 20532,
              "src": "179:68:36",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 6097,
                    "name": "DataTypes",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "187:9:36",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 6466,
              "linearizedBaseContracts": [
                6466
              ],
              "name": "ILendingPool",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6099,
                    "nodeType": "StructuredDocumentation",
                    "src": "276:325:36",
                    "text": " @dev Emitted on deposit()\n @param reserve The address of the underlying asset of the reserve\n @param user The address initiating the deposit\n @param onBehalfOf The beneficiary of the deposit, receiving the aTokens\n @param amount The amount deposited\n @param referral The referral code used*"
                  },
                  "id": 6111,
                  "name": "Deposit",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6110,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6101,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6111,
                        "src": "623:23:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6100,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "623:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6103,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6111,
                        "src": "652:12:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6102,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "652:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6105,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "onBehalfOf",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6111,
                        "src": "670:26:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6104,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "670:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6107,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6111,
                        "src": "702:14:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6106,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "702:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6109,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "referral",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6111,
                        "src": "722:23:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 6108,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "722:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "617:132:36"
                  },
                  "src": "604:146:36"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6112,
                    "nodeType": "StructuredDocumentation",
                    "src": "754:288:36",
                    "text": " @dev Emitted on withdraw()\n @param reserve The address of the underlyng asset being withdrawn\n @param user The address initiating the withdrawal, owner of aTokens\n @param to Address that will receive the underlying\n @param amount The amount to be withdrawn*"
                  },
                  "id": 6122,
                  "name": "Withdraw",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6121,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6114,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6122,
                        "src": "1060:23:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6113,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1060:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6116,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6122,
                        "src": "1085:20:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6115,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1085:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6118,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6122,
                        "src": "1107:18:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6117,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1107:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6120,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6122,
                        "src": "1127:14:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6119,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1127:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1059:83:36"
                  },
                  "src": "1045:98:36"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6123,
                    "nodeType": "StructuredDocumentation",
                    "src": "1147:605:36",
                    "text": " @dev Emitted on borrow() and flashLoan() when debt needs to be opened\n @param reserve The address of the underlying asset being borrowed\n @param user The address of the user initiating the borrow(), receiving the funds on borrow() or just\n initiator of the transaction on flashLoan()\n @param onBehalfOf The address that will be getting the debt\n @param amount The amount borrowed out\n @param borrowRateMode The rate mode: 1 for Stable, 2 for Variable\n @param borrowRate The numeric rate at which the user has borrowed\n @param referral The referral code used*"
                  },
                  "id": 6139,
                  "name": "Borrow",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6138,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6125,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6139,
                        "src": "1773:23:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6124,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1773:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6127,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6139,
                        "src": "1802:12:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6126,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1802:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6129,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "onBehalfOf",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6139,
                        "src": "1820:26:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6128,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1820:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6131,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6139,
                        "src": "1852:14:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6130,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1852:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6133,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "borrowRateMode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6139,
                        "src": "1872:22:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6132,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1872:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6135,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "borrowRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6139,
                        "src": "1900:18:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6134,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1900:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6137,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "referral",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6139,
                        "src": "1924:23:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 6136,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "1924:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1767:184:36"
                  },
                  "src": "1755:197:36"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6140,
                    "nodeType": "StructuredDocumentation",
                    "src": "1956:311:36",
                    "text": " @dev Emitted on repay()\n @param reserve The address of the underlying asset of the reserve\n @param user The beneficiary of the repayment, getting his debt reduced\n @param repayer The address of the user initiating the repay(), providing the funds\n @param amount The amount repaid*"
                  },
                  "id": 6150,
                  "name": "Repay",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6149,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6142,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6150,
                        "src": "2287:23:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6141,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2287:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6144,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6150,
                        "src": "2316:20:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6143,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2316:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6146,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "repayer",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6150,
                        "src": "2342:23:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6145,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2342:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6148,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6150,
                        "src": "2371:14:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6147,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2371:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2281:108:36"
                  },
                  "src": "2270:120:36"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6151,
                    "nodeType": "StructuredDocumentation",
                    "src": "2394:253:36",
                    "text": " @dev Emitted on swapBorrowRateMode()\n @param reserve The address of the underlying asset of the reserve\n @param user The address of the user swapping his rate mode\n @param rateMode The rate mode that the user wants to swap to*"
                  },
                  "id": 6159,
                  "name": "Swap",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6158,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6153,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6159,
                        "src": "2661:23:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6152,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2661:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6155,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6159,
                        "src": "2686:20:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6154,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2686:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6157,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "rateMode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6159,
                        "src": "2708:16:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6156,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2708:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2660:65:36"
                  },
                  "src": "2650:76:36"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6160,
                    "nodeType": "StructuredDocumentation",
                    "src": "2730:208:36",
                    "text": " @dev Emitted on setUserUseReserveAsCollateral()\n @param reserve The address of the underlying asset of the reserve\n @param user The address of the user enabling the usage as collateral*"
                  },
                  "id": 6166,
                  "name": "ReserveUsedAsCollateralEnabled",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6165,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6162,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6166,
                        "src": "2978:23:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6161,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2978:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6164,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6166,
                        "src": "3003:20:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6163,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3003:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2977:47:36"
                  },
                  "src": "2941:84:36"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6167,
                    "nodeType": "StructuredDocumentation",
                    "src": "3029:208:36",
                    "text": " @dev Emitted on setUserUseReserveAsCollateral()\n @param reserve The address of the underlying asset of the reserve\n @param user The address of the user enabling the usage as collateral*"
                  },
                  "id": 6173,
                  "name": "ReserveUsedAsCollateralDisabled",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6172,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6169,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6173,
                        "src": "3278:23:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6168,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3278:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6171,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6173,
                        "src": "3303:20:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6170,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3303:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3277:47:36"
                  },
                  "src": "3240:85:36"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6174,
                    "nodeType": "StructuredDocumentation",
                    "src": "3329:213:36",
                    "text": " @dev Emitted on rebalanceStableBorrowRate()\n @param reserve The address of the underlying asset of the reserve\n @param user The address of the user for which the rebalance has been executed*"
                  },
                  "id": 6180,
                  "name": "RebalanceStableBorrowRate",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6179,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6176,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6180,
                        "src": "3577:23:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6175,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3577:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6178,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6180,
                        "src": "3602:20:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6177,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3602:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3576:47:36"
                  },
                  "src": "3545:79:36"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6181,
                    "nodeType": "StructuredDocumentation",
                    "src": "3628:370:36",
                    "text": " @dev Emitted on flashLoan()\n @param target The address of the flash loan receiver contract\n @param initiator The address initiating the flash loan\n @param asset The address of the asset being flash borrowed\n @param amount The amount flash borrowed\n @param premium The fee flash borrowed\n @param referralCode The referral code used*"
                  },
                  "id": 6195,
                  "name": "FlashLoan",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6194,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6183,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6195,
                        "src": "4022:22:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6182,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4022:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6185,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "initiator",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6195,
                        "src": "4050:25:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6184,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4050:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6187,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6195,
                        "src": "4081:21:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6186,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4081:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6189,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6195,
                        "src": "4108:14:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6188,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4108:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6191,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "premium",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6195,
                        "src": "4128:15:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6190,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4128:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6193,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "referralCode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6195,
                        "src": "4149:19:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 6192,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "4149:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4016:156:36"
                  },
                  "src": "4001:172:36"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6196,
                    "nodeType": "StructuredDocumentation",
                    "src": "4177:56:36",
                    "text": " @dev Emitted when the pause is triggered."
                  },
                  "id": 6198,
                  "name": "Paused",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6197,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4248:2:36"
                  },
                  "src": "4236:15:36"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6199,
                    "nodeType": "StructuredDocumentation",
                    "src": "4255:53:36",
                    "text": " @dev Emitted when the pause is lifted."
                  },
                  "id": 6201,
                  "name": "Unpaused",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6200,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4325:2:36"
                  },
                  "src": "4311:17:36"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6202,
                    "nodeType": "StructuredDocumentation",
                    "src": "4332:928:36",
                    "text": " @dev Emitted when a borrower is liquidated. This event is emitted by the LendingPool via\n LendingPoolCollateral manager using a DELEGATECALL\n This allows to have the events in the generated ABI for LendingPool.\n @param collateralAsset The address of the underlying asset used as collateral, to receive as result of the liquidation\n @param debtAsset The address of the underlying borrowed asset to be repaid with the liquidation\n @param user The address of the borrower getting liquidated\n @param debtToCover The debt amount of borrowed `asset` the liquidator wants to cover\n @param liquidatedCollateralAmount The amount of collateral received by the liiquidator\n @param liquidator The address of the liquidator\n @param receiveAToken `true` if the liquidators wants to receive the collateral aTokens, `false` if he wants\n to receive the underlying collateral asset directly*"
                  },
                  "id": 6218,
                  "name": "LiquidationCall",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6217,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6204,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "collateralAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6218,
                        "src": "5290:31:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6203,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5290:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6206,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "debtAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6218,
                        "src": "5327:25:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6205,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5327:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6208,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6218,
                        "src": "5358:20:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6207,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5358:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6210,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "debtToCover",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6218,
                        "src": "5384:19:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6209,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5384:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6212,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "liquidatedCollateralAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6218,
                        "src": "5409:34:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6211,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5409:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6214,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "liquidator",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6218,
                        "src": "5449:18:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6213,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5449:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6216,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "receiveAToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6218,
                        "src": "5473:18:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6215,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5473:4:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5284:211:36"
                  },
                  "src": "5263:233:36"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6219,
                    "nodeType": "StructuredDocumentation",
                    "src": "5500:722:36",
                    "text": " @dev Emitted when the state of a reserve is updated. NOTE: This event is actually declared\n in the ReserveLogic library and emitted in the updateInterestRates() function. Since the function is internal,\n the event will actually be fired by the LendingPool contract. The event is therefore replicated here so it\n gets added to the LendingPool ABI\n @param reserve The address of the underlying asset of the reserve\n @param liquidityRate The new liquidity rate\n @param stableBorrowRate The new stable borrow rate\n @param variableBorrowRate The new variable borrow rate\n @param liquidityIndex The new liquidity index\n @param variableBorrowIndex The new variable borrow index*"
                  },
                  "id": 6233,
                  "name": "ReserveDataUpdated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6232,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6221,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6233,
                        "src": "6255:23:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6220,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6255:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6223,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "liquidityRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6233,
                        "src": "6284:21:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6222,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6284:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6225,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "stableBorrowRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6233,
                        "src": "6311:24:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6224,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6311:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6227,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "variableBorrowRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6233,
                        "src": "6341:26:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6226,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6341:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6229,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "liquidityIndex",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6233,
                        "src": "6373:22:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6228,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6373:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6231,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "variableBorrowIndex",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6233,
                        "src": "6401:27:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6230,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6401:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6249:183:36"
                  },
                  "src": "6225:208:36"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 6234,
                    "nodeType": "StructuredDocumentation",
                    "src": "6437:712:36",
                    "text": " @dev Deposits an `amount` of underlying asset into the reserve, receiving in return overlying aTokens.\n - E.g. User deposits 100 USDC and gets in return 100 aUSDC\n @param asset The address of the underlying asset to deposit\n @param amount The amount to be deposited\n @param onBehalfOf The address that will receive the aTokens, same as msg.sender if the user\n   wants to receive them on his own wallet, or a different address if the beneficiary of aTokens\n   is a different wallet\n @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   0 if the action is executed directly by the user, without any middle-man*"
                  },
                  "functionSelector": "e8eda9df",
                  "id": 6245,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6243,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6236,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6245,
                        "src": "7174:13:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6235,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7174:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6238,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6245,
                        "src": "7193:14:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6237,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7193:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6240,
                        "mutability": "mutable",
                        "name": "onBehalfOf",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6245,
                        "src": "7213:18:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6239,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7213:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6242,
                        "mutability": "mutable",
                        "name": "referralCode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6245,
                        "src": "7237:19:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 6241,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "7237:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7168:92:36"
                  },
                  "returnParameters": {
                    "id": 6244,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7269:0:36"
                  },
                  "scope": 6466,
                  "src": "7152:118:36",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 6246,
                    "nodeType": "StructuredDocumentation",
                    "src": "7274:665:36",
                    "text": " @dev Withdraws an `amount` of underlying asset from the reserve, burning the equivalent aTokens owned\n E.g. User has 100 aUSDC, calls withdraw() and receives 100 USDC, burning the 100 aUSDC\n @param asset The address of the underlying asset to withdraw\n @param amount The underlying amount to be withdrawn\n   - Send the value type(uint256).max in order to withdraw the whole aToken balance\n @param to Address that will receive the underlying, same as msg.sender if the user\n   wants to receive it on his own wallet, or a different address if the beneficiary is a\n   different wallet\n @return The final amount withdrawn*"
                  },
                  "functionSelector": "69328dec",
                  "id": 6257,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6253,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6248,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6257,
                        "src": "7965:13:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6247,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7965:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6250,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6257,
                        "src": "7984:14:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6249,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7984:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6252,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6257,
                        "src": "8004:10:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6251,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8004:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7959:59:36"
                  },
                  "returnParameters": {
                    "id": 6256,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6255,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6257,
                        "src": "8037:7:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6254,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8037:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8036:9:36"
                  },
                  "scope": 6466,
                  "src": "7942:104:36",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 6258,
                    "nodeType": "StructuredDocumentation",
                    "src": "8050:1189:36",
                    "text": " @dev Allows users to borrow a specific `amount` of the reserve underlying asset, provided that the borrower\n already deposited enough collateral, or he was given enough allowance by a credit delegator on the\n corresponding debt token (StableDebtToken or VariableDebtToken)\n - E.g. User borrows 100 USDC passing as `onBehalfOf` his own address, receiving the 100 USDC in his wallet\n   and 100 stable/variable debt tokens, depending on the `interestRateMode`\n @param asset The address of the underlying asset to borrow\n @param amount The amount to be borrowed\n @param interestRateMode The interest rate mode at which the user wants to borrow: 1 for Stable, 2 for Variable\n @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   0 if the action is executed directly by the user, without any middle-man\n @param onBehalfOf Address of the user who will receive the debt. Should be the address of the borrower itself\n calling the function if he wants to borrow against his own collateral, or the address of the credit delegator\n if he has been given credit delegation allowance*"
                  },
                  "functionSelector": "a415bcad",
                  "id": 6271,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "borrow",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6269,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6260,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6271,
                        "src": "9263:13:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6259,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9263:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6262,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6271,
                        "src": "9282:14:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6261,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9282:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6264,
                        "mutability": "mutable",
                        "name": "interestRateMode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6271,
                        "src": "9302:24:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6263,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9302:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6266,
                        "mutability": "mutable",
                        "name": "referralCode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6271,
                        "src": "9332:19:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 6265,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "9332:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6268,
                        "mutability": "mutable",
                        "name": "onBehalfOf",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6271,
                        "src": "9357:18:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6267,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9357:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9257:122:36"
                  },
                  "returnParameters": {
                    "id": 6270,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9388:0:36"
                  },
                  "scope": 6466,
                  "src": "9242:147:36",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 6272,
                    "nodeType": "StructuredDocumentation",
                    "src": "9393:862:36",
                    "text": " @notice Repays a borrowed `amount` on a specific reserve, burning the equivalent debt tokens owned\n - E.g. User repays 100 USDC, burning 100 variable/stable debt tokens of the `onBehalfOf` address\n @param asset The address of the borrowed underlying asset previously borrowed\n @param amount The amount to repay\n - Send the value type(uint256).max in order to repay the whole debt for `asset` on the specific `debtMode`\n @param rateMode The interest rate mode at of the debt the user wants to repay: 1 for Stable, 2 for Variable\n @param onBehalfOf Address of the user who will get his debt reduced/removed. Should be the address of the\n user calling the function if he wants to reduce/remove his own debt, or the address of any other\n other borrower whose debt should be removed\n @return The final amount repaid*"
                  },
                  "functionSelector": "573ade81",
                  "id": 6285,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "repay",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6281,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6274,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6285,
                        "src": "10278:13:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6273,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10278:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6276,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6285,
                        "src": "10297:14:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6275,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10297:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6278,
                        "mutability": "mutable",
                        "name": "rateMode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6285,
                        "src": "10317:16:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6277,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10317:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6280,
                        "mutability": "mutable",
                        "name": "onBehalfOf",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6285,
                        "src": "10339:18:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6279,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10339:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10272:89:36"
                  },
                  "returnParameters": {
                    "id": 6284,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6283,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6285,
                        "src": "10380:7:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6282,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10380:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10379:9:36"
                  },
                  "scope": 6466,
                  "src": "10258:131:36",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 6286,
                    "nodeType": "StructuredDocumentation",
                    "src": "10393:231:36",
                    "text": " @dev Allows a borrower to swap his debt between stable and variable mode, or viceversa\n @param asset The address of the underlying asset borrowed\n @param rateMode The rate mode that the user wants to swap to*"
                  },
                  "functionSelector": "94ba89a2",
                  "id": 6293,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "swapBorrowRateMode",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6291,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6288,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6293,
                        "src": "10655:13:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6287,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10655:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6290,
                        "mutability": "mutable",
                        "name": "rateMode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6293,
                        "src": "10670:16:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6289,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10670:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10654:33:36"
                  },
                  "returnParameters": {
                    "id": 6292,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10696:0:36"
                  },
                  "scope": 6466,
                  "src": "10627:70:36",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 6294,
                    "nodeType": "StructuredDocumentation",
                    "src": "10701:553:36",
                    "text": " @dev Rebalances the stable interest rate of a user to the current stable rate defined on the reserve.\n - Users can be rebalanced if the following conditions are satisfied:\n     1. Usage ratio is above 95%\n     2. the current deposit APY is below REBALANCE_UP_THRESHOLD * maxVariableBorrowRate, which means that too much has been\n        borrowed at a stable rate and depositors are not earning enough\n @param asset The address of the underlying asset borrowed\n @param user The address of the user to be rebalanced*"
                  },
                  "functionSelector": "cd112382",
                  "id": 6301,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "rebalanceStableBorrowRate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6299,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6296,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6301,
                        "src": "11292:13:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6295,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11292:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6298,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6301,
                        "src": "11307:12:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6297,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11307:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11291:29:36"
                  },
                  "returnParameters": {
                    "id": 6300,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11329:0:36"
                  },
                  "scope": 6466,
                  "src": "11257:73:36",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 6302,
                    "nodeType": "StructuredDocumentation",
                    "src": "11334:266:36",
                    "text": " @dev Allows depositors to enable/disable a specific deposited asset as collateral\n @param asset The address of the underlying asset deposited\n @param useAsCollateral `true` if the user wants to use the deposit as collateral, `false` otherwise*"
                  },
                  "functionSelector": "5a3b74b9",
                  "id": 6309,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setUserUseReserveAsCollateral",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6307,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6304,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6309,
                        "src": "11642:13:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6303,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11642:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6306,
                        "mutability": "mutable",
                        "name": "useAsCollateral",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6309,
                        "src": "11657:20:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6305,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "11657:4:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11641:37:36"
                  },
                  "returnParameters": {
                    "id": 6308,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11687:0:36"
                  },
                  "scope": 6466,
                  "src": "11603:85:36",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 6310,
                    "nodeType": "StructuredDocumentation",
                    "src": "11692:860:36",
                    "text": " @dev Function to liquidate a non-healthy position collateral-wise, with Health Factor below 1\n - The caller (liquidator) covers `debtToCover` amount of debt of the user getting liquidated, and receives\n   a proportionally amount of the `collateralAsset` plus a bonus to cover market risk\n @param collateralAsset The address of the underlying asset used as collateral, to receive as result of the liquidation\n @param debtAsset The address of the underlying borrowed asset to be repaid with the liquidation\n @param user The address of the borrower getting liquidated\n @param debtToCover The debt amount of borrowed `asset` the liquidator wants to cover\n @param receiveAToken `true` if the liquidators wants to receive the collateral aTokens, `false` if he wants\n to receive the underlying collateral asset directly*"
                  },
                  "functionSelector": "00a718a9",
                  "id": 6323,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "liquidationCall",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6321,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6312,
                        "mutability": "mutable",
                        "name": "collateralAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6323,
                        "src": "12585:23:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6311,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12585:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6314,
                        "mutability": "mutable",
                        "name": "debtAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6323,
                        "src": "12614:17:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6313,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12614:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6316,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6323,
                        "src": "12637:12:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6315,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12637:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6318,
                        "mutability": "mutable",
                        "name": "debtToCover",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6323,
                        "src": "12655:19:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6317,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12655:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6320,
                        "mutability": "mutable",
                        "name": "receiveAToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6323,
                        "src": "12680:18:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6319,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "12680:4:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12579:123:36"
                  },
                  "returnParameters": {
                    "id": 6322,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12711:0:36"
                  },
                  "scope": 6466,
                  "src": "12555:157:36",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 6324,
                    "nodeType": "StructuredDocumentation",
                    "src": "12716:1376:36",
                    "text": " @dev Allows smartcontracts to access the liquidity of the pool within one transaction,\n as long as the amount taken plus a fee is returned.\n IMPORTANT There are security concerns for developers of flashloan receiver contracts that must be kept into consideration.\n For further details please visit https://developers.aave.com\n @param receiverAddress The address of the contract receiving the funds, implementing the IFlashLoanReceiver interface\n @param assets The addresses of the assets being flash-borrowed\n @param amounts The amounts amounts being flash-borrowed\n @param modes Types of the debt to open if the flash loan is not returned:\n   0 -> Don't open any debt, just revert if funds can't be transferred from the receiver\n   1 -> Open debt at stable rate for the value of the amount flash-borrowed to the `onBehalfOf` address\n   2 -> Open debt at variable rate for the value of the amount flash-borrowed to the `onBehalfOf` address\n @param onBehalfOf The address  that will receive the debt in the case of using on `modes` 1 or 2\n @param params Variadic packed params to pass to the receiver as extra information\n @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   0 if the action is executed directly by the user, without any middle-man*"
                  },
                  "functionSelector": "ab9c4b5d",
                  "id": 6344,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "flashLoan",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6342,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6326,
                        "mutability": "mutable",
                        "name": "receiverAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6344,
                        "src": "14119:23:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6325,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14119:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6329,
                        "mutability": "mutable",
                        "name": "assets",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6344,
                        "src": "14148:25:36",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6327,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "14148:7:36",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 6328,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "14148:9:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6332,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6344,
                        "src": "14179:26:36",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6330,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "14179:7:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6331,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "14179:9:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6335,
                        "mutability": "mutable",
                        "name": "modes",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6344,
                        "src": "14211:24:36",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6333,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "14211:7:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6334,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "14211:9:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6337,
                        "mutability": "mutable",
                        "name": "onBehalfOf",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6344,
                        "src": "14241:18:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6336,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14241:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6339,
                        "mutability": "mutable",
                        "name": "params",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6344,
                        "src": "14265:21:36",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6338,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "14265:5:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6341,
                        "mutability": "mutable",
                        "name": "referralCode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6344,
                        "src": "14292:19:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 6340,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "14292:6:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14113:202:36"
                  },
                  "returnParameters": {
                    "id": 6343,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14324:0:36"
                  },
                  "scope": 6466,
                  "src": "14095:230:36",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 6345,
                    "nodeType": "StructuredDocumentation",
                    "src": "14329:507:36",
                    "text": " @dev Returns the user account data across all the reserves\n @param user The address of the user\n @return totalCollateralETH the total collateral in ETH of the user\n @return totalDebtETH the total debt in ETH of the user\n @return availableBorrowsETH the borrowing power left of the user\n @return currentLiquidationThreshold the liquidation threshold of the user\n @return ltv the loan to value of the user\n @return healthFactor the current health factor of the user*"
                  },
                  "functionSelector": "bf92857c",
                  "id": 6362,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUserAccountData",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6348,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6347,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6362,
                        "src": "14867:12:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6346,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14867:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14866:14:36"
                  },
                  "returnParameters": {
                    "id": 6361,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6350,
                        "mutability": "mutable",
                        "name": "totalCollateralETH",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6362,
                        "src": "14923:26:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6349,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14923:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6352,
                        "mutability": "mutable",
                        "name": "totalDebtETH",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6362,
                        "src": "14957:20:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6351,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14957:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6354,
                        "mutability": "mutable",
                        "name": "availableBorrowsETH",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6362,
                        "src": "14985:27:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6353,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14985:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6356,
                        "mutability": "mutable",
                        "name": "currentLiquidationThreshold",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6362,
                        "src": "15020:35:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6355,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15020:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6358,
                        "mutability": "mutable",
                        "name": "ltv",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6362,
                        "src": "15063:11:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6357,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15063:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6360,
                        "mutability": "mutable",
                        "name": "healthFactor",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6362,
                        "src": "15082:20:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6359,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15082:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14915:193:36"
                  },
                  "scope": 6466,
                  "src": "14839:270:36",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "7a708e92",
                  "id": 6375,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "initReserve",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6373,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6364,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6375,
                        "src": "15139:15:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6363,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15139:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6366,
                        "mutability": "mutable",
                        "name": "aTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6375,
                        "src": "15160:21:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6365,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15160:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6368,
                        "mutability": "mutable",
                        "name": "stableDebtAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6375,
                        "src": "15187:25:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6367,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15187:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6370,
                        "mutability": "mutable",
                        "name": "variableDebtAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6375,
                        "src": "15218:27:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6369,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15218:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6372,
                        "mutability": "mutable",
                        "name": "interestRateStrategyAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6375,
                        "src": "15251:35:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6371,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15251:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15133:157:36"
                  },
                  "returnParameters": {
                    "id": 6374,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15299:0:36"
                  },
                  "scope": 6466,
                  "src": "15113:187:36",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "1d2118f9",
                  "id": 6382,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setReserveInterestRateStrategyAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6380,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6377,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6382,
                        "src": "15351:15:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6376,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15351:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6379,
                        "mutability": "mutable",
                        "name": "rateStrategyAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6382,
                        "src": "15368:27:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6378,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15368:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15350:46:36"
                  },
                  "returnParameters": {
                    "id": 6381,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15409:0:36"
                  },
                  "scope": 6466,
                  "src": "15304:106:36",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "b8d29276",
                  "id": 6389,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setConfiguration",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6387,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6384,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6389,
                        "src": "15440:15:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6383,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15440:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6386,
                        "mutability": "mutable",
                        "name": "configuration",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6389,
                        "src": "15457:21:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6385,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15457:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15439:40:36"
                  },
                  "returnParameters": {
                    "id": 6388,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15488:0:36"
                  },
                  "scope": 6466,
                  "src": "15414:75:36",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 6390,
                    "nodeType": "StructuredDocumentation",
                    "src": "15493:176:36",
                    "text": " @dev Returns the configuration of the reserve\n @param asset The address of the underlying asset of the reserve\n @return The configuration of the reserve*"
                  },
                  "functionSelector": "c44b11f7",
                  "id": 6397,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getConfiguration",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6393,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6392,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6397,
                        "src": "15698:13:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6391,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15698:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15697:15:36"
                  },
                  "returnParameters": {
                    "id": 6396,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6395,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6397,
                        "src": "15748:40:36",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                          "typeString": "struct DataTypes.ReserveConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 6394,
                          "name": "DataTypes.ReserveConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20523,
                          "src": "15748:33:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15747:42:36"
                  },
                  "scope": 6466,
                  "src": "15672:118:36",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 6398,
                    "nodeType": "StructuredDocumentation",
                    "src": "15794:159:36",
                    "text": " @dev Returns the configuration of the user across all the reserves\n @param user The user address\n @return The configuration of the user*"
                  },
                  "functionSelector": "4417a583",
                  "id": 6405,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUserConfiguration",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6401,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6400,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6405,
                        "src": "15986:12:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6399,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15986:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15985:14:36"
                  },
                  "returnParameters": {
                    "id": 6404,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6403,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6405,
                        "src": "16035:37:36",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_memory_ptr",
                          "typeString": "struct DataTypes.UserConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 6402,
                          "name": "DataTypes.UserConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20526,
                          "src": "16035:30:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                            "typeString": "struct DataTypes.UserConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16034:39:36"
                  },
                  "scope": 6466,
                  "src": "15956:118:36",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 6406,
                    "nodeType": "StructuredDocumentation",
                    "src": "16078:196:36",
                    "text": " @dev Returns the normalized income normalized income of the reserve\n @param asset The address of the underlying asset of the reserve\n @return The reserve's normalized income"
                  },
                  "functionSelector": "d15e0053",
                  "id": 6413,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReserveNormalizedIncome",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6409,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6408,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6413,
                        "src": "16313:13:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6407,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16313:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16312:15:36"
                  },
                  "returnParameters": {
                    "id": 6412,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6411,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6413,
                        "src": "16351:7:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6410,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16351:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16350:9:36"
                  },
                  "scope": 6466,
                  "src": "16277:83:36",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 6414,
                    "nodeType": "StructuredDocumentation",
                    "src": "16364:193:36",
                    "text": " @dev Returns the normalized variable debt per unit of asset\n @param asset The address of the underlying asset of the reserve\n @return The reserve normalized variable debt"
                  },
                  "functionSelector": "386497fd",
                  "id": 6421,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReserveNormalizedVariableDebt",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6417,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6416,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6421,
                        "src": "16602:13:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6415,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16602:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16601:15:36"
                  },
                  "returnParameters": {
                    "id": 6420,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6419,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6421,
                        "src": "16640:7:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6418,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16640:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16639:9:36"
                  },
                  "scope": 6466,
                  "src": "16560:89:36",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 6422,
                    "nodeType": "StructuredDocumentation",
                    "src": "16653:178:36",
                    "text": " @dev Returns the state and configuration of the reserve\n @param asset The address of the underlying asset of the reserve\n @return The state of the reserve*"
                  },
                  "functionSelector": "35ea6a75",
                  "id": 6429,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReserveData",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6425,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6424,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6429,
                        "src": "16858:13:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6423,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16858:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16857:15:36"
                  },
                  "returnParameters": {
                    "id": 6428,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6427,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6429,
                        "src": "16896:28:36",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                          "typeString": "struct DataTypes.ReserveData"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 6426,
                          "name": "DataTypes.ReserveData",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20520,
                          "src": "16896:21:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                            "typeString": "struct DataTypes.ReserveData"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16895:30:36"
                  },
                  "scope": 6466,
                  "src": "16834:92:36",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "d5ed3933",
                  "id": 6444,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "finalizeTransfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6442,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6431,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6444,
                        "src": "16961:13:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6430,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16961:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6433,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6444,
                        "src": "16980:12:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6432,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16980:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6435,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6444,
                        "src": "16998:10:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6434,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16998:7:36",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6437,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6444,
                        "src": "17014:14:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6436,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17014:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6439,
                        "mutability": "mutable",
                        "name": "balanceFromAfter",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6444,
                        "src": "17034:24:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6438,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17034:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6441,
                        "mutability": "mutable",
                        "name": "balanceToBefore",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6444,
                        "src": "17064:23:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6440,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17064:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16955:136:36"
                  },
                  "returnParameters": {
                    "id": 6443,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17100:0:36"
                  },
                  "scope": 6466,
                  "src": "16930:171:36",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "d1946dbc",
                  "id": 6450,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReservesList",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6445,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17129:2:36"
                  },
                  "returnParameters": {
                    "id": 6449,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6448,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6450,
                        "src": "17155:16:36",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6446,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "17155:7:36",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 6447,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "17155:9:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17154:18:36"
                  },
                  "scope": 6466,
                  "src": "17105:68:36",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "fe65acfe",
                  "id": 6455,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAddressesProvider",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6451,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17206:2:36"
                  },
                  "returnParameters": {
                    "id": 6454,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6453,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6455,
                        "src": "17232:29:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                          "typeString": "contract ILendingPoolAddressesProvider"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 6452,
                          "name": "ILendingPoolAddressesProvider",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6617,
                          "src": "17232:29:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                            "typeString": "contract ILendingPoolAddressesProvider"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17231:31:36"
                  },
                  "scope": 6466,
                  "src": "17177:86:36",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "bedb86fb",
                  "id": 6460,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setPause",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6458,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6457,
                        "mutability": "mutable",
                        "name": "val",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6460,
                        "src": "17285:8:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6456,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "17285:4:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17284:10:36"
                  },
                  "returnParameters": {
                    "id": 6459,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17303:0:36"
                  },
                  "scope": 6466,
                  "src": "17267:37:36",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "5c975abb",
                  "id": 6465,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "paused",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6461,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17323:2:36"
                  },
                  "returnParameters": {
                    "id": 6464,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6463,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6465,
                        "src": "17349:4:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6462,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "17349:4:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17348:6:36"
                  },
                  "scope": 6466,
                  "src": "17308:47:36",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 6467,
              "src": "249:17108:36"
            }
          ],
          "src": "37:17321:36"
        },
        "id": 36
      },
      "contracts/interfaces/ILendingPoolAddressesProvider.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/ILendingPoolAddressesProvider.sol",
          "exportedSymbols": {
            "ILendingPoolAddressesProvider": [
              6617
            ]
          },
          "id": 6618,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 6468,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:37"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 6469,
                "nodeType": "StructuredDocumentation",
                "src": "62:311:37",
                "text": " @title LendingPoolAddressesProvider contract\n @dev Main registry of addresses part of or connected to the protocol, including permissioned roles\n - Acting also as factory of proxies and admin of those, so with right to change its implementations\n - Owned by the Aave Governance\n @author Aave*"
              },
              "fullyImplemented": false,
              "id": 6617,
              "linearizedBaseContracts": [
                6617
              ],
              "name": "ILendingPoolAddressesProvider",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6473,
                  "name": "MarketIdSet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6472,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6471,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "newMarketId",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6473,
                        "src": "436:18:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 6470,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "436:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "435:20:37"
                  },
                  "src": "418:38:37"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6477,
                  "name": "LendingPoolUpdated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6476,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6475,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6477,
                        "src": "484:26:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6474,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "484:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "483:28:37"
                  },
                  "src": "459:53:37"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6481,
                  "name": "ConfigurationAdminUpdated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6480,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6479,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6481,
                        "src": "547:26:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6478,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "547:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "546:28:37"
                  },
                  "src": "515:60:37"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6485,
                  "name": "EmergencyAdminUpdated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6484,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6483,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6485,
                        "src": "606:26:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6482,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "606:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "605:28:37"
                  },
                  "src": "578:56:37"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6489,
                  "name": "LendingPoolConfiguratorUpdated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6488,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6487,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6489,
                        "src": "674:26:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6486,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "674:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "673:28:37"
                  },
                  "src": "637:65:37"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6493,
                  "name": "LendingPoolCollateralManagerUpdated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6492,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6491,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6493,
                        "src": "747:26:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6490,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "747:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "746:28:37"
                  },
                  "src": "705:70:37"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6497,
                  "name": "PriceOracleUpdated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6496,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6495,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6497,
                        "src": "803:26:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6494,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "803:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "802:28:37"
                  },
                  "src": "778:53:37"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6501,
                  "name": "LendingRateOracleUpdated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6500,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6499,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6501,
                        "src": "865:26:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6498,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "865:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "864:28:37"
                  },
                  "src": "834:59:37"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6507,
                  "name": "ProxyCreated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6506,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6503,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6507,
                        "src": "915:10:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 6502,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "915:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6505,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6507,
                        "src": "927:26:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6504,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "927:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "914:40:37"
                  },
                  "src": "896:59:37"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6515,
                  "name": "AddressSet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6514,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6509,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6515,
                        "src": "975:10:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 6508,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "975:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6511,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6515,
                        "src": "987:26:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6510,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "987:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6513,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "hasProxy",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6515,
                        "src": "1015:13:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6512,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1015:4:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "974:55:37"
                  },
                  "src": "958:72:37"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "568ef470",
                  "id": 6520,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getMarketId",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6516,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1054:2:37"
                  },
                  "returnParameters": {
                    "id": 6519,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6518,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6520,
                        "src": "1080:13:37",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 6517,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1080:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1079:15:37"
                  },
                  "scope": 6617,
                  "src": "1034:61:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "f67b1847",
                  "id": 6525,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setMarketId",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6523,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6522,
                        "mutability": "mutable",
                        "name": "marketId",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6525,
                        "src": "1120:24:37",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 6521,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1120:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1119:26:37"
                  },
                  "returnParameters": {
                    "id": 6524,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1154:0:37"
                  },
                  "scope": 6617,
                  "src": "1099:56:37",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "ca446dd9",
                  "id": 6532,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6530,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6527,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6532,
                        "src": "1179:10:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 6526,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1179:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6529,
                        "mutability": "mutable",
                        "name": "newAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6532,
                        "src": "1191:18:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6528,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1191:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1178:32:37"
                  },
                  "returnParameters": {
                    "id": 6531,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1219:0:37"
                  },
                  "scope": 6617,
                  "src": "1159:61:37",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "5dcc528c",
                  "id": 6539,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setAddressAsProxy",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6537,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6534,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6539,
                        "src": "1251:10:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 6533,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1251:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6536,
                        "mutability": "mutable",
                        "name": "impl",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6539,
                        "src": "1263:12:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6535,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1263:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1250:26:37"
                  },
                  "returnParameters": {
                    "id": 6538,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1285:0:37"
                  },
                  "scope": 6617,
                  "src": "1224:62:37",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "21f8a721",
                  "id": 6546,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6542,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6541,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6546,
                        "src": "1310:10:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 6540,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1310:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1309:12:37"
                  },
                  "returnParameters": {
                    "id": 6545,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6544,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6546,
                        "src": "1345:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6543,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1345:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1344:9:37"
                  },
                  "scope": 6617,
                  "src": "1290:64:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "0261bf8b",
                  "id": 6551,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLendingPool",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6547,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1381:2:37"
                  },
                  "returnParameters": {
                    "id": 6550,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6549,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6551,
                        "src": "1407:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6548,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1407:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1406:9:37"
                  },
                  "scope": 6617,
                  "src": "1358:58:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "5aef021f",
                  "id": 6556,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setLendingPoolImpl",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6554,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6553,
                        "mutability": "mutable",
                        "name": "pool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6556,
                        "src": "1448:12:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6552,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1448:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1447:14:37"
                  },
                  "returnParameters": {
                    "id": 6555,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1470:0:37"
                  },
                  "scope": 6617,
                  "src": "1420:51:37",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "85c858b1",
                  "id": 6561,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLendingPoolConfigurator",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6557,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1510:2:37"
                  },
                  "returnParameters": {
                    "id": 6560,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6559,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6561,
                        "src": "1536:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6558,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1536:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1535:9:37"
                  },
                  "scope": 6617,
                  "src": "1475:70:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "c12542df",
                  "id": 6566,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setLendingPoolConfiguratorImpl",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6564,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6563,
                        "mutability": "mutable",
                        "name": "configurator",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6566,
                        "src": "1589:20:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6562,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1589:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1588:22:37"
                  },
                  "returnParameters": {
                    "id": 6565,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1619:0:37"
                  },
                  "scope": 6617,
                  "src": "1549:71:37",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "712d9171",
                  "id": 6571,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLendingPoolCollateralManager",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6567,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1664:2:37"
                  },
                  "returnParameters": {
                    "id": 6570,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6569,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6571,
                        "src": "1690:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6568,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1690:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1689:9:37"
                  },
                  "scope": 6617,
                  "src": "1624:75:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "398e5553",
                  "id": 6576,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setLendingPoolCollateralManager",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6574,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6573,
                        "mutability": "mutable",
                        "name": "manager",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6576,
                        "src": "1744:15:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6572,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1744:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1743:17:37"
                  },
                  "returnParameters": {
                    "id": 6575,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1769:0:37"
                  },
                  "scope": 6617,
                  "src": "1703:67:37",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "aecda378",
                  "id": 6581,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPoolAdmin",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6577,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1795:2:37"
                  },
                  "returnParameters": {
                    "id": 6580,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6579,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6581,
                        "src": "1821:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6578,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1821:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1820:9:37"
                  },
                  "scope": 6617,
                  "src": "1774:56:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "283d62ad",
                  "id": 6586,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setPoolAdmin",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6584,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6583,
                        "mutability": "mutable",
                        "name": "admin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6586,
                        "src": "1856:13:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6582,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1856:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1855:15:37"
                  },
                  "returnParameters": {
                    "id": 6585,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1879:0:37"
                  },
                  "scope": 6617,
                  "src": "1834:46:37",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "ddcaa9ea",
                  "id": 6591,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getEmergencyAdmin",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6587,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1910:2:37"
                  },
                  "returnParameters": {
                    "id": 6590,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6589,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6591,
                        "src": "1936:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6588,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1936:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1935:9:37"
                  },
                  "scope": 6617,
                  "src": "1884:61:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "35da3394",
                  "id": 6596,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setEmergencyAdmin",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6594,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6593,
                        "mutability": "mutable",
                        "name": "admin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6596,
                        "src": "1976:13:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6592,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1976:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1975:15:37"
                  },
                  "returnParameters": {
                    "id": 6595,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1999:0:37"
                  },
                  "scope": 6617,
                  "src": "1949:51:37",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "fca513a8",
                  "id": 6601,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPriceOracle",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6597,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2027:2:37"
                  },
                  "returnParameters": {
                    "id": 6600,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6599,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6601,
                        "src": "2053:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6598,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2053:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2052:9:37"
                  },
                  "scope": 6617,
                  "src": "2004:58:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "530e784f",
                  "id": 6606,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setPriceOracle",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6604,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6603,
                        "mutability": "mutable",
                        "name": "priceOracle",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6606,
                        "src": "2090:19:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6602,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2090:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2089:21:37"
                  },
                  "returnParameters": {
                    "id": 6605,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2119:0:37"
                  },
                  "scope": 6617,
                  "src": "2066:54:37",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "3618abba",
                  "id": 6611,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLendingRateOracle",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6607,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2153:2:37"
                  },
                  "returnParameters": {
                    "id": 6610,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6609,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6611,
                        "src": "2179:7:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6608,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2179:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2178:9:37"
                  },
                  "scope": 6617,
                  "src": "2124:64:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "820d1274",
                  "id": 6616,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setLendingRateOracle",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6614,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6613,
                        "mutability": "mutable",
                        "name": "lendingRateOracle",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6616,
                        "src": "2222:25:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6612,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2222:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2221:27:37"
                  },
                  "returnParameters": {
                    "id": 6615,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2257:0:37"
                  },
                  "scope": 6617,
                  "src": "2192:66:37",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 6618,
              "src": "374:1886:37"
            }
          ],
          "src": "37:2224:37"
        },
        "id": 37
      },
      "contracts/interfaces/ILendingPoolAddressesProviderRegistry.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/ILendingPoolAddressesProviderRegistry.sol",
          "exportedSymbols": {
            "ILendingPoolAddressesProviderRegistry": [
              6654
            ]
          },
          "id": 6655,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 6619,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:38"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 6620,
                "nodeType": "StructuredDocumentation",
                "src": "62:407:38",
                "text": " @title LendingPoolAddressesProviderRegistry contract\n @dev Main registry of LendingPoolAddressesProvider of multiple Aave protocol's markets\n - Used for indexing purposes of Aave protocol's markets\n - The id assigned to a LendingPoolAddressesProvider refers to the market it is connected with,\n   for example with `0` for the Aave main market and `1` for the next created\n @author Aave*"
              },
              "fullyImplemented": false,
              "id": 6654,
              "linearizedBaseContracts": [
                6654
              ],
              "name": "ILendingPoolAddressesProviderRegistry",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6624,
                  "name": "AddressesProviderRegistered",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6623,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6622,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6624,
                        "src": "556:26:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6621,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "556:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "555:28:38"
                  },
                  "src": "522:62:38"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 6628,
                  "name": "AddressesProviderUnregistered",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6627,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6626,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6628,
                        "src": "623:26:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6625,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "623:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "622:28:38"
                  },
                  "src": "587:64:38"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "365ccbbf",
                  "id": 6634,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAddressesProvidersList",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6629,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "689:2:38"
                  },
                  "returnParameters": {
                    "id": 6633,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6632,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6634,
                        "src": "715:16:38",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6630,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "715:7:38",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 6631,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "715:9:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "714:18:38"
                  },
                  "scope": 6654,
                  "src": "655:78:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "d0267be7",
                  "id": 6641,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAddressesProviderIdByAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6637,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6636,
                        "mutability": "mutable",
                        "name": "addressesProvider",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6641,
                        "src": "778:25:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6635,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "778:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "777:27:38"
                  },
                  "returnParameters": {
                    "id": 6640,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6639,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6641,
                        "src": "840:7:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6638,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "840:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "839:9:38"
                  },
                  "scope": 6654,
                  "src": "737:112:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "d258191e",
                  "id": 6648,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "registerAddressesProvider",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6646,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6643,
                        "mutability": "mutable",
                        "name": "provider",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6648,
                        "src": "888:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6642,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "888:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6645,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6648,
                        "src": "906:10:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6644,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "906:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "887:30:38"
                  },
                  "returnParameters": {
                    "id": 6647,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "926:0:38"
                  },
                  "scope": 6654,
                  "src": "853:74:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "0de26707",
                  "id": 6653,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "unregisterAddressesProvider",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6651,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6650,
                        "mutability": "mutable",
                        "name": "provider",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6653,
                        "src": "968:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6649,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "968:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "967:18:38"
                  },
                  "returnParameters": {
                    "id": 6652,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "994:0:38"
                  },
                  "scope": 6654,
                  "src": "931:64:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 6655,
              "src": "470:527:38"
            }
          ],
          "src": "37:961:38"
        },
        "id": 38
      },
      "contracts/interfaces/ILendingPoolCollateralManager.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/ILendingPoolCollateralManager.sol",
          "exportedSymbols": {
            "ILendingPoolCollateralManager": [
              6707
            ]
          },
          "id": 6708,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 6656,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:39"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 6657,
                "nodeType": "StructuredDocumentation",
                "src": "62:147:39",
                "text": " @title ILendingPoolCollateralManager\n @author Aave\n @notice Defines the actions involving management of collateral in the protocol.*"
              },
              "fullyImplemented": false,
              "id": 6707,
              "linearizedBaseContracts": [
                6707
              ],
              "name": "ILendingPoolCollateralManager",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6658,
                    "nodeType": "StructuredDocumentation",
                    "src": "254:512:39",
                    "text": " @dev Emitted when a borrower is liquidated\n @param collateral The address of the collateral being liquidated\n @param principal The address of the reserve\n @param user The address of the user being liquidated\n @param debtToCover The total amount liquidated\n @param liquidatedCollateralAmount The amount of collateral being liquidated\n @param liquidator The address of the liquidator\n @param receiveAToken true if the liquidator wants to receive aTokens, false otherwise*"
                  },
                  "id": 6674,
                  "name": "LiquidationCall",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6673,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6660,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "collateral",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6674,
                        "src": "796:26:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6659,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "796:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6662,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "principal",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6674,
                        "src": "828:25:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6661,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "828:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6664,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6674,
                        "src": "859:20:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6663,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "859:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6666,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "debtToCover",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6674,
                        "src": "885:19:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6665,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "885:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6668,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "liquidatedCollateralAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6674,
                        "src": "910:34:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6667,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "910:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6670,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "liquidator",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6674,
                        "src": "950:18:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6669,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "950:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6672,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "receiveAToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6674,
                        "src": "974:18:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6671,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "974:4:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "790:206:39"
                  },
                  "src": "769:228:39"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6675,
                    "nodeType": "StructuredDocumentation",
                    "src": "1001:169:39",
                    "text": " @dev Emitted when a reserve is disabled as collateral for an user\n @param reserve The address of the reserve\n @param user The address of the user*"
                  },
                  "id": 6681,
                  "name": "ReserveUsedAsCollateralDisabled",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6680,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6677,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6681,
                        "src": "1211:23:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6676,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1211:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6679,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6681,
                        "src": "1236:20:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6678,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1236:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1210:47:39"
                  },
                  "src": "1173:85:39"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6682,
                    "nodeType": "StructuredDocumentation",
                    "src": "1262:168:39",
                    "text": " @dev Emitted when a reserve is enabled as collateral for an user\n @param reserve The address of the reserve\n @param user The address of the user*"
                  },
                  "id": 6688,
                  "name": "ReserveUsedAsCollateralEnabled",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6687,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6684,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6688,
                        "src": "1470:23:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6683,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1470:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6686,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6688,
                        "src": "1495:20:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6685,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1495:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1469:47:39"
                  },
                  "src": "1433:84:39"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 6689,
                    "nodeType": "StructuredDocumentation",
                    "src": "1521:495:39",
                    "text": " @dev Users can invoke this function to liquidate an undercollateralized position.\n @param collateral The address of the collateral to liquidated\n @param principal The address of the principal reserve\n @param user The address of the borrower\n @param debtToCover The amount of principal that the liquidator wants to repay\n @param receiveAToken true if the liquidators wants to receive the aTokens, false if\n he wants to receive the underlying asset directly*"
                  },
                  "functionSelector": "00a718a9",
                  "id": 6706,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "liquidationCall",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6700,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6691,
                        "mutability": "mutable",
                        "name": "collateral",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6706,
                        "src": "2049:18:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6690,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2049:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6693,
                        "mutability": "mutable",
                        "name": "principal",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6706,
                        "src": "2073:17:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6692,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2073:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6695,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6706,
                        "src": "2096:12:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6694,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2096:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6697,
                        "mutability": "mutable",
                        "name": "debtToCover",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6706,
                        "src": "2114:19:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6696,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2114:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6699,
                        "mutability": "mutable",
                        "name": "receiveAToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6706,
                        "src": "2139:18:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6698,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2139:4:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2043:118:39"
                  },
                  "returnParameters": {
                    "id": 6705,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6702,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6706,
                        "src": "2180:7:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6701,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2180:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6704,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6706,
                        "src": "2189:13:39",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 6703,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2189:6:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2179:24:39"
                  },
                  "scope": 6707,
                  "src": "2019:185:39",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 6708,
              "src": "210:1996:39"
            }
          ],
          "src": "37:2170:39"
        },
        "id": 39
      },
      "contracts/interfaces/ILendingPoolConfigurator.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/ILendingPoolConfigurator.sol",
          "exportedSymbols": {
            "ILendingPoolConfigurator": [
              6886
            ]
          },
          "id": 6887,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 6709,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:40"
            },
            {
              "id": 6710,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "61:33:40"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": true,
              "id": 6886,
              "linearizedBaseContracts": [
                6886
              ],
              "name": "ILendingPoolConfigurator",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "ILendingPoolConfigurator.InitReserveInput",
                  "id": 6743,
                  "members": [
                    {
                      "constant": false,
                      "id": 6712,
                      "mutability": "mutable",
                      "name": "aTokenImpl",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6743,
                      "src": "165:18:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6711,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "165:7:40",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6714,
                      "mutability": "mutable",
                      "name": "stableDebtTokenImpl",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6743,
                      "src": "189:27:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6713,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "189:7:40",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6716,
                      "mutability": "mutable",
                      "name": "variableDebtTokenImpl",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6743,
                      "src": "222:29:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6715,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "222:7:40",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6718,
                      "mutability": "mutable",
                      "name": "underlyingAssetDecimals",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6743,
                      "src": "257:29:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 6717,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "257:5:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6720,
                      "mutability": "mutable",
                      "name": "interestRateStrategyAddress",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6743,
                      "src": "292:35:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6719,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "292:7:40",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6722,
                      "mutability": "mutable",
                      "name": "underlyingAsset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6743,
                      "src": "333:23:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6721,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "333:7:40",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6724,
                      "mutability": "mutable",
                      "name": "treasury",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6743,
                      "src": "362:16:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6723,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "362:7:40",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6726,
                      "mutability": "mutable",
                      "name": "incentivesController",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6743,
                      "src": "384:28:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6725,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "384:7:40",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6728,
                      "mutability": "mutable",
                      "name": "underlyingAssetName",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6743,
                      "src": "418:26:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6727,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "418:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6730,
                      "mutability": "mutable",
                      "name": "aTokenName",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6743,
                      "src": "450:17:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6729,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "450:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6732,
                      "mutability": "mutable",
                      "name": "aTokenSymbol",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6743,
                      "src": "473:19:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6731,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "473:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6734,
                      "mutability": "mutable",
                      "name": "variableDebtTokenName",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6743,
                      "src": "498:28:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6733,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "498:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6736,
                      "mutability": "mutable",
                      "name": "variableDebtTokenSymbol",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6743,
                      "src": "532:30:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6735,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "532:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6738,
                      "mutability": "mutable",
                      "name": "stableDebtTokenName",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6743,
                      "src": "568:26:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6737,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "568:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6740,
                      "mutability": "mutable",
                      "name": "stableDebtTokenSymbol",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6743,
                      "src": "600:28:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6739,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "600:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6742,
                      "mutability": "mutable",
                      "name": "params",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6743,
                      "src": "634:12:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6741,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "634:5:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "InitReserveInput",
                  "nodeType": "StructDefinition",
                  "scope": 6886,
                  "src": "135:516:40",
                  "visibility": "public"
                },
                {
                  "canonicalName": "ILendingPoolConfigurator.UpdateATokenInput",
                  "id": 6758,
                  "members": [
                    {
                      "constant": false,
                      "id": 6745,
                      "mutability": "mutable",
                      "name": "asset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6758,
                      "src": "686:13:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6744,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "686:7:40",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6747,
                      "mutability": "mutable",
                      "name": "treasury",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6758,
                      "src": "705:16:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6746,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "705:7:40",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6749,
                      "mutability": "mutable",
                      "name": "incentivesController",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6758,
                      "src": "727:28:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6748,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "727:7:40",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6751,
                      "mutability": "mutable",
                      "name": "name",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6758,
                      "src": "761:11:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6750,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "761:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6753,
                      "mutability": "mutable",
                      "name": "symbol",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6758,
                      "src": "778:13:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6752,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "778:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6755,
                      "mutability": "mutable",
                      "name": "implementation",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6758,
                      "src": "797:22:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6754,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "797:7:40",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6757,
                      "mutability": "mutable",
                      "name": "params",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6758,
                      "src": "825:12:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6756,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "825:5:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "UpdateATokenInput",
                  "nodeType": "StructDefinition",
                  "scope": 6886,
                  "src": "655:187:40",
                  "visibility": "public"
                },
                {
                  "canonicalName": "ILendingPoolConfigurator.UpdateDebtTokenInput",
                  "id": 6771,
                  "members": [
                    {
                      "constant": false,
                      "id": 6760,
                      "mutability": "mutable",
                      "name": "asset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6771,
                      "src": "880:13:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6759,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "880:7:40",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6762,
                      "mutability": "mutable",
                      "name": "incentivesController",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6771,
                      "src": "899:28:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6761,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "899:7:40",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6764,
                      "mutability": "mutable",
                      "name": "name",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6771,
                      "src": "933:11:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6763,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "933:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6766,
                      "mutability": "mutable",
                      "name": "symbol",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6771,
                      "src": "950:13:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6765,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "950:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6768,
                      "mutability": "mutable",
                      "name": "implementation",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6771,
                      "src": "969:22:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6767,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "969:7:40",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6770,
                      "mutability": "mutable",
                      "name": "params",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6771,
                      "src": "997:12:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6769,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "997:5:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "UpdateDebtTokenInput",
                  "nodeType": "StructDefinition",
                  "scope": 6886,
                  "src": "846:168:40",
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6772,
                    "nodeType": "StructuredDocumentation",
                    "src": "1018:457:40",
                    "text": " @dev Emitted when a reserve is initialized.\n @param asset The address of the underlying asset of the reserve\n @param aToken The address of the associated aToken contract\n @param stableDebtToken The address of the associated stable rate debt token\n @param variableDebtToken The address of the associated variable rate debt token\n @param interestRateStrategyAddress The address of the interest rate strategy for the reserve*"
                  },
                  "id": 6784,
                  "name": "ReserveInitialized",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6783,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6774,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6784,
                        "src": "1508:21:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6773,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1508:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6776,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "aToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6784,
                        "src": "1535:22:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6775,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1535:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6778,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "stableDebtToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6784,
                        "src": "1563:23:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6777,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1563:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6780,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "variableDebtToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6784,
                        "src": "1592:25:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6779,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1592:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6782,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "interestRateStrategyAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6784,
                        "src": "1623:35:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6781,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1623:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1502:160:40"
                  },
                  "src": "1478:185:40"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6785,
                    "nodeType": "StructuredDocumentation",
                    "src": "1667:224:40",
                    "text": " @dev Emitted when borrowing is enabled on a reserve\n @param asset The address of the underlying asset of the reserve\n @param stableRateEnabled True if stable rate borrowing is enabled, false otherwise*"
                  },
                  "id": 6791,
                  "name": "BorrowingEnabledOnReserve",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6790,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6787,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6791,
                        "src": "1926:21:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6786,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1926:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6789,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "stableRateEnabled",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6791,
                        "src": "1949:22:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6788,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1949:4:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1925:47:40"
                  },
                  "src": "1894:79:40"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6792,
                    "nodeType": "StructuredDocumentation",
                    "src": "1977:137:40",
                    "text": " @dev Emitted when borrowing is disabled on a reserve\n @param asset The address of the underlying asset of the reserve*"
                  },
                  "id": 6796,
                  "name": "BorrowingDisabledOnReserve",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6795,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6794,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6796,
                        "src": "2150:21:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6793,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2150:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2149:23:40"
                  },
                  "src": "2117:56:40"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6797,
                    "nodeType": "StructuredDocumentation",
                    "src": "2177:463:40",
                    "text": " @dev Emitted when the collateralization risk parameters for the specified asset are updated.\n @param asset The address of the underlying asset of the reserve\n @param ltv The loan to value of the asset when used as collateral\n @param liquidationThreshold The threshold at which loans using this asset as collateral will be considered undercollateralized\n @param liquidationBonus The bonus liquidators receive to liquidate this asset*"
                  },
                  "id": 6807,
                  "name": "CollateralConfigurationChanged",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6806,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6799,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6807,
                        "src": "2685:21:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6798,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2685:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6801,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "ltv",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6807,
                        "src": "2712:11:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6800,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2712:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6803,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "liquidationThreshold",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6807,
                        "src": "2729:28:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6802,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2729:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6805,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "liquidationBonus",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6807,
                        "src": "2763:24:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6804,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2763:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2679:112:40"
                  },
                  "src": "2643:149:40"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6808,
                    "nodeType": "StructuredDocumentation",
                    "src": "2796:148:40",
                    "text": " @dev Emitted when stable rate borrowing is enabled on a reserve\n @param asset The address of the underlying asset of the reserve*"
                  },
                  "id": 6812,
                  "name": "StableRateEnabledOnReserve",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6811,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6810,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6812,
                        "src": "2980:21:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6809,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2980:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2979:23:40"
                  },
                  "src": "2947:56:40"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6813,
                    "nodeType": "StructuredDocumentation",
                    "src": "3007:149:40",
                    "text": " @dev Emitted when stable rate borrowing is disabled on a reserve\n @param asset The address of the underlying asset of the reserve*"
                  },
                  "id": 6817,
                  "name": "StableRateDisabledOnReserve",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6816,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6815,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6817,
                        "src": "3193:21:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6814,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3193:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3192:23:40"
                  },
                  "src": "3159:57:40"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6818,
                    "nodeType": "StructuredDocumentation",
                    "src": "3220:125:40",
                    "text": " @dev Emitted when a reserve is activated\n @param asset The address of the underlying asset of the reserve*"
                  },
                  "id": 6822,
                  "name": "ReserveActivated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6821,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6820,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6822,
                        "src": "3371:21:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6819,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3371:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3370:23:40"
                  },
                  "src": "3348:46:40"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6823,
                    "nodeType": "StructuredDocumentation",
                    "src": "3398:127:40",
                    "text": " @dev Emitted when a reserve is deactivated\n @param asset The address of the underlying asset of the reserve*"
                  },
                  "id": 6827,
                  "name": "ReserveDeactivated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6826,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6825,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6827,
                        "src": "3553:21:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6824,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3553:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3552:23:40"
                  },
                  "src": "3528:48:40"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6828,
                    "nodeType": "StructuredDocumentation",
                    "src": "3580:122:40",
                    "text": " @dev Emitted when a reserve is frozen\n @param asset The address of the underlying asset of the reserve*"
                  },
                  "id": 6832,
                  "name": "ReserveFrozen",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6831,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6830,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6832,
                        "src": "3725:21:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6829,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3725:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3724:23:40"
                  },
                  "src": "3705:43:40"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6833,
                    "nodeType": "StructuredDocumentation",
                    "src": "3752:124:40",
                    "text": " @dev Emitted when a reserve is unfrozen\n @param asset The address of the underlying asset of the reserve*"
                  },
                  "id": 6837,
                  "name": "ReserveUnfrozen",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6836,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6835,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6837,
                        "src": "3901:21:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6834,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3901:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3900:23:40"
                  },
                  "src": "3879:45:40"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6838,
                    "nodeType": "StructuredDocumentation",
                    "src": "3928:172:40",
                    "text": " @dev Emitted when a reserve factor is updated\n @param asset The address of the underlying asset of the reserve\n @param factor The new reserve factor*"
                  },
                  "id": 6844,
                  "name": "ReserveFactorChanged",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6843,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6840,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6844,
                        "src": "4130:21:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6839,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4130:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6842,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "factor",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6844,
                        "src": "4153:14:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6841,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4153:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4129:39:40"
                  },
                  "src": "4103:66:40"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6845,
                    "nodeType": "StructuredDocumentation",
                    "src": "4173:173:40",
                    "text": " @dev Emitted when the reserve decimals are updated\n @param asset The address of the underlying asset of the reserve\n @param decimals The new decimals*"
                  },
                  "id": 6851,
                  "name": "ReserveDecimalsChanged",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6850,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6847,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6851,
                        "src": "4378:21:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6846,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4378:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6849,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "decimals",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6851,
                        "src": "4401:16:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6848,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4401:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4377:41:40"
                  },
                  "src": "4349:70:40"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6852,
                    "nodeType": "StructuredDocumentation",
                    "src": "4423:221:40",
                    "text": " @dev Emitted when a reserve interest strategy contract is updated\n @param asset The address of the underlying asset of the reserve\n @param strategy The new address of the interest strategy contract*"
                  },
                  "id": 6858,
                  "name": "ReserveInterestRateStrategyChanged",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6857,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6854,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6858,
                        "src": "4688:21:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6853,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4688:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6856,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "strategy",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6858,
                        "src": "4711:16:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6855,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4711:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4687:41:40"
                  },
                  "src": "4647:82:40"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6859,
                    "nodeType": "StructuredDocumentation",
                    "src": "4733:239:40",
                    "text": " @dev Emitted when an aToken implementation is upgraded\n @param asset The address of the underlying asset of the reserve\n @param proxy The aToken proxy address\n @param implementation The new aToken implementation*"
                  },
                  "id": 6867,
                  "name": "ATokenUpgraded",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6866,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6861,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6867,
                        "src": "5001:21:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6860,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5001:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6863,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "proxy",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6867,
                        "src": "5028:21:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6862,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5028:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6865,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "implementation",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6867,
                        "src": "5055:30:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6864,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5055:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4995:94:40"
                  },
                  "src": "4975:115:40"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6868,
                    "nodeType": "StructuredDocumentation",
                    "src": "5094:267:40",
                    "text": " @dev Emitted when the implementation of a stable debt token is upgraded\n @param asset The address of the underlying asset of the reserve\n @param proxy The stable debt token proxy address\n @param implementation The new aToken implementation*"
                  },
                  "id": 6876,
                  "name": "StableDebtTokenUpgraded",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6875,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6870,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6876,
                        "src": "5399:21:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6869,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5399:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6872,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "proxy",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6876,
                        "src": "5426:21:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6871,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5426:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6874,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "implementation",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6876,
                        "src": "5453:30:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6873,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5453:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5393:94:40"
                  },
                  "src": "5364:124:40"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 6877,
                    "nodeType": "StructuredDocumentation",
                    "src": "5492:271:40",
                    "text": " @dev Emitted when the implementation of a variable debt token is upgraded\n @param asset The address of the underlying asset of the reserve\n @param proxy The variable debt token proxy address\n @param implementation The new aToken implementation*"
                  },
                  "id": 6885,
                  "name": "VariableDebtTokenUpgraded",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 6884,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6879,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6885,
                        "src": "5803:21:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6878,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5803:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6881,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "proxy",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6885,
                        "src": "5830:21:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6880,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5830:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6883,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "implementation",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6885,
                        "src": "5857:30:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6882,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5857:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5797:94:40"
                  },
                  "src": "5766:126:40"
                }
              ],
              "scope": 6887,
              "src": "96:5798:40"
            }
          ],
          "src": "37:5858:40"
        },
        "id": 40
      },
      "contracts/interfaces/ILendingRateOracle.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/ILendingRateOracle.sol",
          "exportedSymbols": {
            "ILendingRateOracle": [
              6906
            ]
          },
          "id": 6907,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 6888,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:41"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 6889,
                "nodeType": "StructuredDocumentation",
                "src": "62:202:41",
                "text": " @title ILendingRateOracle interface\n @notice Interface for the Aave borrow rate oracle. Provides the average market borrow rate to be used as a base for the stable borrow rate calculations*"
              },
              "fullyImplemented": false,
              "id": 6906,
              "linearizedBaseContracts": [
                6906
              ],
              "name": "ILendingRateOracle",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": {
                    "id": 6890,
                    "nodeType": "StructuredDocumentation",
                    "src": "299:58:41",
                    "text": "@dev returns the market borrow rate in ray*"
                  },
                  "functionSelector": "bb85c0bb",
                  "id": 6897,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getMarketBorrowRate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6893,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6892,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6897,
                        "src": "389:13:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6891,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "389:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "388:15:41"
                  },
                  "returnParameters": {
                    "id": 6896,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6895,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6897,
                        "src": "427:7:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6894,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "427:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "426:9:41"
                  },
                  "scope": 6906,
                  "src": "360:76:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 6898,
                    "nodeType": "StructuredDocumentation",
                    "src": "440:75:41",
                    "text": "@dev sets the market borrow rate. Rate value must be in ray*"
                  },
                  "functionSelector": "72eb293d",
                  "id": 6905,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setMarketBorrowRate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6903,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6900,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6905,
                        "src": "547:13:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6899,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "547:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6902,
                        "mutability": "mutable",
                        "name": "rate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6905,
                        "src": "562:12:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6901,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "562:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "546:29:41"
                  },
                  "returnParameters": {
                    "id": 6904,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "584:0:41"
                  },
                  "scope": 6906,
                  "src": "518:67:41",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 6907,
              "src": "266:321:41"
            }
          ],
          "src": "37:551:41"
        },
        "id": 41
      },
      "contracts/interfaces/IPriceOracleGetter.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IPriceOracleGetter.sol",
          "exportedSymbols": {
            "IPriceOracleGetter": [
              6918
            ]
          },
          "id": 6919,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 6908,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:42"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 6909,
                "nodeType": "StructuredDocumentation",
                "src": "62:95:42",
                "text": " @title IPriceOracleGetter interface\n @notice Interface for the Aave price oracle.*"
              },
              "fullyImplemented": false,
              "id": 6918,
              "linearizedBaseContracts": [
                6918
              ],
              "name": "IPriceOracleGetter",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": {
                    "id": 6910,
                    "nodeType": "StructuredDocumentation",
                    "src": "192:134:42",
                    "text": " @dev returns the asset price in ETH\n @param asset the address of the asset\n @return the ETH price of the asset*"
                  },
                  "functionSelector": "b3596f07",
                  "id": 6917,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAssetPrice",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6913,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6912,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6917,
                        "src": "352:13:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6911,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "352:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "351:15:42"
                  },
                  "returnParameters": {
                    "id": 6916,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6915,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6917,
                        "src": "390:7:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6914,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "390:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "389:9:42"
                  },
                  "scope": 6918,
                  "src": "329:70:42",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 6919,
              "src": "159:242:42"
            }
          ],
          "src": "37:365:42"
        },
        "id": 42
      },
      "contracts/interfaces/IReserveInterestRateStrategy.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IReserveInterestRateStrategy.sol",
          "exportedSymbols": {
            "IReserveInterestRateStrategy": [
              6978
            ]
          },
          "id": 6979,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 6920,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:43"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 6921,
                "nodeType": "StructuredDocumentation",
                "src": "62:141:43",
                "text": " @title IReserveInterestRateStrategyInterface interface\n @dev Interface for the calculation of the interest rates\n @author Aave"
              },
              "fullyImplemented": false,
              "id": 6978,
              "linearizedBaseContracts": [
                6978
              ],
              "name": "IReserveInterestRateStrategy",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "b2589544",
                  "id": 6926,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "baseVariableBorrowRate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6922,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "278:2:43"
                  },
                  "returnParameters": {
                    "id": 6925,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6924,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6926,
                        "src": "304:7:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6923,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "304:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "303:9:43"
                  },
                  "scope": 6978,
                  "src": "247:66:43",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "80031e37",
                  "id": 6931,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getMaxVariableBorrowRate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6927,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "350:2:43"
                  },
                  "returnParameters": {
                    "id": 6930,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6929,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6931,
                        "src": "376:7:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6928,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "376:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "375:9:43"
                  },
                  "scope": 6978,
                  "src": "317:68:43",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "9584df28",
                  "id": 6952,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "calculateInterestRates",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6944,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6933,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6952,
                        "src": "426:15:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6932,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "426:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6935,
                        "mutability": "mutable",
                        "name": "availableLiquidity",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6952,
                        "src": "447:26:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6934,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "447:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6937,
                        "mutability": "mutable",
                        "name": "totalStableDebt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6952,
                        "src": "479:23:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6936,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "479:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6939,
                        "mutability": "mutable",
                        "name": "totalVariableDebt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6952,
                        "src": "508:25:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6938,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "508:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6941,
                        "mutability": "mutable",
                        "name": "averageStableBorrowRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6952,
                        "src": "539:31:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6940,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "539:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6943,
                        "mutability": "mutable",
                        "name": "reserveFactor",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6952,
                        "src": "576:21:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6942,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "576:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "420:181:43"
                  },
                  "returnParameters": {
                    "id": 6951,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6946,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6952,
                        "src": "644:7:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6945,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "644:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6948,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6952,
                        "src": "659:7:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6947,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "659:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6950,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6952,
                        "src": "674:7:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6949,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "674:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "636:51:43"
                  },
                  "scope": 6978,
                  "src": "389:299:43",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "29db497d",
                  "id": 6977,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "calculateInterestRates",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6969,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6954,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6977,
                        "src": "729:15:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6953,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "729:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6956,
                        "mutability": "mutable",
                        "name": "aToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6977,
                        "src": "750:14:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6955,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "750:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6958,
                        "mutability": "mutable",
                        "name": "liquidityAdded",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6977,
                        "src": "770:22:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6957,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "770:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6960,
                        "mutability": "mutable",
                        "name": "liquidityTaken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6977,
                        "src": "798:22:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6959,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "798:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6962,
                        "mutability": "mutable",
                        "name": "totalStableDebt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6977,
                        "src": "826:23:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6961,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "826:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6964,
                        "mutability": "mutable",
                        "name": "totalVariableDebt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6977,
                        "src": "855:25:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6963,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "855:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6966,
                        "mutability": "mutable",
                        "name": "averageStableBorrowRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6977,
                        "src": "886:31:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6965,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "886:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6968,
                        "mutability": "mutable",
                        "name": "reserveFactor",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6977,
                        "src": "923:21:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6967,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "923:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "723:225:43"
                  },
                  "returnParameters": {
                    "id": 6976,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6971,
                        "mutability": "mutable",
                        "name": "liquidityRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6977,
                        "src": "991:21:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6970,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "991:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6973,
                        "mutability": "mutable",
                        "name": "stableBorrowRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6977,
                        "src": "1020:24:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6972,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1020:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6975,
                        "mutability": "mutable",
                        "name": "variableBorrowRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6977,
                        "src": "1052:26:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6974,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1052:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "983:101:43"
                  },
                  "scope": 6978,
                  "src": "692:393:43",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 6979,
              "src": "204:883:43"
            }
          ],
          "src": "37:1051:43"
        },
        "id": 43
      },
      "contracts/interfaces/IScaledBalanceToken.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IScaledBalanceToken.sol",
          "exportedSymbols": {
            "IScaledBalanceToken": [
              7005
            ]
          },
          "id": 7006,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 6980,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:44"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 7005,
              "linearizedBaseContracts": [
                7005
              ],
              "name": "IScaledBalanceToken",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": {
                    "id": 6981,
                    "nodeType": "StructuredDocumentation",
                    "src": "96:296:44",
                    "text": " @dev Returns the scaled balance of the user. The scaled balance is the sum of all the\n updated stored balance divided by the reserve's liquidity index at the moment of the update\n @param user The user whose balance is calculated\n @return The scaled balance of the user*"
                  },
                  "functionSelector": "1da24f3e",
                  "id": 6988,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "scaledBalanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6984,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6983,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6988,
                        "src": "420:12:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6982,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "420:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "419:14:44"
                  },
                  "returnParameters": {
                    "id": 6987,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6986,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6988,
                        "src": "457:7:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6985,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "457:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "456:9:44"
                  },
                  "scope": 7005,
                  "src": "395:71:44",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 6989,
                    "nodeType": "StructuredDocumentation",
                    "src": "470:233:44",
                    "text": " @dev Returns the scaled balance of the user and the scaled total supply.\n @param user The address of the user\n @return The scaled balance of the user\n @return The scaled balance and the scaled total supply*"
                  },
                  "functionSelector": "0afbcdc9",
                  "id": 6998,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getScaledUserBalanceAndSupply",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 6992,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6991,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6998,
                        "src": "745:12:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6990,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "745:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "744:14:44"
                  },
                  "returnParameters": {
                    "id": 6997,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6994,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6998,
                        "src": "782:7:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6993,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "782:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6996,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6998,
                        "src": "791:7:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6995,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "791:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "781:18:44"
                  },
                  "scope": 7005,
                  "src": "706:94:44",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 6999,
                    "nodeType": "StructuredDocumentation",
                    "src": "804:144:44",
                    "text": " @dev Returns the scaled total supply of the variable debt token. Represents sum(debt/index)\n @return The scaled total supply*"
                  },
                  "functionSelector": "b1bf962d",
                  "id": 7004,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "scaledTotalSupply",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7000,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "977:2:44"
                  },
                  "returnParameters": {
                    "id": 7003,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7002,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7004,
                        "src": "1003:7:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7001,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1003:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1002:9:44"
                  },
                  "scope": 7005,
                  "src": "951:61:44",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 7006,
              "src": "62:952:44"
            }
          ],
          "src": "37:978:44"
        },
        "id": 44
      },
      "contracts/interfaces/IStableDebtToken.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IStableDebtToken.sol",
          "exportedSymbols": {
            "IStableDebtToken": [
              7133
            ]
          },
          "id": 7134,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7007,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:45"
            },
            {
              "absolutePath": "contracts/interfaces/IInitializableDebtToken.sol",
              "file": "./IInitializableDebtToken.sol",
              "id": 7009,
              "nodeType": "ImportDirective",
              "scope": 7134,
              "sourceUnit": 6059,
              "src": "62:70:45",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 7008,
                    "name": "IInitializableDebtToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:23:45",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IAaveIncentivesController.sol",
              "file": "./IAaveIncentivesController.sol",
              "id": 7011,
              "nodeType": "ImportDirective",
              "scope": 7134,
              "sourceUnit": 5823,
              "src": "133:74:45",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 7010,
                    "name": "IAaveIncentivesController",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "141:25:45",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 7013,
                    "name": "IInitializableDebtToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6058,
                    "src": "412:23:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IInitializableDebtToken_$6058",
                      "typeString": "contract IInitializableDebtToken"
                    }
                  },
                  "id": 7014,
                  "nodeType": "InheritanceSpecifier",
                  "src": "412:23:45"
                }
              ],
              "contractDependencies": [
                6058
              ],
              "contractKind": "interface",
              "documentation": {
                "id": 7012,
                "nodeType": "StructuredDocumentation",
                "src": "209:171:45",
                "text": " @title IStableDebtToken\n @notice Defines the interface for the stable debt token\n @dev It does not inherit from IERC20 to save in code size\n @author Aave*"
              },
              "fullyImplemented": false,
              "id": 7133,
              "linearizedBaseContracts": [
                7133,
                6058
              ],
              "name": "IStableDebtToken",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 7015,
                    "nodeType": "StructuredDocumentation",
                    "src": "440:588:45",
                    "text": " @dev Emitted when new stable debt is minted\n @param user The address of the user who triggered the minting\n @param onBehalfOf The recipient of stable debt tokens\n @param amount The amount minted\n @param currentBalance The current balance of the user\n @param balanceIncrease The increase in balance since the last action of the user\n @param newRate The rate of the debt after the minting\n @param avgStableRate The new average stable rate after the minting\n @param newTotalSupply The new total supply of the stable debt token after the action*"
                  },
                  "id": 7033,
                  "name": "Mint",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 7032,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7017,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7033,
                        "src": "1047:20:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7016,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1047:7:45",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7019,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "onBehalfOf",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7033,
                        "src": "1073:26:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7018,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1073:7:45",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7021,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7033,
                        "src": "1105:14:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7020,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1105:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7023,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "currentBalance",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7033,
                        "src": "1125:22:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7022,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1125:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7025,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "balanceIncrease",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7033,
                        "src": "1153:23:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7024,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1153:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7027,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "newRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7033,
                        "src": "1182:15:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7026,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1182:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7029,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "avgStableRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7033,
                        "src": "1203:21:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7028,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1203:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7031,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "newTotalSupply",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7033,
                        "src": "1230:22:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7030,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1230:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1041:215:45"
                  },
                  "src": "1031:226:45"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 7034,
                    "nodeType": "StructuredDocumentation",
                    "src": "1261:454:45",
                    "text": " @dev Emitted when new stable debt is burned\n @param user The address of the user\n @param amount The amount being burned\n @param currentBalance The current balance of the user\n @param balanceIncrease The the increase in balance since the last action of the user\n @param avgStableRate The new average stable rate after the burning\n @param newTotalSupply The new total supply of the stable debt token after the action*"
                  },
                  "id": 7048,
                  "name": "Burn",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 7047,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7036,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7048,
                        "src": "1734:20:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7035,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1734:7:45",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7038,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7048,
                        "src": "1760:14:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7037,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1760:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7040,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "currentBalance",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7048,
                        "src": "1780:22:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7039,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1780:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7042,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "balanceIncrease",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7048,
                        "src": "1808:23:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7041,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1808:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7044,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "avgStableRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7048,
                        "src": "1837:21:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7043,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1837:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7046,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "newTotalSupply",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7048,
                        "src": "1864:22:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7045,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1864:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1728:162:45"
                  },
                  "src": "1718:173:45"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7049,
                    "nodeType": "StructuredDocumentation",
                    "src": "1895:504:45",
                    "text": " @dev Mints debt token to the `onBehalfOf` address.\n - The resulting rate is the weighted average between the rate of the new debt\n and the rate of the previous debt\n @param user The address receiving the borrowed underlying, being the delegatee in case\n of credit delegate, or same as `onBehalfOf` otherwise\n @param onBehalfOf The address receiving the debt tokens\n @param amount The amount of debt tokens to mint\n @param rate The rate of the debt being minted*"
                  },
                  "functionSelector": "b3f1c93d",
                  "id": 7062,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7058,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7051,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7062,
                        "src": "2421:12:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7050,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2421:7:45",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7053,
                        "mutability": "mutable",
                        "name": "onBehalfOf",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7062,
                        "src": "2439:18:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7052,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2439:7:45",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7055,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7062,
                        "src": "2463:14:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7054,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2463:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7057,
                        "mutability": "mutable",
                        "name": "rate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7062,
                        "src": "2483:12:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7056,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2483:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2415:84:45"
                  },
                  "returnParameters": {
                    "id": 7061,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7060,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7062,
                        "src": "2518:4:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7059,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2518:4:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2517:6:45"
                  },
                  "scope": 7133,
                  "src": "2402:122:45",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7063,
                    "nodeType": "StructuredDocumentation",
                    "src": "2528:288:45",
                    "text": " @dev Burns debt of `user`\n - The resulting rate is the weighted average between the rate of the new debt\n and the rate of the previous debt\n @param user The address of the user getting his debt burned\n @param amount The amount of debt tokens getting burned*"
                  },
                  "functionSelector": "9dc29fac",
                  "id": 7070,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7068,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7065,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7070,
                        "src": "2833:12:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7064,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2833:7:45",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7067,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7070,
                        "src": "2847:14:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7066,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2847:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2832:30:45"
                  },
                  "returnParameters": {
                    "id": 7069,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2871:0:45"
                  },
                  "scope": 7133,
                  "src": "2819:53:45",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7071,
                    "nodeType": "StructuredDocumentation",
                    "src": "2876:112:45",
                    "text": " @dev Returns the average rate of all the stable rate loans.\n @return The average stable rate*"
                  },
                  "functionSelector": "90f6fcf2",
                  "id": 7076,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAverageStableRate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7072,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3020:2:45"
                  },
                  "returnParameters": {
                    "id": 7075,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7074,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7076,
                        "src": "3046:7:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7073,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3046:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3045:9:45"
                  },
                  "scope": 7133,
                  "src": "2991:64:45",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7077,
                    "nodeType": "StructuredDocumentation",
                    "src": "3059:102:45",
                    "text": " @dev Returns the stable rate of the user debt\n @return The stable rate of the user*"
                  },
                  "functionSelector": "e78c9b3b",
                  "id": 7084,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUserStableRate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7080,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7079,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7084,
                        "src": "3191:12:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7078,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3191:7:45",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3190:14:45"
                  },
                  "returnParameters": {
                    "id": 7083,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7082,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7084,
                        "src": "3228:7:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7081,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3228:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3227:9:45"
                  },
                  "scope": 7133,
                  "src": "3164:73:45",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7085,
                    "nodeType": "StructuredDocumentation",
                    "src": "3241:100:45",
                    "text": " @dev Returns the timestamp of the last update of the user\n @return The timestamp*"
                  },
                  "functionSelector": "79ce6b8c",
                  "id": 7092,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUserLastUpdated",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7088,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7087,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7092,
                        "src": "3372:12:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7086,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3372:7:45",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3371:14:45"
                  },
                  "returnParameters": {
                    "id": 7091,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7090,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7092,
                        "src": "3409:6:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        },
                        "typeName": {
                          "id": 7089,
                          "name": "uint40",
                          "nodeType": "ElementaryTypeName",
                          "src": "3409:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3408:8:45"
                  },
                  "scope": 7133,
                  "src": "3344:73:45",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7093,
                    "nodeType": "StructuredDocumentation",
                    "src": "3421:88:45",
                    "text": " @dev Returns the principal, the total supply and the average stable rate*"
                  },
                  "functionSelector": "79774338",
                  "id": 7104,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSupplyData",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7094,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3534:2:45"
                  },
                  "returnParameters": {
                    "id": 7103,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7096,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7104,
                        "src": "3579:7:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7095,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3579:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7098,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7104,
                        "src": "3594:7:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7097,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3594:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7100,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7104,
                        "src": "3609:7:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7099,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3609:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7102,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7104,
                        "src": "3624:6:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        },
                        "typeName": {
                          "id": 7101,
                          "name": "uint40",
                          "nodeType": "ElementaryTypeName",
                          "src": "3624:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3571:65:45"
                  },
                  "scope": 7133,
                  "src": "3512:125:45",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7105,
                    "nodeType": "StructuredDocumentation",
                    "src": "3641:108:45",
                    "text": " @dev Returns the timestamp of the last update of the total supply\n @return The timestamp*"
                  },
                  "functionSelector": "e7484890",
                  "id": 7110,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTotalSupplyLastUpdated",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7106,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3786:2:45"
                  },
                  "returnParameters": {
                    "id": 7109,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7108,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7110,
                        "src": "3812:6:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        },
                        "typeName": {
                          "id": 7107,
                          "name": "uint40",
                          "nodeType": "ElementaryTypeName",
                          "src": "3812:6:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3811:8:45"
                  },
                  "scope": 7133,
                  "src": "3752:68:45",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7111,
                    "nodeType": "StructuredDocumentation",
                    "src": "3824:73:45",
                    "text": " @dev Returns the total supply and the average stable rate*"
                  },
                  "functionSelector": "f731e9be",
                  "id": 7118,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTotalSupplyAndAvgRate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7112,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3933:2:45"
                  },
                  "returnParameters": {
                    "id": 7117,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7114,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7118,
                        "src": "3959:7:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7113,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3959:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7116,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7118,
                        "src": "3968:7:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7115,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3968:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3958:18:45"
                  },
                  "scope": 7133,
                  "src": "3900:77:45",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7119,
                    "nodeType": "StructuredDocumentation",
                    "src": "3981:141:45",
                    "text": " @dev Returns the principal debt balance of the user\n @return The debt balance of the user since the last burn/mint action*"
                  },
                  "functionSelector": "c634dfaa",
                  "id": 7126,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "principalBalanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7122,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7121,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7126,
                        "src": "4153:12:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7120,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4153:7:45",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4152:14:45"
                  },
                  "returnParameters": {
                    "id": 7125,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7124,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7126,
                        "src": "4190:7:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7123,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4190:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4189:9:45"
                  },
                  "scope": 7133,
                  "src": "4125:74:45",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7127,
                    "nodeType": "StructuredDocumentation",
                    "src": "4203:78:45",
                    "text": " @dev Returns the address of the incentives controller contract*"
                  },
                  "functionSelector": "75d26413",
                  "id": 7132,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getIncentivesController",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7128,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4316:2:45"
                  },
                  "returnParameters": {
                    "id": 7131,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7130,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7132,
                        "src": "4342:25:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                          "typeString": "contract IAaveIncentivesController"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 7129,
                          "name": "IAaveIncentivesController",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5822,
                          "src": "4342:25:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4341:27:45"
                  },
                  "scope": 7133,
                  "src": "4284:85:45",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 7134,
              "src": "382:3989:45"
            }
          ],
          "src": "37:4335:45"
        },
        "id": 45
      },
      "contracts/interfaces/IStaticATokenLM.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IStaticATokenLM.sol",
          "exportedSymbols": {
            "IStaticATokenLM": [
              7381
            ]
          },
          "id": 7382,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7135,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:46"
            },
            {
              "id": 7136,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "61:33:46"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
              "file": "../dependencies/openzeppelin/contracts/IERC20.sol",
              "id": 7138,
              "nodeType": "ImportDirective",
              "scope": 7382,
              "sourceUnit": 4013,
              "src": "96:73:46",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 7137,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "104:6:46",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPool.sol",
              "file": "./ILendingPool.sol",
              "id": 7140,
              "nodeType": "ImportDirective",
              "scope": 7382,
              "sourceUnit": 6467,
              "src": "170:48:46",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 7139,
                    "name": "ILendingPool",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "178:12:46",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IAaveIncentivesController.sol",
              "file": "./IAaveIncentivesController.sol",
              "id": 7142,
              "nodeType": "ImportDirective",
              "scope": 7382,
              "sourceUnit": 5823,
              "src": "219:74:46",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 7141,
                    "name": "IAaveIncentivesController",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "227:25:46",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IInitializableStaticATokenLM.sol",
              "file": "./IInitializableStaticATokenLM.sol",
              "id": 7144,
              "nodeType": "ImportDirective",
              "scope": 7382,
              "sourceUnit": 6092,
              "src": "294:80:46",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 7143,
                    "name": "IInitializableStaticATokenLM",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "302:28:46",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 7145,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4012,
                    "src": "405:6:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$4012",
                      "typeString": "contract IERC20"
                    }
                  },
                  "id": 7146,
                  "nodeType": "InheritanceSpecifier",
                  "src": "405:6:46"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 7147,
                    "name": "IInitializableStaticATokenLM",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6091,
                    "src": "413:28:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IInitializableStaticATokenLM_$6091",
                      "typeString": "contract IInitializableStaticATokenLM"
                    }
                  },
                  "id": 7148,
                  "nodeType": "InheritanceSpecifier",
                  "src": "413:28:46"
                }
              ],
              "contractDependencies": [
                4012,
                6091
              ],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 7381,
              "linearizedBaseContracts": [
                7381,
                6091,
                4012
              ],
              "name": "IStaticATokenLM",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "IStaticATokenLM.SignatureParams",
                  "id": 7155,
                  "members": [
                    {
                      "constant": false,
                      "id": 7150,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7155,
                      "src": "475:7:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 7149,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "475:5:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7152,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7155,
                      "src": "488:9:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 7151,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "488:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7154,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7155,
                      "src": "503:9:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 7153,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "503:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "SignatureParams",
                  "nodeType": "StructDefinition",
                  "scope": 7381,
                  "src": "446:71:46",
                  "visibility": "public"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7156,
                    "nodeType": "StructuredDocumentation",
                    "src": "521:702:46",
                    "text": " @notice Deposits `ASSET` in the Aave protocol and mints static aTokens to msg.sender\n @param recipient The address that will receive the static aTokens\n @param amount The amount of underlying `ASSET` to deposit (e.g. deposit of 100 USDC)\n @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   0 if the action is executed directly by the user, without any middle-man\n @param fromUnderlying bool\n - `true` if the msg.sender comes with underlying tokens (e.g. USDC)\n - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\n @return uint256 The amount of StaticAToken minted, static balance*"
                  },
                  "functionSelector": "2f2cab87",
                  "id": 7169,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7165,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7158,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7169,
                        "src": "1248:17:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7157,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1248:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7160,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7169,
                        "src": "1271:14:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7159,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1271:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7162,
                        "mutability": "mutable",
                        "name": "referralCode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7169,
                        "src": "1291:19:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 7161,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "1291:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7164,
                        "mutability": "mutable",
                        "name": "fromUnderlying",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7169,
                        "src": "1316:19:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7163,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1316:4:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1242:97:46"
                  },
                  "returnParameters": {
                    "id": 7168,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7167,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7169,
                        "src": "1358:7:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7166,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1358:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1357:9:46"
                  },
                  "scope": 7381,
                  "src": "1226:141:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7170,
                    "nodeType": "StructuredDocumentation",
                    "src": "1371:610:46",
                    "text": " @notice Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\n @param recipient The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\n @param amount The amount to withdraw, in static balance of StaticAToken\n @param toUnderlying bool\n - `true` for the recipient to get underlying tokens (e.g. USDC)\n - `false` for the recipient to get aTokens (e.g. aUSDC)\n @return amountToBurn: StaticATokens burnt, static balance\n @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance*"
                  },
                  "functionSelector": "ead5d359",
                  "id": 7183,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7177,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7172,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7183,
                        "src": "2007:17:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7171,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2007:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7174,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7183,
                        "src": "2030:14:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7173,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2030:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7176,
                        "mutability": "mutable",
                        "name": "toUnderlying",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7183,
                        "src": "2050:17:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7175,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2050:4:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2001:70:46"
                  },
                  "returnParameters": {
                    "id": 7182,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7179,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7183,
                        "src": "2090:7:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7178,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2090:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7181,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7183,
                        "src": "2099:7:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7180,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2099:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2089:18:46"
                  },
                  "scope": 7381,
                  "src": "1984:124:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7184,
                    "nodeType": "StructuredDocumentation",
                    "src": "2112:622:46",
                    "text": " @notice Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\n @param recipient The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\n @param amount The amount to withdraw, in dynamic balance of aToken/underlying asset\n @param toUnderlying bool\n - `true` for the recipient to get underlying tokens (e.g. USDC)\n - `false` for the recipient to get aTokens (e.g. aUSDC)\n @return amountToBurn: StaticATokens burnt, static balance\n @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance*"
                  },
                  "functionSelector": "288587ce",
                  "id": 7197,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawDynamicAmount",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7191,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7186,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7197,
                        "src": "2773:17:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7185,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2773:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7188,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7197,
                        "src": "2796:14:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7187,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2796:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7190,
                        "mutability": "mutable",
                        "name": "toUnderlying",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7197,
                        "src": "2816:17:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7189,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2816:4:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2767:70:46"
                  },
                  "returnParameters": {
                    "id": 7196,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7193,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7197,
                        "src": "2856:7:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7192,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2856:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7195,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7197,
                        "src": "2865:7:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7194,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2865:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2855:18:46"
                  },
                  "scope": 7381,
                  "src": "2737:137:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7198,
                    "nodeType": "StructuredDocumentation",
                    "src": "2878:433:46",
                    "text": " @notice Implements the permit function as for\n https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n @param owner The owner of the funds\n @param spender The spender\n @param value The amount\n @param deadline The deadline timestamp, type(uint256).max for max deadline\n @param v Signature param\n @param s Signature param\n @param r Signature param"
                  },
                  "functionSelector": "d505accf",
                  "id": 7215,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "permit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7213,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7200,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7215,
                        "src": "3335:13:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7199,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3335:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7202,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7215,
                        "src": "3354:15:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7201,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3354:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7204,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7215,
                        "src": "3375:13:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7203,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3375:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7206,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7215,
                        "src": "3394:16:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7205,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3394:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7208,
                        "mutability": "mutable",
                        "name": "v",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7215,
                        "src": "3416:7:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 7207,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "3416:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7210,
                        "mutability": "mutable",
                        "name": "r",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7215,
                        "src": "3429:9:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 7209,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3429:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7212,
                        "mutability": "mutable",
                        "name": "s",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7215,
                        "src": "3444:9:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 7211,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3444:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3329:128:46"
                  },
                  "returnParameters": {
                    "id": 7214,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3466:0:46"
                  },
                  "scope": 7381,
                  "src": "3314:153:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7216,
                    "nodeType": "StructuredDocumentation",
                    "src": "3471:974:46",
                    "text": " @notice Allows to deposit on Aave via meta-transaction\n https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n @param depositor Address from which the funds to deposit are going to be pulled\n @param recipient Address that will receive the staticATokens, in the average case, same as the `depositor`\n @param value The amount to deposit\n @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   0 if the action is executed directly by the user, without any middle-man\n @param fromUnderlying bool\n - `true` if the msg.sender comes with underlying tokens (e.g. USDC)\n - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\n @param deadline The deadline timestamp, type(uint256).max for max deadline\n @param sigParams Signature params: v,r,s\n @return uint256 The amount of StaticAToken minted, static balance"
                  },
                  "functionSelector": "c485852b",
                  "id": 7235,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "metaDeposit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7231,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7218,
                        "mutability": "mutable",
                        "name": "depositor",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7235,
                        "src": "4474:17:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7217,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4474:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7220,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7235,
                        "src": "4497:17:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7219,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4497:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7222,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7235,
                        "src": "4520:13:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7221,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4520:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7224,
                        "mutability": "mutable",
                        "name": "referralCode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7235,
                        "src": "4539:19:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 7223,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "4539:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7226,
                        "mutability": "mutable",
                        "name": "fromUnderlying",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7235,
                        "src": "4564:19:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7225,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4564:4:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7228,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7235,
                        "src": "4589:16:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7227,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4589:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7230,
                        "mutability": "mutable",
                        "name": "sigParams",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7235,
                        "src": "4611:34:46",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SignatureParams_$7155_calldata_ptr",
                          "typeString": "struct IStaticATokenLM.SignatureParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 7229,
                          "name": "SignatureParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 7155,
                          "src": "4611:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SignatureParams_$7155_storage_ptr",
                            "typeString": "struct IStaticATokenLM.SignatureParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4468:181:46"
                  },
                  "returnParameters": {
                    "id": 7234,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7233,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7235,
                        "src": "4668:7:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7232,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4668:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4667:9:46"
                  },
                  "scope": 7381,
                  "src": "4448:229:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7236,
                    "nodeType": "StructuredDocumentation",
                    "src": "4681:953:46",
                    "text": " @notice Allows to withdraw from Aave via meta-transaction\n https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n @param owner Address owning the staticATokens\n @param recipient Address that will receive the underlying withdrawn from Aave\n @param staticAmount The amount of staticAToken to withdraw. If > 0, `dynamicAmount` needs to be 0\n @param dynamicAmount The amount of underlying/aToken to withdraw. If > 0, `staticAmount` needs to be 0\n @param toUnderlying bool\n - `true` for the recipient to get underlying tokens (e.g. USDC)\n - `false` for the recipient to get aTokens (e.g. aUSDC)\n @param deadline The deadline timestamp, type(uint256).max for max deadline\n @param sigParams Signature params: v,r,s\n @return amountToBurn: StaticATokens burnt, static balance\n @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance"
                  },
                  "functionSelector": "60266557",
                  "id": 7257,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "metaWithdraw",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7251,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7238,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7257,
                        "src": "5664:13:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7237,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5664:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7240,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7257,
                        "src": "5683:17:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7239,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5683:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7242,
                        "mutability": "mutable",
                        "name": "staticAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7257,
                        "src": "5706:20:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7241,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5706:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7244,
                        "mutability": "mutable",
                        "name": "dynamicAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7257,
                        "src": "5732:21:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7243,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5732:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7246,
                        "mutability": "mutable",
                        "name": "toUnderlying",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7257,
                        "src": "5759:17:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7245,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5759:4:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7248,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7257,
                        "src": "5782:16:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7247,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5782:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7250,
                        "mutability": "mutable",
                        "name": "sigParams",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7257,
                        "src": "5804:34:46",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SignatureParams_$7155_calldata_ptr",
                          "typeString": "struct IStaticATokenLM.SignatureParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 7249,
                          "name": "SignatureParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 7155,
                          "src": "5804:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SignatureParams_$7155_storage_ptr",
                            "typeString": "struct IStaticATokenLM.SignatureParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5658:184:46"
                  },
                  "returnParameters": {
                    "id": 7256,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7253,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7257,
                        "src": "5861:7:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7252,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5861:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7255,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7257,
                        "src": "5870:7:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7254,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5870:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5860:18:46"
                  },
                  "scope": 7381,
                  "src": "5637:242:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7258,
                    "nodeType": "StructuredDocumentation",
                    "src": "5883:198:46",
                    "text": " @notice Utility method to get the current aToken balance of an user, from his staticAToken balance\n @param account The address of the user\n @return uint256 The aToken balance*"
                  },
                  "functionSelector": "44b68c3f",
                  "id": 7265,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "dynamicBalanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7261,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7260,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7265,
                        "src": "6110:15:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7259,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6110:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6109:17:46"
                  },
                  "returnParameters": {
                    "id": 7264,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7263,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7265,
                        "src": "6150:7:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7262,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6150:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6149:9:46"
                  },
                  "scope": 7381,
                  "src": "6084:75:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7266,
                    "nodeType": "StructuredDocumentation",
                    "src": "6163:240:46",
                    "text": " @notice Converts a static amount (scaled balance on aToken) to the aToken/underlying value,\n using the current liquidity index on Aave\n @param amount The amount to convert from\n @return uint256 The dynamic amount*"
                  },
                  "functionSelector": "f57d0b40",
                  "id": 7273,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "staticToDynamicAmount",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7269,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7268,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7273,
                        "src": "6437:14:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7267,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6437:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6436:16:46"
                  },
                  "returnParameters": {
                    "id": 7272,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7271,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7273,
                        "src": "6476:7:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7270,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6476:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6475:9:46"
                  },
                  "scope": 7381,
                  "src": "6406:79:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7274,
                    "nodeType": "StructuredDocumentation",
                    "src": "6489:275:46",
                    "text": " @notice Converts an aToken or underlying amount to the what it is denominated on the aToken as\n scaled balance, function of the principal and the liquidity index\n @param amount The amount to convert from\n @return uint256 The static (scaled) amount*"
                  },
                  "functionSelector": "36a5a6d6",
                  "id": 7281,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "dynamicToStaticAmount",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7277,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7276,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7281,
                        "src": "6798:14:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7275,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6798:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6797:16:46"
                  },
                  "returnParameters": {
                    "id": 7280,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7279,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7281,
                        "src": "6837:7:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7278,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6837:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6836:9:46"
                  },
                  "scope": 7381,
                  "src": "6767:79:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7282,
                    "nodeType": "StructuredDocumentation",
                    "src": "6850:202:46",
                    "text": " @notice Returns the Aave liquidity index of the underlying aToken, denominated rate here\n as it can be considered as an ever-increasing exchange rate\n @return The liquidity index*"
                  },
                  "functionSelector": "2c4e722e",
                  "id": 7287,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "rate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7283,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7068:2:46"
                  },
                  "returnParameters": {
                    "id": 7286,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7285,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7287,
                        "src": "7094:7:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7284,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7094:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7093:9:46"
                  },
                  "scope": 7381,
                  "src": "7055:48:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7288,
                    "nodeType": "StructuredDocumentation",
                    "src": "7107:166:46",
                    "text": " @notice Function to return a dynamic domain separator, in order to be compatible with forks changing chainId\n @return bytes32 The domain separator*"
                  },
                  "functionSelector": "ed24911d",
                  "id": 7293,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getDomainSeparator",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7289,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7303:2:46"
                  },
                  "returnParameters": {
                    "id": 7292,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7291,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7293,
                        "src": "7329:7:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 7290,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7329:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7328:9:46"
                  },
                  "scope": 7381,
                  "src": "7276:62:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7294,
                    "nodeType": "StructuredDocumentation",
                    "src": "7342:148:46",
                    "text": " @notice Claims rewards from `INCENTIVES_CONTROLLER` and updates internal accounting of rewards.\n @return uint256 Amount collected"
                  },
                  "functionSelector": "3eb2eba6",
                  "id": 7299,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "collectAndUpdateRewards",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7295,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7525:2:46"
                  },
                  "returnParameters": {
                    "id": 7298,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7297,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7299,
                        "src": "7546:7:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7296,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7546:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7545:9:46"
                  },
                  "scope": 7381,
                  "src": "7493:62:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7300,
                    "nodeType": "StructuredDocumentation",
                    "src": "7559:278:46",
                    "text": " @notice Claim rewards on behalf of a user and send them to a receiver\n @dev Only callable by if sender is onBehalfOf or sender is approved claimer\n @param onBehalfOf The address to claim on behalf of\n @param receiver The address to receive the rewards"
                  },
                  "functionSelector": "8ba2855d",
                  "id": 7307,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "claimRewardsOnBehalf",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7305,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7302,
                        "mutability": "mutable",
                        "name": "onBehalfOf",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7307,
                        "src": "7870:18:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7301,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7870:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7304,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7307,
                        "src": "7890:16:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7303,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7890:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7869:38:46"
                  },
                  "returnParameters": {
                    "id": 7306,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7916:0:46"
                  },
                  "scope": 7381,
                  "src": "7840:77:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7308,
                    "nodeType": "StructuredDocumentation",
                    "src": "7921:120:46",
                    "text": " @notice Claim rewards and send them to a receiver\n @param receiver The address to receive the rewards"
                  },
                  "functionSelector": "ef5cfb8c",
                  "id": 7313,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "claimRewards",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7311,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7310,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7313,
                        "src": "8066:16:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7309,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8066:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8065:18:46"
                  },
                  "returnParameters": {
                    "id": 7312,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8092:0:46"
                  },
                  "scope": 7381,
                  "src": "8044:49:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7314,
                    "nodeType": "StructuredDocumentation",
                    "src": "8097:36:46",
                    "text": " @notice Claim rewards"
                  },
                  "functionSelector": "a868dd5d",
                  "id": 7317,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "claimRewardsToSelf",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7315,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8163:2:46"
                  },
                  "returnParameters": {
                    "id": 7316,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8174:0:46"
                  },
                  "scope": 7381,
                  "src": "8136:39:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7318,
                    "nodeType": "StructuredDocumentation",
                    "src": "8179:155:46",
                    "text": " @notice Get the total claimable rewards of the contract.\n @return The current balance + pending rewards from the `_incentivesController`"
                  },
                  "functionSelector": "7f372cff",
                  "id": 7323,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTotalClaimableRewards",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7319,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8370:2:46"
                  },
                  "returnParameters": {
                    "id": 7322,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7321,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7323,
                        "src": "8396:7:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7320,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8396:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8395:9:46"
                  },
                  "scope": 7381,
                  "src": "8337:68:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7324,
                    "nodeType": "StructuredDocumentation",
                    "src": "8409:165:46",
                    "text": " @notice Get the total claimable rewards for a user in WAD\n @param user The address of the user\n @return The claimable amount of rewards in WAD"
                  },
                  "functionSelector": "308e401e",
                  "id": 7331,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getClaimableRewards",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7327,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7326,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7331,
                        "src": "8606:12:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7325,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8606:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8605:14:46"
                  },
                  "returnParameters": {
                    "id": 7330,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7329,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7331,
                        "src": "8643:7:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7328,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8643:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8642:9:46"
                  },
                  "scope": 7381,
                  "src": "8577:75:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7332,
                    "nodeType": "StructuredDocumentation",
                    "src": "8656:155:46",
                    "text": " @notice The unclaimed rewards for a user in WAD\n @param user The address of the user\n @return The unclaimed amount of rewards in WAD"
                  },
                  "functionSelector": "69a69e29",
                  "id": 7339,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUnclaimedRewards",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7335,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7334,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7339,
                        "src": "8843:12:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7333,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8843:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8842:14:46"
                  },
                  "returnParameters": {
                    "id": 7338,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7337,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7339,
                        "src": "8880:7:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7336,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8880:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8879:9:46"
                  },
                  "scope": 7381,
                  "src": "8814:75:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7340,
                    "nodeType": "StructuredDocumentation",
                    "src": "8893:117:46",
                    "text": " @notice The underlying asset reward index in RAY\n @return The underlying asset reward index in RAY"
                  },
                  "functionSelector": "189956a2",
                  "id": 7345,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getCurrentRewardsIndex",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7341,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9044:2:46"
                  },
                  "returnParameters": {
                    "id": 7344,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7343,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7345,
                        "src": "9070:7:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7342,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9070:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9069:9:46"
                  },
                  "scope": 7381,
                  "src": "9013:66:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "b4dcfc77",
                  "id": 7350,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "LENDING_POOL",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7346,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9104:2:46"
                  },
                  "returnParameters": {
                    "id": 7349,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7348,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7350,
                        "src": "9130:12:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPool_$6466",
                          "typeString": "contract ILendingPool"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 7347,
                          "name": "ILendingPool",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6466,
                          "src": "9130:12:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9129:14:46"
                  },
                  "scope": 7381,
                  "src": "9083:61:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "10d0ab22",
                  "id": 7355,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "INCENTIVES_CONTROLLER",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7351,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9178:2:46"
                  },
                  "returnParameters": {
                    "id": 7354,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7353,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7355,
                        "src": "9204:25:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                          "typeString": "contract IAaveIncentivesController"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 7352,
                          "name": "IAaveIncentivesController",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5822,
                          "src": "9204:25:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9203:27:46"
                  },
                  "scope": 7381,
                  "src": "9148:83:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "51c0e061",
                  "id": 7360,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ATOKEN",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7356,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9250:2:46"
                  },
                  "returnParameters": {
                    "id": 7359,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7358,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7360,
                        "src": "9276:6:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$4012",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 7357,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4012,
                          "src": "9276:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$4012",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9275:8:46"
                  },
                  "scope": 7381,
                  "src": "9235:49:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "4800d97f",
                  "id": 7365,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ASSET",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7361,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9302:2:46"
                  },
                  "returnParameters": {
                    "id": 7364,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7363,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7365,
                        "src": "9328:6:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$4012",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 7362,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4012,
                          "src": "9328:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$4012",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9327:8:46"
                  },
                  "scope": 7381,
                  "src": "9288:48:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "99248ea7",
                  "id": 7370,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "REWARD_TOKEN",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7366,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9361:2:46"
                  },
                  "returnParameters": {
                    "id": 7369,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7368,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7370,
                        "src": "9387:6:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$4012",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 7367,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4012,
                          "src": "9387:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$4012",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9386:8:46"
                  },
                  "scope": 7381,
                  "src": "9340:55:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "b16a19de",
                  "id": 7375,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "UNDERLYING_ASSET_ADDRESS",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7371,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9432:2:46"
                  },
                  "returnParameters": {
                    "id": 7374,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7373,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7375,
                        "src": "9458:7:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7372,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9458:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9457:9:46"
                  },
                  "scope": 7381,
                  "src": "9399:68:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "75d26413",
                  "id": 7380,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getIncentivesController",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7376,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9503:2:46"
                  },
                  "returnParameters": {
                    "id": 7379,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7378,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7380,
                        "src": "9529:25:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                          "typeString": "contract IAaveIncentivesController"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 7377,
                          "name": "IAaveIncentivesController",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5822,
                          "src": "9529:25:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9528:27:46"
                  },
                  "scope": 7381,
                  "src": "9471:85:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 7382,
              "src": "376:9182:46"
            }
          ],
          "src": "37:9522:46"
        },
        "id": 46
      },
      "contracts/interfaces/IUniswapV2Router02.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IUniswapV2Router02.sol",
          "exportedSymbols": {
            "IUniswapV2Router02": [
              7440
            ]
          },
          "id": 7441,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7383,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:47"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 7440,
              "linearizedBaseContracts": [
                7440
              ],
              "name": "IUniswapV2Router02",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "38ed1739",
                  "id": 7400,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "swapExactTokensForTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7395,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7385,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7400,
                        "src": "134:16:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7384,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "134:7:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7387,
                        "mutability": "mutable",
                        "name": "amountOutMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7400,
                        "src": "156:20:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7386,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "156:7:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7390,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7400,
                        "src": "182:23:47",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7388,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "182:7:47",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 7389,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "182:9:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7392,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7400,
                        "src": "211:10:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7391,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "211:7:47",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7394,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7400,
                        "src": "227:16:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7393,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "227:7:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "128:119:47"
                  },
                  "returnParameters": {
                    "id": 7399,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7398,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7400,
                        "src": "266:24:47",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7396,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "266:7:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7397,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "266:9:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "265:26:47"
                  },
                  "scope": 7440,
                  "src": "95:197:47",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "8803dbee",
                  "id": 7417,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "swapTokensForExactTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7412,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7402,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7417,
                        "src": "335:17:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7401,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "335:7:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7404,
                        "mutability": "mutable",
                        "name": "amountInMax",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7417,
                        "src": "358:19:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7403,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "358:7:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7407,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7417,
                        "src": "383:23:47",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7405,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "383:7:47",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 7406,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "383:9:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7409,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7417,
                        "src": "412:10:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7408,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "412:7:47",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7411,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7417,
                        "src": "428:16:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7410,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "428:7:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "329:119:47"
                  },
                  "returnParameters": {
                    "id": 7416,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7415,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7417,
                        "src": "467:24:47",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7413,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "467:7:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7414,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "467:9:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "466:26:47"
                  },
                  "scope": 7440,
                  "src": "296:197:47",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "d06ca61f",
                  "id": 7428,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountsOut",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7423,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7419,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7428,
                        "src": "520:16:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7418,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "520:7:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7422,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7428,
                        "src": "538:23:47",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7420,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "538:7:47",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 7421,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "538:9:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "519:43:47"
                  },
                  "returnParameters": {
                    "id": 7427,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7426,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7428,
                        "src": "598:24:47",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7424,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "598:7:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7425,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "598:9:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "597:26:47"
                  },
                  "scope": 7440,
                  "src": "497:127:47",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "1f00ca74",
                  "id": 7439,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountsIn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7434,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7430,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7439,
                        "src": "650:17:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7429,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "650:7:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7433,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7439,
                        "src": "669:23:47",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7431,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "669:7:47",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 7432,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "669:9:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "649:44:47"
                  },
                  "returnParameters": {
                    "id": 7438,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7437,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7439,
                        "src": "729:24:47",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7435,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "729:7:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7436,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "729:9:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "728:26:47"
                  },
                  "scope": 7440,
                  "src": "628:127:47",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 7441,
              "src": "62:695:47"
            }
          ],
          "src": "37:721:47"
        },
        "id": 47
      },
      "contracts/interfaces/IVariableDebtToken.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IVariableDebtToken.sol",
          "exportedSymbols": {
            "IVariableDebtToken": [
              7504
            ]
          },
          "id": 7505,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7442,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:48"
            },
            {
              "absolutePath": "contracts/interfaces/IScaledBalanceToken.sol",
              "file": "./IScaledBalanceToken.sol",
              "id": 7444,
              "nodeType": "ImportDirective",
              "scope": 7505,
              "sourceUnit": 7006,
              "src": "62:62:48",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 7443,
                    "name": "IScaledBalanceToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:19:48",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IInitializableDebtToken.sol",
              "file": "./IInitializableDebtToken.sol",
              "id": 7446,
              "nodeType": "ImportDirective",
              "scope": 7505,
              "sourceUnit": 6059,
              "src": "125:70:48",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 7445,
                    "name": "IInitializableDebtToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "133:23:48",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IAaveIncentivesController.sol",
              "file": "./IAaveIncentivesController.sol",
              "id": 7448,
              "nodeType": "ImportDirective",
              "scope": 7505,
              "sourceUnit": 5823,
              "src": "196:74:48",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 7447,
                    "name": "IAaveIncentivesController",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "204:25:48",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 7450,
                    "name": "IScaledBalanceToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7005,
                    "src": "424:19:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IScaledBalanceToken_$7005",
                      "typeString": "contract IScaledBalanceToken"
                    }
                  },
                  "id": 7451,
                  "nodeType": "InheritanceSpecifier",
                  "src": "424:19:48"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 7452,
                    "name": "IInitializableDebtToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6058,
                    "src": "445:23:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IInitializableDebtToken_$6058",
                      "typeString": "contract IInitializableDebtToken"
                    }
                  },
                  "id": 7453,
                  "nodeType": "InheritanceSpecifier",
                  "src": "445:23:48"
                }
              ],
              "contractDependencies": [
                6058,
                7005
              ],
              "contractKind": "interface",
              "documentation": {
                "id": 7449,
                "nodeType": "StructuredDocumentation",
                "src": "272:119:48",
                "text": " @title IVariableDebtToken\n @author Aave\n @notice Defines the basic interface for a variable debt token.*"
              },
              "fullyImplemented": false,
              "id": 7504,
              "linearizedBaseContracts": [
                7504,
                6058,
                7005
              ],
              "name": "IVariableDebtToken",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 7454,
                    "nodeType": "StructuredDocumentation",
                    "src": "473:279:48",
                    "text": " @dev Emitted after the mint action\n @param from The address performing the mint\n @param onBehalfOf The address of the user on which behalf minting has been performed\n @param value The amount to be minted\n @param index The last index of the reserve*"
                  },
                  "id": 7464,
                  "name": "Mint",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 7463,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7456,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7464,
                        "src": "766:20:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7455,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "766:7:48",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7458,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "onBehalfOf",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7464,
                        "src": "788:26:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7457,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "788:7:48",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7460,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7464,
                        "src": "816:13:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7459,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "816:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7462,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "index",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7464,
                        "src": "831:13:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7461,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "831:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "765:80:48"
                  },
                  "src": "755:91:48"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7465,
                    "nodeType": "StructuredDocumentation",
                    "src": "850:450:48",
                    "text": " @dev Mints debt token to the `onBehalfOf` address\n @param user The address receiving the borrowed underlying, being the delegatee in case\n of credit delegate, or same as `onBehalfOf` otherwise\n @param onBehalfOf The address receiving the debt tokens\n @param amount The amount of debt being minted\n @param index The variable debt index of the reserve\n @return `true` if the the previous balance of the user is 0*"
                  },
                  "functionSelector": "b3f1c93d",
                  "id": 7478,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7474,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7467,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7478,
                        "src": "1322:12:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7466,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1322:7:48",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7469,
                        "mutability": "mutable",
                        "name": "onBehalfOf",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7478,
                        "src": "1340:18:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7468,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1340:7:48",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7471,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7478,
                        "src": "1364:14:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7470,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1364:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7473,
                        "mutability": "mutable",
                        "name": "index",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7478,
                        "src": "1384:13:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7472,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1384:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1316:85:48"
                  },
                  "returnParameters": {
                    "id": 7477,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7476,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7478,
                        "src": "1420:4:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7475,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1420:4:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1419:6:48"
                  },
                  "scope": 7504,
                  "src": "1303:123:48",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 7479,
                    "nodeType": "StructuredDocumentation",
                    "src": "1430:200:48",
                    "text": " @dev Emitted when variable debt is burnt\n @param user The user which debt has been burned\n @param amount The amount of debt being burned\n @param index The index of the user*"
                  },
                  "id": 7487,
                  "name": "Burn",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 7486,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7481,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7487,
                        "src": "1644:20:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7480,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1644:7:48",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7483,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7487,
                        "src": "1666:14:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7482,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1666:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7485,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "index",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7487,
                        "src": "1682:13:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7484,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1682:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1643:53:48"
                  },
                  "src": "1633:64:48"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7488,
                    "nodeType": "StructuredDocumentation",
                    "src": "1701:148:48",
                    "text": " @dev Burns user variable debt\n @param user The user which debt is burnt\n @param index The variable debt index of the reserve*"
                  },
                  "functionSelector": "f5298aca",
                  "id": 7497,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7495,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7490,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7497,
                        "src": "1871:12:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7489,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1871:7:48",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7492,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7497,
                        "src": "1889:14:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7491,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1889:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7494,
                        "mutability": "mutable",
                        "name": "index",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7497,
                        "src": "1909:13:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7493,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1909:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1865:61:48"
                  },
                  "returnParameters": {
                    "id": 7496,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1935:0:48"
                  },
                  "scope": 7504,
                  "src": "1852:84:48",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 7498,
                    "nodeType": "StructuredDocumentation",
                    "src": "1940:78:48",
                    "text": " @dev Returns the address of the incentives controller contract*"
                  },
                  "functionSelector": "75d26413",
                  "id": 7503,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getIncentivesController",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7499,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2053:2:48"
                  },
                  "returnParameters": {
                    "id": 7502,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7501,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7503,
                        "src": "2079:25:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                          "typeString": "contract IAaveIncentivesController"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 7500,
                          "name": "IAaveIncentivesController",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5822,
                          "src": "2079:25:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2078:27:48"
                  },
                  "scope": 7504,
                  "src": "2021:85:48",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 7505,
              "src": "392:1716:48"
            }
          ],
          "src": "37:2072:48"
        },
        "id": 48
      },
      "contracts/misc/AaveOracle.sol": {
        "ast": {
          "absolutePath": "contracts/misc/AaveOracle.sol",
          "exportedSymbols": {
            "AaveOracle": [
              7821
            ]
          },
          "id": 7822,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7506,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:49"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/Ownable.sol",
              "file": "../dependencies/openzeppelin/contracts/Ownable.sol",
              "id": 7508,
              "nodeType": "ImportDirective",
              "scope": 7822,
              "sourceUnit": 4144,
              "src": "62:75:49",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 7507,
                    "name": "Ownable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:7:49",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
              "file": "../dependencies/openzeppelin/contracts/IERC20.sol",
              "id": 7510,
              "nodeType": "ImportDirective",
              "scope": 7822,
              "sourceUnit": 4013,
              "src": "138:73:49",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 7509,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "146:6:49",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IPriceOracleGetter.sol",
              "file": "../interfaces/IPriceOracleGetter.sol",
              "id": 7512,
              "nodeType": "ImportDirective",
              "scope": 7822,
              "sourceUnit": 6919,
              "src": "213:72:49",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 7511,
                    "name": "IPriceOracleGetter",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "221:18:49",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IChainlinkAggregator.sol",
              "file": "../interfaces/IChainlinkAggregator.sol",
              "id": 7514,
              "nodeType": "ImportDirective",
              "scope": 7822,
              "sourceUnit": 5869,
              "src": "286:76:49",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 7513,
                    "name": "IChainlinkAggregator",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "294:20:49",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeERC20.sol",
              "file": "../dependencies/openzeppelin/contracts/SafeERC20.sol",
              "id": 7516,
              "nodeType": "ImportDirective",
              "scope": 7822,
              "sourceUnit": 4301,
              "src": "363:79:49",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 7515,
                    "name": "SafeERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "371:9:49",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 7518,
                    "name": "IPriceOracleGetter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6918,
                    "src": "893:18:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                      "typeString": "contract IPriceOracleGetter"
                    }
                  },
                  "id": 7519,
                  "nodeType": "InheritanceSpecifier",
                  "src": "893:18:49"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 7520,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4143,
                    "src": "913:7:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$4143",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 7521,
                  "nodeType": "InheritanceSpecifier",
                  "src": "913:7:49"
                }
              ],
              "contractDependencies": [
                3427,
                4143,
                6918
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 7517,
                "nodeType": "StructuredDocumentation",
                "src": "444:426:49",
                "text": "@title AaveOracle\n @author Aave\n @notice Proxy smart contract to get the price of an asset from a price source, with Chainlink Aggregator\n         smart contracts as primary option\n - If the returned price by a Chainlink aggregator is <= 0, the call is forwarded to a fallbackOracle\n - Owned by the Aave governance system, allowed to add sources for assets, replace them\n   and change the fallbackOracle"
              },
              "fullyImplemented": true,
              "id": 7821,
              "linearizedBaseContracts": [
                7821,
                4143,
                3427,
                6918
              ],
              "name": "AaveOracle",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 7524,
                  "libraryName": {
                    "contractScope": null,
                    "id": 7522,
                    "name": "SafeERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4300,
                    "src": "931:9:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeERC20_$4300",
                      "typeString": "library SafeERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "925:27:49",
                  "typeName": {
                    "contractScope": null,
                    "id": 7523,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4012,
                    "src": "945:6:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$4012",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 7528,
                  "name": "WethSet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 7527,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7526,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "weth",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7528,
                        "src": "970:20:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7525,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "970:7:49",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "969:22:49"
                  },
                  "src": "956:36:49"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 7534,
                  "name": "AssetSourceUpdated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 7533,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7530,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7534,
                        "src": "1020:21:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7529,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1020:7:49",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7532,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "source",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7534,
                        "src": "1043:22:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7531,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1043:7:49",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1019:47:49"
                  },
                  "src": "995:72:49"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 7538,
                  "name": "FallbackOracleUpdated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 7537,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7536,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "fallbackOracle",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7538,
                        "src": "1098:30:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7535,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1098:7:49",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1097:32:49"
                  },
                  "src": "1070:60:49"
                },
                {
                  "constant": false,
                  "id": 7542,
                  "mutability": "mutable",
                  "name": "assetsSources",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7821,
                  "src": "1134:62:49",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_contract$_IChainlinkAggregator_$5868_$",
                    "typeString": "mapping(address => contract IChainlinkAggregator)"
                  },
                  "typeName": {
                    "id": 7541,
                    "keyType": {
                      "id": 7539,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1142:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1134:40:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_contract$_IChainlinkAggregator_$5868_$",
                      "typeString": "mapping(address => contract IChainlinkAggregator)"
                    },
                    "valueType": {
                      "contractScope": null,
                      "id": 7540,
                      "name": "IChainlinkAggregator",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 5868,
                      "src": "1153:20:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IChainlinkAggregator_$5868",
                        "typeString": "contract IChainlinkAggregator"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 7544,
                  "mutability": "mutable",
                  "name": "_fallbackOracle",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7821,
                  "src": "1200:42:49",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                    "typeString": "contract IPriceOracleGetter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7543,
                    "name": "IPriceOracleGetter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6918,
                    "src": "1200:18:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                      "typeString": "contract IPriceOracleGetter"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "functionSelector": "ad5c4648",
                  "id": 7546,
                  "mutability": "immutable",
                  "name": "WETH",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7821,
                  "src": "1246:29:49",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7545,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1246:7:49",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 7577,
                    "nodeType": "Block",
                    "src": "1673:126:49",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7561,
                              "name": "fallbackOracle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7555,
                              "src": "1698:14:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 7560,
                            "name": "_setFallbackOracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7680,
                            "src": "1679:18:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 7562,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1679:34:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7563,
                        "nodeType": "ExpressionStatement",
                        "src": "1679:34:49"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7565,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7550,
                              "src": "1737:6:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7566,
                              "name": "sources",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7553,
                              "src": "1745:7:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            ],
                            "id": 7564,
                            "name": "_setAssetsSources",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7663,
                            "src": "1719:17:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address[] memory,address[] memory)"
                            }
                          },
                          "id": 7567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1719:34:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7568,
                        "nodeType": "ExpressionStatement",
                        "src": "1719:34:49"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7571,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7569,
                            "name": "WETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7546,
                            "src": "1759:4:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 7570,
                            "name": "weth",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7557,
                            "src": "1766:4:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1759:11:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 7572,
                        "nodeType": "ExpressionStatement",
                        "src": "1759:11:49"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7574,
                              "name": "weth",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7557,
                              "src": "1789:4:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 7573,
                            "name": "WethSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7528,
                            "src": "1781:7:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 7575,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1781:13:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7576,
                        "nodeType": "EmitStatement",
                        "src": "1776:18:49"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7547,
                    "nodeType": "StructuredDocumentation",
                    "src": "1280:262:49",
                    "text": "@notice Constructor\n @param assets The addresses of the assets\n @param sources The address of the source of each asset\n @param fallbackOracle The address of the fallback oracle to use if the data of an\n        aggregator is not consistent"
                  },
                  "id": 7578,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7558,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7550,
                        "mutability": "mutable",
                        "name": "assets",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7578,
                        "src": "1562:23:49",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7548,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1562:7:49",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 7549,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1562:9:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7553,
                        "mutability": "mutable",
                        "name": "sources",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7578,
                        "src": "1591:24:49",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7551,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1591:7:49",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 7552,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1591:9:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7555,
                        "mutability": "mutable",
                        "name": "fallbackOracle",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7578,
                        "src": "1621:22:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7554,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1621:7:49",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7557,
                        "mutability": "mutable",
                        "name": "weth",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7578,
                        "src": "1649:12:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7556,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1649:7:49",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1556:109:49"
                  },
                  "returnParameters": {
                    "id": 7559,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1673:0:49"
                  },
                  "scope": 7821,
                  "src": "1545:254:49",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 7595,
                    "nodeType": "Block",
                    "src": "2119:45:49",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7591,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7582,
                              "src": "2143:6:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7592,
                              "name": "sources",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7585,
                              "src": "2151:7:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            ],
                            "id": 7590,
                            "name": "_setAssetsSources",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7663,
                            "src": "2125:17:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address[] memory,address[] memory)"
                            }
                          },
                          "id": 7593,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2125:34:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7594,
                        "nodeType": "ExpressionStatement",
                        "src": "2125:34:49"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7579,
                    "nodeType": "StructuredDocumentation",
                    "src": "1803:204:49",
                    "text": "@notice External function called by the Aave governance to set or replace sources of assets\n @param assets The addresses of the assets\n @param sources The address of the source of each asset"
                  },
                  "functionSelector": "abfd5310",
                  "id": 7596,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 7588,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 7587,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "2107:9:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2107:9:49"
                    }
                  ],
                  "name": "setAssetSources",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7586,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7582,
                        "mutability": "mutable",
                        "name": "assets",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7596,
                        "src": "2035:25:49",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7580,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2035:7:49",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 7581,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2035:9:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7585,
                        "mutability": "mutable",
                        "name": "sources",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7596,
                        "src": "2062:26:49",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7583,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2062:7:49",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 7584,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2062:9:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2034:55:49"
                  },
                  "returnParameters": {
                    "id": 7589,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2119:0:49"
                  },
                  "scope": 7821,
                  "src": "2010:154:49",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 7608,
                    "nodeType": "Block",
                    "src": "2383:45:49",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7605,
                              "name": "fallbackOracle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7599,
                              "src": "2408:14:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 7604,
                            "name": "_setFallbackOracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7680,
                            "src": "2389:18:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 7606,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2389:34:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7607,
                        "nodeType": "ExpressionStatement",
                        "src": "2389:34:49"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7597,
                    "nodeType": "StructuredDocumentation",
                    "src": "2168:142:49",
                    "text": "@notice Sets the fallbackOracle\n - Callable only by the Aave governance\n @param fallbackOracle The address of the fallbackOracle"
                  },
                  "functionSelector": "170aee73",
                  "id": 7609,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 7602,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 7601,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "2373:9:49",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2373:9:49"
                    }
                  ],
                  "name": "setFallbackOracle",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7600,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7599,
                        "mutability": "mutable",
                        "name": "fallbackOracle",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7609,
                        "src": "2340:22:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7598,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2340:7:49",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2339:24:49"
                  },
                  "returnParameters": {
                    "id": 7603,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2383:0:49"
                  },
                  "scope": 7821,
                  "src": "2313:115:49",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 7662,
                    "nodeType": "Block",
                    "src": "2694:258:49",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7620,
                                  "name": "assets",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7613,
                                  "src": "2708:6:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 7621,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2708:13:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7622,
                                  "name": "sources",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7616,
                                  "src": "2725:7:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 7623,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2725:14:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2708:31:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e434f4e53495354454e545f504152414d535f4c454e475448",
                              "id": 7625,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2741:28:49",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a807dff59d3474096247bf1cf10d6df8b988b576943ecf8c7dd58f40a940e704",
                                "typeString": "literal_string \"INCONSISTENT_PARAMS_LENGTH\""
                              },
                              "value": "INCONSISTENT_PARAMS_LENGTH"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a807dff59d3474096247bf1cf10d6df8b988b576943ecf8c7dd58f40a940e704",
                                "typeString": "literal_string \"INCONSISTENT_PARAMS_LENGTH\""
                              }
                            ],
                            "id": 7619,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2700:7:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7626,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2700:70:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7627,
                        "nodeType": "ExpressionStatement",
                        "src": "2700:70:49"
                      },
                      {
                        "body": {
                          "id": 7660,
                          "nodeType": "Block",
                          "src": "2820:128:49",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 7649,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 7639,
                                    "name": "assetsSources",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7542,
                                    "src": "2828:13:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_contract$_IChainlinkAggregator_$5868_$",
                                      "typeString": "mapping(address => contract IChainlinkAggregator)"
                                    }
                                  },
                                  "id": 7643,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 7640,
                                      "name": "assets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7613,
                                      "src": "2842:6:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 7642,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 7641,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7629,
                                      "src": "2849:1:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2842:9:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2828:24:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IChainlinkAggregator_$5868",
                                    "typeString": "contract IChainlinkAggregator"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 7645,
                                        "name": "sources",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7616,
                                        "src": "2876:7:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                          "typeString": "address[] memory"
                                        }
                                      },
                                      "id": 7647,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 7646,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7629,
                                        "src": "2884:1:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2876:10:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 7644,
                                    "name": "IChainlinkAggregator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5868,
                                    "src": "2855:20:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IChainlinkAggregator_$5868_$",
                                      "typeString": "type(contract IChainlinkAggregator)"
                                    }
                                  },
                                  "id": 7648,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2855:32:49",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IChainlinkAggregator_$5868",
                                    "typeString": "contract IChainlinkAggregator"
                                  }
                                },
                                "src": "2828:59:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IChainlinkAggregator_$5868",
                                  "typeString": "contract IChainlinkAggregator"
                                }
                              },
                              "id": 7650,
                              "nodeType": "ExpressionStatement",
                              "src": "2828:59:49"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 7652,
                                      "name": "assets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7613,
                                      "src": "2919:6:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 7654,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 7653,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7629,
                                      "src": "2926:1:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2919:9:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 7655,
                                      "name": "sources",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7616,
                                      "src": "2930:7:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 7657,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 7656,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7629,
                                      "src": "2938:1:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2930:10:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 7651,
                                  "name": "AssetSourceUpdated",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7534,
                                  "src": "2900:18:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                                    "typeString": "function (address,address)"
                                  }
                                },
                                "id": 7658,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2900:41:49",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7659,
                              "nodeType": "EmitStatement",
                              "src": "2895:46:49"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7635,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7632,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7629,
                            "src": "2796:1:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7633,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7613,
                              "src": "2800:6:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 7634,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2800:13:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2796:17:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7661,
                        "initializationExpression": {
                          "assignments": [
                            7629
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 7629,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 7661,
                              "src": "2781:9:49",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 7628,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2781:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 7631,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 7630,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2793:1:49",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2781:13:49"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 7637,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "2815:3:49",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 7636,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7629,
                              "src": "2815:1:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7638,
                          "nodeType": "ExpressionStatement",
                          "src": "2815:3:49"
                        },
                        "nodeType": "ForStatement",
                        "src": "2776:172:49"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7610,
                    "nodeType": "StructuredDocumentation",
                    "src": "2432:172:49",
                    "text": "@notice Internal function to set the sources for each asset\n @param assets The addresses of the assets\n @param sources The address of the source of each asset"
                  },
                  "id": 7663,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setAssetsSources",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7617,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7613,
                        "mutability": "mutable",
                        "name": "assets",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7663,
                        "src": "2634:23:49",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7611,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2634:7:49",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 7612,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2634:9:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7616,
                        "mutability": "mutable",
                        "name": "sources",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7663,
                        "src": "2659:24:49",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7614,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2659:7:49",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 7615,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2659:9:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2633:51:49"
                  },
                  "returnParameters": {
                    "id": 7618,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2694:0:49"
                  },
                  "scope": 7821,
                  "src": "2607:345:49",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7679,
                    "nodeType": "Block",
                    "src": "3137:111:49",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7673,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7669,
                            "name": "_fallbackOracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7544,
                            "src": "3143:15:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                              "typeString": "contract IPriceOracleGetter"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 7671,
                                "name": "fallbackOracle",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7666,
                                "src": "3180:14:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 7670,
                              "name": "IPriceOracleGetter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6918,
                              "src": "3161:18:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IPriceOracleGetter_$6918_$",
                                "typeString": "type(contract IPriceOracleGetter)"
                              }
                            },
                            "id": 7672,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3161:34:49",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                              "typeString": "contract IPriceOracleGetter"
                            }
                          },
                          "src": "3143:52:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                            "typeString": "contract IPriceOracleGetter"
                          }
                        },
                        "id": 7674,
                        "nodeType": "ExpressionStatement",
                        "src": "3143:52:49"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7676,
                              "name": "fallbackOracle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7666,
                              "src": "3228:14:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 7675,
                            "name": "FallbackOracleUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7538,
                            "src": "3206:21:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 7677,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3206:37:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7678,
                        "nodeType": "EmitStatement",
                        "src": "3201:42:49"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7664,
                    "nodeType": "StructuredDocumentation",
                    "src": "2956:117:49",
                    "text": "@notice Internal function to set the fallbackOracle\n @param fallbackOracle The address of the fallbackOracle"
                  },
                  "id": 7680,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setFallbackOracle",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7667,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7666,
                        "mutability": "mutable",
                        "name": "fallbackOracle",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7680,
                        "src": "3104:22:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7665,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3104:7:49",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3103:24:49"
                  },
                  "returnParameters": {
                    "id": 7668,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3137:0:49"
                  },
                  "scope": 7821,
                  "src": "3076:172:49",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    6917
                  ],
                  "body": {
                    "id": 7743,
                    "nodeType": "Block",
                    "src": "3411:423:49",
                    "statements": [
                      {
                        "assignments": [
                          7690
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7690,
                            "mutability": "mutable",
                            "name": "source",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 7743,
                            "src": "3417:27:49",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IChainlinkAggregator_$5868",
                              "typeString": "contract IChainlinkAggregator"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 7689,
                              "name": "IChainlinkAggregator",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 5868,
                              "src": "3417:20:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IChainlinkAggregator_$5868",
                                "typeString": "contract IChainlinkAggregator"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7694,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 7691,
                            "name": "assetsSources",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7542,
                            "src": "3447:13:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_contract$_IChainlinkAggregator_$5868_$",
                              "typeString": "mapping(address => contract IChainlinkAggregator)"
                            }
                          },
                          "id": 7693,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7692,
                            "name": "asset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7683,
                            "src": "3461:5:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3447:20:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IChainlinkAggregator_$5868",
                            "typeString": "contract IChainlinkAggregator"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3417:50:49"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 7697,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7695,
                            "name": "asset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7683,
                            "src": "3478:5:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 7696,
                            "name": "WETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7546,
                            "src": "3487:4:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3478:13:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 7709,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7703,
                                  "name": "source",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7690,
                                  "src": "3540:6:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IChainlinkAggregator_$5868",
                                    "typeString": "contract IChainlinkAggregator"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IChainlinkAggregator_$5868",
                                    "typeString": "contract IChainlinkAggregator"
                                  }
                                ],
                                "id": 7702,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3532:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 7701,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3532:7:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 7704,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3532:15:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 7707,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3559:1:49",
                                  "subdenomination": null,
                                  "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": 7706,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3551:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 7705,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3551:7:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 7708,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3551:10:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "3532:29:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 7740,
                            "nodeType": "Block",
                            "src": "3627:203:49",
                            "statements": [
                              {
                                "assignments": [
                                  7717
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 7717,
                                    "mutability": "mutable",
                                    "name": "price",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 7740,
                                    "src": "3635:12:49",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    },
                                    "typeName": {
                                      "id": 7716,
                                      "name": "int256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3635:6:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 7723,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 7719,
                                          "name": "source",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7690,
                                          "src": "3671:6:49",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IChainlinkAggregator_$5868",
                                            "typeString": "contract IChainlinkAggregator"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_IChainlinkAggregator_$5868",
                                            "typeString": "contract IChainlinkAggregator"
                                          }
                                        ],
                                        "id": 7718,
                                        "name": "IChainlinkAggregator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5868,
                                        "src": "3650:20:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IChainlinkAggregator_$5868_$",
                                          "typeString": "type(contract IChainlinkAggregator)"
                                        }
                                      },
                                      "id": 7720,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3650:28:49",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IChainlinkAggregator_$5868",
                                        "typeString": "contract IChainlinkAggregator"
                                      }
                                    },
                                    "id": 7721,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "latestAnswer",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5829,
                                    "src": "3650:41:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_int256_$",
                                      "typeString": "function () view external returns (int256)"
                                    }
                                  },
                                  "id": 7722,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3650:43:49",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "3635:58:49"
                              },
                              {
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "id": 7726,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 7724,
                                    "name": "price",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7717,
                                    "src": "3705:5:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 7725,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3713:1:49",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "3705:9:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 7738,
                                  "nodeType": "Block",
                                  "src": "3762:62:49",
                                  "statements": [
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 7735,
                                            "name": "asset",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7683,
                                            "src": "3809:5:49",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 7733,
                                            "name": "_fallbackOracle",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7544,
                                            "src": "3779:15:49",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                                              "typeString": "contract IPriceOracleGetter"
                                            }
                                          },
                                          "id": 7734,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getAssetPrice",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 6917,
                                          "src": "3779:29:49",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                            "typeString": "function (address) view external returns (uint256)"
                                          }
                                        },
                                        "id": 7736,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3779:36:49",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "functionReturnParameters": 7688,
                                      "id": 7737,
                                      "nodeType": "Return",
                                      "src": "3772:43:49"
                                    }
                                  ]
                                },
                                "id": 7739,
                                "nodeType": "IfStatement",
                                "src": "3701:123:49",
                                "trueBody": {
                                  "id": 7732,
                                  "nodeType": "Block",
                                  "src": "3716:40:49",
                                  "statements": [
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 7729,
                                            "name": "price",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7717,
                                            "src": "3741:5:49",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          ],
                                          "id": 7728,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "3733:7:49",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": {
                                            "id": 7727,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "3733:7:49",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 7730,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3733:14:49",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "functionReturnParameters": 7688,
                                      "id": 7731,
                                      "nodeType": "Return",
                                      "src": "3726:21:49"
                                    }
                                  ]
                                }
                              }
                            ]
                          },
                          "id": 7741,
                          "nodeType": "IfStatement",
                          "src": "3528:302:49",
                          "trueBody": {
                            "id": 7715,
                            "nodeType": "Block",
                            "src": "3563:58:49",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 7712,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7683,
                                      "src": "3608:5:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 7710,
                                      "name": "_fallbackOracle",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7544,
                                      "src": "3578:15:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                                        "typeString": "contract IPriceOracleGetter"
                                      }
                                    },
                                    "id": 7711,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getAssetPrice",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6917,
                                    "src": "3578:29:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address) view external returns (uint256)"
                                    }
                                  },
                                  "id": 7713,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3578:36:49",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "functionReturnParameters": 7688,
                                "id": 7714,
                                "nodeType": "Return",
                                "src": "3571:43:49"
                              }
                            ]
                          }
                        },
                        "id": 7742,
                        "nodeType": "IfStatement",
                        "src": "3474:356:49",
                        "trueBody": {
                          "id": 7700,
                          "nodeType": "Block",
                          "src": "3493:29:49",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 7698,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3508:7:49",
                                "subdenomination": "ether",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                  "typeString": "int_const 1000000000000000000"
                                },
                                "value": "1"
                              },
                              "functionReturnParameters": 7688,
                              "id": 7699,
                              "nodeType": "Return",
                              "src": "3501:14:49"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7681,
                    "nodeType": "StructuredDocumentation",
                    "src": "3252:79:49",
                    "text": "@notice Gets an asset price by address\n @param asset The asset address"
                  },
                  "functionSelector": "b3596f07",
                  "id": 7744,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAssetPrice",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 7685,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3384:8:49"
                  },
                  "parameters": {
                    "id": 7684,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7683,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7744,
                        "src": "3357:13:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7682,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3357:7:49",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3356:15:49"
                  },
                  "returnParameters": {
                    "id": 7688,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7687,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7744,
                        "src": "3402:7:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7686,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3402:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3401:9:49"
                  },
                  "scope": 7821,
                  "src": "3334:500:49",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 7791,
                    "nodeType": "Block",
                    "src": "4048:184:49",
                    "statements": [
                      {
                        "assignments": [
                          7758
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7758,
                            "mutability": "mutable",
                            "name": "prices",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 7791,
                            "src": "4054:23:49",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 7756,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4054:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7757,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "4054:9:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7765,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7762,
                                "name": "assets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7748,
                                "src": "4094:6:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 7763,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4094:13:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7761,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "4080:13:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 7759,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4084:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7760,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "4084:9:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 7764,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4080:28:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4054:54:49"
                      },
                      {
                        "body": {
                          "id": 7787,
                          "nodeType": "Block",
                          "src": "4158:51:49",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 7785,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 7777,
                                    "name": "prices",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7758,
                                    "src": "4166:6:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 7779,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 7778,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7767,
                                    "src": "4173:1:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4166:9:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 7781,
                                        "name": "assets",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7748,
                                        "src": "4192:6:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 7783,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 7782,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7767,
                                        "src": "4199:1:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4192:9:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 7780,
                                    "name": "getAssetPrice",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7744,
                                    "src": "4178:13:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address) view returns (uint256)"
                                    }
                                  },
                                  "id": 7784,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4178:24:49",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4166:36:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7786,
                              "nodeType": "ExpressionStatement",
                              "src": "4166:36:49"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7773,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7770,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7767,
                            "src": "4134:1:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7771,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7748,
                              "src": "4138:6:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 7772,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4138:13:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4134:17:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7788,
                        "initializationExpression": {
                          "assignments": [
                            7767
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 7767,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 7788,
                              "src": "4119:9:49",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 7766,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4119:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 7769,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 7768,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4131:1:49",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4119:13:49"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 7775,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "4153:3:49",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 7774,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7767,
                              "src": "4153:1:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7776,
                          "nodeType": "ExpressionStatement",
                          "src": "4153:3:49"
                        },
                        "nodeType": "ForStatement",
                        "src": "4114:95:49"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7789,
                          "name": "prices",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7758,
                          "src": "4221:6:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "functionReturnParameters": 7753,
                        "id": 7790,
                        "nodeType": "Return",
                        "src": "4214:13:49"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7745,
                    "nodeType": "StructuredDocumentation",
                    "src": "3838:114:49",
                    "text": "@notice Gets a list of prices from a list of assets addresses\n @param assets The list of assets addresses"
                  },
                  "functionSelector": "9d23d9f2",
                  "id": 7792,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAssetsPrices",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7749,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7748,
                        "mutability": "mutable",
                        "name": "assets",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7792,
                        "src": "3980:25:49",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7746,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3980:7:49",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 7747,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3980:9:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3979:27:49"
                  },
                  "returnParameters": {
                    "id": 7753,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7752,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7792,
                        "src": "4030:16:49",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7750,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4030:7:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7751,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4030:9:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4029:18:49"
                  },
                  "scope": 7821,
                  "src": "3955:277:49",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 7807,
                    "nodeType": "Block",
                    "src": "4467:47:49",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 7802,
                                "name": "assetsSources",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7542,
                                "src": "4488:13:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_contract$_IChainlinkAggregator_$5868_$",
                                  "typeString": "mapping(address => contract IChainlinkAggregator)"
                                }
                              },
                              "id": 7804,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 7803,
                                "name": "asset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7795,
                                "src": "4502:5:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4488:20:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IChainlinkAggregator_$5868",
                                "typeString": "contract IChainlinkAggregator"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IChainlinkAggregator_$5868",
                                "typeString": "contract IChainlinkAggregator"
                              }
                            ],
                            "id": 7801,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4480:7:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 7800,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4480:7:49",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 7805,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4480:29:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 7799,
                        "id": 7806,
                        "nodeType": "Return",
                        "src": "4473:36:49"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7793,
                    "nodeType": "StructuredDocumentation",
                    "src": "4236:155:49",
                    "text": "@notice Gets the address of the source for an asset address\n @param asset The address of the asset\n @return address The address of the source"
                  },
                  "functionSelector": "92bf2be0",
                  "id": 7808,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSourceOfAsset",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7796,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7795,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7808,
                        "src": "4420:13:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7794,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4420:7:49",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4419:15:49"
                  },
                  "returnParameters": {
                    "id": 7799,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7798,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7808,
                        "src": "4458:7:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7797,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4458:7:49",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4457:9:49"
                  },
                  "scope": 7821,
                  "src": "4394:120:49",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 7819,
                    "nodeType": "Block",
                    "src": "4689:42:49",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7816,
                              "name": "_fallbackOracle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7544,
                              "src": "4710:15:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                                "typeString": "contract IPriceOracleGetter"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                                "typeString": "contract IPriceOracleGetter"
                              }
                            ],
                            "id": 7815,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4702:7:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 7814,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4702:7:49",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 7817,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4702:24:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 7813,
                        "id": 7818,
                        "nodeType": "Return",
                        "src": "4695:31:49"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7809,
                    "nodeType": "StructuredDocumentation",
                    "src": "4518:107:49",
                    "text": "@notice Gets the address of the fallback oracle\n @return address The addres of the fallback oracle"
                  },
                  "functionSelector": "6210308c",
                  "id": 7820,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getFallbackOracle",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7810,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4654:2:49"
                  },
                  "returnParameters": {
                    "id": 7813,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7812,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7820,
                        "src": "4680:7:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7811,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4680:7:49",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4679:9:49"
                  },
                  "scope": 7821,
                  "src": "4628:103:49",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 7822,
              "src": "870:3863:49"
            }
          ],
          "src": "37:4697:49"
        },
        "id": 49
      },
      "contracts/misc/AaveProtocolDataProvider.sol": {
        "ast": {
          "absolutePath": "contracts/misc/AaveProtocolDataProvider.sol",
          "exportedSymbols": {
            "AaveProtocolDataProvider": [
              8363
            ]
          },
          "id": 8364,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7823,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:50"
            },
            {
              "id": 7824,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "61:33:50"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20Detailed.sol",
              "file": "../dependencies/openzeppelin/contracts/IERC20Detailed.sol",
              "id": 7826,
              "nodeType": "ImportDirective",
              "scope": 8364,
              "sourceUnit": 4035,
              "src": "96:89:50",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 7825,
                    "name": "IERC20Detailed",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "104:14:50",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPoolAddressesProvider.sol",
              "file": "../interfaces/ILendingPoolAddressesProvider.sol",
              "id": 7828,
              "nodeType": "ImportDirective",
              "scope": 8364,
              "sourceUnit": 6618,
              "src": "186:94:50",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 7827,
                    "name": "ILendingPoolAddressesProvider",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "194:29:50",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPool.sol",
              "file": "../interfaces/ILendingPool.sol",
              "id": 7830,
              "nodeType": "ImportDirective",
              "scope": 8364,
              "sourceUnit": 6467,
              "src": "281:60:50",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 7829,
                    "name": "ILendingPool",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "289:12:50",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IStableDebtToken.sol",
              "file": "../interfaces/IStableDebtToken.sol",
              "id": 7832,
              "nodeType": "ImportDirective",
              "scope": 8364,
              "sourceUnit": 7134,
              "src": "342:68:50",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 7831,
                    "name": "IStableDebtToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "350:16:50",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IVariableDebtToken.sol",
              "file": "../interfaces/IVariableDebtToken.sol",
              "id": 7834,
              "nodeType": "ImportDirective",
              "scope": 8364,
              "sourceUnit": 7505,
              "src": "411:72:50",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 7833,
                    "name": "IVariableDebtToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "419:18:50",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/configuration/ReserveConfiguration.sol",
              "file": "../protocol/libraries/configuration/ReserveConfiguration.sol",
              "id": 7836,
              "nodeType": "ImportDirective",
              "scope": 8364,
              "sourceUnit": 16742,
              "src": "484:98:50",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 7835,
                    "name": "ReserveConfiguration",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "492:20:50",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/configuration/UserConfiguration.sol",
              "file": "../protocol/libraries/configuration/UserConfiguration.sol",
              "id": 7838,
              "nodeType": "ImportDirective",
              "scope": 8364,
              "sourceUnit": 16985,
              "src": "583:92:50",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 7837,
                    "name": "UserConfiguration",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "591:17:50",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/types/DataTypes.sol",
              "file": "../protocol/libraries/types/DataTypes.sol",
              "id": 7840,
              "nodeType": "ImportDirective",
              "scope": 8364,
              "sourceUnit": 20532,
              "src": "676:68:50",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 7839,
                    "name": "DataTypes",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "684:9:50",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 8363,
              "linearizedBaseContracts": [
                8363
              ],
              "name": "AaveProtocolDataProvider",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 7843,
                  "libraryName": {
                    "contractScope": null,
                    "id": 7841,
                    "name": "ReserveConfiguration",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16741,
                    "src": "790:20:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ReserveConfiguration_$16741",
                      "typeString": "library ReserveConfiguration"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "784:65:50",
                  "typeName": {
                    "contractScope": null,
                    "id": 7842,
                    "name": "DataTypes.ReserveConfigurationMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20523,
                    "src": "815:33:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                      "typeString": "struct DataTypes.ReserveConfigurationMap"
                    }
                  }
                },
                {
                  "id": 7846,
                  "libraryName": {
                    "contractScope": null,
                    "id": 7844,
                    "name": "UserConfiguration",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16984,
                    "src": "858:17:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UserConfiguration_$16984",
                      "typeString": "library UserConfiguration"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "852:59:50",
                  "typeName": {
                    "contractScope": null,
                    "id": 7845,
                    "name": "DataTypes.UserConfigurationMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20526,
                    "src": "880:30:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                      "typeString": "struct DataTypes.UserConfigurationMap"
                    }
                  }
                },
                {
                  "constant": true,
                  "id": 7849,
                  "mutability": "constant",
                  "name": "MKR",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8363,
                  "src": "915:65:50",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7847,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "915:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307839663846373261413933303463384235393364353535463132654636353839634333413537394132",
                    "id": 7848,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "938:42:50",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    },
                    "value": "0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 7852,
                  "mutability": "constant",
                  "name": "ETH",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8363,
                  "src": "984:65:50",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7850,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "984:7:50",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307845656565654565656545654565654565456545656545454565656565456565656565656545456545",
                    "id": 7851,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1007:42:50",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    },
                    "value": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"
                  },
                  "visibility": "internal"
                },
                {
                  "canonicalName": "AaveProtocolDataProvider.TokenData",
                  "id": 7857,
                  "members": [
                    {
                      "constant": false,
                      "id": 7854,
                      "mutability": "mutable",
                      "name": "symbol",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7857,
                      "src": "1077:13:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 7853,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1077:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7856,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7857,
                      "src": "1096:20:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7855,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1096:7:50",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "TokenData",
                  "nodeType": "StructDefinition",
                  "scope": 8363,
                  "src": "1054:67:50",
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "0542975c",
                  "id": 7859,
                  "mutability": "immutable",
                  "name": "ADDRESSES_PROVIDER",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8363,
                  "src": "1125:65:50",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                    "typeString": "contract ILendingPoolAddressesProvider"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7858,
                    "name": "ILendingPoolAddressesProvider",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6617,
                    "src": "1125:29:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                      "typeString": "contract ILendingPoolAddressesProvider"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 7868,
                    "nodeType": "Block",
                    "src": "1263:49:50",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7866,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7864,
                            "name": "ADDRESSES_PROVIDER",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7859,
                            "src": "1269:18:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                              "typeString": "contract ILendingPoolAddressesProvider"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 7865,
                            "name": "addressesProvider",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7861,
                            "src": "1290:17:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                              "typeString": "contract ILendingPoolAddressesProvider"
                            }
                          },
                          "src": "1269:38:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                            "typeString": "contract ILendingPoolAddressesProvider"
                          }
                        },
                        "id": 7867,
                        "nodeType": "ExpressionStatement",
                        "src": "1269:38:50"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 7869,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7862,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7861,
                        "mutability": "mutable",
                        "name": "addressesProvider",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7869,
                        "src": "1207:47:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                          "typeString": "contract ILendingPoolAddressesProvider"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 7860,
                          "name": "ILendingPoolAddressesProvider",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6617,
                          "src": "1207:29:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                            "typeString": "contract ILendingPoolAddressesProvider"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1206:49:50"
                  },
                  "returnParameters": {
                    "id": 7863,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1263:0:50"
                  },
                  "scope": 8363,
                  "src": "1195:117:50",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 7973,
                    "nodeType": "Block",
                    "src": "1391:713:50",
                    "statements": [
                      {
                        "assignments": [
                          7876
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7876,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 7973,
                            "src": "1397:17:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPool_$6466",
                              "typeString": "contract ILendingPool"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 7875,
                              "name": "ILendingPool",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 6466,
                              "src": "1397:12:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7882,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7878,
                                  "name": "ADDRESSES_PROVIDER",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7859,
                                  "src": "1430:18:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                                    "typeString": "contract ILendingPoolAddressesProvider"
                                  }
                                },
                                "id": 7879,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getLendingPool",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6551,
                                "src": "1430:33:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              "id": 7880,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1430:35:50",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 7877,
                            "name": "ILendingPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6466,
                            "src": "1417:12:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ILendingPool_$6466_$",
                              "typeString": "type(contract ILendingPool)"
                            }
                          },
                          "id": 7881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1417:49:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1397:69:50"
                      },
                      {
                        "assignments": [
                          7887
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7887,
                            "mutability": "mutable",
                            "name": "reserves",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 7973,
                            "src": "1472:25:50",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 7885,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1472:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 7886,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "1472:9:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7891,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7888,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7876,
                              "src": "1500:4:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 7889,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getReservesList",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6450,
                            "src": "1500:20:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function () view external returns (address[] memory)"
                            }
                          },
                          "id": 7890,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1500:22:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1472:50:50"
                      },
                      {
                        "assignments": [
                          7895
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7895,
                            "mutability": "mutable",
                            "name": "reservesTokens",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 7973,
                            "src": "1528:33:50",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_TokenData_$7857_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct AaveProtocolDataProvider.TokenData[]"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 7893,
                                "name": "TokenData",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 7857,
                                "src": "1528:9:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenData_$7857_storage_ptr",
                                  "typeString": "struct AaveProtocolDataProvider.TokenData"
                                }
                              },
                              "id": 7894,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "1528:11:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_TokenData_$7857_storage_$dyn_storage_ptr",
                                "typeString": "struct AaveProtocolDataProvider.TokenData[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7902,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7899,
                                "name": "reserves",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7887,
                                "src": "1580:8:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 7900,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1580:15:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7898,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "1564:15:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_TokenData_$7857_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (struct AaveProtocolDataProvider.TokenData memory[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 7896,
                                "name": "TokenData",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 7857,
                                "src": "1568:9:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenData_$7857_storage_ptr",
                                  "typeString": "struct AaveProtocolDataProvider.TokenData"
                                }
                              },
                              "id": 7897,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "1568:11:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_TokenData_$7857_storage_$dyn_storage_ptr",
                                "typeString": "struct AaveProtocolDataProvider.TokenData[]"
                              }
                            }
                          },
                          "id": 7901,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1564:32:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenData_$7857_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct AaveProtocolDataProvider.TokenData memory[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1528:68:50"
                      },
                      {
                        "body": {
                          "id": 7969,
                          "nodeType": "Block",
                          "src": "1648:425:50",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 7918,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 7914,
                                    "name": "reserves",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7887,
                                    "src": "1660:8:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 7916,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 7915,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7904,
                                    "src": "1669:1:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1660:11:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 7917,
                                  "name": "MKR",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7849,
                                  "src": "1675:3:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "1660:18:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 7932,
                              "nodeType": "IfStatement",
                              "src": "1656:134:50",
                              "trueBody": {
                                "id": 7931,
                                "nodeType": "Block",
                                "src": "1680:110:50",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 7928,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 7919,
                                          "name": "reservesTokens",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7895,
                                          "src": "1690:14:50",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_TokenData_$7857_memory_ptr_$dyn_memory_ptr",
                                            "typeString": "struct AaveProtocolDataProvider.TokenData memory[] memory"
                                          }
                                        },
                                        "id": 7921,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 7920,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7904,
                                          "src": "1705:1:50",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "1690:17:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_TokenData_$7857_memory_ptr",
                                          "typeString": "struct AaveProtocolDataProvider.TokenData memory"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "4d4b52",
                                            "id": 7923,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1729:5:50",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_ec76ec3a7e5f010a9229e69fa1945af6f0c6cc5b0a625bf03bd6381222192020",
                                              "typeString": "literal_string \"MKR\""
                                            },
                                            "value": "MKR"
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 7924,
                                              "name": "reserves",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7887,
                                              "src": "1750:8:50",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                "typeString": "address[] memory"
                                              }
                                            },
                                            "id": 7926,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 7925,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7904,
                                              "src": "1759:1:50",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "1750:11:50",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_ec76ec3a7e5f010a9229e69fa1945af6f0c6cc5b0a625bf03bd6381222192020",
                                              "typeString": "literal_string \"MKR\""
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 7922,
                                          "name": "TokenData",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7857,
                                          "src": "1710:9:50",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_struct$_TokenData_$7857_storage_ptr_$",
                                            "typeString": "type(struct AaveProtocolDataProvider.TokenData storage pointer)"
                                          }
                                        },
                                        "id": 7927,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "structConstructorCall",
                                        "lValueRequested": false,
                                        "names": [
                                          "symbol",
                                          "tokenAddress"
                                        ],
                                        "nodeType": "FunctionCall",
                                        "src": "1710:53:50",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_TokenData_$7857_memory_ptr",
                                          "typeString": "struct AaveProtocolDataProvider.TokenData memory"
                                        }
                                      },
                                      "src": "1690:73:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_TokenData_$7857_memory_ptr",
                                        "typeString": "struct AaveProtocolDataProvider.TokenData memory"
                                      }
                                    },
                                    "id": 7929,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1690:73:50"
                                  },
                                  {
                                    "id": 7930,
                                    "nodeType": "Continue",
                                    "src": "1773:8:50"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 7937,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 7933,
                                    "name": "reserves",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7887,
                                    "src": "1801:8:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 7935,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 7934,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7904,
                                    "src": "1810:1:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1801:11:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 7936,
                                  "name": "ETH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7852,
                                  "src": "1816:3:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "1801:18:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 7951,
                              "nodeType": "IfStatement",
                              "src": "1797:134:50",
                              "trueBody": {
                                "id": 7950,
                                "nodeType": "Block",
                                "src": "1821:110:50",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 7947,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 7938,
                                          "name": "reservesTokens",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7895,
                                          "src": "1831:14:50",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_TokenData_$7857_memory_ptr_$dyn_memory_ptr",
                                            "typeString": "struct AaveProtocolDataProvider.TokenData memory[] memory"
                                          }
                                        },
                                        "id": 7940,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 7939,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7904,
                                          "src": "1846:1:50",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "1831:17:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_TokenData_$7857_memory_ptr",
                                          "typeString": "struct AaveProtocolDataProvider.TokenData memory"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "455448",
                                            "id": 7942,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1870:5:50",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_aaaebeba3810b1e6b70781f14b2d72c1cb89c0b2b320c43bb67ff79f562f5ff4",
                                              "typeString": "literal_string \"ETH\""
                                            },
                                            "value": "ETH"
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 7943,
                                              "name": "reserves",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7887,
                                              "src": "1891:8:50",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                "typeString": "address[] memory"
                                              }
                                            },
                                            "id": 7945,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 7944,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7904,
                                              "src": "1900:1:50",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "1891:11:50",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_aaaebeba3810b1e6b70781f14b2d72c1cb89c0b2b320c43bb67ff79f562f5ff4",
                                              "typeString": "literal_string \"ETH\""
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 7941,
                                          "name": "TokenData",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7857,
                                          "src": "1851:9:50",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_struct$_TokenData_$7857_storage_ptr_$",
                                            "typeString": "type(struct AaveProtocolDataProvider.TokenData storage pointer)"
                                          }
                                        },
                                        "id": 7946,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "structConstructorCall",
                                        "lValueRequested": false,
                                        "names": [
                                          "symbol",
                                          "tokenAddress"
                                        ],
                                        "nodeType": "FunctionCall",
                                        "src": "1851:53:50",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_TokenData_$7857_memory_ptr",
                                          "typeString": "struct AaveProtocolDataProvider.TokenData memory"
                                        }
                                      },
                                      "src": "1831:73:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_TokenData_$7857_memory_ptr",
                                        "typeString": "struct AaveProtocolDataProvider.TokenData memory"
                                      }
                                    },
                                    "id": 7948,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1831:73:50"
                                  },
                                  {
                                    "id": 7949,
                                    "nodeType": "Continue",
                                    "src": "1914:8:50"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 7967,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 7952,
                                    "name": "reservesTokens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7895,
                                    "src": "1938:14:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_TokenData_$7857_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct AaveProtocolDataProvider.TokenData memory[] memory"
                                    }
                                  },
                                  "id": 7954,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 7953,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7904,
                                    "src": "1953:1:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1938:17:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_TokenData_$7857_memory_ptr",
                                    "typeString": "struct AaveProtocolDataProvider.TokenData memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 7957,
                                                "name": "reserves",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7887,
                                                "src": "2001:8:50",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                  "typeString": "address[] memory"
                                                }
                                              },
                                              "id": 7959,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "id": 7958,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7904,
                                                "src": "2010:1:50",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "2001:11:50",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 7956,
                                            "name": "IERC20Detailed",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4034,
                                            "src": "1986:14:50",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IERC20Detailed_$4034_$",
                                              "typeString": "type(contract IERC20Detailed)"
                                            }
                                          },
                                          "id": 7960,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1986:27:50",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20Detailed_$4034",
                                            "typeString": "contract IERC20Detailed"
                                          }
                                        },
                                        "id": 7961,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "symbol",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4028,
                                        "src": "1986:34:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_ptr_$",
                                          "typeString": "function () view external returns (string memory)"
                                        }
                                      },
                                      "id": 7962,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1986:36:50",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 7963,
                                        "name": "reserves",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7887,
                                        "src": "2046:8:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                          "typeString": "address[] memory"
                                        }
                                      },
                                      "id": 7965,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 7964,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7904,
                                        "src": "2055:1:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2046:11:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 7955,
                                    "name": "TokenData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7857,
                                    "src": "1958:9:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_struct$_TokenData_$7857_storage_ptr_$",
                                      "typeString": "type(struct AaveProtocolDataProvider.TokenData storage pointer)"
                                    }
                                  },
                                  "id": 7966,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "structConstructorCall",
                                  "lValueRequested": false,
                                  "names": [
                                    "symbol",
                                    "tokenAddress"
                                  ],
                                  "nodeType": "FunctionCall",
                                  "src": "1958:108:50",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_TokenData_$7857_memory_ptr",
                                    "typeString": "struct AaveProtocolDataProvider.TokenData memory"
                                  }
                                },
                                "src": "1938:128:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenData_$7857_memory_ptr",
                                  "typeString": "struct AaveProtocolDataProvider.TokenData memory"
                                }
                              },
                              "id": 7968,
                              "nodeType": "ExpressionStatement",
                              "src": "1938:128:50"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7910,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7907,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7904,
                            "src": "1622:1:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7908,
                              "name": "reserves",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7887,
                              "src": "1626:8:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 7909,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1626:15:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1622:19:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7970,
                        "initializationExpression": {
                          "assignments": [
                            7904
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 7904,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 7970,
                              "src": "1607:9:50",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 7903,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1607:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 7906,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 7905,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1619:1:50",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1607:13:50"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 7912,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "1643:3:50",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 7911,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7904,
                              "src": "1643:1:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7913,
                          "nodeType": "ExpressionStatement",
                          "src": "1643:3:50"
                        },
                        "nodeType": "ForStatement",
                        "src": "1602:471:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7971,
                          "name": "reservesTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7895,
                          "src": "2085:14:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenData_$7857_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct AaveProtocolDataProvider.TokenData memory[] memory"
                          }
                        },
                        "functionReturnParameters": 7874,
                        "id": 7972,
                        "nodeType": "Return",
                        "src": "2078:21:50"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "b316ff89",
                  "id": 7974,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAllReservesTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7870,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1345:2:50"
                  },
                  "returnParameters": {
                    "id": 7874,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7873,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7974,
                        "src": "1371:18:50",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_TokenData_$7857_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct AaveProtocolDataProvider.TokenData[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 7871,
                            "name": "TokenData",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 7857,
                            "src": "1371:9:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenData_$7857_storage_ptr",
                              "typeString": "struct AaveProtocolDataProvider.TokenData"
                            }
                          },
                          "id": 7872,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1371:11:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenData_$7857_storage_$dyn_storage_ptr",
                            "typeString": "struct AaveProtocolDataProvider.TokenData[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1370:20:50"
                  },
                  "scope": 8363,
                  "src": "1316:788:50",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8049,
                    "nodeType": "Block",
                    "src": "2176:521:50",
                    "statements": [
                      {
                        "assignments": [
                          7981
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7981,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 8049,
                            "src": "2182:17:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPool_$6466",
                              "typeString": "contract ILendingPool"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 7980,
                              "name": "ILendingPool",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 6466,
                              "src": "2182:12:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7987,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7983,
                                  "name": "ADDRESSES_PROVIDER",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7859,
                                  "src": "2215:18:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                                    "typeString": "contract ILendingPoolAddressesProvider"
                                  }
                                },
                                "id": 7984,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getLendingPool",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6551,
                                "src": "2215:33:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              "id": 7985,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2215:35:50",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 7982,
                            "name": "ILendingPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6466,
                            "src": "2202:12:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ILendingPool_$6466_$",
                              "typeString": "type(contract ILendingPool)"
                            }
                          },
                          "id": 7986,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2202:49:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2182:69:50"
                      },
                      {
                        "assignments": [
                          7992
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7992,
                            "mutability": "mutable",
                            "name": "reserves",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 8049,
                            "src": "2257:25:50",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 7990,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2257:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 7991,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "2257:9:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7996,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7993,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7981,
                              "src": "2285:4:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 7994,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getReservesList",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6450,
                            "src": "2285:20:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function () view external returns (address[] memory)"
                            }
                          },
                          "id": 7995,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2285:22:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2257:50:50"
                      },
                      {
                        "assignments": [
                          8000
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8000,
                            "mutability": "mutable",
                            "name": "aTokens",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 8049,
                            "src": "2313:26:50",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_TokenData_$7857_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct AaveProtocolDataProvider.TokenData[]"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 7998,
                                "name": "TokenData",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 7857,
                                "src": "2313:9:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenData_$7857_storage_ptr",
                                  "typeString": "struct AaveProtocolDataProvider.TokenData"
                                }
                              },
                              "id": 7999,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "2313:11:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_TokenData_$7857_storage_$dyn_storage_ptr",
                                "typeString": "struct AaveProtocolDataProvider.TokenData[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8007,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8004,
                                "name": "reserves",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7992,
                                "src": "2358:8:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 8005,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2358:15:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8003,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "2342:15:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_TokenData_$7857_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (struct AaveProtocolDataProvider.TokenData memory[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 8001,
                                "name": "TokenData",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 7857,
                                "src": "2346:9:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenData_$7857_storage_ptr",
                                  "typeString": "struct AaveProtocolDataProvider.TokenData"
                                }
                              },
                              "id": 8002,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "2346:11:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_TokenData_$7857_storage_$dyn_storage_ptr",
                                "typeString": "struct AaveProtocolDataProvider.TokenData[]"
                              }
                            }
                          },
                          "id": 8006,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2342:32:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenData_$7857_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct AaveProtocolDataProvider.TokenData memory[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2313:61:50"
                      },
                      {
                        "body": {
                          "id": 8045,
                          "nodeType": "Block",
                          "src": "2426:247:50",
                          "statements": [
                            {
                              "assignments": [
                                8022
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 8022,
                                  "mutability": "mutable",
                                  "name": "reserveData",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 8045,
                                  "src": "2434:40:50",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                    "typeString": "struct DataTypes.ReserveData"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 8021,
                                    "name": "DataTypes.ReserveData",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 20520,
                                    "src": "2434:21:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                      "typeString": "struct DataTypes.ReserveData"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 8029,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 8025,
                                      "name": "reserves",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7992,
                                      "src": "2497:8:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 8027,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 8026,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8009,
                                      "src": "2506:1:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2497:11:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8023,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7981,
                                    "src": "2477:4:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                      "typeString": "contract ILendingPool"
                                    }
                                  },
                                  "id": 8024,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getReserveData",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6429,
                                  "src": "2477:19:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveData_$20520_memory_ptr_$",
                                    "typeString": "function (address) view external returns (struct DataTypes.ReserveData memory)"
                                  }
                                },
                                "id": 8028,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2477:32:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveData memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2434:75:50"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8043,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 8030,
                                    "name": "aTokens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8000,
                                    "src": "2517:7:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_TokenData_$7857_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct AaveProtocolDataProvider.TokenData memory[] memory"
                                    }
                                  },
                                  "id": 8032,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 8031,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8009,
                                    "src": "2525:1:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2517:10:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_TokenData_$7857_memory_ptr",
                                    "typeString": "struct AaveProtocolDataProvider.TokenData memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 8035,
                                                "name": "reserveData",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8022,
                                                "src": "2573:11:50",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                                  "typeString": "struct DataTypes.ReserveData memory"
                                                }
                                              },
                                              "id": 8036,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "aTokenAddress",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 20511,
                                              "src": "2573:25:50",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 8034,
                                            "name": "IERC20Detailed",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4034,
                                            "src": "2558:14:50",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IERC20Detailed_$4034_$",
                                              "typeString": "type(contract IERC20Detailed)"
                                            }
                                          },
                                          "id": 8037,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "2558:41:50",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20Detailed_$4034",
                                            "typeString": "contract IERC20Detailed"
                                          }
                                        },
                                        "id": 8038,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "symbol",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4028,
                                        "src": "2558:48:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_ptr_$",
                                          "typeString": "function () view external returns (string memory)"
                                        }
                                      },
                                      "id": 8039,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2558:50:50",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8040,
                                        "name": "reserveData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8022,
                                        "src": "2632:11:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                          "typeString": "struct DataTypes.ReserveData memory"
                                        }
                                      },
                                      "id": 8041,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "aTokenAddress",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20511,
                                      "src": "2632:25:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 8033,
                                    "name": "TokenData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7857,
                                    "src": "2530:9:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_struct$_TokenData_$7857_storage_ptr_$",
                                      "typeString": "type(struct AaveProtocolDataProvider.TokenData storage pointer)"
                                    }
                                  },
                                  "id": 8042,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "structConstructorCall",
                                  "lValueRequested": false,
                                  "names": [
                                    "symbol",
                                    "tokenAddress"
                                  ],
                                  "nodeType": "FunctionCall",
                                  "src": "2530:136:50",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_TokenData_$7857_memory_ptr",
                                    "typeString": "struct AaveProtocolDataProvider.TokenData memory"
                                  }
                                },
                                "src": "2517:149:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenData_$7857_memory_ptr",
                                  "typeString": "struct AaveProtocolDataProvider.TokenData memory"
                                }
                              },
                              "id": 8044,
                              "nodeType": "ExpressionStatement",
                              "src": "2517:149:50"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8015,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 8012,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8009,
                            "src": "2400:1:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8013,
                              "name": "reserves",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7992,
                              "src": "2404:8:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 8014,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2404:15:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2400:19:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8046,
                        "initializationExpression": {
                          "assignments": [
                            8009
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 8009,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 8046,
                              "src": "2385:9:50",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 8008,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2385:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 8011,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 8010,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2397:1:50",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2385:13:50"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 8017,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "2421:3:50",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 8016,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8009,
                              "src": "2421:1:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8018,
                          "nodeType": "ExpressionStatement",
                          "src": "2421:3:50"
                        },
                        "nodeType": "ForStatement",
                        "src": "2380:293:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 8047,
                          "name": "aTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8000,
                          "src": "2685:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenData_$7857_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct AaveProtocolDataProvider.TokenData memory[] memory"
                          }
                        },
                        "functionReturnParameters": 7979,
                        "id": 8048,
                        "nodeType": "Return",
                        "src": "2678:14:50"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "f561ae41",
                  "id": 8050,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAllATokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 7975,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2130:2:50"
                  },
                  "returnParameters": {
                    "id": 7979,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7978,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8050,
                        "src": "2156:18:50",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_TokenData_$7857_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct AaveProtocolDataProvider.TokenData[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 7976,
                            "name": "TokenData",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 7857,
                            "src": "2156:9:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenData_$7857_storage_ptr",
                              "typeString": "struct AaveProtocolDataProvider.TokenData"
                            }
                          },
                          "id": 7977,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2156:11:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenData_$7857_storage_$dyn_storage_ptr",
                            "typeString": "struct AaveProtocolDataProvider.TokenData[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2155:20:50"
                  },
                  "scope": 8363,
                  "src": "2108:589:50",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8115,
                    "nodeType": "Block",
                    "src": "3080:433:50",
                    "statements": [
                      {
                        "assignments": [
                          8078
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8078,
                            "mutability": "mutable",
                            "name": "configuration",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 8115,
                            "src": "3086:54:50",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                              "typeString": "struct DataTypes.ReserveConfigurationMap"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 8077,
                              "name": "DataTypes.ReserveConfigurationMap",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20523,
                              "src": "3086:33:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8087,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8085,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8052,
                              "src": "3216:5:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8080,
                                      "name": "ADDRESSES_PROVIDER",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7859,
                                      "src": "3162:18:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                                        "typeString": "contract ILendingPoolAddressesProvider"
                                      }
                                    },
                                    "id": 8081,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getLendingPool",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6551,
                                    "src": "3162:33:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                      "typeString": "function () view external returns (address)"
                                    }
                                  },
                                  "id": 8082,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3162:35:50",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 8079,
                                "name": "ILendingPool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6466,
                                "src": "3149:12:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ILendingPool_$6466_$",
                                  "typeString": "type(contract ILendingPool)"
                                }
                              },
                              "id": 8083,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3149:49:50",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 8084,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getConfiguration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6397,
                            "src": "3149:66:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (address) view external returns (struct DataTypes.ReserveConfigurationMap memory)"
                            }
                          },
                          "id": 8086,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3149:73:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3086:136:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 8097,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 8088,
                                "name": "ltv",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8057,
                                "src": "3230:3:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8089,
                                "name": "liquidationThreshold",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8059,
                                "src": "3235:20:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8090,
                                "name": "liquidationBonus",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8061,
                                "src": "3257:16:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8091,
                                "name": "decimals",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8055,
                                "src": "3275:8:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8092,
                                "name": "reserveFactor",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8063,
                                "src": "3285:13:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 8093,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "3229:70:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8094,
                                "name": "configuration",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8078,
                                "src": "3302:13:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                }
                              },
                              "id": 8095,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getParamsMemory",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16691,
                              "src": "3302:36:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$bound_to$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                                "typeString": "function (struct DataTypes.ReserveConfigurationMap memory) pure returns (uint256,uint256,uint256,uint256,uint256)"
                              }
                            },
                            "id": 8096,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3302:38:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "src": "3229:111:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8098,
                        "nodeType": "ExpressionStatement",
                        "src": "3229:111:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 8107,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 8099,
                                "name": "isActive",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8071,
                                "src": "3348:8:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8100,
                                "name": "isFrozen",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8073,
                                "src": "3358:8:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8101,
                                "name": "borrowingEnabled",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8067,
                                "src": "3368:16:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8102,
                                "name": "stableBorrowRateEnabled",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8069,
                                "src": "3386:23:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 8103,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "3347:63:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_bool_$_t_bool_$_t_bool_$",
                              "typeString": "tuple(bool,bool,bool,bool)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8104,
                                "name": "configuration",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8078,
                                "src": "3413:13:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                }
                              },
                              "id": 8105,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getFlagsMemory",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16740,
                              "src": "3413:35:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$returns$_t_bool_$_t_bool_$_t_bool_$_t_bool_$bound_to$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                                "typeString": "function (struct DataTypes.ReserveConfigurationMap memory) pure returns (bool,bool,bool,bool)"
                              }
                            },
                            "id": 8106,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3413:37:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_bool_$_t_bool_$_t_bool_$",
                              "typeString": "tuple(bool,bool,bool,bool)"
                            }
                          },
                          "src": "3347:103:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8108,
                        "nodeType": "ExpressionStatement",
                        "src": "3347:103:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 8113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 8109,
                            "name": "usageAsCollateralEnabled",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8065,
                            "src": "3457:24:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8112,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 8110,
                              "name": "liquidationThreshold",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8059,
                              "src": "3484:20:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 8111,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3507:1:50",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "3484:24:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3457:51:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8114,
                        "nodeType": "ExpressionStatement",
                        "src": "3457:51:50"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "3e150141",
                  "id": 8116,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReserveConfigurationData",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 8053,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8052,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8116,
                        "src": "2738:13:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8051,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2738:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2737:15:50"
                  },
                  "returnParameters": {
                    "id": 8074,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8055,
                        "mutability": "mutable",
                        "name": "decimals",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8116,
                        "src": "2795:16:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8054,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2795:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8057,
                        "mutability": "mutable",
                        "name": "ltv",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8116,
                        "src": "2819:11:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8056,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2819:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8059,
                        "mutability": "mutable",
                        "name": "liquidationThreshold",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8116,
                        "src": "2838:28:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8058,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2838:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8061,
                        "mutability": "mutable",
                        "name": "liquidationBonus",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8116,
                        "src": "2874:24:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8060,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2874:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8063,
                        "mutability": "mutable",
                        "name": "reserveFactor",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8116,
                        "src": "2906:21:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8062,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2906:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8065,
                        "mutability": "mutable",
                        "name": "usageAsCollateralEnabled",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8116,
                        "src": "2935:29:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8064,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2935:4:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8067,
                        "mutability": "mutable",
                        "name": "borrowingEnabled",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8116,
                        "src": "2972:21:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8066,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2972:4:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8069,
                        "mutability": "mutable",
                        "name": "stableBorrowRateEnabled",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8116,
                        "src": "3001:28:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8068,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3001:4:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8071,
                        "mutability": "mutable",
                        "name": "isActive",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8116,
                        "src": "3037:13:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8070,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3037:4:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8073,
                        "mutability": "mutable",
                        "name": "isFrozen",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8116,
                        "src": "3058:13:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8072,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3058:4:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2787:290:50"
                  },
                  "scope": 8363,
                  "src": "2701:812:50",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8193,
                    "nodeType": "Block",
                    "src": "3930:642:50",
                    "statements": [
                      {
                        "assignments": [
                          8144
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8144,
                            "mutability": "mutable",
                            "name": "reserve",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 8193,
                            "src": "3936:36:50",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                              "typeString": "struct DataTypes.ReserveData"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 8143,
                              "name": "DataTypes.ReserveData",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20520,
                              "src": "3936:21:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8153,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8151,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8118,
                              "src": "4046:5:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8146,
                                      "name": "ADDRESSES_PROVIDER",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7859,
                                      "src": "3994:18:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                                        "typeString": "contract ILendingPoolAddressesProvider"
                                      }
                                    },
                                    "id": 8147,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getLendingPool",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6551,
                                    "src": "3994:33:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                      "typeString": "function () view external returns (address)"
                                    }
                                  },
                                  "id": 8148,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3994:35:50",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 8145,
                                "name": "ILendingPool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6466,
                                "src": "3981:12:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ILendingPool_$6466_$",
                                  "typeString": "type(contract ILendingPool)"
                                }
                              },
                              "id": 8149,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3981:49:50",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 8150,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getReserveData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6429,
                            "src": "3981:64:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveData_$20520_memory_ptr_$",
                              "typeString": "function (address) view external returns (struct DataTypes.ReserveData memory)"
                            }
                          },
                          "id": 8152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3981:71:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                            "typeString": "struct DataTypes.ReserveData memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3936:116:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8158,
                                    "name": "reserve",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8144,
                                    "src": "4106:7:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                      "typeString": "struct DataTypes.ReserveData memory"
                                    }
                                  },
                                  "id": 8159,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "aTokenAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20511,
                                  "src": "4106:21:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 8155,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8118,
                                      "src": "4089:5:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 8154,
                                    "name": "IERC20Detailed",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4034,
                                    "src": "4074:14:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20Detailed_$4034_$",
                                      "typeString": "type(contract IERC20Detailed)"
                                    }
                                  },
                                  "id": 8156,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4074:21:50",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20Detailed_$4034",
                                    "typeString": "contract IERC20Detailed"
                                  }
                                },
                                "id": 8157,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3951,
                                "src": "4074:31:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 8160,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4074:54:50",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8162,
                                        "name": "reserve",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8144,
                                        "src": "4151:7:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                          "typeString": "struct DataTypes.ReserveData memory"
                                        }
                                      },
                                      "id": 8163,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "stableDebtTokenAddress",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20513,
                                      "src": "4151:30:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 8161,
                                    "name": "IERC20Detailed",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4034,
                                    "src": "4136:14:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20Detailed_$4034_$",
                                      "typeString": "type(contract IERC20Detailed)"
                                    }
                                  },
                                  "id": 8164,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4136:46:50",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20Detailed_$4034",
                                    "typeString": "contract IERC20Detailed"
                                  }
                                },
                                "id": 8165,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalSupply",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3943,
                                "src": "4136:58:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 8166,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4136:60:50",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8168,
                                        "name": "reserve",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8144,
                                        "src": "4219:7:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                          "typeString": "struct DataTypes.ReserveData memory"
                                        }
                                      },
                                      "id": 8169,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "variableDebtTokenAddress",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20515,
                                      "src": "4219:32:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 8167,
                                    "name": "IERC20Detailed",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4034,
                                    "src": "4204:14:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20Detailed_$4034_$",
                                      "typeString": "type(contract IERC20Detailed)"
                                    }
                                  },
                                  "id": 8170,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4204:48:50",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20Detailed_$4034",
                                    "typeString": "contract IERC20Detailed"
                                  }
                                },
                                "id": 8171,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalSupply",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3943,
                                "src": "4204:60:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 8172,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4204:62:50",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8173,
                                "name": "reserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8144,
                                "src": "4274:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveData memory"
                                }
                              },
                              "id": 8174,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "currentLiquidityRate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20503,
                              "src": "4274:28:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8175,
                                "name": "reserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8144,
                                "src": "4310:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveData memory"
                                }
                              },
                              "id": 8176,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "currentVariableBorrowRate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20505,
                              "src": "4310:33:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8177,
                                "name": "reserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8144,
                                "src": "4351:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveData memory"
                                }
                              },
                              "id": 8178,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "currentStableBorrowRate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20507,
                              "src": "4351:31:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8180,
                                        "name": "reserve",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8144,
                                        "src": "4407:7:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                          "typeString": "struct DataTypes.ReserveData memory"
                                        }
                                      },
                                      "id": 8181,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "stableDebtTokenAddress",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20513,
                                      "src": "4407:30:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 8179,
                                    "name": "IStableDebtToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7133,
                                    "src": "4390:16:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IStableDebtToken_$7133_$",
                                      "typeString": "type(contract IStableDebtToken)"
                                    }
                                  },
                                  "id": 8182,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4390:48:50",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IStableDebtToken_$7133",
                                    "typeString": "contract IStableDebtToken"
                                  }
                                },
                                "id": 8183,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getAverageStableRate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7076,
                                "src": "4390:69:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 8184,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4390:71:50",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8185,
                                "name": "reserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8144,
                                "src": "4469:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveData memory"
                                }
                              },
                              "id": 8186,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "liquidityIndex",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20499,
                              "src": "4469:22:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8187,
                                "name": "reserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8144,
                                "src": "4499:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveData memory"
                                }
                              },
                              "id": 8188,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "variableBorrowIndex",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20501,
                              "src": "4499:27:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8189,
                                "name": "reserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8144,
                                "src": "4534:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveData memory"
                                }
                              },
                              "id": 8190,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lastUpdateTimestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20509,
                              "src": "4534:27:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint40",
                                "typeString": "uint40"
                              }
                            }
                          ],
                          "id": 8191,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "4066:501:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$_t_uint128_$_t_uint256_$_t_uint128_$_t_uint128_$_t_uint40_$",
                            "typeString": "tuple(uint256,uint256,uint256,uint128,uint128,uint128,uint256,uint128,uint128,uint40)"
                          }
                        },
                        "functionReturnParameters": 8140,
                        "id": 8192,
                        "nodeType": "Return",
                        "src": "4059:508:50"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "35ea6a75",
                  "id": 8194,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReserveData",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 8119,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8118,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8194,
                        "src": "3541:13:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8117,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3541:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3540:15:50"
                  },
                  "returnParameters": {
                    "id": 8140,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8121,
                        "mutability": "mutable",
                        "name": "availableLiquidity",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8194,
                        "src": "3598:26:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8120,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3598:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8123,
                        "mutability": "mutable",
                        "name": "totalStableDebt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8194,
                        "src": "3632:23:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8122,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3632:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8125,
                        "mutability": "mutable",
                        "name": "totalVariableDebt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8194,
                        "src": "3663:25:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8124,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3663:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8127,
                        "mutability": "mutable",
                        "name": "liquidityRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8194,
                        "src": "3696:21:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8126,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3696:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8129,
                        "mutability": "mutable",
                        "name": "variableBorrowRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8194,
                        "src": "3725:26:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8128,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3725:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8131,
                        "mutability": "mutable",
                        "name": "stableBorrowRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8194,
                        "src": "3759:24:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8130,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3759:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8133,
                        "mutability": "mutable",
                        "name": "averageStableBorrowRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8194,
                        "src": "3791:31:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8132,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3791:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8135,
                        "mutability": "mutable",
                        "name": "liquidityIndex",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8194,
                        "src": "3830:22:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8134,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3830:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8137,
                        "mutability": "mutable",
                        "name": "variableBorrowIndex",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8194,
                        "src": "3860:27:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8136,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3860:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8139,
                        "mutability": "mutable",
                        "name": "lastUpdateTimestamp",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8194,
                        "src": "3895:26:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        },
                        "typeName": {
                          "id": 8138,
                          "name": "uint40",
                          "nodeType": "ElementaryTypeName",
                          "src": "3895:6:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3590:337:50"
                  },
                  "scope": 8363,
                  "src": "3517:1055:50",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8328,
                    "nodeType": "Block",
                    "src": "4983:1069:50",
                    "statements": [
                      {
                        "assignments": [
                          8222
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8222,
                            "mutability": "mutable",
                            "name": "reserve",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 8328,
                            "src": "4989:36:50",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                              "typeString": "struct DataTypes.ReserveData"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 8221,
                              "name": "DataTypes.ReserveData",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20520,
                              "src": "4989:21:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8231,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8229,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8196,
                              "src": "5099:5:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8224,
                                      "name": "ADDRESSES_PROVIDER",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7859,
                                      "src": "5047:18:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                                        "typeString": "contract ILendingPoolAddressesProvider"
                                      }
                                    },
                                    "id": 8225,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getLendingPool",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6551,
                                    "src": "5047:33:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                      "typeString": "function () view external returns (address)"
                                    }
                                  },
                                  "id": 8226,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5047:35:50",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 8223,
                                "name": "ILendingPool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6466,
                                "src": "5034:12:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ILendingPool_$6466_$",
                                  "typeString": "type(contract ILendingPool)"
                                }
                              },
                              "id": 8227,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5034:49:50",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 8228,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getReserveData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6429,
                            "src": "5034:64:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveData_$20520_memory_ptr_$",
                              "typeString": "function (address) view external returns (struct DataTypes.ReserveData memory)"
                            }
                          },
                          "id": 8230,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5034:71:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                            "typeString": "struct DataTypes.ReserveData memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4989:116:50"
                      },
                      {
                        "assignments": [
                          8235
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8235,
                            "mutability": "mutable",
                            "name": "userConfig",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 8328,
                            "src": "5112:48:50",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_memory_ptr",
                              "typeString": "struct DataTypes.UserConfigurationMap"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 8234,
                              "name": "DataTypes.UserConfigurationMap",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20526,
                              "src": "5112:30:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                "typeString": "struct DataTypes.UserConfigurationMap"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8244,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8242,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8198,
                              "src": "5240:4:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8237,
                                      "name": "ADDRESSES_PROVIDER",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7859,
                                      "src": "5182:18:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                                        "typeString": "contract ILendingPoolAddressesProvider"
                                      }
                                    },
                                    "id": 8238,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getLendingPool",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6551,
                                    "src": "5182:33:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                      "typeString": "function () view external returns (address)"
                                    }
                                  },
                                  "id": 8239,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5182:35:50",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 8236,
                                "name": "ILendingPool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6466,
                                "src": "5169:12:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ILendingPool_$6466_$",
                                  "typeString": "type(contract ILendingPool)"
                                }
                              },
                              "id": 8240,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5169:49:50",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 8241,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getUserConfiguration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6405,
                            "src": "5169:70:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$",
                              "typeString": "function (address) view external returns (struct DataTypes.UserConfigurationMap memory)"
                            }
                          },
                          "id": 8243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5169:76:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_memory_ptr",
                            "typeString": "struct DataTypes.UserConfigurationMap memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5112:133:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 8253,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 8245,
                            "name": "currentATokenBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8201,
                            "src": "5252:20:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8251,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8198,
                                "src": "5323:4:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8247,
                                      "name": "reserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8222,
                                      "src": "5290:7:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                        "typeString": "struct DataTypes.ReserveData memory"
                                      }
                                    },
                                    "id": 8248,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "aTokenAddress",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20511,
                                    "src": "5290:21:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 8246,
                                  "name": "IERC20Detailed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4034,
                                  "src": "5275:14:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20Detailed_$4034_$",
                                    "typeString": "type(contract IERC20Detailed)"
                                  }
                                },
                                "id": 8249,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5275:37:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20Detailed_$4034",
                                  "typeString": "contract IERC20Detailed"
                                }
                              },
                              "id": 8250,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3951,
                              "src": "5275:47:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 8252,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5275:53:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5252:76:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8254,
                        "nodeType": "ExpressionStatement",
                        "src": "5252:76:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 8263,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 8255,
                            "name": "currentVariableDebt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8205,
                            "src": "5334:19:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8261,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8198,
                                "src": "5415:4:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8257,
                                      "name": "reserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8222,
                                      "src": "5371:7:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                        "typeString": "struct DataTypes.ReserveData memory"
                                      }
                                    },
                                    "id": 8258,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "variableDebtTokenAddress",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20515,
                                    "src": "5371:32:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 8256,
                                  "name": "IERC20Detailed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4034,
                                  "src": "5356:14:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20Detailed_$4034_$",
                                    "typeString": "type(contract IERC20Detailed)"
                                  }
                                },
                                "id": 8259,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5356:48:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20Detailed_$4034",
                                  "typeString": "contract IERC20Detailed"
                                }
                              },
                              "id": 8260,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3951,
                              "src": "5356:58:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 8262,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5356:64:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5334:86:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8264,
                        "nodeType": "ExpressionStatement",
                        "src": "5334:86:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 8273,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 8265,
                            "name": "currentStableDebt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8203,
                            "src": "5426:17:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8271,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8198,
                                "src": "5503:4:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8267,
                                      "name": "reserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8222,
                                      "src": "5461:7:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                        "typeString": "struct DataTypes.ReserveData memory"
                                      }
                                    },
                                    "id": 8268,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "stableDebtTokenAddress",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20513,
                                    "src": "5461:30:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 8266,
                                  "name": "IERC20Detailed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4034,
                                  "src": "5446:14:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20Detailed_$4034_$",
                                    "typeString": "type(contract IERC20Detailed)"
                                  }
                                },
                                "id": 8269,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5446:46:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20Detailed_$4034",
                                  "typeString": "contract IERC20Detailed"
                                }
                              },
                              "id": 8270,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3951,
                              "src": "5446:56:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 8272,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5446:62:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5426:82:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8274,
                        "nodeType": "ExpressionStatement",
                        "src": "5426:82:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 8283,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 8275,
                            "name": "principalStableDebt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8207,
                            "src": "5514:19:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8281,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8198,
                                "src": "5604:4:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8277,
                                      "name": "reserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8222,
                                      "src": "5553:7:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                        "typeString": "struct DataTypes.ReserveData memory"
                                      }
                                    },
                                    "id": 8278,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "stableDebtTokenAddress",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20513,
                                    "src": "5553:30:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 8276,
                                  "name": "IStableDebtToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7133,
                                  "src": "5536:16:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IStableDebtToken_$7133_$",
                                    "typeString": "type(contract IStableDebtToken)"
                                  }
                                },
                                "id": 8279,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5536:48:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IStableDebtToken_$7133",
                                  "typeString": "contract IStableDebtToken"
                                }
                              },
                              "id": 8280,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "principalBalanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7126,
                              "src": "5536:67:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 8282,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5536:73:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5514:95:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8284,
                        "nodeType": "ExpressionStatement",
                        "src": "5514:95:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 8293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 8285,
                            "name": "scaledVariableDebt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8209,
                            "src": "5615:18:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8291,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8198,
                                "src": "5705:4:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8287,
                                      "name": "reserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8222,
                                      "src": "5655:7:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                        "typeString": "struct DataTypes.ReserveData memory"
                                      }
                                    },
                                    "id": 8288,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "variableDebtTokenAddress",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20515,
                                    "src": "5655:32:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 8286,
                                  "name": "IVariableDebtToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7504,
                                  "src": "5636:18:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IVariableDebtToken_$7504_$",
                                    "typeString": "type(contract IVariableDebtToken)"
                                  }
                                },
                                "id": 8289,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5636:52:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IVariableDebtToken_$7504",
                                  "typeString": "contract IVariableDebtToken"
                                }
                              },
                              "id": 8290,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "scaledBalanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6988,
                              "src": "5636:68:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 8292,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5636:74:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5615:95:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8294,
                        "nodeType": "ExpressionStatement",
                        "src": "5615:95:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 8298,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 8295,
                            "name": "liquidityRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8213,
                            "src": "5716:13:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8296,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8222,
                              "src": "5732:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                "typeString": "struct DataTypes.ReserveData memory"
                              }
                            },
                            "id": 8297,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "currentLiquidityRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20503,
                            "src": "5732:28:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "5716:44:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8299,
                        "nodeType": "ExpressionStatement",
                        "src": "5716:44:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 8308,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 8300,
                            "name": "stableBorrowRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8211,
                            "src": "5766:16:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8306,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8198,
                                "src": "5852:4:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8302,
                                      "name": "reserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8222,
                                      "src": "5802:7:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                        "typeString": "struct DataTypes.ReserveData memory"
                                      }
                                    },
                                    "id": 8303,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "stableDebtTokenAddress",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20513,
                                    "src": "5802:30:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 8301,
                                  "name": "IStableDebtToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7133,
                                  "src": "5785:16:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IStableDebtToken_$7133_$",
                                    "typeString": "type(contract IStableDebtToken)"
                                  }
                                },
                                "id": 8304,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5785:48:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IStableDebtToken_$7133",
                                  "typeString": "contract IStableDebtToken"
                                }
                              },
                              "id": 8305,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getUserStableRate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7084,
                              "src": "5785:66:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 8307,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5785:72:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5766:91:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8309,
                        "nodeType": "ExpressionStatement",
                        "src": "5766:91:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 8318,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 8310,
                            "name": "stableRateLastUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8215,
                            "src": "5863:21:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8316,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8198,
                                "src": "5962:4:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8312,
                                      "name": "reserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8222,
                                      "src": "5904:7:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                        "typeString": "struct DataTypes.ReserveData memory"
                                      }
                                    },
                                    "id": 8313,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "stableDebtTokenAddress",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20513,
                                    "src": "5904:30:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 8311,
                                  "name": "IStableDebtToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7133,
                                  "src": "5887:16:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IStableDebtToken_$7133_$",
                                    "typeString": "type(contract IStableDebtToken)"
                                  }
                                },
                                "id": 8314,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5887:48:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IStableDebtToken_$7133",
                                  "typeString": "contract IStableDebtToken"
                                }
                              },
                              "id": 8315,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getUserLastUpdated",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7092,
                              "src": "5887:67:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint40_$",
                                "typeString": "function (address) view external returns (uint40)"
                              }
                            },
                            "id": 8317,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5887:85:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            }
                          },
                          "src": "5863:109:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "id": 8319,
                        "nodeType": "ExpressionStatement",
                        "src": "5863:109:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 8326,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 8320,
                            "name": "usageAsCollateralEnabled",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8217,
                            "src": "5978:24:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8323,
                                  "name": "reserve",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8222,
                                  "src": "6036:7:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                    "typeString": "struct DataTypes.ReserveData memory"
                                  }
                                },
                                "id": 8324,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "id",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20519,
                                "src": "6036:10:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8321,
                                "name": "userConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8235,
                                "src": "6005:10:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_memory_ptr",
                                  "typeString": "struct DataTypes.UserConfigurationMap memory"
                                }
                              },
                              "id": 8322,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isUsingAsCollateral",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16953,
                              "src": "6005:30:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$",
                                "typeString": "function (struct DataTypes.UserConfigurationMap memory,uint256) pure returns (bool)"
                              }
                            },
                            "id": 8325,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6005:42:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5978:69:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8327,
                        "nodeType": "ExpressionStatement",
                        "src": "5978:69:50"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "28dd2d01",
                  "id": 8329,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUserReserveData",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 8199,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8196,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8329,
                        "src": "4604:13:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8195,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4604:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8198,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8329,
                        "src": "4619:12:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8197,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4619:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4603:29:50"
                  },
                  "returnParameters": {
                    "id": 8218,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8201,
                        "mutability": "mutable",
                        "name": "currentATokenBalance",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8329,
                        "src": "4675:28:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8200,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4675:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8203,
                        "mutability": "mutable",
                        "name": "currentStableDebt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8329,
                        "src": "4711:25:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8202,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4711:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8205,
                        "mutability": "mutable",
                        "name": "currentVariableDebt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8329,
                        "src": "4744:27:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8204,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4744:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8207,
                        "mutability": "mutable",
                        "name": "principalStableDebt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8329,
                        "src": "4779:27:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8206,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4779:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8209,
                        "mutability": "mutable",
                        "name": "scaledVariableDebt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8329,
                        "src": "4814:26:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8208,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4814:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8211,
                        "mutability": "mutable",
                        "name": "stableBorrowRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8329,
                        "src": "4848:24:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8210,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4848:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8213,
                        "mutability": "mutable",
                        "name": "liquidityRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8329,
                        "src": "4880:21:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8212,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4880:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8215,
                        "mutability": "mutable",
                        "name": "stableRateLastUpdated",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8329,
                        "src": "4909:28:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        },
                        "typeName": {
                          "id": 8214,
                          "name": "uint40",
                          "nodeType": "ElementaryTypeName",
                          "src": "4909:6:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8217,
                        "mutability": "mutable",
                        "name": "usageAsCollateralEnabled",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8329,
                        "src": "4945:29:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8216,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4945:4:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4667:313:50"
                  },
                  "scope": 8363,
                  "src": "4576:1476:50",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 8361,
                    "nodeType": "Block",
                    "src": "6256:254:50",
                    "statements": [
                      {
                        "assignments": [
                          8343
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8343,
                            "mutability": "mutable",
                            "name": "reserve",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 8361,
                            "src": "6262:36:50",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                              "typeString": "struct DataTypes.ReserveData"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 8342,
                              "name": "DataTypes.ReserveData",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20520,
                              "src": "6262:21:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8352,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8350,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8331,
                              "src": "6372:5:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8345,
                                      "name": "ADDRESSES_PROVIDER",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7859,
                                      "src": "6320:18:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                                        "typeString": "contract ILendingPoolAddressesProvider"
                                      }
                                    },
                                    "id": 8346,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getLendingPool",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6551,
                                    "src": "6320:33:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                      "typeString": "function () view external returns (address)"
                                    }
                                  },
                                  "id": 8347,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6320:35:50",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 8344,
                                "name": "ILendingPool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6466,
                                "src": "6307:12:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ILendingPool_$6466_$",
                                  "typeString": "type(contract ILendingPool)"
                                }
                              },
                              "id": 8348,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6307:49:50",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 8349,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getReserveData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6429,
                            "src": "6307:64:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveData_$20520_memory_ptr_$",
                              "typeString": "function (address) view external returns (struct DataTypes.ReserveData memory)"
                            }
                          },
                          "id": 8351,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6307:71:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                            "typeString": "struct DataTypes.ReserveData memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6262:116:50"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8353,
                                "name": "reserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8343,
                                "src": "6400:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveData memory"
                                }
                              },
                              "id": 8354,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "aTokenAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20511,
                              "src": "6400:21:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8355,
                                "name": "reserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8343,
                                "src": "6429:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveData memory"
                                }
                              },
                              "id": 8356,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "stableDebtTokenAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20513,
                              "src": "6429:30:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8357,
                                "name": "reserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8343,
                                "src": "6467:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveData memory"
                                }
                              },
                              "id": 8358,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "variableDebtTokenAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20515,
                              "src": "6467:32:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "id": 8359,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "6392:113:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_address_$_t_address_$",
                            "typeString": "tuple(address,address,address)"
                          }
                        },
                        "functionReturnParameters": 8339,
                        "id": 8360,
                        "nodeType": "Return",
                        "src": "6385:120:50"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "d2493b6c",
                  "id": 8362,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReserveTokensAddresses",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 8332,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8331,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8362,
                        "src": "6091:13:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8330,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6091:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6090:15:50"
                  },
                  "returnParameters": {
                    "id": 8339,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8334,
                        "mutability": "mutable",
                        "name": "aTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8362,
                        "src": "6148:21:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8333,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6148:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8336,
                        "mutability": "mutable",
                        "name": "stableDebtTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8362,
                        "src": "6177:30:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8335,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6177:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8338,
                        "mutability": "mutable",
                        "name": "variableDebtTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8362,
                        "src": "6215:32:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8337,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6215:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6140:113:50"
                  },
                  "scope": 8363,
                  "src": "6056:454:50",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 8364,
              "src": "746:5766:50"
            }
          ],
          "src": "37:6476:50"
        },
        "id": 50
      },
      "contracts/misc/UiPoolDataProvider.sol": {
        "ast": {
          "absolutePath": "contracts/misc/UiPoolDataProvider.sol",
          "exportedSymbols": {
            "UiPoolDataProvider": [
              8987
            ]
          },
          "id": 8988,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8365,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:51"
            },
            {
              "id": 8366,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "61:33:51"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20Detailed.sol",
              "file": "../dependencies/openzeppelin/contracts/IERC20Detailed.sol",
              "id": 8368,
              "nodeType": "ImportDirective",
              "scope": 8988,
              "sourceUnit": 4035,
              "src": "96:89:51",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 8367,
                    "name": "IERC20Detailed",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "104:14:51",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPoolAddressesProvider.sol",
              "file": "../interfaces/ILendingPoolAddressesProvider.sol",
              "id": 8370,
              "nodeType": "ImportDirective",
              "scope": 8988,
              "sourceUnit": 6618,
              "src": "186:94:51",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 8369,
                    "name": "ILendingPoolAddressesProvider",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "194:29:51",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IAaveIncentivesController.sol",
              "file": "../interfaces/IAaveIncentivesController.sol",
              "id": 8372,
              "nodeType": "ImportDirective",
              "scope": 8988,
              "sourceUnit": 5823,
              "src": "281:86:51",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 8371,
                    "name": "IAaveIncentivesController",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "289:25:51",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/misc/interfaces/IUiPoolDataProvider.sol",
              "file": "./interfaces/IUiPoolDataProvider.sol",
              "id": 8374,
              "nodeType": "ImportDirective",
              "scope": 8988,
              "sourceUnit": 9861,
              "src": "368:73:51",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 8373,
                    "name": "IUiPoolDataProvider",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "376:19:51",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPool.sol",
              "file": "../interfaces/ILendingPool.sol",
              "id": 8376,
              "nodeType": "ImportDirective",
              "scope": 8988,
              "sourceUnit": 6467,
              "src": "442:60:51",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 8375,
                    "name": "ILendingPool",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "450:12:51",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IPriceOracleGetter.sol",
              "file": "../interfaces/IPriceOracleGetter.sol",
              "id": 8378,
              "nodeType": "ImportDirective",
              "scope": 8988,
              "sourceUnit": 6919,
              "src": "503:72:51",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 8377,
                    "name": "IPriceOracleGetter",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "511:18:51",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IAToken.sol",
              "file": "../interfaces/IAToken.sol",
              "id": 8380,
              "nodeType": "ImportDirective",
              "scope": 8988,
              "sourceUnit": 5668,
              "src": "576:50:51",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 8379,
                    "name": "IAToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "584:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IVariableDebtToken.sol",
              "file": "../interfaces/IVariableDebtToken.sol",
              "id": 8382,
              "nodeType": "ImportDirective",
              "scope": 8988,
              "sourceUnit": 7505,
              "src": "627:72:51",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 8381,
                    "name": "IVariableDebtToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "635:18:51",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IStableDebtToken.sol",
              "file": "../interfaces/IStableDebtToken.sol",
              "id": 8384,
              "nodeType": "ImportDirective",
              "scope": 8988,
              "sourceUnit": 7134,
              "src": "700:68:51",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 8383,
                    "name": "IStableDebtToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "708:16:51",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/math/WadRayMath.sol",
              "file": "../protocol/libraries/math/WadRayMath.sol",
              "id": 8386,
              "nodeType": "ImportDirective",
              "scope": 8988,
              "sourceUnit": 20494,
              "src": "769:69:51",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 8385,
                    "name": "WadRayMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "777:10:51",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/configuration/ReserveConfiguration.sol",
              "file": "../protocol/libraries/configuration/ReserveConfiguration.sol",
              "id": 8388,
              "nodeType": "ImportDirective",
              "scope": 8988,
              "sourceUnit": 16742,
              "src": "839:98:51",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 8387,
                    "name": "ReserveConfiguration",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "847:20:51",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/configuration/UserConfiguration.sol",
              "file": "../protocol/libraries/configuration/UserConfiguration.sol",
              "id": 8390,
              "nodeType": "ImportDirective",
              "scope": 8988,
              "sourceUnit": 16985,
              "src": "938:92:51",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 8389,
                    "name": "UserConfiguration",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "946:17:51",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/types/DataTypes.sol",
              "file": "../protocol/libraries/types/DataTypes.sol",
              "id": 8392,
              "nodeType": "ImportDirective",
              "scope": 8988,
              "sourceUnit": 20532,
              "src": "1031:68:51",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 8391,
                    "name": "DataTypes",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "1039:9:51",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/lendingpool/DefaultReserveInterestRateStrategy.sol",
              "file": "../protocol/lendingpool/DefaultReserveInterestRateStrategy.sol",
              "id": 8394,
              "nodeType": "ImportDirective",
              "scope": 8988,
              "sourceUnit": 11938,
              "src": "1100:118:51",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 8393,
                    "name": "DefaultReserveInterestRateStrategy",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "1111:34:51",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 8395,
                    "name": "IUiPoolDataProvider",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9860,
                    "src": "1251:19:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IUiPoolDataProvider_$9860",
                      "typeString": "contract IUiPoolDataProvider"
                    }
                  },
                  "id": 8396,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1251:19:51"
                }
              ],
              "contractDependencies": [
                9860
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 8987,
              "linearizedBaseContracts": [
                8987,
                9860
              ],
              "name": "UiPoolDataProvider",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 8399,
                  "libraryName": {
                    "contractScope": null,
                    "id": 8397,
                    "name": "WadRayMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20493,
                    "src": "1281:10:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_WadRayMath_$20493",
                      "typeString": "library WadRayMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1275:29:51",
                  "typeName": {
                    "id": 8398,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1296:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 8402,
                  "libraryName": {
                    "contractScope": null,
                    "id": 8400,
                    "name": "ReserveConfiguration",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16741,
                    "src": "1313:20:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ReserveConfiguration_$16741",
                      "typeString": "library ReserveConfiguration"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1307:65:51",
                  "typeName": {
                    "contractScope": null,
                    "id": 8401,
                    "name": "DataTypes.ReserveConfigurationMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20523,
                    "src": "1338:33:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                      "typeString": "struct DataTypes.ReserveConfigurationMap"
                    }
                  }
                },
                {
                  "id": 8405,
                  "libraryName": {
                    "contractScope": null,
                    "id": 8403,
                    "name": "UserConfiguration",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16984,
                    "src": "1381:17:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UserConfiguration_$16984",
                      "typeString": "library UserConfiguration"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1375:59:51",
                  "typeName": {
                    "contractScope": null,
                    "id": 8404,
                    "name": "DataTypes.UserConfigurationMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20526,
                    "src": "1403:30:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                      "typeString": "struct DataTypes.UserConfigurationMap"
                    }
                  }
                },
                {
                  "constant": true,
                  "functionSelector": "b8c0a5b1",
                  "id": 8408,
                  "mutability": "constant",
                  "name": "MOCK_USD_ADDRESS",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8987,
                  "src": "1438:85:51",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8406,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1438:7:51",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307831304637466331463931426133353166394336323963353934374144363962443033433035623936",
                    "id": 8407,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1481:42:51",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    },
                    "value": "0x10F7Fc1F91Ba351f9C629c5947AD69bD03C05b96"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "af1df255",
                  "id": 8410,
                  "mutability": "immutable",
                  "name": "incentivesController",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8987,
                  "src": "1527:63:51",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                    "typeString": "contract IAaveIncentivesController"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8409,
                    "name": "IAaveIncentivesController",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5822,
                    "src": "1527:25:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                      "typeString": "contract IAaveIncentivesController"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "7dc0d1d0",
                  "id": 8412,
                  "mutability": "immutable",
                  "name": "oracle",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8987,
                  "src": "1594:42:51",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                    "typeString": "contract IPriceOracleGetter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8411,
                    "name": "IPriceOracleGetter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6918,
                    "src": "1594:18:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                      "typeString": "contract IPriceOracleGetter"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 8427,
                    "nodeType": "Block",
                    "src": "1737:77:51",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 8421,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 8419,
                            "name": "incentivesController",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8410,
                            "src": "1743:20:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                              "typeString": "contract IAaveIncentivesController"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 8420,
                            "name": "_incentivesController",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8414,
                            "src": "1766:21:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                              "typeString": "contract IAaveIncentivesController"
                            }
                          },
                          "src": "1743:44:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "id": 8422,
                        "nodeType": "ExpressionStatement",
                        "src": "1743:44:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 8425,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 8423,
                            "name": "oracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8412,
                            "src": "1793:6:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                              "typeString": "contract IPriceOracleGetter"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 8424,
                            "name": "_oracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8416,
                            "src": "1802:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                              "typeString": "contract IPriceOracleGetter"
                            }
                          },
                          "src": "1793:16:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                            "typeString": "contract IPriceOracleGetter"
                          }
                        },
                        "id": 8426,
                        "nodeType": "ExpressionStatement",
                        "src": "1793:16:51"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 8428,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 8417,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8414,
                        "mutability": "mutable",
                        "name": "_incentivesController",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8428,
                        "src": "1653:47:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                          "typeString": "contract IAaveIncentivesController"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 8413,
                          "name": "IAaveIncentivesController",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5822,
                          "src": "1653:25:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8416,
                        "mutability": "mutable",
                        "name": "_oracle",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8428,
                        "src": "1702:26:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                          "typeString": "contract IPriceOracleGetter"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 8415,
                          "name": "IPriceOracleGetter",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6918,
                          "src": "1702:18:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                            "typeString": "contract IPriceOracleGetter"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1652:77:51"
                  },
                  "returnParameters": {
                    "id": 8418,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1737:0:51"
                  },
                  "scope": 8987,
                  "src": "1641:173:51",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 8455,
                    "nodeType": "Block",
                    "src": "2017:216:51",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8441,
                                  "name": "interestRateStrategy",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8430,
                                  "src": "2038:20:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DefaultReserveInterestRateStrategy_$11937",
                                    "typeString": "contract DefaultReserveInterestRateStrategy"
                                  }
                                },
                                "id": 8442,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "variableRateSlope1",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 11561,
                                "src": "2038:39:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 8443,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2038:41:51",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8444,
                                  "name": "interestRateStrategy",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8430,
                                  "src": "2087:20:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DefaultReserveInterestRateStrategy_$11937",
                                    "typeString": "contract DefaultReserveInterestRateStrategy"
                                  }
                                },
                                "id": 8445,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "variableRateSlope2",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 11569,
                                "src": "2087:39:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 8446,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2087:41:51",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8447,
                                  "name": "interestRateStrategy",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8430,
                                  "src": "2136:20:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DefaultReserveInterestRateStrategy_$11937",
                                    "typeString": "contract DefaultReserveInterestRateStrategy"
                                  }
                                },
                                "id": 8448,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "stableRateSlope1",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 11577,
                                "src": "2136:37:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 8449,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2136:39:51",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8450,
                                  "name": "interestRateStrategy",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8430,
                                  "src": "2183:20:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_DefaultReserveInterestRateStrategy_$11937",
                                    "typeString": "contract DefaultReserveInterestRateStrategy"
                                  }
                                },
                                "id": 8451,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "stableRateSlope2",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 11585,
                                "src": "2183:37:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view external returns (uint256)"
                                }
                              },
                              "id": 8452,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2183:39:51",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 8453,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2030:198:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 8440,
                        "id": 8454,
                        "nodeType": "Return",
                        "src": "2023:205:51"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 8456,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getInterestRateStrategySlopes",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 8431,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8430,
                        "mutability": "mutable",
                        "name": "interestRateStrategy",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8456,
                        "src": "1857:55:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DefaultReserveInterestRateStrategy_$11937",
                          "typeString": "contract DefaultReserveInterestRateStrategy"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 8429,
                          "name": "DefaultReserveInterestRateStrategy",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 11937,
                          "src": "1857:34:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_DefaultReserveInterestRateStrategy_$11937",
                            "typeString": "contract DefaultReserveInterestRateStrategy"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1856:57:51"
                  },
                  "returnParameters": {
                    "id": 8440,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8433,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8456,
                        "src": "1956:7:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8432,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1956:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8435,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8456,
                        "src": "1971:7:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8434,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1971:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8437,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8456,
                        "src": "1986:7:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8436,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1986:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8439,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8456,
                        "src": "2001:7:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8438,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2001:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1948:66:51"
                  },
                  "scope": 8987,
                  "src": "1818:415:51",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    9859
                  ],
                  "body": {
                    "id": 8985,
                    "nodeType": "Block",
                    "src": "2472:5961:51",
                    "statements": [
                      {
                        "assignments": [
                          8475
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8475,
                            "mutability": "mutable",
                            "name": "lendingPool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 8985,
                            "src": "2478:24:51",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPool_$6466",
                              "typeString": "contract ILendingPool"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 8474,
                              "name": "ILendingPool",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 6466,
                              "src": "2478:12:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8481,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8477,
                                  "name": "provider",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8458,
                                  "src": "2518:8:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                                    "typeString": "contract ILendingPoolAddressesProvider"
                                  }
                                },
                                "id": 8478,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getLendingPool",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6551,
                                "src": "2518:23:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              "id": 8479,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2518:25:51",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 8476,
                            "name": "ILendingPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6466,
                            "src": "2505:12:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ILendingPool_$6466_$",
                              "typeString": "type(contract ILendingPool)"
                            }
                          },
                          "id": 8480,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2505:39:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2478:66:51"
                      },
                      {
                        "assignments": [
                          8486
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8486,
                            "mutability": "mutable",
                            "name": "reserves",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 8985,
                            "src": "2550:25:51",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 8484,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2550:7:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 8485,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "2550:9:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8490,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8487,
                              "name": "lendingPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8475,
                              "src": "2578:11:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 8488,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getReservesList",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6450,
                            "src": "2578:27:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function () view external returns (address[] memory)"
                            }
                          },
                          "id": 8489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2578:29:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2550:57:51"
                      },
                      {
                        "assignments": [
                          8494
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8494,
                            "mutability": "mutable",
                            "name": "userConfig",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 8985,
                            "src": "2613:48:51",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_memory_ptr",
                              "typeString": "struct DataTypes.UserConfigurationMap"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 8493,
                              "name": "DataTypes.UserConfigurationMap",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20526,
                              "src": "2613:30:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                "typeString": "struct DataTypes.UserConfigurationMap"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8499,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8497,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8460,
                              "src": "2697:4:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8495,
                              "name": "lendingPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8475,
                              "src": "2664:11:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 8496,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getUserConfiguration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6405,
                            "src": "2664:32:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$",
                              "typeString": "function (address) view external returns (struct DataTypes.UserConfigurationMap memory)"
                            }
                          },
                          "id": 8498,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2664:38:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_memory_ptr",
                            "typeString": "struct DataTypes.UserConfigurationMap memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2613:89:51"
                      },
                      {
                        "assignments": [
                          8503
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8503,
                            "mutability": "mutable",
                            "name": "reservesData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 8985,
                            "src": "2709:43:51",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_AggregatedReserveData_$9821_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct IUiPoolDataProvider.AggregatedReserveData[]"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 8501,
                                "name": "AggregatedReserveData",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 9821,
                                "src": "2709:21:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_storage_ptr",
                                  "typeString": "struct IUiPoolDataProvider.AggregatedReserveData"
                                }
                              },
                              "id": 8502,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "2709:23:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_AggregatedReserveData_$9821_storage_$dyn_storage_ptr",
                                "typeString": "struct IUiPoolDataProvider.AggregatedReserveData[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8510,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8507,
                                "name": "reserves",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8486,
                                "src": "2783:8:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 8508,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2783:15:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8506,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "2755:27:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_AggregatedReserveData_$9821_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (struct IUiPoolDataProvider.AggregatedReserveData memory[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 8504,
                                "name": "AggregatedReserveData",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 9821,
                                "src": "2759:21:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_storage_ptr",
                                  "typeString": "struct IUiPoolDataProvider.AggregatedReserveData"
                                }
                              },
                              "id": 8505,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "2759:23:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_AggregatedReserveData_$9821_storage_$dyn_storage_ptr",
                                "typeString": "struct IUiPoolDataProvider.AggregatedReserveData[]"
                              }
                            }
                          },
                          "id": 8509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2755:44:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_AggregatedReserveData_$9821_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2709:90:51"
                      },
                      {
                        "assignments": [
                          8514
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8514,
                            "mutability": "mutable",
                            "name": "userReservesData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 8985,
                            "src": "2805:41:51",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_UserReserveData_$9842_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct IUiPoolDataProvider.UserReserveData[]"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 8512,
                                "name": "UserReserveData",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 9842,
                                "src": "2805:15:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UserReserveData_$9842_storage_ptr",
                                  "typeString": "struct IUiPoolDataProvider.UserReserveData"
                                }
                              },
                              "id": 8513,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "2805:17:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_UserReserveData_$9842_storage_$dyn_storage_ptr",
                                "typeString": "struct IUiPoolDataProvider.UserReserveData[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 8529,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 8523,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 8518,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8460,
                                  "src": "2877:4:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 8521,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2893:1:51",
                                      "subdenomination": null,
                                      "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": 8520,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2885:7:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 8519,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2885:7:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 8522,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2885:10:51",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "2877:18:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 8526,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2916:1:51",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "id": 8527,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "2877:40:51",
                              "trueExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8524,
                                  "name": "reserves",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8486,
                                  "src": "2898:8:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 8525,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2898:15:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8517,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "2855:21:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_UserReserveData_$9842_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (struct IUiPoolDataProvider.UserReserveData memory[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 8515,
                                "name": "UserReserveData",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 9842,
                                "src": "2859:15:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UserReserveData_$9842_storage_ptr",
                                  "typeString": "struct IUiPoolDataProvider.UserReserveData"
                                }
                              },
                              "id": 8516,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "2859:17:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_UserReserveData_$9842_storage_$dyn_storage_ptr",
                                "typeString": "struct IUiPoolDataProvider.UserReserveData[]"
                              }
                            }
                          },
                          "id": 8528,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2855:63:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_UserReserveData_$9842_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct IUiPoolDataProvider.UserReserveData memory[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2805:113:51"
                      },
                      {
                        "body": {
                          "id": 8971,
                          "nodeType": "Block",
                          "src": "2971:5290:51",
                          "statements": [
                            {
                              "assignments": [
                                8542
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 8542,
                                  "mutability": "mutable",
                                  "name": "reserveData",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 8971,
                                  "src": "2979:40:51",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                    "typeString": "struct IUiPoolDataProvider.AggregatedReserveData"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 8541,
                                    "name": "AggregatedReserveData",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 9821,
                                    "src": "2979:21:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_storage_ptr",
                                      "typeString": "struct IUiPoolDataProvider.AggregatedReserveData"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 8546,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 8543,
                                  "name": "reservesData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8503,
                                  "src": "3022:12:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_AggregatedReserveData_$9821_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory[] memory"
                                  }
                                },
                                "id": 8545,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 8544,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8531,
                                  "src": "3035:1:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3022:15:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                  "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2979:58:51"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8553,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8547,
                                    "name": "reserveData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8542,
                                    "src": "3045:11:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                      "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                    }
                                  },
                                  "id": 8549,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "underlyingAsset",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9738,
                                  "src": "3045:27:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 8550,
                                    "name": "reserves",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8486,
                                    "src": "3075:8:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 8552,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 8551,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8531,
                                    "src": "3084:1:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3075:11:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3045:41:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 8554,
                              "nodeType": "ExpressionStatement",
                              "src": "3045:41:51"
                            },
                            {
                              "assignments": [
                                8558
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 8558,
                                  "mutability": "mutable",
                                  "name": "baseData",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 8971,
                                  "src": "3126:37:51",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                    "typeString": "struct DataTypes.ReserveData"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 8557,
                                    "name": "DataTypes.ReserveData",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 20520,
                                    "src": "3126:21:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                      "typeString": "struct DataTypes.ReserveData"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 8564,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8561,
                                      "name": "reserveData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8542,
                                      "src": "3201:11:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                        "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                      }
                                    },
                                    "id": 8562,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "underlyingAsset",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 9738,
                                    "src": "3201:27:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8559,
                                    "name": "lendingPool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8475,
                                    "src": "3174:11:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                      "typeString": "contract ILendingPool"
                                    }
                                  },
                                  "id": 8560,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getReserveData",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6429,
                                  "src": "3174:26:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveData_$20520_memory_ptr_$",
                                    "typeString": "function (address) view external returns (struct DataTypes.ReserveData memory)"
                                  }
                                },
                                "id": 8563,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3174:55:51",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveData memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3126:103:51"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8570,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8565,
                                    "name": "reserveData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8542,
                                    "src": "3237:11:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                      "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                    }
                                  },
                                  "id": 8567,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "liquidityIndex",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9764,
                                  "src": "3237:26:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8568,
                                    "name": "baseData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8558,
                                    "src": "3266:8:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                      "typeString": "struct DataTypes.ReserveData memory"
                                    }
                                  },
                                  "id": 8569,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "liquidityIndex",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20499,
                                  "src": "3266:23:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "3237:52:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 8571,
                              "nodeType": "ExpressionStatement",
                              "src": "3237:52:51"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8577,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8572,
                                    "name": "reserveData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8542,
                                    "src": "3297:11:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                      "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                    }
                                  },
                                  "id": 8574,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "variableBorrowIndex",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9766,
                                  "src": "3297:31:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8575,
                                    "name": "baseData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8558,
                                    "src": "3331:8:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                      "typeString": "struct DataTypes.ReserveData memory"
                                    }
                                  },
                                  "id": 8576,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "variableBorrowIndex",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20501,
                                  "src": "3331:28:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "3297:62:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 8578,
                              "nodeType": "ExpressionStatement",
                              "src": "3297:62:51"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8584,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8579,
                                    "name": "reserveData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8542,
                                    "src": "3367:11:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                      "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                    }
                                  },
                                  "id": 8581,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "liquidityRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9768,
                                  "src": "3367:25:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8582,
                                    "name": "baseData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8558,
                                    "src": "3395:8:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                      "typeString": "struct DataTypes.ReserveData memory"
                                    }
                                  },
                                  "id": 8583,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "currentLiquidityRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20503,
                                  "src": "3395:29:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "3367:57:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 8585,
                              "nodeType": "ExpressionStatement",
                              "src": "3367:57:51"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8591,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8586,
                                    "name": "reserveData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8542,
                                    "src": "3432:11:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                      "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                    }
                                  },
                                  "id": 8588,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "variableBorrowRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9770,
                                  "src": "3432:30:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8589,
                                    "name": "baseData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8558,
                                    "src": "3465:8:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                      "typeString": "struct DataTypes.ReserveData memory"
                                    }
                                  },
                                  "id": 8590,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "currentVariableBorrowRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20505,
                                  "src": "3465:34:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "3432:67:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 8592,
                              "nodeType": "ExpressionStatement",
                              "src": "3432:67:51"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8598,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8593,
                                    "name": "reserveData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8542,
                                    "src": "3507:11:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                      "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                    }
                                  },
                                  "id": 8595,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "stableBorrowRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9772,
                                  "src": "3507:28:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8596,
                                    "name": "baseData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8558,
                                    "src": "3538:8:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                      "typeString": "struct DataTypes.ReserveData memory"
                                    }
                                  },
                                  "id": 8597,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "currentStableBorrowRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20507,
                                  "src": "3538:32:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "3507:63:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 8599,
                              "nodeType": "ExpressionStatement",
                              "src": "3507:63:51"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8605,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8600,
                                    "name": "reserveData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8542,
                                    "src": "3578:11:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                      "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                    }
                                  },
                                  "id": 8602,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "lastUpdateTimestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9774,
                                  "src": "3578:31:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint40",
                                    "typeString": "uint40"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8603,
                                    "name": "baseData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8558,
                                    "src": "3612:8:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                      "typeString": "struct DataTypes.ReserveData memory"
                                    }
                                  },
                                  "id": 8604,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastUpdateTimestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20509,
                                  "src": "3612:28:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint40",
                                    "typeString": "uint40"
                                  }
                                },
                                "src": "3578:62:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint40",
                                  "typeString": "uint40"
                                }
                              },
                              "id": 8606,
                              "nodeType": "ExpressionStatement",
                              "src": "3578:62:51"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8612,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8607,
                                    "name": "reserveData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8542,
                                    "src": "3648:11:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                      "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                    }
                                  },
                                  "id": 8609,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "aTokenAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9776,
                                  "src": "3648:25:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8610,
                                    "name": "baseData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8558,
                                    "src": "3676:8:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                      "typeString": "struct DataTypes.ReserveData memory"
                                    }
                                  },
                                  "id": 8611,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "aTokenAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20511,
                                  "src": "3676:22:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3648:50:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 8613,
                              "nodeType": "ExpressionStatement",
                              "src": "3648:50:51"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8619,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8614,
                                    "name": "reserveData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8542,
                                    "src": "3706:11:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                      "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                    }
                                  },
                                  "id": 8616,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "stableDebtTokenAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9778,
                                  "src": "3706:34:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8617,
                                    "name": "baseData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8558,
                                    "src": "3743:8:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                      "typeString": "struct DataTypes.ReserveData memory"
                                    }
                                  },
                                  "id": 8618,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "stableDebtTokenAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20513,
                                  "src": "3743:31:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3706:68:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 8620,
                              "nodeType": "ExpressionStatement",
                              "src": "3706:68:51"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8626,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8621,
                                    "name": "reserveData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8542,
                                    "src": "3782:11:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                      "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                    }
                                  },
                                  "id": 8623,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "variableDebtTokenAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9780,
                                  "src": "3782:36:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8624,
                                    "name": "baseData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8558,
                                    "src": "3821:8:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                      "typeString": "struct DataTypes.ReserveData memory"
                                    }
                                  },
                                  "id": 8625,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "variableDebtTokenAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20515,
                                  "src": "3821:33:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3782:72:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 8627,
                              "nodeType": "ExpressionStatement",
                              "src": "3782:72:51"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8633,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8628,
                                    "name": "reserveData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8542,
                                    "src": "3862:11:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                      "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                    }
                                  },
                                  "id": 8630,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "interestRateStrategyAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9782,
                                  "src": "3862:39:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8631,
                                    "name": "baseData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8558,
                                    "src": "3904:8:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                      "typeString": "struct DataTypes.ReserveData memory"
                                    }
                                  },
                                  "id": 8632,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "interestRateStrategyAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20517,
                                  "src": "3904:36:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3862:78:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 8634,
                              "nodeType": "ExpressionStatement",
                              "src": "3862:78:51"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8643,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8635,
                                    "name": "reserveData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8542,
                                    "src": "3948:11:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                      "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                    }
                                  },
                                  "id": 8637,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "priceInEth",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9794,
                                  "src": "3948:22:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8640,
                                        "name": "reserveData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8542,
                                        "src": "3994:11:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                          "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                        }
                                      },
                                      "id": 8641,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "underlyingAsset",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 9738,
                                      "src": "3994:27:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8638,
                                      "name": "oracle",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8412,
                                      "src": "3973:6:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                                        "typeString": "contract IPriceOracleGetter"
                                      }
                                    },
                                    "id": 8639,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getAssetPrice",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6917,
                                    "src": "3973:20:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address) view external returns (uint256)"
                                    }
                                  },
                                  "id": 8642,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3973:49:51",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3948:74:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8644,
                              "nodeType": "ExpressionStatement",
                              "src": "3948:74:51"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8656,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8645,
                                    "name": "reserveData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8542,
                                    "src": "4031:11:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                      "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                    }
                                  },
                                  "id": 8647,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "availableLiquidity",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9784,
                                  "src": "4031:30:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8653,
                                        "name": "reserveData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8542,
                                        "src": "4127:11:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                          "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                        }
                                      },
                                      "id": 8654,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "aTokenAddress",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 9776,
                                      "src": "4127:25:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 8649,
                                            "name": "reserveData",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8542,
                                            "src": "4079:11:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                              "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                            }
                                          },
                                          "id": 8650,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "underlyingAsset",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 9738,
                                          "src": "4079:27:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 8648,
                                        "name": "IERC20Detailed",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4034,
                                        "src": "4064:14:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC20Detailed_$4034_$",
                                          "typeString": "type(contract IERC20Detailed)"
                                        }
                                      },
                                      "id": 8651,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4064:43:51",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20Detailed_$4034",
                                        "typeString": "contract IERC20Detailed"
                                      }
                                    },
                                    "id": 8652,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "balanceOf",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3951,
                                    "src": "4064:53:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address) view external returns (uint256)"
                                    }
                                  },
                                  "id": 8655,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4064:96:51",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4031:129:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8657,
                              "nodeType": "ExpressionStatement",
                              "src": "4031:129:51"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8672,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8658,
                                        "name": "reserveData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8542,
                                        "src": "4178:11:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                          "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                        }
                                      },
                                      "id": 8660,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "totalPrincipalStableDebt",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 9786,
                                      "src": "4178:36:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    null,
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8661,
                                        "name": "reserveData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8542,
                                        "src": "4234:11:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                          "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                        }
                                      },
                                      "id": 8662,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "averageStableRate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 9788,
                                      "src": "4234:29:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8663,
                                        "name": "reserveData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8542,
                                        "src": "4273:11:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                          "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                        }
                                      },
                                      "id": 8664,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "stableDebtLastUpdateTimestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 9790,
                                      "src": "4273:41:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 8665,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "4168:154:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$__$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,,uint256,uint256)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 8667,
                                            "name": "reserveData",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8542,
                                            "src": "4342:11:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                              "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                            }
                                          },
                                          "id": 8668,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "stableDebtTokenAddress",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 9778,
                                          "src": "4342:34:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 8666,
                                        "name": "IStableDebtToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7133,
                                        "src": "4325:16:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IStableDebtToken_$7133_$",
                                          "typeString": "type(contract IStableDebtToken)"
                                        }
                                      },
                                      "id": 8669,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4325:52:51",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IStableDebtToken_$7133",
                                        "typeString": "contract IStableDebtToken"
                                      }
                                    },
                                    "id": 8670,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getSupplyData",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7104,
                                    "src": "4325:66:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint40_$",
                                      "typeString": "function () view external returns (uint256,uint256,uint256,uint40)"
                                    }
                                  },
                                  "id": 8671,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4325:68:51",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint40_$",
                                    "typeString": "tuple(uint256,uint256,uint256,uint40)"
                                  }
                                },
                                "src": "4168:225:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8673,
                              "nodeType": "ExpressionStatement",
                              "src": "4168:225:51"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8683,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8674,
                                    "name": "reserveData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8542,
                                    "src": "4401:11:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                      "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                    }
                                  },
                                  "id": 8676,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "totalScaledVariableDebt",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9792,
                                  "src": "4401:35:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 8678,
                                            "name": "reserveData",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8542,
                                            "src": "4458:11:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                              "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                            }
                                          },
                                          "id": 8679,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "variableDebtTokenAddress",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 9780,
                                          "src": "4458:36:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 8677,
                                        "name": "IVariableDebtToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7504,
                                        "src": "4439:18:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IVariableDebtToken_$7504_$",
                                          "typeString": "type(contract IVariableDebtToken)"
                                        }
                                      },
                                      "id": 8680,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4439:56:51",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IVariableDebtToken_$7504",
                                        "typeString": "contract IVariableDebtToken"
                                      }
                                    },
                                    "id": 8681,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "scaledTotalSupply",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7004,
                                    "src": "4439:83:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                      "typeString": "function () view external returns (uint256)"
                                    }
                                  },
                                  "id": 8682,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4439:85:51",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4401:123:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8684,
                              "nodeType": "ExpressionStatement",
                              "src": "4401:123:51"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8694,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8685,
                                    "name": "reserveData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8542,
                                    "src": "4678:11:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                      "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                    }
                                  },
                                  "id": 8687,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "symbol",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9742,
                                  "src": "4678:18:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 8689,
                                            "name": "reserveData",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8542,
                                            "src": "4714:11:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                              "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                            }
                                          },
                                          "id": 8690,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "aTokenAddress",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 9776,
                                          "src": "4714:25:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 8688,
                                        "name": "IERC20Detailed",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4034,
                                        "src": "4699:14:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC20Detailed_$4034_$",
                                          "typeString": "type(contract IERC20Detailed)"
                                        }
                                      },
                                      "id": 8691,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4699:41:51",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20Detailed_$4034",
                                        "typeString": "contract IERC20Detailed"
                                      }
                                    },
                                    "id": 8692,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "symbol",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4028,
                                    "src": "4699:48:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_ptr_$",
                                      "typeString": "function () view external returns (string memory)"
                                    }
                                  },
                                  "id": 8693,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4699:50:51",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "src": "4678:71:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "id": 8695,
                              "nodeType": "ExpressionStatement",
                              "src": "4678:71:51"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8700,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8696,
                                    "name": "reserveData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8542,
                                    "src": "4757:11:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                      "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                    }
                                  },
                                  "id": 8698,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "name",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9740,
                                  "src": "4757:16:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "",
                                  "id": 8699,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4776:2:51",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                    "typeString": "literal_string \"\""
                                  },
                                  "value": ""
                                },
                                "src": "4757:21:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "id": 8701,
                              "nodeType": "ExpressionStatement",
                              "src": "4757:21:51"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8718,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8702,
                                        "name": "reserveData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8542,
                                        "src": "4797:11:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                          "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                        }
                                      },
                                      "id": 8704,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "baseLTVasCollateral",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 9746,
                                      "src": "4797:31:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8705,
                                        "name": "reserveData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8542,
                                        "src": "4838:11:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                          "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                        }
                                      },
                                      "id": 8706,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "reserveLiquidationThreshold",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 9748,
                                      "src": "4838:39:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8707,
                                        "name": "reserveData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8542,
                                        "src": "4887:11:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                          "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                        }
                                      },
                                      "id": 8708,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "reserveLiquidationBonus",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 9750,
                                      "src": "4887:35:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8709,
                                        "name": "reserveData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8542,
                                        "src": "4932:11:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                          "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                        }
                                      },
                                      "id": 8710,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "decimals",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 9744,
                                      "src": "4932:20:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8711,
                                        "name": "reserveData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8542,
                                        "src": "4962:11:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                          "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                        }
                                      },
                                      "id": 8712,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "reserveFactor",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 9752,
                                      "src": "4962:25:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 8713,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "4787:208:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256,uint256,uint256,uint256)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8714,
                                        "name": "baseData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8558,
                                        "src": "4998:8:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                          "typeString": "struct DataTypes.ReserveData memory"
                                        }
                                      },
                                      "id": 8715,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "configuration",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20497,
                                      "src": "4998:22:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                        "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                      }
                                    },
                                    "id": 8716,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getParamsMemory",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 16691,
                                    "src": "4998:38:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$bound_to$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                                      "typeString": "function (struct DataTypes.ReserveConfigurationMap memory) pure returns (uint256,uint256,uint256,uint256,uint256)"
                                    }
                                  },
                                  "id": 8717,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4998:40:51",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256,uint256,uint256,uint256)"
                                  }
                                },
                                "src": "4787:251:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8719,
                              "nodeType": "ExpressionStatement",
                              "src": "4787:251:51"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8734,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8720,
                                        "name": "reserveData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8542,
                                        "src": "5056:11:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                          "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                        }
                                      },
                                      "id": 8722,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "isActive",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 9760,
                                      "src": "5056:20:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8723,
                                        "name": "reserveData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8542,
                                        "src": "5086:11:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                          "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                        }
                                      },
                                      "id": 8724,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "isFrozen",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 9762,
                                      "src": "5086:20:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8725,
                                        "name": "reserveData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8542,
                                        "src": "5116:11:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                          "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                        }
                                      },
                                      "id": 8726,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "borrowingEnabled",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 9756,
                                      "src": "5116:28:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8727,
                                        "name": "reserveData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8542,
                                        "src": "5154:11:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                          "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                        }
                                      },
                                      "id": 8728,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "stableBorrowRateEnabled",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 9758,
                                      "src": "5154:35:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "id": 8729,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "5046:151:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_bool_$_t_bool_$_t_bool_$_t_bool_$",
                                    "typeString": "tuple(bool,bool,bool,bool)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8730,
                                        "name": "baseData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8558,
                                        "src": "5200:8:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                          "typeString": "struct DataTypes.ReserveData memory"
                                        }
                                      },
                                      "id": 8731,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "configuration",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20497,
                                      "src": "5200:22:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                        "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                      }
                                    },
                                    "id": 8732,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getFlagsMemory",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 16740,
                                    "src": "5200:37:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$returns$_t_bool_$_t_bool_$_t_bool_$_t_bool_$bound_to$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                                      "typeString": "function (struct DataTypes.ReserveConfigurationMap memory) pure returns (bool,bool,bool,bool)"
                                    }
                                  },
                                  "id": 8733,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5200:39:51",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_bool_$_t_bool_$_t_bool_$_t_bool_$",
                                    "typeString": "tuple(bool,bool,bool,bool)"
                                  }
                                },
                                "src": "5046:193:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8735,
                              "nodeType": "ExpressionStatement",
                              "src": "5046:193:51"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8743,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8736,
                                    "name": "reserveData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8542,
                                    "src": "5247:11:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                      "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                    }
                                  },
                                  "id": 8738,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "usageAsCollateralEnabled",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9754,
                                  "src": "5247:36:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 8742,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8739,
                                      "name": "reserveData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8542,
                                      "src": "5286:11:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                        "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                      }
                                    },
                                    "id": 8740,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "baseLTVasCollateral",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 9746,
                                    "src": "5286:31:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 8741,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5321:1:51",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "5286:36:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "5247:75:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 8744,
                              "nodeType": "ExpressionStatement",
                              "src": "5247:75:51"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8761,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8745,
                                        "name": "reserveData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8542,
                                        "src": "5340:11:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                          "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                        }
                                      },
                                      "id": 8747,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "variableRateSlope1",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 9796,
                                      "src": "5340:30:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8748,
                                        "name": "reserveData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8542,
                                        "src": "5380:11:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                          "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                        }
                                      },
                                      "id": 8749,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "variableRateSlope2",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 9798,
                                      "src": "5380:30:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8750,
                                        "name": "reserveData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8542,
                                        "src": "5420:11:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                          "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                        }
                                      },
                                      "id": 8751,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "stableRateSlope1",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 9800,
                                      "src": "5420:28:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8752,
                                        "name": "reserveData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8542,
                                        "src": "5458:11:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                          "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                        }
                                      },
                                      "id": 8753,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "stableRateSlope2",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 9802,
                                      "src": "5458:28:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 8754,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "5330:164:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256,uint256,uint256)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 8757,
                                            "name": "reserveData",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8542,
                                            "src": "5571:11:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                              "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                            }
                                          },
                                          "id": 8758,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "interestRateStrategyAddress",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 9782,
                                          "src": "5571:39:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 8756,
                                        "name": "DefaultReserveInterestRateStrategy",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11937,
                                        "src": "5536:34:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_DefaultReserveInterestRateStrategy_$11937_$",
                                          "typeString": "type(contract DefaultReserveInterestRateStrategy)"
                                        }
                                      },
                                      "id": 8759,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5536:75:51",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_DefaultReserveInterestRateStrategy_$11937",
                                        "typeString": "contract DefaultReserveInterestRateStrategy"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_DefaultReserveInterestRateStrategy_$11937",
                                        "typeString": "contract DefaultReserveInterestRateStrategy"
                                      }
                                    ],
                                    "id": 8755,
                                    "name": "getInterestRateStrategySlopes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8456,
                                    "src": "5497:29:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_contract$_DefaultReserveInterestRateStrategy_$11937_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                      "typeString": "function (contract DefaultReserveInterestRateStrategy) view returns (uint256,uint256,uint256,uint256)"
                                    }
                                  },
                                  "id": 8760,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5497:122:51",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256,uint256,uint256)"
                                  }
                                },
                                "src": "5330:289:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8762,
                              "nodeType": "ExpressionStatement",
                              "src": "5330:289:51"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 8771,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 8765,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5660:1:51",
                                      "subdenomination": null,
                                      "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": 8764,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5652:7:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 8763,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5652:7:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 8766,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5652:10:51",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 8769,
                                      "name": "incentivesController",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8410,
                                      "src": "5674:20:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                        "typeString": "contract IAaveIncentivesController"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                        "typeString": "contract IAaveIncentivesController"
                                      }
                                    ],
                                    "id": 8768,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5666:7:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 8767,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5666:7:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 8770,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5666:29:51",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5652:43:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 8818,
                              "nodeType": "IfStatement",
                              "src": "5648:752:51",
                              "trueBody": {
                                "id": 8817,
                                "nodeType": "Block",
                                "src": "5697:703:51",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8785,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 8772,
                                              "name": "reserveData",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8542,
                                              "src": "5719:11:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                                "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                              }
                                            },
                                            "id": 8774,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "aEmissionPerSecond",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 9804,
                                            "src": "5719:30:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 8775,
                                              "name": "reserveData",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8542,
                                              "src": "5761:11:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                                "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                              }
                                            },
                                            "id": 8776,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "aIncentivesLastUpdateTimestamp",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 9810,
                                            "src": "5761:42:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 8777,
                                              "name": "reserveData",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8542,
                                              "src": "5815:11:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                                "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                              }
                                            },
                                            "id": 8778,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "aTokenIncentivesIndex",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 9816,
                                            "src": "5815:33:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 8779,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "TupleExpression",
                                        "src": "5707:151:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                          "typeString": "tuple(uint256,uint256,uint256)"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 8782,
                                              "name": "reserveData",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8542,
                                              "src": "5895:11:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                                "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                              }
                                            },
                                            "id": 8783,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "aTokenAddress",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 9776,
                                            "src": "5895:25:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 8780,
                                            "name": "incentivesController",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8410,
                                            "src": "5861:20:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                              "typeString": "contract IAaveIncentivesController"
                                            }
                                          },
                                          "id": 8781,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getAssetData",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 5711,
                                          "src": "5861:33:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint128_$_t_uint128_$_t_uint256_$",
                                            "typeString": "function (address) view external returns (uint128,uint128,uint256)"
                                          }
                                        },
                                        "id": 8784,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5861:60:51",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$_t_uint256_$",
                                          "typeString": "tuple(uint128,uint128,uint256)"
                                        }
                                      },
                                      "src": "5707:214:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 8786,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5707:214:51"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8800,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 8787,
                                              "name": "reserveData",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8542,
                                              "src": "5944:11:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                                "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                              }
                                            },
                                            "id": 8789,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "sEmissionPerSecond",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 9808,
                                            "src": "5944:30:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 8790,
                                              "name": "reserveData",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8542,
                                              "src": "5986:11:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                                "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                              }
                                            },
                                            "id": 8791,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "sIncentivesLastUpdateTimestamp",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 9814,
                                            "src": "5986:42:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 8792,
                                              "name": "reserveData",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8542,
                                              "src": "6040:11:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                                "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                              }
                                            },
                                            "id": 8793,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "sTokenIncentivesIndex",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 9820,
                                            "src": "6040:33:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 8794,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "TupleExpression",
                                        "src": "5932:151:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                          "typeString": "tuple(uint256,uint256,uint256)"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 8797,
                                              "name": "reserveData",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8542,
                                              "src": "6120:11:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                                "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                              }
                                            },
                                            "id": 8798,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "stableDebtTokenAddress",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 9778,
                                            "src": "6120:34:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 8795,
                                            "name": "incentivesController",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8410,
                                            "src": "6086:20:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                              "typeString": "contract IAaveIncentivesController"
                                            }
                                          },
                                          "id": 8796,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getAssetData",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 5711,
                                          "src": "6086:33:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint128_$_t_uint128_$_t_uint256_$",
                                            "typeString": "function (address) view external returns (uint128,uint128,uint256)"
                                          }
                                        },
                                        "id": 8799,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6086:69:51",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$_t_uint256_$",
                                          "typeString": "tuple(uint128,uint128,uint256)"
                                        }
                                      },
                                      "src": "5932:223:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 8801,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5932:223:51"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8815,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 8802,
                                              "name": "reserveData",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8542,
                                              "src": "6178:11:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                                "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                              }
                                            },
                                            "id": 8804,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "vEmissionPerSecond",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 9806,
                                            "src": "6178:30:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 8805,
                                              "name": "reserveData",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8542,
                                              "src": "6220:11:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                                "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                              }
                                            },
                                            "id": 8806,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "vIncentivesLastUpdateTimestamp",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 9812,
                                            "src": "6220:42:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 8807,
                                              "name": "reserveData",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8542,
                                              "src": "6274:11:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                                "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                              }
                                            },
                                            "id": 8808,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "vTokenIncentivesIndex",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 9818,
                                            "src": "6274:33:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 8809,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "TupleExpression",
                                        "src": "6166:151:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                          "typeString": "tuple(uint256,uint256,uint256)"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 8812,
                                              "name": "reserveData",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8542,
                                              "src": "6354:11:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                                "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                              }
                                            },
                                            "id": 8813,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "variableDebtTokenAddress",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 9780,
                                            "src": "6354:36:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 8810,
                                            "name": "incentivesController",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8410,
                                            "src": "6320:20:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                              "typeString": "contract IAaveIncentivesController"
                                            }
                                          },
                                          "id": 8811,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getAssetData",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 5711,
                                          "src": "6320:33:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint128_$_t_uint128_$_t_uint256_$",
                                            "typeString": "function (address) view external returns (uint128,uint128,uint256)"
                                          }
                                        },
                                        "id": 8814,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6320:71:51",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$_t_uint256_$",
                                          "typeString": "tuple(uint128,uint128,uint256)"
                                        }
                                      },
                                      "src": "6166:225:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 8816,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6166:225:51"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 8824,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 8819,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8460,
                                  "src": "6412:4:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 8822,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6428:1:51",
                                      "subdenomination": null,
                                      "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": 8821,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "6420:7:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 8820,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "6420:7:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 8823,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6420:10:51",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "6412:18:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 8970,
                              "nodeType": "IfStatement",
                              "src": "6408:1847:51",
                              "trueBody": {
                                "id": 8969,
                                "nodeType": "Block",
                                "src": "6432:1823:51",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 8833,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 8827,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "6476:1:51",
                                            "subdenomination": null,
                                            "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": 8826,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "6468:7:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 8825,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "6468:7:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 8828,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6468:10:51",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 8831,
                                            "name": "incentivesController",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8410,
                                            "src": "6490:20:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                              "typeString": "contract IAaveIncentivesController"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                              "typeString": "contract IAaveIncentivesController"
                                            }
                                          ],
                                          "id": 8830,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "6482:7:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 8829,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "6482:7:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 8832,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6482:29:51",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "6468:43:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 8871,
                                    "nodeType": "IfStatement",
                                    "src": "6464:578:51",
                                    "trueBody": {
                                      "id": 8870,
                                      "nodeType": "Block",
                                      "src": "6513:529:51",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 8844,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                  "argumentTypes": null,
                                                  "id": 8834,
                                                  "name": "userReservesData",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8514,
                                                  "src": "6525:16:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_UserReserveData_$9842_memory_ptr_$dyn_memory_ptr",
                                                    "typeString": "struct IUiPoolDataProvider.UserReserveData memory[] memory"
                                                  }
                                                },
                                                "id": 8836,
                                                "indexExpression": {
                                                  "argumentTypes": null,
                                                  "id": 8835,
                                                  "name": "i",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8531,
                                                  "src": "6542:1:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "6525:19:51",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_UserReserveData_$9842_memory_ptr",
                                                  "typeString": "struct IUiPoolDataProvider.UserReserveData memory"
                                                }
                                              },
                                              "id": 8837,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "aTokenincentivesUserIndex",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 9837,
                                              "src": "6525:45:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 8840,
                                                  "name": "user",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8460,
                                                  "src": "6624:4:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                {
                                                  "argumentTypes": null,
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 8841,
                                                    "name": "reserveData",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8542,
                                                    "src": "6642:11:51",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                                      "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                                    }
                                                  },
                                                  "id": 8842,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "aTokenAddress",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 9776,
                                                  "src": "6642:25:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 8838,
                                                  "name": "incentivesController",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8410,
                                                  "src": "6573:20:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                                    "typeString": "contract IAaveIncentivesController"
                                                  }
                                                },
                                                "id": 8839,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "getUserAssetData",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 5809,
                                                "src": "6573:37:51",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                                  "typeString": "function (address,address) view external returns (uint256)"
                                                }
                                              },
                                              "id": 8843,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "6573:106:51",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "6525:154:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 8845,
                                          "nodeType": "ExpressionStatement",
                                          "src": "6525:154:51"
                                        },
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 8856,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                  "argumentTypes": null,
                                                  "id": 8846,
                                                  "name": "userReservesData",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8514,
                                                  "src": "6691:16:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_UserReserveData_$9842_memory_ptr_$dyn_memory_ptr",
                                                    "typeString": "struct IUiPoolDataProvider.UserReserveData memory[] memory"
                                                  }
                                                },
                                                "id": 8848,
                                                "indexExpression": {
                                                  "argumentTypes": null,
                                                  "id": 8847,
                                                  "name": "i",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8531,
                                                  "src": "6708:1:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "6691:19:51",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_UserReserveData_$9842_memory_ptr",
                                                  "typeString": "struct IUiPoolDataProvider.UserReserveData memory"
                                                }
                                              },
                                              "id": 8849,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "vTokenincentivesUserIndex",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 9839,
                                              "src": "6691:45:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 8852,
                                                  "name": "user",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8460,
                                                  "src": "6790:4:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                {
                                                  "argumentTypes": null,
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 8853,
                                                    "name": "reserveData",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8542,
                                                    "src": "6808:11:51",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                                      "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                                    }
                                                  },
                                                  "id": 8854,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "variableDebtTokenAddress",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 9780,
                                                  "src": "6808:36:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 8850,
                                                  "name": "incentivesController",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8410,
                                                  "src": "6739:20:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                                    "typeString": "contract IAaveIncentivesController"
                                                  }
                                                },
                                                "id": 8851,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "getUserAssetData",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 5809,
                                                "src": "6739:37:51",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                                  "typeString": "function (address,address) view external returns (uint256)"
                                                }
                                              },
                                              "id": 8855,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "6739:117:51",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "6691:165:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 8857,
                                          "nodeType": "ExpressionStatement",
                                          "src": "6691:165:51"
                                        },
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 8868,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                  "argumentTypes": null,
                                                  "id": 8858,
                                                  "name": "userReservesData",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8514,
                                                  "src": "6868:16:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_UserReserveData_$9842_memory_ptr_$dyn_memory_ptr",
                                                    "typeString": "struct IUiPoolDataProvider.UserReserveData memory[] memory"
                                                  }
                                                },
                                                "id": 8860,
                                                "indexExpression": {
                                                  "argumentTypes": null,
                                                  "id": 8859,
                                                  "name": "i",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8531,
                                                  "src": "6885:1:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "6868:19:51",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_UserReserveData_$9842_memory_ptr",
                                                  "typeString": "struct IUiPoolDataProvider.UserReserveData memory"
                                                }
                                              },
                                              "id": 8861,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "sTokenincentivesUserIndex",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 9841,
                                              "src": "6868:45:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 8864,
                                                  "name": "user",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8460,
                                                  "src": "6967:4:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                {
                                                  "argumentTypes": null,
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 8865,
                                                    "name": "reserveData",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8542,
                                                    "src": "6985:11:51",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                                      "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                                    }
                                                  },
                                                  "id": 8866,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "stableDebtTokenAddress",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 9778,
                                                  "src": "6985:34:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 8862,
                                                  "name": "incentivesController",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8410,
                                                  "src": "6916:20:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                                    "typeString": "contract IAaveIncentivesController"
                                                  }
                                                },
                                                "id": 8863,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "getUserAssetData",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 5809,
                                                "src": "6916:37:51",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                                  "typeString": "function (address,address) view external returns (uint256)"
                                                }
                                              },
                                              "id": 8867,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "6916:115:51",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "6868:163:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 8869,
                                          "nodeType": "ExpressionStatement",
                                          "src": "6868:163:51"
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8878,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 8872,
                                            "name": "userReservesData",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8514,
                                            "src": "7080:16:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_struct$_UserReserveData_$9842_memory_ptr_$dyn_memory_ptr",
                                              "typeString": "struct IUiPoolDataProvider.UserReserveData memory[] memory"
                                            }
                                          },
                                          "id": 8874,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 8873,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8531,
                                            "src": "7097:1:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "7080:19:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_UserReserveData_$9842_memory_ptr",
                                            "typeString": "struct IUiPoolDataProvider.UserReserveData memory"
                                          }
                                        },
                                        "id": 8875,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "underlyingAsset",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 9823,
                                        "src": "7080:35:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 8876,
                                          "name": "reserveData",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8542,
                                          "src": "7118:11:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                            "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                          }
                                        },
                                        "id": 8877,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "underlyingAsset",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 9738,
                                        "src": "7118:27:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "7080:65:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 8879,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7080:65:51"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8891,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 8880,
                                            "name": "userReservesData",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8514,
                                            "src": "7155:16:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_struct$_UserReserveData_$9842_memory_ptr_$dyn_memory_ptr",
                                              "typeString": "struct IUiPoolDataProvider.UserReserveData memory[] memory"
                                            }
                                          },
                                          "id": 8882,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 8881,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8531,
                                            "src": "7172:1:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "7155:19:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_UserReserveData_$9842_memory_ptr",
                                            "typeString": "struct IUiPoolDataProvider.UserReserveData memory"
                                          }
                                        },
                                        "id": 8883,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "scaledATokenBalance",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 9825,
                                        "src": "7155:39:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 8889,
                                            "name": "user",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8460,
                                            "src": "7259:4:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 8885,
                                                  "name": "reserveData",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8542,
                                                  "src": "7205:11:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                                    "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                                  }
                                                },
                                                "id": 8886,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "aTokenAddress",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 9776,
                                                "src": "7205:25:51",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "id": 8884,
                                              "name": "IAToken",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5667,
                                              "src": "7197:7:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IAToken_$5667_$",
                                                "typeString": "type(contract IAToken)"
                                              }
                                            },
                                            "id": 8887,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "7197:34:51",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IAToken_$5667",
                                              "typeString": "contract IAToken"
                                            }
                                          },
                                          "id": 8888,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "scaledBalanceOf",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 6988,
                                          "src": "7197:61:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                            "typeString": "function (address) view external returns (uint256)"
                                          }
                                        },
                                        "id": 8890,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7197:67:51",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7155:109:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 8892,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7155:109:51"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8901,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 8893,
                                            "name": "userReservesData",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8514,
                                            "src": "7274:16:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_struct$_UserReserveData_$9842_memory_ptr_$dyn_memory_ptr",
                                              "typeString": "struct IUiPoolDataProvider.UserReserveData memory[] memory"
                                            }
                                          },
                                          "id": 8895,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 8894,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8531,
                                            "src": "7291:1:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "7274:19:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_UserReserveData_$9842_memory_ptr",
                                            "typeString": "struct IUiPoolDataProvider.UserReserveData memory"
                                          }
                                        },
                                        "id": 8896,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "usageAsCollateralEnabledOnUser",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 9827,
                                        "src": "7274:50:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 8899,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8531,
                                            "src": "7358:1:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 8897,
                                            "name": "userConfig",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8494,
                                            "src": "7327:10:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_memory_ptr",
                                              "typeString": "struct DataTypes.UserConfigurationMap memory"
                                            }
                                          },
                                          "id": 8898,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "isUsingAsCollateral",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 16953,
                                          "src": "7327:30:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$",
                                            "typeString": "function (struct DataTypes.UserConfigurationMap memory,uint256) pure returns (bool)"
                                          }
                                        },
                                        "id": 8900,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7327:33:51",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "src": "7274:86:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 8902,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7274:86:51"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 8905,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8531,
                                          "src": "7398:1:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 8903,
                                          "name": "userConfig",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8494,
                                          "src": "7375:10:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_memory_ptr",
                                            "typeString": "struct DataTypes.UserConfigurationMap memory"
                                          }
                                        },
                                        "id": 8904,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "isBorrowing",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 16919,
                                        "src": "7375:22:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$",
                                          "typeString": "function (struct DataTypes.UserConfigurationMap memory,uint256) pure returns (bool)"
                                        }
                                      },
                                      "id": 8906,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7375:25:51",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 8968,
                                    "nodeType": "IfStatement",
                                    "src": "7371:876:51",
                                    "trueBody": {
                                      "id": 8967,
                                      "nodeType": "Block",
                                      "src": "7402:845:51",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 8918,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                  "argumentTypes": null,
                                                  "id": 8907,
                                                  "name": "userReservesData",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8514,
                                                  "src": "7414:16:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_UserReserveData_$9842_memory_ptr_$dyn_memory_ptr",
                                                    "typeString": "struct IUiPoolDataProvider.UserReserveData memory[] memory"
                                                  }
                                                },
                                                "id": 8909,
                                                "indexExpression": {
                                                  "argumentTypes": null,
                                                  "id": 8908,
                                                  "name": "i",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8531,
                                                  "src": "7431:1:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "7414:19:51",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_UserReserveData_$9842_memory_ptr",
                                                  "typeString": "struct IUiPoolDataProvider.UserReserveData memory"
                                                }
                                              },
                                              "id": 8910,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "scaledVariableDebt",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 9831,
                                              "src": "7414:38:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 8916,
                                                  "name": "user",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8460,
                                                  "src": "7580:4:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "arguments": [
                                                    {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 8912,
                                                        "name": "reserveData",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8542,
                                                        "src": "7487:11:51",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                                          "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                                        }
                                                      },
                                                      "id": 8913,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "variableDebtTokenAddress",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 9780,
                                                      "src": "7487:51:51",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      }
                                                    ],
                                                    "id": 8911,
                                                    "name": "IVariableDebtToken",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7504,
                                                    "src": "7455:18:51",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_type$_t_contract$_IVariableDebtToken_$7504_$",
                                                      "typeString": "type(contract IVariableDebtToken)"
                                                    }
                                                  },
                                                  "id": 8914,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "typeConversion",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "7455:95:51",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IVariableDebtToken_$7504",
                                                    "typeString": "contract IVariableDebtToken"
                                                  }
                                                },
                                                "id": 8915,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "scaledBalanceOf",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 6988,
                                                "src": "7455:124:51",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                                  "typeString": "function (address) view external returns (uint256)"
                                                }
                                              },
                                              "id": 8917,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "7455:130:51",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "7414:171:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 8919,
                                          "nodeType": "ExpressionStatement",
                                          "src": "7414:171:51"
                                        },
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 8931,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                  "argumentTypes": null,
                                                  "id": 8920,
                                                  "name": "userReservesData",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8514,
                                                  "src": "7597:16:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_UserReserveData_$9842_memory_ptr_$dyn_memory_ptr",
                                                    "typeString": "struct IUiPoolDataProvider.UserReserveData memory[] memory"
                                                  }
                                                },
                                                "id": 8922,
                                                "indexExpression": {
                                                  "argumentTypes": null,
                                                  "id": 8921,
                                                  "name": "i",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8531,
                                                  "src": "7614:1:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "7597:19:51",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_UserReserveData_$9842_memory_ptr",
                                                  "typeString": "struct IUiPoolDataProvider.UserReserveData memory"
                                                }
                                              },
                                              "id": 8923,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "principalStableDebt",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 9833,
                                              "src": "7597:39:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 8929,
                                                  "name": "user",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8460,
                                                  "src": "7763:4:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "arguments": [
                                                    {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 8925,
                                                        "name": "reserveData",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8542,
                                                        "src": "7669:11:51",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                                          "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                                        }
                                                      },
                                                      "id": 8926,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "stableDebtTokenAddress",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 9778,
                                                      "src": "7669:49:51",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                      }
                                                    ],
                                                    "id": 8924,
                                                    "name": "IStableDebtToken",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7133,
                                                    "src": "7639:16:51",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_type$_t_contract$_IStableDebtToken_$7133_$",
                                                      "typeString": "type(contract IStableDebtToken)"
                                                    }
                                                  },
                                                  "id": 8927,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "typeConversion",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "7639:91:51",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IStableDebtToken_$7133",
                                                    "typeString": "contract IStableDebtToken"
                                                  }
                                                },
                                                "id": 8928,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "principalBalanceOf",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 7126,
                                                "src": "7639:123:51",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                                  "typeString": "function (address) view external returns (uint256)"
                                                }
                                              },
                                              "id": 8930,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "7639:129:51",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "7597:171:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 8932,
                                          "nodeType": "ExpressionStatement",
                                          "src": "7597:171:51"
                                        },
                                        {
                                          "condition": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 8938,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                  "argumentTypes": null,
                                                  "id": 8933,
                                                  "name": "userReservesData",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8514,
                                                  "src": "7784:16:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_UserReserveData_$9842_memory_ptr_$dyn_memory_ptr",
                                                    "typeString": "struct IUiPoolDataProvider.UserReserveData memory[] memory"
                                                  }
                                                },
                                                "id": 8935,
                                                "indexExpression": {
                                                  "argumentTypes": null,
                                                  "id": 8934,
                                                  "name": "i",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8531,
                                                  "src": "7801:1:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "7784:19:51",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_UserReserveData_$9842_memory_ptr",
                                                  "typeString": "struct IUiPoolDataProvider.UserReserveData memory"
                                                }
                                              },
                                              "id": 8936,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "principalStableDebt",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 9833,
                                              "src": "7784:39:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "!=",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "30",
                                              "id": 8937,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "7827:1:51",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              },
                                              "value": "0"
                                            },
                                            "src": "7784:44:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "falseBody": null,
                                          "id": 8966,
                                          "nodeType": "IfStatement",
                                          "src": "7780:457:51",
                                          "trueBody": {
                                            "id": 8965,
                                            "nodeType": "Block",
                                            "src": "7830:407:51",
                                            "statements": [
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 8950,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "baseExpression": {
                                                        "argumentTypes": null,
                                                        "id": 8939,
                                                        "name": "userReservesData",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8514,
                                                        "src": "7844:16:51",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_array$_t_struct$_UserReserveData_$9842_memory_ptr_$dyn_memory_ptr",
                                                          "typeString": "struct IUiPoolDataProvider.UserReserveData memory[] memory"
                                                        }
                                                      },
                                                      "id": 8941,
                                                      "indexExpression": {
                                                        "argumentTypes": null,
                                                        "id": 8940,
                                                        "name": "i",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8531,
                                                        "src": "7861:1:51",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "nodeType": "IndexAccess",
                                                      "src": "7844:19:51",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_UserReserveData_$9842_memory_ptr",
                                                        "typeString": "struct IUiPoolDataProvider.UserReserveData memory"
                                                      }
                                                    },
                                                    "id": 8942,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": true,
                                                    "memberName": "stableBorrowRate",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 9829,
                                                    "src": "7844:36:51",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                      {
                                                        "argumentTypes": null,
                                                        "id": 8948,
                                                        "name": "user",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8460,
                                                        "src": "8014:4:51",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "arguments": [
                                                          {
                                                            "argumentTypes": null,
                                                            "expression": {
                                                              "argumentTypes": null,
                                                              "id": 8944,
                                                              "name": "reserveData",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 8542,
                                                              "src": "7915:11:51",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                                                "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                                              }
                                                            },
                                                            "id": 8945,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "stableDebtTokenAddress",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 9778,
                                                            "src": "7915:51:51",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_address",
                                                              "typeString": "address"
                                                            }
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_address",
                                                              "typeString": "address"
                                                            }
                                                          ],
                                                          "id": 8943,
                                                          "name": "IStableDebtToken",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 7133,
                                                          "src": "7883:16:51",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_IStableDebtToken_$7133_$",
                                                            "typeString": "type(contract IStableDebtToken)"
                                                          }
                                                        },
                                                        "id": 8946,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "7883:97:51",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_contract$_IStableDebtToken_$7133",
                                                          "typeString": "contract IStableDebtToken"
                                                        }
                                                      },
                                                      "id": 8947,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "getUserStableRate",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 7084,
                                                      "src": "7883:130:51",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                                        "typeString": "function (address) view external returns (uint256)"
                                                      }
                                                    },
                                                    "id": 8949,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7883:136:51",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "7844:175:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 8951,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7844:175:51"
                                              },
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 8963,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "baseExpression": {
                                                        "argumentTypes": null,
                                                        "id": 8952,
                                                        "name": "userReservesData",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8514,
                                                        "src": "8033:16:51",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_array$_t_struct$_UserReserveData_$9842_memory_ptr_$dyn_memory_ptr",
                                                          "typeString": "struct IUiPoolDataProvider.UserReserveData memory[] memory"
                                                        }
                                                      },
                                                      "id": 8954,
                                                      "indexExpression": {
                                                        "argumentTypes": null,
                                                        "id": 8953,
                                                        "name": "i",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8531,
                                                        "src": "8050:1:51",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "nodeType": "IndexAccess",
                                                      "src": "8033:19:51",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_UserReserveData_$9842_memory_ptr",
                                                        "typeString": "struct IUiPoolDataProvider.UserReserveData memory"
                                                      }
                                                    },
                                                    "id": 8955,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": true,
                                                    "memberName": "stableBorrowLastUpdateTimestamp",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 9835,
                                                    "src": "8033:51:51",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                      {
                                                        "argumentTypes": null,
                                                        "id": 8961,
                                                        "name": "user",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8460,
                                                        "src": "8219:4:51",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "arguments": [
                                                          {
                                                            "argumentTypes": null,
                                                            "expression": {
                                                              "argumentTypes": null,
                                                              "id": 8957,
                                                              "name": "reserveData",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 8542,
                                                              "src": "8119:11:51",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_memory_ptr",
                                                                "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory"
                                                              }
                                                            },
                                                            "id": 8958,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "stableDebtTokenAddress",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 9778,
                                                            "src": "8119:51:51",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_address",
                                                              "typeString": "address"
                                                            }
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_address",
                                                              "typeString": "address"
                                                            }
                                                          ],
                                                          "id": 8956,
                                                          "name": "IStableDebtToken",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 7133,
                                                          "src": "8087:16:51",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_IStableDebtToken_$7133_$",
                                                            "typeString": "type(contract IStableDebtToken)"
                                                          }
                                                        },
                                                        "id": 8959,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "8087:97:51",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_contract$_IStableDebtToken_$7133",
                                                          "typeString": "contract IStableDebtToken"
                                                        }
                                                      },
                                                      "id": 8960,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "getUserLastUpdated",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 7092,
                                                      "src": "8087:131:51",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint40_$",
                                                        "typeString": "function (address) view external returns (uint40)"
                                                      }
                                                    },
                                                    "id": 8962,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8087:137:51",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint40",
                                                      "typeString": "uint40"
                                                    }
                                                  },
                                                  "src": "8033:191:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 8964,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8033:191:51"
                                              }
                                            ]
                                          }
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8537,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 8534,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8531,
                            "src": "2945:1:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8535,
                              "name": "reserves",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8486,
                              "src": "2949:8:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 8536,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2949:15:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2945:19:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8972,
                        "initializationExpression": {
                          "assignments": [
                            8531
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 8531,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 8972,
                              "src": "2930:9:51",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 8530,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2930:7:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 8533,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 8532,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2942:1:51",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2930:13:51"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 8539,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "2966:3:51",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 8538,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8531,
                              "src": "2966:1:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8540,
                          "nodeType": "ExpressionStatement",
                          "src": "2966:3:51"
                        },
                        "nodeType": "ForStatement",
                        "src": "2925:5336:51"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 8973,
                              "name": "reservesData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8503,
                              "src": "8282:12:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_AggregatedReserveData_$9821_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct IUiPoolDataProvider.AggregatedReserveData memory[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 8974,
                              "name": "userReservesData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8514,
                              "src": "8302:16:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_UserReserveData_$9842_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct IUiPoolDataProvider.UserReserveData memory[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 8977,
                                  "name": "MOCK_USD_ADDRESS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8408,
                                  "src": "8347:16:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8975,
                                  "name": "oracle",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8412,
                                  "src": "8326:6:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                                    "typeString": "contract IPriceOracleGetter"
                                  }
                                },
                                "id": 8976,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getAssetPrice",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6917,
                                "src": "8326:20:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 8978,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8326:38:51",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 8981,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8460,
                                  "src": "8417:4:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8979,
                                  "name": "incentivesController",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8410,
                                  "src": "8372:20:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                    "typeString": "contract IAaveIncentivesController"
                                  }
                                },
                                "id": 8980,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getUserUnclaimedRewards",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5799,
                                "src": "8372:44:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 8982,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8372:50:51",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 8983,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "8274:154:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_struct$_AggregatedReserveData_$9821_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_UserReserveData_$9842_memory_ptr_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(struct IUiPoolDataProvider.AggregatedReserveData memory[] memory,struct IUiPoolDataProvider.UserReserveData memory[] memory,uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 8473,
                        "id": 8984,
                        "nodeType": "Return",
                        "src": "8267:161:51"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "87e40db7",
                  "id": 8986,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReservesData",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8462,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2342:8:51"
                  },
                  "parameters": {
                    "id": 8461,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8458,
                        "mutability": "mutable",
                        "name": "provider",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8986,
                        "src": "2262:38:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                          "typeString": "contract ILendingPoolAddressesProvider"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 8457,
                          "name": "ILendingPoolAddressesProvider",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6617,
                          "src": "2262:29:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                            "typeString": "contract ILendingPoolAddressesProvider"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8460,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8986,
                        "src": "2302:12:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8459,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2302:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2261:54:51"
                  },
                  "returnParameters": {
                    "id": 8473,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8465,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8986,
                        "src": "2371:30:51",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_AggregatedReserveData_$9821_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct IUiPoolDataProvider.AggregatedReserveData[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 8463,
                            "name": "AggregatedReserveData",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 9821,
                            "src": "2371:21:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_storage_ptr",
                              "typeString": "struct IUiPoolDataProvider.AggregatedReserveData"
                            }
                          },
                          "id": 8464,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2371:23:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_AggregatedReserveData_$9821_storage_$dyn_storage_ptr",
                            "typeString": "struct IUiPoolDataProvider.AggregatedReserveData[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8468,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8986,
                        "src": "2409:24:51",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_UserReserveData_$9842_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct IUiPoolDataProvider.UserReserveData[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 8466,
                            "name": "UserReserveData",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 9842,
                            "src": "2409:15:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserReserveData_$9842_storage_ptr",
                              "typeString": "struct IUiPoolDataProvider.UserReserveData"
                            }
                          },
                          "id": 8467,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2409:17:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_UserReserveData_$9842_storage_$dyn_storage_ptr",
                            "typeString": "struct IUiPoolDataProvider.UserReserveData[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8470,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8986,
                        "src": "2441:7:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8469,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2441:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8472,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 8986,
                        "src": "2456:7:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8471,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2456:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2363:106:51"
                  },
                  "scope": 8987,
                  "src": "2237:6196:51",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 8988,
              "src": "1220:7215:51"
            }
          ],
          "src": "37:8399:51"
        },
        "id": 51
      },
      "contracts/misc/WETHGateway.sol": {
        "ast": {
          "absolutePath": "contracts/misc/WETHGateway.sol",
          "exportedSymbols": {
            "WETHGateway": [
              9418
            ]
          },
          "id": 9419,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8989,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:52"
            },
            {
              "id": 8990,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "61:33:52"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/Ownable.sol",
              "file": "../dependencies/openzeppelin/contracts/Ownable.sol",
              "id": 8992,
              "nodeType": "ImportDirective",
              "scope": 9419,
              "sourceUnit": 4144,
              "src": "96:75:52",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 8991,
                    "name": "Ownable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "104:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
              "file": "../dependencies/openzeppelin/contracts/IERC20.sol",
              "id": 8994,
              "nodeType": "ImportDirective",
              "scope": 9419,
              "sourceUnit": 4013,
              "src": "172:73:52",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 8993,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "180:6:52",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/misc/interfaces/IWETH.sol",
              "file": "./interfaces/IWETH.sol",
              "id": 8996,
              "nodeType": "ImportDirective",
              "scope": 9419,
              "sourceUnit": 9892,
              "src": "246:45:52",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 8995,
                    "name": "IWETH",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "254:5:52",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/misc/interfaces/IWETHGateway.sol",
              "file": "./interfaces/IWETHGateway.sol",
              "id": 8998,
              "nodeType": "ImportDirective",
              "scope": 9419,
              "sourceUnit": 9935,
              "src": "292:59:52",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 8997,
                    "name": "IWETHGateway",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "300:12:52",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPool.sol",
              "file": "../interfaces/ILendingPool.sol",
              "id": 9000,
              "nodeType": "ImportDirective",
              "scope": 9419,
              "sourceUnit": 6467,
              "src": "352:60:52",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 8999,
                    "name": "ILendingPool",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "360:12:52",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IAToken.sol",
              "file": "../interfaces/IAToken.sol",
              "id": 9002,
              "nodeType": "ImportDirective",
              "scope": 9419,
              "sourceUnit": 5668,
              "src": "413:50:52",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 9001,
                    "name": "IAToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "421:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/configuration/ReserveConfiguration.sol",
              "file": "../protocol/libraries/configuration/ReserveConfiguration.sol",
              "id": 9004,
              "nodeType": "ImportDirective",
              "scope": 9419,
              "sourceUnit": 16742,
              "src": "464:98:52",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 9003,
                    "name": "ReserveConfiguration",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "472:20:52",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/configuration/UserConfiguration.sol",
              "file": "../protocol/libraries/configuration/UserConfiguration.sol",
              "id": 9006,
              "nodeType": "ImportDirective",
              "scope": 9419,
              "sourceUnit": 16985,
              "src": "563:92:52",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 9005,
                    "name": "UserConfiguration",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "571:17:52",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/helpers/Helpers.sol",
              "file": "../protocol/libraries/helpers/Helpers.sol",
              "id": 9008,
              "nodeType": "ImportDirective",
              "scope": 9419,
              "sourceUnit": 17305,
              "src": "656:66:52",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 9007,
                    "name": "Helpers",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "664:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/types/DataTypes.sol",
              "file": "../protocol/libraries/types/DataTypes.sol",
              "id": 9010,
              "nodeType": "ImportDirective",
              "scope": 9419,
              "sourceUnit": 20532,
              "src": "723:68:52",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 9009,
                    "name": "DataTypes",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "731:9:52",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 9011,
                    "name": "IWETHGateway",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9934,
                    "src": "817:12:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWETHGateway_$9934",
                      "typeString": "contract IWETHGateway"
                    }
                  },
                  "id": 9012,
                  "nodeType": "InheritanceSpecifier",
                  "src": "817:12:52"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 9013,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4143,
                    "src": "831:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$4143",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 9014,
                  "nodeType": "InheritanceSpecifier",
                  "src": "831:7:52"
                }
              ],
              "contractDependencies": [
                3427,
                4143,
                9934
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 9418,
              "linearizedBaseContracts": [
                9418,
                4143,
                3427,
                9934
              ],
              "name": "WETHGateway",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 9017,
                  "libraryName": {
                    "contractScope": null,
                    "id": 9015,
                    "name": "ReserveConfiguration",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16741,
                    "src": "849:20:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ReserveConfiguration_$16741",
                      "typeString": "library ReserveConfiguration"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "843:65:52",
                  "typeName": {
                    "contractScope": null,
                    "id": 9016,
                    "name": "DataTypes.ReserveConfigurationMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20523,
                    "src": "874:33:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                      "typeString": "struct DataTypes.ReserveConfigurationMap"
                    }
                  }
                },
                {
                  "id": 9020,
                  "libraryName": {
                    "contractScope": null,
                    "id": 9018,
                    "name": "UserConfiguration",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16984,
                    "src": "917:17:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UserConfiguration_$16984",
                      "typeString": "library UserConfiguration"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "911:59:52",
                  "typeName": {
                    "contractScope": null,
                    "id": 9019,
                    "name": "DataTypes.UserConfigurationMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20526,
                    "src": "939:30:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                      "typeString": "struct DataTypes.UserConfigurationMap"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 9022,
                  "mutability": "immutable",
                  "name": "WETH",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9418,
                  "src": "974:29:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IWETH_$9891",
                    "typeString": "contract IWETH"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9021,
                    "name": "IWETH",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 9891,
                    "src": "974:5:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWETH_$9891",
                      "typeString": "contract IWETH"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9034,
                    "nodeType": "Block",
                    "src": "1219:29:52",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 9032,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 9028,
                            "name": "WETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9022,
                            "src": "1225:4:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWETH_$9891",
                              "typeString": "contract IWETH"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9030,
                                "name": "weth",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9025,
                                "src": "1238:4:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 9029,
                              "name": "IWETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9891,
                              "src": "1232:5:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IWETH_$9891_$",
                                "typeString": "type(contract IWETH)"
                              }
                            },
                            "id": 9031,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1232:11:52",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWETH_$9891",
                              "typeString": "contract IWETH"
                            }
                          },
                          "src": "1225:18:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWETH_$9891",
                            "typeString": "contract IWETH"
                          }
                        },
                        "id": 9033,
                        "nodeType": "ExpressionStatement",
                        "src": "1225:18:52"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9023,
                    "nodeType": "StructuredDocumentation",
                    "src": "1008:175:52",
                    "text": " @dev Sets the WETH address and the LendingPoolAddressesProvider address. Infinite approves lending pool.\n @param weth Address of the Wrapped Ether contract*"
                  },
                  "id": 9035,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 9026,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9025,
                        "mutability": "mutable",
                        "name": "weth",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9035,
                        "src": "1198:12:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9024,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1198:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1197:14:52"
                  },
                  "returnParameters": {
                    "id": 9027,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1219:0:52"
                  },
                  "scope": 9418,
                  "src": "1186:62:52",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 9053,
                    "nodeType": "Block",
                    "src": "1322:49:52",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9045,
                              "name": "lendingPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9037,
                              "src": "1341:11:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 9049,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "-",
                                  "prefix": true,
                                  "src": "1362:2:52",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 9048,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1363:1:52",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_minus_1_by_1",
                                    "typeString": "int_const -1"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_minus_1_by_1",
                                    "typeString": "int_const -1"
                                  }
                                ],
                                "id": 9047,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1354:7:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 9046,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1354:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 9050,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1354:11:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 9042,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9022,
                              "src": "1328:4:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWETH_$9891",
                                "typeString": "contract IWETH"
                              }
                            },
                            "id": 9044,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9879,
                            "src": "1328:12:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 9051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1328:38:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9052,
                        "nodeType": "ExpressionStatement",
                        "src": "1328:38:52"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "fd149529",
                  "id": 9054,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 9040,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 9039,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "1312:9:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1312:9:52"
                    }
                  ],
                  "name": "authorizeLendingPool",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 9038,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9037,
                        "mutability": "mutable",
                        "name": "lendingPool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9054,
                        "src": "1282:19:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9036,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1282:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1281:21:52"
                  },
                  "returnParameters": {
                    "id": 9041,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1322:0:52"
                  },
                  "scope": 9418,
                  "src": "1252:119:52",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    9902
                  ],
                  "body": {
                    "id": 9087,
                    "nodeType": "Block",
                    "src": "1916:134:52",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 9065,
                                "name": "WETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9022,
                                "src": "1922:4:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IWETH_$9891",
                                  "typeString": "contract IWETH"
                                }
                              },
                              "id": 9067,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "deposit",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9865,
                              "src": "1922:12:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_payable$__$returns$__$",
                                "typeString": "function () payable external"
                              }
                            },
                            "id": 9070,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9068,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "1942:3:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 9069,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1942:9:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "1922:30:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                              "typeString": "function () payable external"
                            }
                          },
                          "id": 9071,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1922:32:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9072,
                        "nodeType": "ExpressionStatement",
                        "src": "1922:32:52"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 9079,
                                  "name": "WETH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9022,
                                  "src": "2002:4:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IWETH_$9891",
                                    "typeString": "contract IWETH"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IWETH_$9891",
                                    "typeString": "contract IWETH"
                                  }
                                ],
                                "id": 9078,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1994:7:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 9077,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1994:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 9080,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1994:13:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9081,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2009:3:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 9082,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2009:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9083,
                              "name": "onBehalfOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9059,
                              "src": "2020:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9084,
                              "name": "referralCode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9061,
                              "src": "2032:12:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 9074,
                                  "name": "lendingPool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9057,
                                  "src": "1973:11:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 9073,
                                "name": "ILendingPool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6466,
                                "src": "1960:12:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ILendingPool_$6466_$",
                                  "typeString": "type(contract ILendingPool)"
                                }
                              },
                              "id": 9075,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1960:25:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 9076,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "deposit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6245,
                            "src": "1960:33:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint16_$returns$__$",
                              "typeString": "function (address,uint256,address,uint16) external"
                            }
                          },
                          "id": 9085,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1960:85:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9086,
                        "nodeType": "ExpressionStatement",
                        "src": "1960:85:52"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9055,
                    "nodeType": "StructuredDocumentation",
                    "src": "1375:414:52",
                    "text": " @dev deposits WETH into the reserve, using native ETH. A corresponding amount of the overlying asset (aTokens)\n is minted.\n @param lendingPool address of the targeted underlying lending pool\n @param onBehalfOf address of the user who will receive the aTokens representing the deposit\n @param referralCode integrators are assigned a referral code and can potentially receive rewards.*"
                  },
                  "functionSelector": "474cf53d",
                  "id": 9088,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "depositETH",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9063,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1907:8:52"
                  },
                  "parameters": {
                    "id": 9062,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9057,
                        "mutability": "mutable",
                        "name": "lendingPool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9088,
                        "src": "1817:19:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9056,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1817:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9059,
                        "mutability": "mutable",
                        "name": "onBehalfOf",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9088,
                        "src": "1842:18:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9058,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1842:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9061,
                        "mutability": "mutable",
                        "name": "referralCode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9088,
                        "src": "1866:19:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 9060,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "1866:6:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1811:78:52"
                  },
                  "returnParameters": {
                    "id": 9064,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1916:0:52"
                  },
                  "scope": 9418,
                  "src": "1792:258:52",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    9911
                  ],
                  "body": {
                    "id": 9177,
                    "nodeType": "Block",
                    "src": "2429:596:52",
                    "statements": [
                      {
                        "assignments": [
                          9100
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9100,
                            "mutability": "mutable",
                            "name": "aWETH",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 9177,
                            "src": "2435:13:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAToken_$5667",
                              "typeString": "contract IAToken"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 9099,
                              "name": "IAToken",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 5667,
                              "src": "2435:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAToken_$5667",
                                "typeString": "contract IAToken"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 9113,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 9108,
                                        "name": "WETH",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9022,
                                        "src": "2508:4:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IWETH_$9891",
                                          "typeString": "contract IWETH"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_IWETH_$9891",
                                          "typeString": "contract IWETH"
                                        }
                                      ],
                                      "id": 9107,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2500:7:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 9106,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2500:7:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 9109,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2500:13:52",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 9103,
                                        "name": "lendingPool",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9091,
                                        "src": "2472:11:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 9102,
                                      "name": "ILendingPool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6466,
                                      "src": "2459:12:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_ILendingPool_$6466_$",
                                        "typeString": "type(contract ILendingPool)"
                                      }
                                    },
                                    "id": 9104,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2459:25:52",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                      "typeString": "contract ILendingPool"
                                    }
                                  },
                                  "id": 9105,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getReserveData",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6429,
                                  "src": "2459:40:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveData_$20520_memory_ptr_$",
                                    "typeString": "function (address) view external returns (struct DataTypes.ReserveData memory)"
                                  }
                                },
                                "id": 9110,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2459:55:52",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveData memory"
                                }
                              },
                              "id": 9111,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "aTokenAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20511,
                              "src": "2459:69:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 9101,
                            "name": "IAToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5667,
                            "src": "2451:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IAToken_$5667_$",
                              "typeString": "type(contract IAToken)"
                            }
                          },
                          "id": 9112,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2451:78:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAToken_$5667",
                            "typeString": "contract IAToken"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2435:94:52"
                      },
                      {
                        "assignments": [
                          9115
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9115,
                            "mutability": "mutable",
                            "name": "userBalance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 9177,
                            "src": "2535:19:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9114,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2535:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 9121,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9118,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2573:3:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 9119,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2573:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 9116,
                              "name": "aWETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9100,
                              "src": "2557:5:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAToken_$5667",
                                "typeString": "contract IAToken"
                              }
                            },
                            "id": 9117,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3951,
                            "src": "2557:15:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 9120,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2557:27:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2535:49:52"
                      },
                      {
                        "assignments": [
                          9123
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9123,
                            "mutability": "mutable",
                            "name": "amountToWithdraw",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 9177,
                            "src": "2590:24:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9122,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2590:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 9125,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 9124,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9093,
                          "src": "2617:6:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2590:33:52"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 9126,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9093,
                            "src": "2709:6:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 9129,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2724:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 9128,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2724:7:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  }
                                ],
                                "id": 9127,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "2719:4:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 9130,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2719:13:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint256",
                                "typeString": "type(uint256)"
                              }
                            },
                            "id": 9131,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2719:17:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2709:27:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 9138,
                        "nodeType": "IfStatement",
                        "src": "2705:78:52",
                        "trueBody": {
                          "id": 9137,
                          "nodeType": "Block",
                          "src": "2738:45:52",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 9135,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 9133,
                                  "name": "amountToWithdraw",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9123,
                                  "src": "2746:16:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 9134,
                                  "name": "userBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9115,
                                  "src": "2765:11:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2746:30:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9136,
                              "nodeType": "ExpressionStatement",
                              "src": "2746:30:52"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9142,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2807:3:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 9143,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2807:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 9146,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "2827:4:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_WETHGateway_$9418",
                                    "typeString": "contract WETHGateway"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_WETHGateway_$9418",
                                    "typeString": "contract WETHGateway"
                                  }
                                ],
                                "id": 9145,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2819:7:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 9144,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2819:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 9147,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2819:13:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9148,
                              "name": "amountToWithdraw",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9123,
                              "src": "2834:16:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 9139,
                              "name": "aWETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9100,
                              "src": "2788:5:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAToken_$5667",
                                "typeString": "contract IAToken"
                              }
                            },
                            "id": 9141,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3993,
                            "src": "2788:18:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256) external returns (bool)"
                            }
                          },
                          "id": 9149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2788:63:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9150,
                        "nodeType": "ExpressionStatement",
                        "src": "2788:63:52"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 9157,
                                  "name": "WETH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9022,
                                  "src": "2900:4:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IWETH_$9891",
                                    "typeString": "contract IWETH"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IWETH_$9891",
                                    "typeString": "contract IWETH"
                                  }
                                ],
                                "id": 9156,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2892:7:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 9155,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2892:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 9158,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2892:13:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9159,
                              "name": "amountToWithdraw",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9123,
                              "src": "2907:16:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 9162,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "2933:4:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_WETHGateway_$9418",
                                    "typeString": "contract WETHGateway"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_WETHGateway_$9418",
                                    "typeString": "contract WETHGateway"
                                  }
                                ],
                                "id": 9161,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2925:7:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 9160,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2925:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 9163,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2925:13:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 9152,
                                  "name": "lendingPool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9091,
                                  "src": "2870:11:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 9151,
                                "name": "ILendingPool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6466,
                                "src": "2857:12:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ILendingPool_$6466_$",
                                  "typeString": "type(contract ILendingPool)"
                                }
                              },
                              "id": 9153,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2857:25:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 9154,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "withdraw",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6257,
                            "src": "2857:34:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address,uint256,address) external returns (uint256)"
                            }
                          },
                          "id": 9164,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2857:82:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9165,
                        "nodeType": "ExpressionStatement",
                        "src": "2857:82:52"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9169,
                              "name": "amountToWithdraw",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9123,
                              "src": "2959:16:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 9166,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9022,
                              "src": "2945:4:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWETH_$9891",
                                "typeString": "contract IWETH"
                              }
                            },
                            "id": 9168,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "withdraw",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9870,
                            "src": "2945:13:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) external"
                            }
                          },
                          "id": 9170,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2945:31:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9171,
                        "nodeType": "ExpressionStatement",
                        "src": "2945:31:52"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9173,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9095,
                              "src": "2999:2:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9174,
                              "name": "amountToWithdraw",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9123,
                              "src": "3003:16:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9172,
                            "name": "_safeTransferETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9343,
                            "src": "2982:16:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 9175,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2982:38:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9176,
                        "nodeType": "ExpressionStatement",
                        "src": "2982:38:52"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9089,
                    "nodeType": "StructuredDocumentation",
                    "src": "2054:268:52",
                    "text": " @dev withdraws the WETH _reserves of msg.sender.\n @param lendingPool address of the targeted underlying lending pool\n @param amount amount of aWETH to withdraw and receive native ETH\n @param to address of the user who will receive native ETH"
                  },
                  "functionSelector": "80500d20",
                  "id": 9178,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawETH",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9097,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2420:8:52"
                  },
                  "parameters": {
                    "id": 9096,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9091,
                        "mutability": "mutable",
                        "name": "lendingPool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9178,
                        "src": "2351:19:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9090,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2351:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9093,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9178,
                        "src": "2376:14:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9092,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2376:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9095,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9178,
                        "src": "2396:10:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9094,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2396:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2345:65:52"
                  },
                  "returnParameters": {
                    "id": 9098,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2429:0:52"
                  },
                  "scope": 9418,
                  "src": "2325:700:52",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    9922
                  ],
                  "body": {
                    "id": 9275,
                    "nodeType": "Block",
                    "src": "3585:749:52",
                    "statements": [
                      {
                        "assignments": [
                          9192,
                          9194
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9192,
                            "mutability": "mutable",
                            "name": "stableDebt",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 9275,
                            "src": "3592:18:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9191,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3592:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 9194,
                            "mutability": "mutable",
                            "name": "variableDebt",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 9275,
                            "src": "3612:20:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9193,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3612:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 9208,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9197,
                              "name": "onBehalfOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9187,
                              "src": "3684:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 9204,
                                      "name": "WETH",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9022,
                                      "src": "3753:4:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IWETH_$9891",
                                        "typeString": "contract IWETH"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IWETH_$9891",
                                        "typeString": "contract IWETH"
                                      }
                                    ],
                                    "id": 9203,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3745:7:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 9202,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3745:7:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 9205,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3745:13:52",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 9199,
                                      "name": "lendingPool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9181,
                                      "src": "3717:11:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 9198,
                                    "name": "ILendingPool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6466,
                                    "src": "3704:12:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ILendingPool_$6466_$",
                                      "typeString": "type(contract ILendingPool)"
                                    }
                                  },
                                  "id": 9200,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3704:25:52",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                },
                                "id": 9201,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getReserveData",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6429,
                                "src": "3704:40:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveData_$20520_memory_ptr_$",
                                  "typeString": "function (address) view external returns (struct DataTypes.ReserveData memory)"
                                }
                              },
                              "id": 9206,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3704:55:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                "typeString": "struct DataTypes.ReserveData memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                "typeString": "struct DataTypes.ReserveData memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 9195,
                              "name": "Helpers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17304,
                              "src": "3642:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Helpers_$17304_$",
                                "typeString": "type(library Helpers)"
                              }
                            },
                            "id": 9196,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getUserCurrentDebtMemory",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17303,
                            "src": "3642:32:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_struct$_ReserveData_$20520_memory_ptr_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,struct DataTypes.ReserveData memory) view returns (uint256,uint256)"
                            }
                          },
                          "id": 9207,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3642:125:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3591:176:52"
                      },
                      {
                        "assignments": [
                          9210
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9210,
                            "mutability": "mutable",
                            "name": "paybackAmount",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 9275,
                            "src": "3774:21:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9209,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3774:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 9222,
                        "initialValue": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                              "typeString": "enum DataTypes.InterestRateMode"
                            },
                            "id": 9218,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 9213,
                                  "name": "rateMode",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9185,
                                  "src": "3831:8:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9211,
                                  "name": "DataTypes",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20531,
                                  "src": "3804:9:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_DataTypes_$20531_$",
                                    "typeString": "type(library DataTypes)"
                                  }
                                },
                                "id": 9212,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "InterestRateMode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20530,
                                "src": "3804:26:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_InterestRateMode_$20530_$",
                                  "typeString": "type(enum DataTypes.InterestRateMode)"
                                }
                              },
                              "id": 9214,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3804:36:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                "typeString": "enum DataTypes.InterestRateMode"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9215,
                                  "name": "DataTypes",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20531,
                                  "src": "3844:9:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_DataTypes_$20531_$",
                                    "typeString": "type(library DataTypes)"
                                  }
                                },
                                "id": 9216,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "InterestRateMode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20530,
                                "src": "3844:26:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_InterestRateMode_$20530_$",
                                  "typeString": "type(enum DataTypes.InterestRateMode)"
                                }
                              },
                              "id": 9217,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "STABLE",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3844:33:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                "typeString": "enum DataTypes.InterestRateMode"
                              }
                            },
                            "src": "3804:73:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "id": 9220,
                            "name": "variableDebt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9194,
                            "src": "3909:12:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "3804:117:52",
                          "trueExpression": {
                            "argumentTypes": null,
                            "id": 9219,
                            "name": "stableDebt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9192,
                            "src": "3888:10:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3774:147:52"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9225,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 9223,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9183,
                            "src": "3932:6:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 9224,
                            "name": "paybackAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9210,
                            "src": "3941:13:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3932:22:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 9231,
                        "nodeType": "IfStatement",
                        "src": "3928:65:52",
                        "trueBody": {
                          "id": 9230,
                          "nodeType": "Block",
                          "src": "3956:37:52",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 9228,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 9226,
                                  "name": "paybackAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9210,
                                  "src": "3964:13:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 9227,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9183,
                                  "src": "3980:6:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3964:22:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9229,
                              "nodeType": "ExpressionStatement",
                              "src": "3964:22:52"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9236,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9233,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "4006:3:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 9234,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4006:9:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 9235,
                                "name": "paybackAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9210,
                                "src": "4019:13:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4006:26:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "6d73672e76616c7565206973206c657373207468616e2072657061796d656e7420616d6f756e74",
                              "id": 9237,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4034:41:52",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f3cb6abf841e7654d9fcd9bcef0bf0797905f8c05be5c0ec9482725dfffa0909",
                                "typeString": "literal_string \"msg.value is less than repayment amount\""
                              },
                              "value": "msg.value is less than repayment amount"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f3cb6abf841e7654d9fcd9bcef0bf0797905f8c05be5c0ec9482725dfffa0909",
                                "typeString": "literal_string \"msg.value is less than repayment amount\""
                              }
                            ],
                            "id": 9232,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3998:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9238,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3998:78:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9239,
                        "nodeType": "ExpressionStatement",
                        "src": "3998:78:52"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 9240,
                                "name": "WETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9022,
                                "src": "4082:4:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IWETH_$9891",
                                  "typeString": "contract IWETH"
                                }
                              },
                              "id": 9242,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "deposit",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9865,
                              "src": "4082:12:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_payable$__$returns$__$",
                                "typeString": "function () payable external"
                              }
                            },
                            "id": 9244,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "argumentTypes": null,
                                "id": 9243,
                                "name": "paybackAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9210,
                                "src": "4102:13:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "4082:34:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                              "typeString": "function () payable external"
                            }
                          },
                          "id": 9245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4082:36:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9246,
                        "nodeType": "ExpressionStatement",
                        "src": "4082:36:52"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 9253,
                                  "name": "WETH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9022,
                                  "src": "4164:4:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IWETH_$9891",
                                    "typeString": "contract IWETH"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IWETH_$9891",
                                    "typeString": "contract IWETH"
                                  }
                                ],
                                "id": 9252,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4156:7:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 9251,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4156:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 9254,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4156:13:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9255,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4171:3:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 9256,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4171:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9257,
                              "name": "rateMode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9185,
                              "src": "4182:8:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9258,
                              "name": "onBehalfOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9187,
                              "src": "4192:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 9248,
                                  "name": "lendingPool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9181,
                                  "src": "4137:11:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 9247,
                                "name": "ILendingPool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6466,
                                "src": "4124:12:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ILendingPool_$6466_$",
                                  "typeString": "type(contract ILendingPool)"
                                }
                              },
                              "id": 9249,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4124:25:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 9250,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "repay",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6285,
                            "src": "4124:31:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address,uint256,uint256,address) external returns (uint256)"
                            }
                          },
                          "id": 9259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4124:79:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9260,
                        "nodeType": "ExpressionStatement",
                        "src": "4124:79:52"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9264,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9261,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "4247:3:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9262,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4247:9:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 9263,
                            "name": "paybackAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9210,
                            "src": "4259:13:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4247:25:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 9274,
                        "nodeType": "IfStatement",
                        "src": "4243:86:52",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9266,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "4291:3:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 9267,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4291:10:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9271,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 9268,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "4303:3:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 9269,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "value",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "4303:9:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 9270,
                                  "name": "paybackAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9210,
                                  "src": "4315:13:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4303:25:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 9265,
                              "name": "_safeTransferETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9343,
                              "src": "4274:16:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                "typeString": "function (address,uint256)"
                              }
                            },
                            "id": 9272,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4274:55:52",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 9273,
                          "nodeType": "ExpressionStatement",
                          "src": "4274:55:52"
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9179,
                    "nodeType": "StructuredDocumentation",
                    "src": "3029:414:52",
                    "text": " @dev repays a borrow on the WETH reserve, for the specified amount (or for the whole amount, if uint256(-1) is specified).\n @param lendingPool address of the targeted underlying lending pool\n @param amount the amount to repay, or uint256(-1) if the user wants to repay everything\n @param rateMode the rate mode to repay\n @param onBehalfOf the address for which msg.sender is repaying"
                  },
                  "functionSelector": "02c5fcf8",
                  "id": 9276,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "repayETH",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9189,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3576:8:52"
                  },
                  "parameters": {
                    "id": 9188,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9181,
                        "mutability": "mutable",
                        "name": "lendingPool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9276,
                        "src": "3469:19:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9180,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3469:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9183,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9276,
                        "src": "3494:14:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9182,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3494:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9185,
                        "mutability": "mutable",
                        "name": "rateMode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9276,
                        "src": "3514:16:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9184,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3514:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9187,
                        "mutability": "mutable",
                        "name": "onBehalfOf",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9276,
                        "src": "3536:18:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9186,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3536:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3463:95:52"
                  },
                  "returnParameters": {
                    "id": 9190,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3585:0:52"
                  },
                  "scope": 9418,
                  "src": "3446:888:52",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    9933
                  ],
                  "body": {
                    "id": 9316,
                    "nodeType": "Block",
                    "src": "4923:214:52",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 9295,
                                  "name": "WETH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9022,
                                  "src": "4977:4:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IWETH_$9891",
                                    "typeString": "contract IWETH"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IWETH_$9891",
                                    "typeString": "contract IWETH"
                                  }
                                ],
                                "id": 9294,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4969:7:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 9293,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4969:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 9296,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4969:13:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9297,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9281,
                              "src": "4990:6:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9298,
                              "name": "interesRateMode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9283,
                              "src": "5004:15:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9299,
                              "name": "referralCode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9285,
                              "src": "5027:12:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9300,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "5047:3:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 9301,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5047:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 9290,
                                  "name": "lendingPool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9279,
                                  "src": "4942:11:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 9289,
                                "name": "ILendingPool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6466,
                                "src": "4929:12:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ILendingPool_$6466_$",
                                  "typeString": "type(contract ILendingPool)"
                                }
                              },
                              "id": 9291,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4929:25:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 9292,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "borrow",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6271,
                            "src": "4929:32:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint16_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,uint256,uint16,address) external"
                            }
                          },
                          "id": 9302,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4929:134:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9303,
                        "nodeType": "ExpressionStatement",
                        "src": "4929:134:52"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9307,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9281,
                              "src": "5083:6:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 9304,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9022,
                              "src": "5069:4:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWETH_$9891",
                                "typeString": "contract IWETH"
                              }
                            },
                            "id": 9306,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "withdraw",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9870,
                            "src": "5069:13:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) external"
                            }
                          },
                          "id": 9308,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5069:21:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9309,
                        "nodeType": "ExpressionStatement",
                        "src": "5069:21:52"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9311,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "5113:3:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 9312,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5113:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9313,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9281,
                              "src": "5125:6:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9310,
                            "name": "_safeTransferETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9343,
                            "src": "5096:16:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 9314,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5096:36:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9315,
                        "nodeType": "ExpressionStatement",
                        "src": "5096:36:52"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9277,
                    "nodeType": "StructuredDocumentation",
                    "src": "4338:442:52",
                    "text": " @dev borrow WETH, unwraps to ETH and send both the ETH and DebtTokens to msg.sender, via `approveDelegation` and onBehalf argument in `LendingPool.borrow`.\n @param lendingPool address of the targeted underlying lending pool\n @param amount the amount of ETH to borrow\n @param interesRateMode the interest rate mode\n @param referralCode integrators are assigned a referral code and can potentially receive rewards"
                  },
                  "functionSelector": "66514c97",
                  "id": 9317,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "borrowETH",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9287,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4914:8:52"
                  },
                  "parameters": {
                    "id": 9286,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9279,
                        "mutability": "mutable",
                        "name": "lendingPool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9317,
                        "src": "4807:19:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9278,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4807:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9281,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9317,
                        "src": "4832:14:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9280,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4832:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9283,
                        "mutability": "mutable",
                        "name": "interesRateMode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9317,
                        "src": "4852:23:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9282,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4852:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9285,
                        "mutability": "mutable",
                        "name": "referralCode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9317,
                        "src": "4881:19:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 9284,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "4881:6:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4801:103:52"
                  },
                  "returnParameters": {
                    "id": 9288,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4923:0:52"
                  },
                  "scope": 9418,
                  "src": "4783:354:52",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 9342,
                    "nodeType": "Block",
                    "src": "5351:110:52",
                    "statements": [
                      {
                        "assignments": [
                          9326,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9326,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 9342,
                            "src": "5358:12:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 9325,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "5358:4:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 9336,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 9333,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5408:1:52",
                                  "subdenomination": null,
                                  "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": 9332,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "NewExpression",
                                "src": "5398:9:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (bytes memory)"
                                },
                                "typeName": {
                                  "id": 9331,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5402:5:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage_ptr",
                                    "typeString": "bytes"
                                  }
                                }
                              },
                              "id": 9334,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5398:12:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 9327,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9320,
                                "src": "5376:2:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 9328,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5376:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 9330,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "argumentTypes": null,
                                "id": 9329,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9322,
                                "src": "5391:5:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "5376:21:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 9335,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5376:35:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5357:54:52"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9338,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9326,
                              "src": "5425:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4554485f5452414e534645525f4641494c4544",
                              "id": 9339,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5434:21:52",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d383913ea1996930a2623a0d739b8fc033c734c1d71d4759d3ccba1d3a719c29",
                                "typeString": "literal_string \"ETH_TRANSFER_FAILED\""
                              },
                              "value": "ETH_TRANSFER_FAILED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d383913ea1996930a2623a0d739b8fc033c734c1d71d4759d3ccba1d3a719c29",
                                "typeString": "literal_string \"ETH_TRANSFER_FAILED\""
                              }
                            ],
                            "id": 9337,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5417:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5417:39:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9341,
                        "nodeType": "ExpressionStatement",
                        "src": "5417:39:52"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9318,
                    "nodeType": "StructuredDocumentation",
                    "src": "5141:145:52",
                    "text": " @dev transfer ETH to an address, revert if it fails.\n @param to recipient of the transfer\n @param value the amount to send"
                  },
                  "id": 9343,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeTransferETH",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 9323,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9320,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9343,
                        "src": "5315:10:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9319,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5315:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9322,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9343,
                        "src": "5327:13:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9321,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5327:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5314:27:52"
                  },
                  "returnParameters": {
                    "id": 9324,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5351:0:52"
                  },
                  "scope": 9418,
                  "src": "5289:172:52",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9363,
                    "nodeType": "Block",
                    "src": "5844:45:52",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9359,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9348,
                              "src": "5873:2:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9360,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9350,
                              "src": "5877:6:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 9356,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9346,
                                  "src": "5857:5:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 9355,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "5850:6:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 9357,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5850:13:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 9358,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3961,
                            "src": "5850:22:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 9361,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5850:34:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9362,
                        "nodeType": "ExpressionStatement",
                        "src": "5850:34:52"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9344,
                    "nodeType": "StructuredDocumentation",
                    "src": "5465:266:52",
                    "text": " @dev transfer ERC20 from the utility contract, for ERC20 recovery in case of stuck tokens due\n direct transfers to the contract address.\n @param token token to transfer\n @param to recipient of the transfer\n @param amount amount to send"
                  },
                  "functionSelector": "a3d5b255",
                  "id": 9364,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 9353,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 9352,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "5834:9:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5834:9:52"
                    }
                  ],
                  "name": "emergencyTokenTransfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 9351,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9346,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9364,
                        "src": "5771:13:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9345,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5771:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9348,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9364,
                        "src": "5790:10:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9347,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5790:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9350,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9364,
                        "src": "5806:14:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9349,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5806:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5765:59:52"
                  },
                  "returnParameters": {
                    "id": 9354,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5844:0:52"
                  },
                  "scope": 9418,
                  "src": "5734:155:52",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 9379,
                    "nodeType": "Block",
                    "src": "6262:39:52",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9375,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9367,
                              "src": "6285:2:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9376,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9369,
                              "src": "6289:6:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9374,
                            "name": "_safeTransferETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9343,
                            "src": "6268:16:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 9377,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6268:28:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9378,
                        "nodeType": "ExpressionStatement",
                        "src": "6268:28:52"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9365,
                    "nodeType": "StructuredDocumentation",
                    "src": "5893:287:52",
                    "text": " @dev transfer native Ether from the utility contract, for native Ether recovery in case of stuck Ether\n due selfdestructs or transfer ether to pre-computated contract address before deployment.\n @param to recipient of the transfer\n @param amount amount to send"
                  },
                  "functionSelector": "eed88b8d",
                  "id": 9380,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 9372,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 9371,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "6252:9:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6252:9:52"
                    }
                  ],
                  "name": "emergencyEtherTransfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 9370,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9367,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9380,
                        "src": "6215:10:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9366,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6215:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9369,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9380,
                        "src": "6227:14:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9368,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6227:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6214:28:52"
                  },
                  "returnParameters": {
                    "id": 9373,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6262:0:52"
                  },
                  "scope": 9418,
                  "src": "6183:118:52",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 9391,
                    "nodeType": "Block",
                    "src": "6422:31:52",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9388,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9022,
                              "src": "6443:4:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWETH_$9891",
                                "typeString": "contract IWETH"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IWETH_$9891",
                                "typeString": "contract IWETH"
                              }
                            ],
                            "id": 9387,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6435:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 9386,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6435:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 9389,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6435:13:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 9385,
                        "id": 9390,
                        "nodeType": "Return",
                        "src": "6428:20:52"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9381,
                    "nodeType": "StructuredDocumentation",
                    "src": "6305:56:52",
                    "text": " @dev Get WETH address used by WETHGateway"
                  },
                  "functionSelector": "affa8817",
                  "id": 9392,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getWETHAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 9382,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6387:2:52"
                  },
                  "returnParameters": {
                    "id": 9385,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9384,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9392,
                        "src": "6413:7:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9383,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6413:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6412:9:52"
                  },
                  "scope": 9418,
                  "src": "6364:89:52",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 9407,
                    "nodeType": "Block",
                    "src": "6614:70:52",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 9403,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9397,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "6628:3:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 9398,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6628:10:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9401,
                                    "name": "WETH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9022,
                                    "src": "6650:4:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IWETH_$9891",
                                      "typeString": "contract IWETH"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IWETH_$9891",
                                      "typeString": "contract IWETH"
                                    }
                                  ],
                                  "id": 9400,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6642:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 9399,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6642:7:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 9402,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6642:13:52",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "6628:27:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "52656365697665206e6f7420616c6c6f776564",
                              "id": 9404,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6657:21:52",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_27ee2b783d4c8df49ab77e716dbb31d00957b706569e1f6344f0cb575662d45e",
                                "typeString": "literal_string \"Receive not allowed\""
                              },
                              "value": "Receive not allowed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_27ee2b783d4c8df49ab77e716dbb31d00957b706569e1f6344f0cb575662d45e",
                                "typeString": "literal_string \"Receive not allowed\""
                              }
                            ],
                            "id": 9396,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6620:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9405,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6620:59:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9406,
                        "nodeType": "ExpressionStatement",
                        "src": "6620:59:52"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9393,
                    "nodeType": "StructuredDocumentation",
                    "src": "6457:127:52",
                    "text": " @dev Only WETH contract is allowed to transfer ETH here. Prevent other addresses to send Ether to this contract."
                  },
                  "id": 9408,
                  "implemented": true,
                  "kind": "receive",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 9394,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6594:2:52"
                  },
                  "returnParameters": {
                    "id": 9395,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6614:0:52"
                  },
                  "scope": 9418,
                  "src": "6587:97:52",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 9416,
                    "nodeType": "Block",
                    "src": "6760:41:52",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "46616c6c6261636b206e6f7420616c6c6f776564",
                              "id": 9413,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6773:22:52",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0fbc9324f34b5b3dd5cc07188bb4ac8875999da3789a00b0de2cd5733ed30268",
                                "typeString": "literal_string \"Fallback not allowed\""
                              },
                              "value": "Fallback not allowed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_0fbc9324f34b5b3dd5cc07188bb4ac8875999da3789a00b0de2cd5733ed30268",
                                "typeString": "literal_string \"Fallback not allowed\""
                              }
                            ],
                            "id": 9412,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "6766:6:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 9414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6766:30:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9415,
                        "nodeType": "ExpressionStatement",
                        "src": "6766:30:52"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9409,
                    "nodeType": "StructuredDocumentation",
                    "src": "6688:41:52",
                    "text": " @dev Revert fallback calls"
                  },
                  "id": 9417,
                  "implemented": true,
                  "kind": "fallback",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 9410,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6740:2:52"
                  },
                  "returnParameters": {
                    "id": 9411,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6760:0:52"
                  },
                  "scope": 9418,
                  "src": "6732:69:52",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 9419,
              "src": "793:6010:52"
            }
          ],
          "src": "37:6767:52"
        },
        "id": 52
      },
      "contracts/misc/WalletBalanceProvider.sol": {
        "ast": {
          "absolutePath": "contracts/misc/WalletBalanceProvider.sol",
          "exportedSymbols": {
            "WalletBalanceProvider": [
              9729
            ]
          },
          "id": 9730,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 9420,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:53"
            },
            {
              "id": 9421,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "62:33:53"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/Address.sol",
              "file": "../dependencies/openzeppelin/contracts/Address.sol",
              "id": 9423,
              "nodeType": "ImportDirective",
              "scope": 9730,
              "sourceUnit": 3405,
              "src": "97:75:53",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 9422,
                    "name": "Address",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "105:7:53",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
              "file": "../dependencies/openzeppelin/contracts/IERC20.sol",
              "id": 9425,
              "nodeType": "ImportDirective",
              "scope": 9730,
              "sourceUnit": 4013,
              "src": "173:73:53",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 9424,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "181:6:53",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPoolAddressesProvider.sol",
              "file": "../interfaces/ILendingPoolAddressesProvider.sol",
              "id": 9427,
              "nodeType": "ImportDirective",
              "scope": 9730,
              "sourceUnit": 6618,
              "src": "248:94:53",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 9426,
                    "name": "ILendingPoolAddressesProvider",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "256:29:53",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPool.sol",
              "file": "../interfaces/ILendingPool.sol",
              "id": 9429,
              "nodeType": "ImportDirective",
              "scope": 9730,
              "sourceUnit": 6467,
              "src": "343:60:53",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 9428,
                    "name": "ILendingPool",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "351:12:53",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeERC20.sol",
              "file": "../dependencies/openzeppelin/contracts/SafeERC20.sol",
              "id": 9431,
              "nodeType": "ImportDirective",
              "scope": 9730,
              "sourceUnit": 4301,
              "src": "404:79:53",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 9430,
                    "name": "SafeERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "412:9:53",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/configuration/ReserveConfiguration.sol",
              "file": "../protocol/libraries/configuration/ReserveConfiguration.sol",
              "id": 9433,
              "nodeType": "ImportDirective",
              "scope": 9730,
              "sourceUnit": 16742,
              "src": "484:98:53",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 9432,
                    "name": "ReserveConfiguration",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "492:20:53",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/types/DataTypes.sol",
              "file": "../protocol/libraries/types/DataTypes.sol",
              "id": 9435,
              "nodeType": "ImportDirective",
              "scope": 9730,
              "sourceUnit": 20532,
              "src": "583:68:53",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 9434,
                    "name": "DataTypes",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "591:9:53",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 9436,
                "nodeType": "StructuredDocumentation",
                "src": "653:433:53",
                "text": " @title WalletBalanceProvider contract\n @author Aave, influenced by https://github.com/wbobeirne/eth-balance-checker/blob/master/contracts/BalanceChecker.sol\n @notice Implements a logic of getting multiple tokens balance for one user address\n @dev NOTE: THIS CONTRACT IS NOT USED WITHIN THE AAVE PROTOCOL. It's an accessory contract used to reduce the number of calls\n towards the blockchain from the Aave backend.*"
              },
              "fullyImplemented": true,
              "id": 9729,
              "linearizedBaseContracts": [
                9729
              ],
              "name": "WalletBalanceProvider",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 9439,
                  "libraryName": {
                    "contractScope": null,
                    "id": 9437,
                    "name": "Address",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3404,
                    "src": "1128:7:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Address_$3404",
                      "typeString": "library Address"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1122:34:53",
                  "typeName": {
                    "id": 9438,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1140:15:53",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  }
                },
                {
                  "id": 9442,
                  "libraryName": {
                    "contractScope": null,
                    "id": 9440,
                    "name": "Address",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3404,
                    "src": "1165:7:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Address_$3404",
                      "typeString": "library Address"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1159:26:53",
                  "typeName": {
                    "id": 9441,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1177:7:53",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                {
                  "id": 9445,
                  "libraryName": {
                    "contractScope": null,
                    "id": 9443,
                    "name": "SafeERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4300,
                    "src": "1194:9:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeERC20_$4300",
                      "typeString": "library SafeERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1188:27:53",
                  "typeName": {
                    "contractScope": null,
                    "id": 9444,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4012,
                    "src": "1208:6:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$4012",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "id": 9448,
                  "libraryName": {
                    "contractScope": null,
                    "id": 9446,
                    "name": "ReserveConfiguration",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16741,
                    "src": "1224:20:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ReserveConfiguration_$16741",
                      "typeString": "library ReserveConfiguration"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1218:65:53",
                  "typeName": {
                    "contractScope": null,
                    "id": 9447,
                    "name": "DataTypes.ReserveConfigurationMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20523,
                    "src": "1249:33:53",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                      "typeString": "struct DataTypes.ReserveConfigurationMap"
                    }
                  }
                },
                {
                  "constant": true,
                  "id": 9451,
                  "mutability": "constant",
                  "name": "MOCK_ETH_ADDRESS",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 9729,
                  "src": "1287:78:53",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9449,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1287:7:53",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307845656565654565656545654565654565456545656545454565656565456565656565656545456545",
                    "id": 9450,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1323:42:53",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    },
                    "value": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9463,
                    "nodeType": "Block",
                    "src": "1460:95:53",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 9456,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "1520:3:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 9457,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1520:10:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "id": 9458,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3369,
                                "src": "1520:21:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 9459,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1520:23:53",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "3232",
                              "id": 9460,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1545:4:53",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d4d1a59767271eefdc7830a772b9732a11d503531d972ab8c981a6b1c0e666e5",
                                "typeString": "literal_string \"22\""
                              },
                              "value": "22"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d4d1a59767271eefdc7830a772b9732a11d503531d972ab8c981a6b1c0e666e5",
                                "typeString": "literal_string \"22\""
                              }
                            ],
                            "id": 9455,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1512:7:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9461,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1512:38:53",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9462,
                        "nodeType": "ExpressionStatement",
                        "src": "1512:38:53"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9452,
                    "nodeType": "StructuredDocumentation",
                    "src": "1370:60:53",
                    "text": "@dev Fallback function, don't accept any ETH*"
                  },
                  "id": 9464,
                  "implemented": true,
                  "kind": "receive",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 9453,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1440:2:53"
                  },
                  "returnParameters": {
                    "id": 9454,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1460:0:53"
                  },
                  "scope": 9729,
                  "src": "1433:122:53",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 9498,
                    "nodeType": "Block",
                    "src": "1829:247:53",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 9476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 9474,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9469,
                            "src": "1839:5:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 9475,
                            "name": "MOCK_ETH_ADDRESS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9451,
                            "src": "1848:16:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1839:25:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 9481,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9469,
                                "src": "1972:5:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 9482,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isContract",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3369,
                              "src": "1972:16:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                                "typeString": "function (address) view returns (bool)"
                              }
                            },
                            "id": 9483,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1972:18:53",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 9492,
                          "nodeType": "IfStatement",
                          "src": "1968:75:53",
                          "trueBody": {
                            "id": 9491,
                            "nodeType": "Block",
                            "src": "1992:51:53",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 9488,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9467,
                                      "src": "2031:4:53",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 9485,
                                          "name": "token",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9469,
                                          "src": "2014:5:53",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 9484,
                                        "name": "IERC20",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4012,
                                        "src": "2007:6:53",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                          "typeString": "type(contract IERC20)"
                                        }
                                      },
                                      "id": 9486,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2007:13:53",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$4012",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 9487,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "balanceOf",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3951,
                                    "src": "2007:23:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address) view external returns (uint256)"
                                    }
                                  },
                                  "id": 9489,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2007:29:53",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "functionReturnParameters": 9473,
                                "id": 9490,
                                "nodeType": "Return",
                                "src": "2000:36:53"
                              }
                            ]
                          }
                        },
                        "id": 9493,
                        "nodeType": "IfStatement",
                        "src": "1835:208:53",
                        "trueBody": {
                          "id": 9480,
                          "nodeType": "Block",
                          "src": "1866:96:53",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9477,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9467,
                                  "src": "1881:4:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 9478,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1881:12:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 9473,
                              "id": 9479,
                              "nodeType": "Return",
                              "src": "1874:19:53"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "494e56414c49445f544f4b454e",
                              "id": 9495,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2055:15:53",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_436b5627177a9781148596ddddd93f72d53dd82575a018216d5aaf2a8219ec9e",
                                "typeString": "literal_string \"INVALID_TOKEN\""
                              },
                              "value": "INVALID_TOKEN"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_436b5627177a9781148596ddddd93f72d53dd82575a018216d5aaf2a8219ec9e",
                                "typeString": "literal_string \"INVALID_TOKEN\""
                              }
                            ],
                            "id": 9494,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "2048:6:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 9496,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2048:23:53",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9497,
                        "nodeType": "ExpressionStatement",
                        "src": "2048:23:53"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9465,
                    "nodeType": "StructuredDocumentation",
                    "src": "1559:189:53",
                    "text": "@dev Check the token balance of a wallet in a token contract\nReturns the balance of the token for user. Avoids possible errors:\n- return 0 on non-contract address*"
                  },
                  "functionSelector": "f7888aec",
                  "id": 9499,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 9470,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9467,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9499,
                        "src": "1770:12:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9466,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1770:7:53",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9469,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9499,
                        "src": "1784:13:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9468,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1784:7:53",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1769:29:53"
                  },
                  "returnParameters": {
                    "id": 9473,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9472,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9499,
                        "src": "1820:7:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9471,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1820:7:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1819:9:53"
                  },
                  "scope": 9729,
                  "src": "1751:325:53",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 9573,
                    "nodeType": "Block",
                    "src": "2483:294:53",
                    "statements": [
                      {
                        "assignments": [
                          9516
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9516,
                            "mutability": "mutable",
                            "name": "balances",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 9573,
                            "src": "2489:25:53",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 9514,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2489:7:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9515,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "2489:9:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 9526,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9524,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9520,
                                  "name": "users",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9503,
                                  "src": "2531:5:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 9521,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2531:12:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9522,
                                  "name": "tokens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9506,
                                  "src": "2546:6:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 9523,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2546:13:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2531:28:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9519,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "2517:13:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 9517,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2521:7:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9518,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "2521:9:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 9525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2517:43:53",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2489:71:53"
                      },
                      {
                        "body": {
                          "id": 9569,
                          "nodeType": "Block",
                          "src": "2610:141:53",
                          "statements": [
                            {
                              "body": {
                                "id": 9567,
                                "nodeType": "Block",
                                "src": "2662:83:53",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 9565,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 9549,
                                          "name": "balances",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9516,
                                          "src": "2672:8:53",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        "id": 9556,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 9555,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 9553,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "id": 9550,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 9528,
                                              "src": "2681:1:53",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "*",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 9551,
                                                "name": "tokens",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9506,
                                                "src": "2685:6:53",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                                  "typeString": "address[] calldata"
                                                }
                                              },
                                              "id": 9552,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "length",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "2685:13:53",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "2681:17:53",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 9554,
                                            "name": "j",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9539,
                                            "src": "2701:1:53",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "2681:21:53",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "2672:31:53",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 9558,
                                              "name": "users",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 9503,
                                              "src": "2716:5:53",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                                "typeString": "address[] calldata"
                                              }
                                            },
                                            "id": 9560,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 9559,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 9528,
                                              "src": "2722:1:53",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "2716:8:53",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 9561,
                                              "name": "tokens",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 9506,
                                              "src": "2726:6:53",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                                "typeString": "address[] calldata"
                                              }
                                            },
                                            "id": 9563,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 9562,
                                              "name": "j",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 9539,
                                              "src": "2733:1:53",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "2726:9:53",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 9557,
                                          "name": "balanceOf",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9499,
                                          "src": "2706:9:53",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                            "typeString": "function (address,address) view returns (uint256)"
                                          }
                                        },
                                        "id": 9564,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2706:30:53",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "2672:64:53",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 9566,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2672:64:53"
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9545,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 9542,
                                  "name": "j",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9539,
                                  "src": "2638:1:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 9543,
                                    "name": "tokens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9506,
                                    "src": "2642:6:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 9544,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2642:13:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2638:17:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 9568,
                              "initializationExpression": {
                                "assignments": [
                                  9539
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 9539,
                                    "mutability": "mutable",
                                    "name": "j",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 9568,
                                    "src": "2623:9:53",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "typeName": {
                                      "id": 9538,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2623:7:53",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 9541,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 9540,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2635:1:53",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "2623:13:53"
                              },
                              "loopExpression": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9547,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "2657:3:53",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 9546,
                                    "name": "j",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9539,
                                    "src": "2657:1:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 9548,
                                "nodeType": "ExpressionStatement",
                                "src": "2657:3:53"
                              },
                              "nodeType": "ForStatement",
                              "src": "2618:127:53"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 9531,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9528,
                            "src": "2587:1:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9532,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9503,
                              "src": "2591:5:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 9533,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2591:12:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2587:16:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9570,
                        "initializationExpression": {
                          "assignments": [
                            9528
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 9528,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 9570,
                              "src": "2572:9:53",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 9527,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2572:7:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 9530,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 9529,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2584:1:53",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2572:13:53"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 9536,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "2605:3:53",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 9535,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9528,
                              "src": "2605:1:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9537,
                          "nodeType": "ExpressionStatement",
                          "src": "2605:3:53"
                        },
                        "nodeType": "ForStatement",
                        "src": "2567:184:53"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 9571,
                          "name": "balances",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9516,
                          "src": "2764:8:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "functionReturnParameters": 9511,
                        "id": 9572,
                        "nodeType": "Return",
                        "src": "2757:15:53"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9500,
                    "nodeType": "StructuredDocumentation",
                    "src": "2080:268:53",
                    "text": " @notice Fetches, for a list of _users and _tokens (ETH included with mock address), the balances\n @param users The list of users\n @param tokens The list of tokens\n @return And array with the concatenation of, for each user, his/her balances*"
                  },
                  "functionSelector": "b59b28ef",
                  "id": 9574,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchBalanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 9507,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9503,
                        "mutability": "mutable",
                        "name": "users",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9574,
                        "src": "2375:24:53",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9501,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2375:7:53",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 9502,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2375:9:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9506,
                        "mutability": "mutable",
                        "name": "tokens",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9574,
                        "src": "2401:25:53",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9504,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2401:7:53",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 9505,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2401:9:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2374:53:53"
                  },
                  "returnParameters": {
                    "id": 9511,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9510,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9574,
                        "src": "2463:16:53",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9508,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2463:7:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9509,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2463:9:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2462:18:53"
                  },
                  "scope": 9729,
                  "src": "2351:426:53",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 9727,
                    "nodeType": "Block",
                    "src": "3011:936:53",
                    "statements": [
                      {
                        "assignments": [
                          9589
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9589,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 9727,
                            "src": "3017:17:53",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPool_$6466",
                              "typeString": "contract ILendingPool"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 9588,
                              "name": "ILendingPool",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 6466,
                              "src": "3017:12:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 9597,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 9592,
                                      "name": "provider",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9577,
                                      "src": "3080:8:53",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 9591,
                                    "name": "ILendingPoolAddressesProvider",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6617,
                                    "src": "3050:29:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ILendingPoolAddressesProvider_$6617_$",
                                      "typeString": "type(contract ILendingPoolAddressesProvider)"
                                    }
                                  },
                                  "id": 9593,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3050:39:53",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                                    "typeString": "contract ILendingPoolAddressesProvider"
                                  }
                                },
                                "id": 9594,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getLendingPool",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6551,
                                "src": "3050:54:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              "id": 9595,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3050:56:53",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 9590,
                            "name": "ILendingPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6466,
                            "src": "3037:12:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ILendingPool_$6466_$",
                              "typeString": "type(contract ILendingPool)"
                            }
                          },
                          "id": 9596,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3037:70:53",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3017:90:53"
                      },
                      {
                        "assignments": [
                          9602
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9602,
                            "mutability": "mutable",
                            "name": "reserves",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 9727,
                            "src": "3114:25:53",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 9600,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "3114:7:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 9601,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "3114:9:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 9606,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 9603,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9589,
                              "src": "3142:4:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 9604,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getReservesList",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6450,
                            "src": "3142:20:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function () view external returns (address[] memory)"
                            }
                          },
                          "id": 9605,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3142:22:53",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3114:50:53"
                      },
                      {
                        "assignments": [
                          9611
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9611,
                            "mutability": "mutable",
                            "name": "reservesWithEth",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 9727,
                            "src": "3170:32:53",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 9609,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "3170:7:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 9610,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "3170:9:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 9620,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9618,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9615,
                                  "name": "reserves",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9602,
                                  "src": "3219:8:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 9616,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3219:15:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 9617,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3237:1:53",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "3219:19:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9614,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "3205:13:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 9612,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "3209:7:53",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 9613,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "3209:9:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 9619,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3205:34:53",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3170:69:53"
                      },
                      {
                        "body": {
                          "id": 9640,
                          "nodeType": "Block",
                          "src": "3291:47:53",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 9638,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 9632,
                                    "name": "reservesWithEth",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9611,
                                    "src": "3299:15:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 9634,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 9633,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9622,
                                    "src": "3315:1:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3299:18:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 9635,
                                    "name": "reserves",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9602,
                                    "src": "3320:8:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 9637,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 9636,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9622,
                                    "src": "3329:1:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3320:11:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3299:32:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 9639,
                              "nodeType": "ExpressionStatement",
                              "src": "3299:32:53"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 9625,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9622,
                            "src": "3265:1:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9626,
                              "name": "reserves",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9602,
                              "src": "3269:8:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 9627,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3269:15:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3265:19:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9641,
                        "initializationExpression": {
                          "assignments": [
                            9622
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 9622,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 9641,
                              "src": "3250:9:53",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 9621,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3250:7:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 9624,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 9623,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3262:1:53",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3250:13:53"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 9630,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "3286:3:53",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 9629,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9622,
                              "src": "3286:1:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9631,
                          "nodeType": "ExpressionStatement",
                          "src": "3286:3:53"
                        },
                        "nodeType": "ForStatement",
                        "src": "3245:93:53"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 9647,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 9642,
                              "name": "reservesWithEth",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9611,
                              "src": "3343:15:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 9645,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9643,
                                "name": "reserves",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9602,
                                "src": "3359:8:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 9644,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3359:15:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3343:32:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 9646,
                            "name": "MOCK_ETH_ADDRESS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9451,
                            "src": "3378:16:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3343:51:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 9648,
                        "nodeType": "ExpressionStatement",
                        "src": "3343:51:53"
                      },
                      {
                        "assignments": [
                          9653
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9653,
                            "mutability": "mutable",
                            "name": "balances",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 9727,
                            "src": "3401:25:53",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 9651,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3401:7:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9652,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "3401:9:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 9660,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9657,
                                "name": "reservesWithEth",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9611,
                                "src": "3443:15:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 9658,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3443:22:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9656,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "3429:13:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 9654,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3433:7:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9655,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "3433:9:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 9659,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3429:37:53",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3401:65:53"
                      },
                      {
                        "body": {
                          "id": 9711,
                          "nodeType": "Block",
                          "src": "3519:316:53",
                          "statements": [
                            {
                              "assignments": [
                                9675
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 9675,
                                  "mutability": "mutable",
                                  "name": "configuration",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 9711,
                                  "src": "3527:54:53",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                    "typeString": "struct DataTypes.ReserveConfigurationMap"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 9674,
                                    "name": "DataTypes.ReserveConfigurationMap",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 20523,
                                    "src": "3527:33:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                                      "typeString": "struct DataTypes.ReserveConfigurationMap"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 9682,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 9678,
                                      "name": "reservesWithEth",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9611,
                                      "src": "3614:15:53",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 9680,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 9679,
                                      "name": "j",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9662,
                                      "src": "3630:1:53",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3614:18:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 9676,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9589,
                                    "src": "3592:4:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                      "typeString": "contract ILendingPool"
                                    }
                                  },
                                  "id": 9677,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getConfiguration",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6397,
                                  "src": "3592:21:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                                    "typeString": "function (address) view external returns (struct DataTypes.ReserveConfigurationMap memory)"
                                  }
                                },
                                "id": 9681,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3592:41:53",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3527:106:53"
                            },
                            {
                              "assignments": [
                                9684,
                                null,
                                null,
                                null
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 9684,
                                  "mutability": "mutable",
                                  "name": "isActive",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 9711,
                                  "src": "3643:13:53",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 9683,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3643:4:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                },
                                null,
                                null,
                                null
                              ],
                              "id": 9688,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 9685,
                                    "name": "configuration",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9675,
                                    "src": "3666:13:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                      "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                    }
                                  },
                                  "id": 9686,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getFlagsMemory",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 16740,
                                  "src": "3666:28:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$returns$_t_bool_$_t_bool_$_t_bool_$_t_bool_$bound_to$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                                    "typeString": "function (struct DataTypes.ReserveConfigurationMap memory) pure returns (bool,bool,bool,bool)"
                                  }
                                },
                                "id": 9687,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3666:30:53",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_bool_$_t_bool_$_t_bool_$",
                                  "typeString": "tuple(bool,bool,bool,bool)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3642:54:53"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "id": 9690,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "!",
                                "prefix": true,
                                "src": "3709:9:53",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 9689,
                                  "name": "isActive",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9684,
                                  "src": "3710:8:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 9699,
                              "nodeType": "IfStatement",
                              "src": "3705:67:53",
                              "trueBody": {
                                "id": 9698,
                                "nodeType": "Block",
                                "src": "3720:52:53",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 9695,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 9691,
                                          "name": "balances",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9653,
                                          "src": "3730:8:53",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        "id": 9693,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 9692,
                                          "name": "j",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9662,
                                          "src": "3739:1:53",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "3730:11:53",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 9694,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3744:1:53",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "3730:15:53",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 9696,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3730:15:53"
                                  },
                                  {
                                    "id": 9697,
                                    "nodeType": "Continue",
                                    "src": "3755:8:53"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 9709,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 9700,
                                    "name": "balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9653,
                                    "src": "3779:8:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 9702,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 9701,
                                    "name": "j",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9662,
                                    "src": "3788:1:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3779:11:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 9704,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9579,
                                      "src": "3803:4:53",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 9705,
                                        "name": "reservesWithEth",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9611,
                                        "src": "3809:15:53",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                          "typeString": "address[] memory"
                                        }
                                      },
                                      "id": 9707,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 9706,
                                        "name": "j",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9662,
                                        "src": "3825:1:53",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3809:18:53",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 9703,
                                    "name": "balanceOf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9499,
                                    "src": "3793:9:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address,address) view returns (uint256)"
                                    }
                                  },
                                  "id": 9708,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3793:35:53",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3779:49:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9710,
                              "nodeType": "ExpressionStatement",
                              "src": "3779:49:53"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9668,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 9665,
                            "name": "j",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9662,
                            "src": "3493:1:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9666,
                              "name": "reserves",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9602,
                              "src": "3497:8:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 9667,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3497:15:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3493:19:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9712,
                        "initializationExpression": {
                          "assignments": [
                            9662
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 9662,
                              "mutability": "mutable",
                              "name": "j",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 9712,
                              "src": "3478:9:53",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 9661,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3478:7:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 9664,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 9663,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3490:1:53",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3478:13:53"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 9670,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "3514:3:53",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 9669,
                              "name": "j",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9662,
                              "src": "3514:1:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9671,
                          "nodeType": "ExpressionStatement",
                          "src": "3514:3:53"
                        },
                        "nodeType": "ForStatement",
                        "src": "3473:362:53"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 9721,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 9713,
                              "name": "balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9653,
                              "src": "3840:8:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 9716,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9714,
                                "name": "reserves",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9602,
                                "src": "3849:8:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 9715,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3849:15:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3840:25:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9718,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9579,
                                "src": "3878:4:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9719,
                                "name": "MOCK_ETH_ADDRESS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9451,
                                "src": "3884:16:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 9717,
                              "name": "balanceOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9499,
                              "src": "3868:9:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address,address) view returns (uint256)"
                              }
                            },
                            "id": 9720,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3868:33:53",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3840:61:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9722,
                        "nodeType": "ExpressionStatement",
                        "src": "3840:61:53"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 9723,
                              "name": "reservesWithEth",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9611,
                              "src": "3916:15:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9724,
                              "name": "balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9653,
                              "src": "3933:8:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "id": 9725,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3915:27:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(address[] memory,uint256[] memory)"
                          }
                        },
                        "functionReturnParameters": 9587,
                        "id": 9726,
                        "nodeType": "Return",
                        "src": "3908:34:53"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9575,
                    "nodeType": "StructuredDocumentation",
                    "src": "2781:91:53",
                    "text": "@dev provides balances of user wallet for all reserves available on the pool"
                  },
                  "functionSelector": "02405343",
                  "id": 9728,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUserWalletBalances",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 9580,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9577,
                        "mutability": "mutable",
                        "name": "provider",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9728,
                        "src": "2906:16:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9576,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2906:7:53",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9579,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9728,
                        "src": "2924:12:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9578,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2924:7:53",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2905:32:53"
                  },
                  "returnParameters": {
                    "id": 9587,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9583,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9728,
                        "src": "2973:16:53",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9581,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2973:7:53",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 9582,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2973:9:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9586,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9728,
                        "src": "2991:16:53",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9584,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2991:7:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9585,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2991:9:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2972:36:53"
                  },
                  "scope": 9729,
                  "src": "2875:1072:53",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 9730,
              "src": "1087:2862:53"
            }
          ],
          "src": "37:3913:53"
        },
        "id": 53
      },
      "contracts/misc/interfaces/IUiPoolDataProvider.sol": {
        "ast": {
          "absolutePath": "contracts/misc/interfaces/IUiPoolDataProvider.sol",
          "exportedSymbols": {
            "IUiPoolDataProvider": [
              9860
            ]
          },
          "id": 9861,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 9731,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:54"
            },
            {
              "id": 9732,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "61:33:54"
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPoolAddressesProvider.sol",
              "file": "../../interfaces/ILendingPoolAddressesProvider.sol",
              "id": 9734,
              "nodeType": "ImportDirective",
              "scope": 9861,
              "sourceUnit": 6618,
              "src": "96:97:54",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 9733,
                    "name": "ILendingPoolAddressesProvider",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "104:29:54",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IAaveIncentivesController.sol",
              "file": "../../interfaces/IAaveIncentivesController.sol",
              "id": 9736,
              "nodeType": "ImportDirective",
              "scope": 9861,
              "sourceUnit": 5823,
              "src": "194:89:54",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 9735,
                    "name": "IAaveIncentivesController",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "202:25:54",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 9860,
              "linearizedBaseContracts": [
                9860
              ],
              "name": "IUiPoolDataProvider",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "IUiPoolDataProvider.AggregatedReserveData",
                  "id": 9821,
                  "members": [
                    {
                      "constant": false,
                      "id": 9738,
                      "mutability": "mutable",
                      "name": "underlyingAsset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "354:23:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9737,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "354:7:54",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9740,
                      "mutability": "mutable",
                      "name": "name",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "383:11:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 9739,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "383:6:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9742,
                      "mutability": "mutable",
                      "name": "symbol",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "400:13:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 9741,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "400:6:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9744,
                      "mutability": "mutable",
                      "name": "decimals",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "419:16:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9743,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "419:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9746,
                      "mutability": "mutable",
                      "name": "baseLTVasCollateral",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "441:27:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9745,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "441:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9748,
                      "mutability": "mutable",
                      "name": "reserveLiquidationThreshold",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "474:35:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9747,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "474:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9750,
                      "mutability": "mutable",
                      "name": "reserveLiquidationBonus",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "515:31:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9749,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "515:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9752,
                      "mutability": "mutable",
                      "name": "reserveFactor",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "552:21:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9751,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "552:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9754,
                      "mutability": "mutable",
                      "name": "usageAsCollateralEnabled",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "579:29:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 9753,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "579:4:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9756,
                      "mutability": "mutable",
                      "name": "borrowingEnabled",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "614:21:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 9755,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "614:4:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9758,
                      "mutability": "mutable",
                      "name": "stableBorrowRateEnabled",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "641:28:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 9757,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "641:4:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9760,
                      "mutability": "mutable",
                      "name": "isActive",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "675:13:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 9759,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "675:4:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9762,
                      "mutability": "mutable",
                      "name": "isFrozen",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "694:13:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 9761,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "694:4:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9764,
                      "mutability": "mutable",
                      "name": "liquidityIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "730:22:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 9763,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "730:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9766,
                      "mutability": "mutable",
                      "name": "variableBorrowIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "758:27:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 9765,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "758:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9768,
                      "mutability": "mutable",
                      "name": "liquidityRate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "791:21:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 9767,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "791:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9770,
                      "mutability": "mutable",
                      "name": "variableBorrowRate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "818:26:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 9769,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "818:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9772,
                      "mutability": "mutable",
                      "name": "stableBorrowRate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "850:24:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 9771,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "850:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9774,
                      "mutability": "mutable",
                      "name": "lastUpdateTimestamp",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "880:26:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint40",
                        "typeString": "uint40"
                      },
                      "typeName": {
                        "id": 9773,
                        "name": "uint40",
                        "nodeType": "ElementaryTypeName",
                        "src": "880:6:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9776,
                      "mutability": "mutable",
                      "name": "aTokenAddress",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "912:21:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9775,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "912:7:54",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9778,
                      "mutability": "mutable",
                      "name": "stableDebtTokenAddress",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "939:30:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9777,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "939:7:54",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9780,
                      "mutability": "mutable",
                      "name": "variableDebtTokenAddress",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "975:32:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9779,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "975:7:54",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9782,
                      "mutability": "mutable",
                      "name": "interestRateStrategyAddress",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "1013:35:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9781,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1013:7:54",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9784,
                      "mutability": "mutable",
                      "name": "availableLiquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "1061:26:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9783,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1061:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9786,
                      "mutability": "mutable",
                      "name": "totalPrincipalStableDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "1093:32:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9785,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1093:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9788,
                      "mutability": "mutable",
                      "name": "averageStableRate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "1131:25:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9787,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1131:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9790,
                      "mutability": "mutable",
                      "name": "stableDebtLastUpdateTimestamp",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "1162:37:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9789,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1162:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9792,
                      "mutability": "mutable",
                      "name": "totalScaledVariableDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "1205:31:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9791,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1205:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9794,
                      "mutability": "mutable",
                      "name": "priceInEth",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "1242:18:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9793,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1242:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9796,
                      "mutability": "mutable",
                      "name": "variableRateSlope1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "1266:26:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9795,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1266:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9798,
                      "mutability": "mutable",
                      "name": "variableRateSlope2",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "1298:26:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9797,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1298:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9800,
                      "mutability": "mutable",
                      "name": "stableRateSlope1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "1330:24:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9799,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1330:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9802,
                      "mutability": "mutable",
                      "name": "stableRateSlope2",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "1360:24:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9801,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1360:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9804,
                      "mutability": "mutable",
                      "name": "aEmissionPerSecond",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "1408:26:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9803,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1408:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9806,
                      "mutability": "mutable",
                      "name": "vEmissionPerSecond",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "1440:26:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9805,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1440:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9808,
                      "mutability": "mutable",
                      "name": "sEmissionPerSecond",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "1472:26:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9807,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1472:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9810,
                      "mutability": "mutable",
                      "name": "aIncentivesLastUpdateTimestamp",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "1504:38:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9809,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1504:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9812,
                      "mutability": "mutable",
                      "name": "vIncentivesLastUpdateTimestamp",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "1548:38:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9811,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1548:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9814,
                      "mutability": "mutable",
                      "name": "sIncentivesLastUpdateTimestamp",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "1592:38:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9813,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1592:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9816,
                      "mutability": "mutable",
                      "name": "aTokenIncentivesIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "1636:29:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9815,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1636:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9818,
                      "mutability": "mutable",
                      "name": "vTokenIncentivesIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "1671:29:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9817,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1671:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9820,
                      "mutability": "mutable",
                      "name": "sTokenIncentivesIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9821,
                      "src": "1706:29:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9819,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1706:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "AggregatedReserveData",
                  "nodeType": "StructDefinition",
                  "scope": 9860,
                  "src": "319:1421:54",
                  "visibility": "public"
                },
                {
                  "canonicalName": "IUiPoolDataProvider.UserReserveData",
                  "id": 9842,
                  "members": [
                    {
                      "constant": false,
                      "id": 9823,
                      "mutability": "mutable",
                      "name": "underlyingAsset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9842,
                      "src": "1773:23:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9822,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1773:7:54",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9825,
                      "mutability": "mutable",
                      "name": "scaledATokenBalance",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9842,
                      "src": "1802:27:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9824,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1802:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9827,
                      "mutability": "mutable",
                      "name": "usageAsCollateralEnabledOnUser",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9842,
                      "src": "1835:35:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 9826,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1835:4:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9829,
                      "mutability": "mutable",
                      "name": "stableBorrowRate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9842,
                      "src": "1876:24:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9828,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1876:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9831,
                      "mutability": "mutable",
                      "name": "scaledVariableDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9842,
                      "src": "1906:26:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9830,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1906:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9833,
                      "mutability": "mutable",
                      "name": "principalStableDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9842,
                      "src": "1938:27:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9832,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1938:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9835,
                      "mutability": "mutable",
                      "name": "stableBorrowLastUpdateTimestamp",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9842,
                      "src": "1971:39:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9834,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1971:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9837,
                      "mutability": "mutable",
                      "name": "aTokenincentivesUserIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9842,
                      "src": "2034:33:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9836,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2034:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9839,
                      "mutability": "mutable",
                      "name": "vTokenincentivesUserIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9842,
                      "src": "2073:33:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9838,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2073:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9841,
                      "mutability": "mutable",
                      "name": "sTokenincentivesUserIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9842,
                      "src": "2112:33:54",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9840,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2112:7:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "UserReserveData",
                  "nodeType": "StructDefinition",
                  "scope": 9860,
                  "src": "1744:406:54",
                  "visibility": "public"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "87e40db7",
                  "id": 9859,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReservesData",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 9847,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9844,
                        "mutability": "mutable",
                        "name": "provider",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9859,
                        "src": "2179:38:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                          "typeString": "contract ILendingPoolAddressesProvider"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 9843,
                          "name": "ILendingPoolAddressesProvider",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6617,
                          "src": "2179:29:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                            "typeString": "contract ILendingPoolAddressesProvider"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9846,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9859,
                        "src": "2219:12:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9845,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2219:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2178:54:54"
                  },
                  "returnParameters": {
                    "id": 9858,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9850,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9859,
                        "src": "2275:30:54",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_AggregatedReserveData_$9821_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct IUiPoolDataProvider.AggregatedReserveData[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 9848,
                            "name": "AggregatedReserveData",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 9821,
                            "src": "2275:21:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AggregatedReserveData_$9821_storage_ptr",
                              "typeString": "struct IUiPoolDataProvider.AggregatedReserveData"
                            }
                          },
                          "id": 9849,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2275:23:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_AggregatedReserveData_$9821_storage_$dyn_storage_ptr",
                            "typeString": "struct IUiPoolDataProvider.AggregatedReserveData[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9853,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9859,
                        "src": "2313:24:54",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_UserReserveData_$9842_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct IUiPoolDataProvider.UserReserveData[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 9851,
                            "name": "UserReserveData",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 9842,
                            "src": "2313:15:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserReserveData_$9842_storage_ptr",
                              "typeString": "struct IUiPoolDataProvider.UserReserveData"
                            }
                          },
                          "id": 9852,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2313:17:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_UserReserveData_$9842_storage_$dyn_storage_ptr",
                            "typeString": "struct IUiPoolDataProvider.UserReserveData[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9855,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9859,
                        "src": "2345:7:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9854,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2345:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9857,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9859,
                        "src": "2360:7:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9856,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2360:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2267:106:54"
                  },
                  "scope": 9860,
                  "src": "2154:220:54",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 9861,
              "src": "285:2091:54"
            }
          ],
          "src": "37:2340:54"
        },
        "id": 54
      },
      "contracts/misc/interfaces/IWETH.sol": {
        "ast": {
          "absolutePath": "contracts/misc/interfaces/IWETH.sol",
          "exportedSymbols": {
            "IWETH": [
              9891
            ]
          },
          "id": 9892,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 9862,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:55"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 9891,
              "linearizedBaseContracts": [
                9891
              ],
              "name": "IWETH",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "d0e30db0",
                  "id": 9865,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 9863,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "98:2:55"
                  },
                  "returnParameters": {
                    "id": 9864,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "117:0:55"
                  },
                  "scope": 9891,
                  "src": "82:36:55",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "2e1a7d4d",
                  "id": 9870,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 9868,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9867,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9870,
                        "src": "140:7:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9866,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "140:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "139:9:55"
                  },
                  "returnParameters": {
                    "id": 9869,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "157:0:55"
                  },
                  "scope": 9891,
                  "src": "122:36:55",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "095ea7b3",
                  "id": 9879,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 9875,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9872,
                        "mutability": "mutable",
                        "name": "guy",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9879,
                        "src": "179:11:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9871,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "179:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9874,
                        "mutability": "mutable",
                        "name": "wad",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9879,
                        "src": "192:11:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9873,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "192:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "178:26:55"
                  },
                  "returnParameters": {
                    "id": 9878,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9877,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9879,
                        "src": "223:4:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9876,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "223:4:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "222:6:55"
                  },
                  "scope": 9891,
                  "src": "162:67:55",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "23b872dd",
                  "id": 9890,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 9886,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9881,
                        "mutability": "mutable",
                        "name": "src",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9890,
                        "src": "260:11:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9880,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "260:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9883,
                        "mutability": "mutable",
                        "name": "dst",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9890,
                        "src": "277:11:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9882,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "277:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9885,
                        "mutability": "mutable",
                        "name": "wad",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9890,
                        "src": "294:11:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9884,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "294:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "254:55:55"
                  },
                  "returnParameters": {
                    "id": 9889,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9888,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9890,
                        "src": "328:4:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9887,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "328:4:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "327:6:55"
                  },
                  "scope": 9891,
                  "src": "233:101:55",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 9892,
              "src": "62:274:55"
            }
          ],
          "src": "37:300:55"
        },
        "id": 55
      },
      "contracts/misc/interfaces/IWETHGateway.sol": {
        "ast": {
          "absolutePath": "contracts/misc/interfaces/IWETHGateway.sol",
          "exportedSymbols": {
            "IWETHGateway": [
              9934
            ]
          },
          "id": 9935,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 9893,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:56"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 9934,
              "linearizedBaseContracts": [
                9934
              ],
              "name": "IWETHGateway",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "474cf53d",
                  "id": 9902,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "depositETH",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 9900,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9895,
                        "mutability": "mutable",
                        "name": "lendingPool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9902,
                        "src": "114:19:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9894,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "114:7:56",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9897,
                        "mutability": "mutable",
                        "name": "onBehalfOf",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9902,
                        "src": "139:18:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9896,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "139:7:56",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9899,
                        "mutability": "mutable",
                        "name": "referralCode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9902,
                        "src": "163:19:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 9898,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "163:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "108:78:56"
                  },
                  "returnParameters": {
                    "id": 9901,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "203:0:56"
                  },
                  "scope": 9934,
                  "src": "89:115:56",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "80500d20",
                  "id": 9911,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawETH",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 9909,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9904,
                        "mutability": "mutable",
                        "name": "lendingPool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9911,
                        "src": "234:19:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9903,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "234:7:56",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9906,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9911,
                        "src": "259:14:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9905,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "259:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9908,
                        "mutability": "mutable",
                        "name": "onBehalfOf",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9911,
                        "src": "279:18:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9907,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "279:7:56",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "228:73:56"
                  },
                  "returnParameters": {
                    "id": 9910,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "310:0:56"
                  },
                  "scope": 9934,
                  "src": "208:103:56",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "02c5fcf8",
                  "id": 9922,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "repayETH",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 9920,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9913,
                        "mutability": "mutable",
                        "name": "lendingPool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9922,
                        "src": "338:19:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9912,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "338:7:56",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9915,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9922,
                        "src": "363:14:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9914,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "363:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9917,
                        "mutability": "mutable",
                        "name": "rateMode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9922,
                        "src": "383:16:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9916,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "383:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9919,
                        "mutability": "mutable",
                        "name": "onBehalfOf",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9922,
                        "src": "405:18:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9918,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "405:7:56",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "332:95:56"
                  },
                  "returnParameters": {
                    "id": 9921,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "444:0:56"
                  },
                  "scope": 9934,
                  "src": "315:130:56",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "66514c97",
                  "id": 9933,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "borrowETH",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 9931,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9924,
                        "mutability": "mutable",
                        "name": "lendingPool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9933,
                        "src": "473:19:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9923,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "473:7:56",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9926,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9933,
                        "src": "498:14:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9925,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "498:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9928,
                        "mutability": "mutable",
                        "name": "interesRateMode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9933,
                        "src": "518:23:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9927,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "518:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9930,
                        "mutability": "mutable",
                        "name": "referralCode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9933,
                        "src": "547:19:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 9929,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "547:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "467:103:56"
                  },
                  "returnParameters": {
                    "id": 9932,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "579:0:56"
                  },
                  "scope": 9934,
                  "src": "449:131:56",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 9935,
              "src": "62:520:56"
            }
          ],
          "src": "37:546:56"
        },
        "id": 56
      },
      "contracts/mocks/flashloan/MockFlashLoanReceiver.sol": {
        "ast": {
          "absolutePath": "contracts/mocks/flashloan/MockFlashLoanReceiver.sol",
          "exportedSymbols": {
            "MockFlashLoanReceiver": [
              10161
            ]
          },
          "id": 10162,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 9936,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:57"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeMath.sol",
              "file": "../../dependencies/openzeppelin/contracts/SafeMath.sol",
              "id": 9938,
              "nodeType": "ImportDirective",
              "scope": 10162,
              "sourceUnit": 4497,
              "src": "62:80:57",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 9937,
                    "name": "SafeMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:8:57",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
              "file": "../../dependencies/openzeppelin/contracts/IERC20.sol",
              "id": 9940,
              "nodeType": "ImportDirective",
              "scope": 10162,
              "sourceUnit": 4013,
              "src": "143:76:57",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 9939,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "151:6:57",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/flashloan/base/FlashLoanReceiverBase.sol",
              "file": "../../flashloan/base/FlashLoanReceiverBase.sol",
              "id": 9942,
              "nodeType": "ImportDirective",
              "scope": 10162,
              "sourceUnit": 5512,
              "src": "221:85:57",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 9941,
                    "name": "FlashLoanReceiverBase",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "229:21:57",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mocks/tokens/MintableERC20.sol",
              "file": "../tokens/MintableERC20.sol",
              "id": 9944,
              "nodeType": "ImportDirective",
              "scope": 10162,
              "sourceUnit": 10752,
              "src": "307:58:57",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 9943,
                    "name": "MintableERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "315:13:57",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeERC20.sol",
              "file": "../../dependencies/openzeppelin/contracts/SafeERC20.sol",
              "id": 9946,
              "nodeType": "ImportDirective",
              "scope": 10162,
              "sourceUnit": 4301,
              "src": "366:82:57",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 9945,
                    "name": "SafeERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "374:9:57",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPoolAddressesProvider.sol",
              "file": "../../interfaces/ILendingPoolAddressesProvider.sol",
              "id": 9948,
              "nodeType": "ImportDirective",
              "scope": 10162,
              "sourceUnit": 6618,
              "src": "449:97:57",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 9947,
                    "name": "ILendingPoolAddressesProvider",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "457:29:57",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 9949,
                    "name": "FlashLoanReceiverBase",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5511,
                    "src": "582:21:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FlashLoanReceiverBase_$5511",
                      "typeString": "contract FlashLoanReceiverBase"
                    }
                  },
                  "id": 9950,
                  "nodeType": "InheritanceSpecifier",
                  "src": "582:21:57"
                }
              ],
              "contractDependencies": [
                5511,
                5547
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 10161,
              "linearizedBaseContracts": [
                10161,
                5511,
                5547
              ],
              "name": "MockFlashLoanReceiver",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 9953,
                  "libraryName": {
                    "contractScope": null,
                    "id": 9951,
                    "name": "SafeERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4300,
                    "src": "614:9:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeERC20_$4300",
                      "typeString": "library SafeERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "608:27:57",
                  "typeName": {
                    "contractScope": null,
                    "id": 9952,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4012,
                    "src": "628:6:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$4012",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 9955,
                  "mutability": "mutable",
                  "name": "_provider",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10161,
                  "src": "639:48:57",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                    "typeString": "contract ILendingPoolAddressesProvider"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9954,
                    "name": "ILendingPoolAddressesProvider",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6617,
                    "src": "639:29:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                      "typeString": "contract ILendingPoolAddressesProvider"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 9966,
                  "name": "ExecutedWithFail",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 9965,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9958,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_assets",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9966,
                        "src": "715:17:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9956,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "715:7:57",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 9957,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "715:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9961,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9966,
                        "src": "734:18:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9959,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "734:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9960,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "734:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9964,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_premiums",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9966,
                        "src": "754:19:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9962,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "754:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9963,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "754:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "714:60:57"
                  },
                  "src": "692:83:57"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 9977,
                  "name": "ExecutedWithSuccess",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 9976,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9969,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_assets",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9977,
                        "src": "804:17:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9967,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "804:7:57",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 9968,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "804:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9972,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9977,
                        "src": "823:18:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9970,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "823:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9971,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "823:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9975,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_premiums",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9977,
                        "src": "843:19:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9973,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "843:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9974,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "843:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "803:60:57"
                  },
                  "src": "778:86:57"
                },
                {
                  "constant": false,
                  "id": 9979,
                  "mutability": "mutable",
                  "name": "_failExecution",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10161,
                  "src": "868:19:57",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 9978,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "868:4:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9981,
                  "mutability": "mutable",
                  "name": "_amountToApprove",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10161,
                  "src": "891:24:57",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9980,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "891:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9983,
                  "mutability": "mutable",
                  "name": "_simulateEOA",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10161,
                  "src": "919:17:57",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 9982,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "919:4:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9991,
                    "nodeType": "Block",
                    "src": "1032:2:57",
                    "statements": []
                  },
                  "documentation": null,
                  "id": 9992,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 9988,
                          "name": "provider",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9985,
                          "src": "1022:8:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                            "typeString": "contract ILendingPoolAddressesProvider"
                          }
                        }
                      ],
                      "id": 9989,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 9987,
                        "name": "FlashLoanReceiverBase",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5511,
                        "src": "1000:21:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_FlashLoanReceiverBase_$5511_$",
                          "typeString": "type(contract FlashLoanReceiverBase)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1000:31:57"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 9986,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9985,
                        "mutability": "mutable",
                        "name": "provider",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 9992,
                        "src": "953:38:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                          "typeString": "contract ILendingPoolAddressesProvider"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 9984,
                          "name": "ILendingPoolAddressesProvider",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6617,
                          "src": "953:29:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                            "typeString": "contract ILendingPoolAddressesProvider"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "952:40:57"
                  },
                  "returnParameters": {
                    "id": 9990,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1032:0:57"
                  },
                  "scope": 10161,
                  "src": "941:93:57",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10001,
                    "nodeType": "Block",
                    "src": "1090:32:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 9999,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 9997,
                            "name": "_failExecution",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9979,
                            "src": "1096:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 9998,
                            "name": "fail",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9994,
                            "src": "1113:4:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1096:21:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10000,
                        "nodeType": "ExpressionStatement",
                        "src": "1096:21:57"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "388f70f1",
                  "id": 10002,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setFailExecutionTransfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 9995,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9994,
                        "mutability": "mutable",
                        "name": "fail",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10002,
                        "src": "1072:9:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9993,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1072:4:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1071:11:57"
                  },
                  "returnParameters": {
                    "id": 9996,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1090:0:57"
                  },
                  "scope": 10161,
                  "src": "1038:84:57",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10011,
                    "nodeType": "Block",
                    "src": "1186:45:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10007,
                            "name": "_amountToApprove",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9981,
                            "src": "1192:16:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10008,
                            "name": "amountToApprove",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10004,
                            "src": "1211:15:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1192:34:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10010,
                        "nodeType": "ExpressionStatement",
                        "src": "1192:34:57"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "bf443f85",
                  "id": 10012,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setAmountToApprove",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 10005,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10004,
                        "mutability": "mutable",
                        "name": "amountToApprove",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10012,
                        "src": "1154:23:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10003,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1154:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1153:25:57"
                  },
                  "returnParameters": {
                    "id": 10006,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1186:0:57"
                  },
                  "scope": 10161,
                  "src": "1126:105:57",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10021,
                    "nodeType": "Block",
                    "src": "1277:30:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10019,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10017,
                            "name": "_simulateEOA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9983,
                            "src": "1283:12:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10018,
                            "name": "flag",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10014,
                            "src": "1298:4:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1283:19:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10020,
                        "nodeType": "ExpressionStatement",
                        "src": "1283:19:57"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "e9a6a25b",
                  "id": 10022,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setSimulateEOA",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 10015,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10014,
                        "mutability": "mutable",
                        "name": "flag",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10022,
                        "src": "1259:9:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 10013,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1259:4:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1258:11:57"
                  },
                  "returnParameters": {
                    "id": 10016,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1277:0:57"
                  },
                  "scope": 10161,
                  "src": "1235:72:57",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10029,
                    "nodeType": "Block",
                    "src": "1368:34:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10027,
                          "name": "_amountToApprove",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9981,
                          "src": "1381:16:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 10026,
                        "id": 10028,
                        "nodeType": "Return",
                        "src": "1374:23:57"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "bb271c4d",
                  "id": 10030,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "amountToApprove",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 10023,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1335:2:57"
                  },
                  "returnParameters": {
                    "id": 10026,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10025,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10030,
                        "src": "1359:7:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10024,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1359:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1358:9:57"
                  },
                  "scope": 10161,
                  "src": "1311:91:57",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10037,
                    "nodeType": "Block",
                    "src": "1456:30:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10035,
                          "name": "_simulateEOA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9983,
                          "src": "1469:12:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 10034,
                        "id": 10036,
                        "nodeType": "Return",
                        "src": "1462:19:57"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "4444f331",
                  "id": 10038,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "simulateEOA",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 10031,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1426:2:57"
                  },
                  "returnParameters": {
                    "id": 10034,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10033,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10038,
                        "src": "1450:4:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 10032,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1450:4:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1449:6:57"
                  },
                  "scope": 10161,
                  "src": "1406:80:57",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    5536
                  ],
                  "body": {
                    "id": 10159,
                    "nodeType": "Block",
                    "src": "1689:874:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10057,
                          "name": "params",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10051,
                          "src": "1695:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 10058,
                        "nodeType": "ExpressionStatement",
                        "src": "1695:6:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10059,
                          "name": "initiator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10049,
                          "src": "1707:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 10060,
                        "nodeType": "ExpressionStatement",
                        "src": "1707:9:57"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 10061,
                          "name": "_failExecution",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9979,
                          "src": "1727:14:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 10072,
                        "nodeType": "IfStatement",
                        "src": "1723:111:57",
                        "trueBody": {
                          "id": 10071,
                          "nodeType": "Block",
                          "src": "1743:91:57",
                          "statements": [
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 10063,
                                    "name": "assets",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10041,
                                    "src": "1773:6:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 10064,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10044,
                                    "src": "1781:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 10065,
                                    "name": "premiums",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10047,
                                    "src": "1790:8:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  ],
                                  "id": 10062,
                                  "name": "ExecutedWithFail",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9966,
                                  "src": "1756:16:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                                    "typeString": "function (address[] memory,uint256[] memory,uint256[] memory)"
                                  }
                                },
                                "id": 10066,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1756:43:57",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10067,
                              "nodeType": "EmitStatement",
                              "src": "1751:48:57"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10069,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "!",
                                "prefix": true,
                                "src": "1814:13:57",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 10068,
                                  "name": "_simulateEOA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9983,
                                  "src": "1815:12:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "functionReturnParameters": 10056,
                              "id": 10070,
                              "nodeType": "Return",
                              "src": "1807:20:57"
                            }
                          ]
                        }
                      },
                      {
                        "body": {
                          "id": 10149,
                          "nodeType": "Block",
                          "src": "1884:599:57",
                          "statements": [
                            {
                              "assignments": [
                                10085
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 10085,
                                  "mutability": "mutable",
                                  "name": "token",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 10149,
                                  "src": "1942:19:57",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MintableERC20_$10751",
                                    "typeString": "contract MintableERC20"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 10084,
                                    "name": "MintableERC20",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 10751,
                                    "src": "1942:13:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_MintableERC20_$10751",
                                      "typeString": "contract MintableERC20"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 10091,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 10087,
                                      "name": "assets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10041,
                                      "src": "1978:6:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 10089,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 10088,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10074,
                                      "src": "1985:1:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1978:9:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 10086,
                                  "name": "MintableERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10751,
                                  "src": "1964:13:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_MintableERC20_$10751_$",
                                    "typeString": "type(contract MintableERC20)"
                                  }
                                },
                                "id": 10090,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1964:24:57",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MintableERC20_$10751",
                                  "typeString": "contract MintableERC20"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1942:46:57"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 10107,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 10093,
                                        "name": "amounts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10044,
                                        "src": "2067:7:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 10095,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 10094,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10074,
                                        "src": "2075:1:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2067:10:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 10104,
                                              "name": "this",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -28,
                                              "src": "2117:4:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_MockFlashLoanReceiver_$10161",
                                                "typeString": "contract MockFlashLoanReceiver"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_contract$_MockFlashLoanReceiver_$10161",
                                                "typeString": "contract MockFlashLoanReceiver"
                                              }
                                            ],
                                            "id": 10103,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "2109:7:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": {
                                              "id": 10102,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "2109:7:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": null,
                                                "typeString": null
                                              }
                                            }
                                          },
                                          "id": 10105,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "2109:13:57",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 10097,
                                                "name": "assets",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 10041,
                                                "src": "2088:6:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                  "typeString": "address[] memory"
                                                }
                                              },
                                              "id": 10099,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "id": 10098,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 10074,
                                                "src": "2095:1:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "2088:9:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 10096,
                                            "name": "IERC20",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4012,
                                            "src": "2081:6:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                              "typeString": "type(contract IERC20)"
                                            }
                                          },
                                          "id": 10100,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "2081:17:57",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$4012",
                                            "typeString": "contract IERC20"
                                          }
                                        },
                                        "id": 10101,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "balanceOf",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3951,
                                        "src": "2081:27:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                          "typeString": "function (address) view external returns (uint256)"
                                        }
                                      },
                                      "id": 10106,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2081:42:57",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "2067:56:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "496e76616c69642062616c616e636520666f722074686520636f6e7472616374",
                                    "id": 10108,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2133:34:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_b7eb1acc2a916521532d41db798e862e3bc634b536ffa4062c39b663132b6869",
                                      "typeString": "literal_string \"Invalid balance for the contract\""
                                    },
                                    "value": "Invalid balance for the contract"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_b7eb1acc2a916521532d41db798e862e3bc634b536ffa4062c39b663132b6869",
                                      "typeString": "literal_string \"Invalid balance for the contract\""
                                    }
                                  ],
                                  "id": 10092,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "2050:7:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 10109,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2050:125:57",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10110,
                              "nodeType": "ExpressionStatement",
                              "src": "2050:125:57"
                            },
                            {
                              "assignments": [
                                10112
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 10112,
                                  "mutability": "mutable",
                                  "name": "amountToReturn",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 10149,
                                  "src": "2184:22:57",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 10111,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2184:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 10127,
                              "initialValue": {
                                "argumentTypes": null,
                                "condition": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 10115,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 10113,
                                        "name": "_amountToApprove",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9981,
                                        "src": "2218:16:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 10114,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2238:1:57",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "2218:21:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "id": 10116,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "2217:23:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 10122,
                                        "name": "premiums",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10047,
                                        "src": "2277:8:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 10124,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 10123,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10074,
                                        "src": "2286:1:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2277:11:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 10118,
                                        "name": "amounts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10044,
                                        "src": "2262:7:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 10120,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 10119,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10074,
                                        "src": "2270:1:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2262:10:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 10121,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4329,
                                    "src": "2262:14:57",
                                    "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": 10125,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2262:27:57",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 10126,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "2217:72:57",
                                "trueExpression": {
                                  "argumentTypes": null,
                                  "id": 10117,
                                  "name": "_amountToApprove",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9981,
                                  "src": "2243:16:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2184:105:57"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 10131,
                                      "name": "premiums",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10047,
                                      "src": "2391:8:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 10133,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 10132,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10074,
                                      "src": "2400:1:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2391:11:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 10128,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10085,
                                    "src": "2380:5:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_MintableERC20_$10751",
                                      "typeString": "contract MintableERC20"
                                    }
                                  },
                                  "id": 10130,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mint",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 10750,
                                  "src": "2380:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (uint256) external returns (bool)"
                                  }
                                },
                                "id": 10134,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2380:23:57",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 10135,
                              "nodeType": "ExpressionStatement",
                              "src": "2380:23:57"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 10144,
                                        "name": "LENDING_POOL",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5492,
                                        "src": "2446:12:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                          "typeString": "contract ILendingPool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                          "typeString": "contract ILendingPool"
                                        }
                                      ],
                                      "id": 10143,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2438:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 10142,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2438:7:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 10145,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2438:21:57",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 10146,
                                    "name": "amountToReturn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10112,
                                    "src": "2461:14:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 10137,
                                          "name": "assets",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10041,
                                          "src": "2419:6:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                            "typeString": "address[] memory"
                                          }
                                        },
                                        "id": 10139,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 10138,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10074,
                                          "src": "2426:1:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "2419:9:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 10136,
                                      "name": "IERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4012,
                                      "src": "2412:6:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                        "typeString": "type(contract IERC20)"
                                      }
                                    },
                                    "id": 10140,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2412:17:57",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$4012",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 10141,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "approve",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3981,
                                  "src": "2412:25:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (address,uint256) external returns (bool)"
                                  }
                                },
                                "id": 10147,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2412:64:57",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 10148,
                              "nodeType": "ExpressionStatement",
                              "src": "2412:64:57"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10080,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 10077,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10074,
                            "src": "1860:1:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10078,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10041,
                              "src": "1864:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 10079,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1864:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1860:17:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10150,
                        "initializationExpression": {
                          "assignments": [
                            10074
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 10074,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 10150,
                              "src": "1845:9:57",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 10073,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1845:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 10076,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 10075,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1857:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1845:13:57"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 10082,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "1879:3:57",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 10081,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10074,
                              "src": "1879:1:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10083,
                          "nodeType": "ExpressionStatement",
                          "src": "1879:3:57"
                        },
                        "nodeType": "ForStatement",
                        "src": "1840:643:57"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10152,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10041,
                              "src": "2514:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10153,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10044,
                              "src": "2522:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10154,
                              "name": "premiums",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10047,
                              "src": "2531:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 10151,
                            "name": "ExecutedWithSuccess",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9977,
                            "src": "2494:19:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address[] memory,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 10155,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2494:46:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10156,
                        "nodeType": "EmitStatement",
                        "src": "2489:51:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 10157,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2554:4:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 10056,
                        "id": 10158,
                        "nodeType": "Return",
                        "src": "2547:11:57"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "920f5c84",
                  "id": 10160,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "executeOperation",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10053,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1665:8:57"
                  },
                  "parameters": {
                    "id": 10052,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10041,
                        "mutability": "mutable",
                        "name": "assets",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10160,
                        "src": "1521:23:57",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10039,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1521:7:57",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 10040,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1521:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10044,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10160,
                        "src": "1550:24:57",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10042,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1550:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10043,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1550:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10047,
                        "mutability": "mutable",
                        "name": "premiums",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10160,
                        "src": "1580:25:57",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10045,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1580:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10046,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1580:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10049,
                        "mutability": "mutable",
                        "name": "initiator",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10160,
                        "src": "1611:17:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10048,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1611:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10051,
                        "mutability": "mutable",
                        "name": "params",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10160,
                        "src": "1634:19:57",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 10050,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1634:5:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1515:142:57"
                  },
                  "returnParameters": {
                    "id": 10056,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10055,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10160,
                        "src": "1683:4:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 10054,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1683:4:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1682:6:57"
                  },
                  "scope": 10161,
                  "src": "1490:1073:57",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 10162,
              "src": "548:2017:57"
            }
          ],
          "src": "37:2529:57"
        },
        "id": 57
      },
      "contracts/mocks/oracle/LendingRateOracle.sol": {
        "ast": {
          "absolutePath": "contracts/mocks/oracle/LendingRateOracle.sol",
          "exportedSymbols": {
            "LendingRateOracle": [
              10238
            ]
          },
          "id": 10239,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10163,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:58"
            },
            {
              "absolutePath": "contracts/interfaces/ILendingRateOracle.sol",
              "file": "../../interfaces/ILendingRateOracle.sol",
              "id": 10165,
              "nodeType": "ImportDirective",
              "scope": 10239,
              "sourceUnit": 6907,
              "src": "62:75:58",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 10164,
                    "name": "ILendingRateOracle",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:18:58",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/Ownable.sol",
              "file": "../../dependencies/openzeppelin/contracts/Ownable.sol",
              "id": 10167,
              "nodeType": "ImportDirective",
              "scope": 10239,
              "sourceUnit": 4144,
              "src": "138:78:58",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 10166,
                    "name": "Ownable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "146:7:58",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 10168,
                    "name": "ILendingRateOracle",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6906,
                    "src": "248:18:58",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingRateOracle_$6906",
                      "typeString": "contract ILendingRateOracle"
                    }
                  },
                  "id": 10169,
                  "nodeType": "InheritanceSpecifier",
                  "src": "248:18:58"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 10170,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4143,
                    "src": "268:7:58",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$4143",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 10171,
                  "nodeType": "InheritanceSpecifier",
                  "src": "268:7:58"
                }
              ],
              "contractDependencies": [
                3427,
                4143,
                6906
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 10238,
              "linearizedBaseContracts": [
                10238,
                4143,
                3427,
                6906
              ],
              "name": "LendingRateOracle",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 10175,
                  "mutability": "mutable",
                  "name": "borrowRates",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10238,
                  "src": "280:39:58",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 10174,
                    "keyType": {
                      "id": 10172,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "288:7:58",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "280:27:58",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 10173,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "299:7:58",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10179,
                  "mutability": "mutable",
                  "name": "liquidityRates",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10238,
                  "src": "323:42:58",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 10178,
                    "keyType": {
                      "id": 10176,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "331:7:58",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "323:27:58",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 10177,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "342:7:58",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    6897
                  ],
                  "body": {
                    "id": 10191,
                    "nodeType": "Block",
                    "src": "456:37:58",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 10187,
                            "name": "borrowRates",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10175,
                            "src": "469:11:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 10189,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 10188,
                            "name": "_asset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10181,
                            "src": "481:6:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "469:19:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 10186,
                        "id": 10190,
                        "nodeType": "Return",
                        "src": "462:26:58"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "bb85c0bb",
                  "id": 10192,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getMarketBorrowRate",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10183,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "429:8:58"
                  },
                  "parameters": {
                    "id": 10182,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10181,
                        "mutability": "mutable",
                        "name": "_asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10192,
                        "src": "399:14:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10180,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "399:7:58",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "398:16:58"
                  },
                  "returnParameters": {
                    "id": 10186,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10185,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10192,
                        "src": "447:7:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10184,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "447:7:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "446:9:58"
                  },
                  "scope": 10238,
                  "src": "370:123:58",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6905
                  ],
                  "body": {
                    "id": 10208,
                    "nodeType": "Block",
                    "src": "585:38:58",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 10202,
                              "name": "borrowRates",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10175,
                              "src": "591:11:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 10204,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 10203,
                              "name": "_asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10194,
                              "src": "603:6:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "591:19:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10205,
                            "name": "_rate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10196,
                            "src": "613:5:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "591:27:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10207,
                        "nodeType": "ExpressionStatement",
                        "src": "591:27:58"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "72eb293d",
                  "id": 10209,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 10200,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 10199,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "575:9:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "575:9:58"
                    }
                  ],
                  "name": "setMarketBorrowRate",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10198,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "566:8:58"
                  },
                  "parameters": {
                    "id": 10197,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10194,
                        "mutability": "mutable",
                        "name": "_asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10209,
                        "src": "526:14:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10193,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "526:7:58",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10196,
                        "mutability": "mutable",
                        "name": "_rate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10209,
                        "src": "542:13:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10195,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "542:7:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "525:31:58"
                  },
                  "returnParameters": {
                    "id": 10201,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "585:0:58"
                  },
                  "scope": 10238,
                  "src": "497:126:58",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 10220,
                    "nodeType": "Block",
                    "src": "707:40:58",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 10216,
                            "name": "liquidityRates",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10179,
                            "src": "720:14:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 10218,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 10217,
                            "name": "_asset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10211,
                            "src": "735:6:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "720:22:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 10215,
                        "id": 10219,
                        "nodeType": "Return",
                        "src": "713:29:58"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "fbe5ba1e",
                  "id": 10221,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getMarketLiquidityRate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 10212,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10211,
                        "mutability": "mutable",
                        "name": "_asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10221,
                        "src": "659:14:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10210,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "659:7:58",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "658:16:58"
                  },
                  "returnParameters": {
                    "id": 10215,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10214,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10221,
                        "src": "698:7:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10213,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "698:7:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "697:9:58"
                  },
                  "scope": 10238,
                  "src": "627:120:58",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 10236,
                    "nodeType": "Block",
                    "src": "833:41:58",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10234,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 10230,
                              "name": "liquidityRates",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10179,
                              "src": "839:14:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 10232,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 10231,
                              "name": "_asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10223,
                              "src": "854:6:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "839:22:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10233,
                            "name": "_rate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10225,
                            "src": "864:5:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "839:30:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10235,
                        "nodeType": "ExpressionStatement",
                        "src": "839:30:58"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "9f86a0ee",
                  "id": 10237,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 10228,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 10227,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "823:9:58",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "823:9:58"
                    }
                  ],
                  "name": "setMarketLiquidityRate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 10226,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10223,
                        "mutability": "mutable",
                        "name": "_asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10237,
                        "src": "783:14:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10222,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "783:7:58",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10225,
                        "mutability": "mutable",
                        "name": "_rate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10237,
                        "src": "799:13:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10224,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "799:7:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "782:31:58"
                  },
                  "returnParameters": {
                    "id": 10229,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "833:0:58"
                  },
                  "scope": 10238,
                  "src": "751:123:58",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 10239,
              "src": "218:658:58"
            }
          ],
          "src": "37:840:58"
        },
        "id": 58
      },
      "contracts/mocks/swap/MockUniswapV2Router02.sol": {
        "ast": {
          "absolutePath": "contracts/mocks/swap/MockUniswapV2Router02.sol",
          "exportedSymbols": {
            "MockUniswapV2Router02": [
              10653
            ]
          },
          "id": 10654,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10240,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:59"
            },
            {
              "absolutePath": "contracts/interfaces/IUniswapV2Router02.sol",
              "file": "../../interfaces/IUniswapV2Router02.sol",
              "id": 10242,
              "nodeType": "ImportDirective",
              "scope": 10654,
              "sourceUnit": 7441,
              "src": "62:75:59",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 10241,
                    "name": "IUniswapV2Router02",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:18:59",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
              "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
              "id": 10244,
              "nodeType": "ImportDirective",
              "scope": 10654,
              "sourceUnit": 78,
              "src": "138:70:59",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 10243,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "146:6:59",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/mocks/tokens/MintableERC20.sol",
              "file": "../tokens/MintableERC20.sol",
              "id": 10246,
              "nodeType": "ImportDirective",
              "scope": 10654,
              "sourceUnit": 10752,
              "src": "209:58:59",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 10245,
                    "name": "MintableERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "217:13:59",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 10247,
                    "name": "IUniswapV2Router02",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7440,
                    "src": "303:18:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IUniswapV2Router02_$7440",
                      "typeString": "contract IUniswapV2Router02"
                    }
                  },
                  "id": 10248,
                  "nodeType": "InheritanceSpecifier",
                  "src": "303:18:59"
                }
              ],
              "contractDependencies": [
                7440
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 10653,
              "linearizedBaseContracts": [
                10653,
                7440
              ],
              "name": "MockUniswapV2Router02",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 10252,
                  "mutability": "mutable",
                  "name": "_amountToReturn",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10653,
                  "src": "326:52:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 10251,
                    "keyType": {
                      "id": 10249,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "334:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "326:27:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 10250,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "345:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10256,
                  "mutability": "mutable",
                  "name": "_amountToSwap",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10653,
                  "src": "382:50:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 10255,
                    "keyType": {
                      "id": 10253,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "390:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "382:27:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 10254,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "401:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10264,
                  "mutability": "mutable",
                  "name": "_amountsIn",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10653,
                  "src": "436:87:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$_$",
                    "typeString": "mapping(address => mapping(address => mapping(uint256 => uint256)))"
                  },
                  "typeName": {
                    "id": 10263,
                    "keyType": {
                      "id": 10257,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "444:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "436:67:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$_$",
                      "typeString": "mapping(address => mapping(address => mapping(uint256 => uint256)))"
                    },
                    "valueType": {
                      "id": 10262,
                      "keyType": {
                        "id": 10258,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "463:7:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "455:47:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                        "typeString": "mapping(address => mapping(uint256 => uint256))"
                      },
                      "valueType": {
                        "id": 10261,
                        "keyType": {
                          "id": 10259,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "482:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Mapping",
                        "src": "474:27:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        },
                        "valueType": {
                          "id": 10260,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "493:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10272,
                  "mutability": "mutable",
                  "name": "_amountsOut",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10653,
                  "src": "527:88:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$_$",
                    "typeString": "mapping(address => mapping(address => mapping(uint256 => uint256)))"
                  },
                  "typeName": {
                    "id": 10271,
                    "keyType": {
                      "id": 10265,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "535:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "527:67:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$_$",
                      "typeString": "mapping(address => mapping(address => mapping(uint256 => uint256)))"
                    },
                    "valueType": {
                      "id": 10270,
                      "keyType": {
                        "id": 10266,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "554:7:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "546:47:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                        "typeString": "mapping(address => mapping(uint256 => uint256))"
                      },
                      "valueType": {
                        "id": 10269,
                        "keyType": {
                          "id": 10267,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "573:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Mapping",
                        "src": "565:27:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        },
                        "valueType": {
                          "id": 10268,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "584:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10274,
                  "mutability": "mutable",
                  "name": "defaultMockValue",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10653,
                  "src": "619:33:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10273,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "619:7:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 10287,
                    "nodeType": "Block",
                    "src": "724:44:59",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10285,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 10281,
                              "name": "_amountToReturn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10252,
                              "src": "730:15:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 10283,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 10282,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10276,
                              "src": "746:7:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "730:24:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10284,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10278,
                            "src": "757:6:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "730:33:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10286,
                        "nodeType": "ExpressionStatement",
                        "src": "730:33:59"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "5186725f",
                  "id": 10288,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setAmountToReturn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 10279,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10276,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10288,
                        "src": "684:15:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10275,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "684:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10278,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10288,
                        "src": "701:14:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10277,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "701:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "683:33:59"
                  },
                  "returnParameters": {
                    "id": 10280,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "724:0:59"
                  },
                  "scope": 10653,
                  "src": "657:111:59",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10301,
                    "nodeType": "Block",
                    "src": "837:42:59",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 10295,
                              "name": "_amountToSwap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10256,
                              "src": "843:13:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 10297,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 10296,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10290,
                              "src": "857:7:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "843:22:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10298,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10292,
                            "src": "868:6:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "843:31:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10300,
                        "nodeType": "ExpressionStatement",
                        "src": "843:31:59"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "fcaf206c",
                  "id": 10302,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setAmountToSwap",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 10293,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10290,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10302,
                        "src": "797:15:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10289,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "797:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10292,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10302,
                        "src": "814:14:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10291,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "814:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "796:33:59"
                  },
                  "returnParameters": {
                    "id": 10294,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "837:0:59"
                  },
                  "scope": 10653,
                  "src": "772:107:59",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7400
                  ],
                  "body": {
                    "id": 10387,
                    "nodeType": "Block",
                    "src": "1101:309:59",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 10326,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1136:3:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 10327,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1136:10:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10330,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "1156:4:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MockUniswapV2Router02_$10653",
                                    "typeString": "contract MockUniswapV2Router02"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MockUniswapV2Router02_$10653",
                                    "typeString": "contract MockUniswapV2Router02"
                                  }
                                ],
                                "id": 10329,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1148:7:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 10328,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1148:7:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 10331,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1148:13:59",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10332,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10304,
                              "src": "1163:8:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 10321,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10309,
                                    "src": "1114:4:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 10323,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 10322,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1119:1:59",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1114:7:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 10320,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 77,
                                "src": "1107:6:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$77_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 10324,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1107:15:59",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$77",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 10325,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 58,
                            "src": "1107:28:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256) external returns (bool)"
                            }
                          },
                          "id": 10333,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1107:65:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10334,
                        "nodeType": "ExpressionStatement",
                        "src": "1107:65:59"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 10341,
                                "name": "_amountToReturn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10252,
                                "src": "1207:15:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 10345,
                              "indexExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 10342,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10309,
                                  "src": "1223:4:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 10344,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 10343,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1228:1:59",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1223:7:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1207:24:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 10336,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10309,
                                    "src": "1193:4:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 10338,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 10337,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1198:1:59",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1193:7:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 10335,
                                "name": "MintableERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10751,
                                "src": "1179:13:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MintableERC20_$10751_$",
                                  "typeString": "type(contract MintableERC20)"
                                }
                              },
                              "id": 10339,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1179:22:59",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_MintableERC20_$10751",
                                "typeString": "contract MintableERC20"
                              }
                            },
                            "id": 10340,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10750,
                            "src": "1179:27:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (uint256) external returns (bool)"
                            }
                          },
                          "id": 10346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1179:53:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10347,
                        "nodeType": "ExpressionStatement",
                        "src": "1179:53:59"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10354,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10311,
                              "src": "1263:2:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 10355,
                                "name": "_amountToReturn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10252,
                                "src": "1267:15:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 10359,
                              "indexExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 10356,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10309,
                                  "src": "1283:4:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 10358,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 10357,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1288:1:59",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1283:7:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1267:24:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 10349,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10309,
                                    "src": "1245:4:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 10351,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 10350,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1250:1:59",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1245:7:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 10348,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 77,
                                "src": "1238:6:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$77_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 10352,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1238:15:59",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$77",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 10353,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 26,
                            "src": "1238:24:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 10360,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1238:54:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10361,
                        "nodeType": "ExpressionStatement",
                        "src": "1238:54:59"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10369,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10362,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10318,
                            "src": "1299:7:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10366,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10309,
                                  "src": "1323:4:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 10367,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1323:11:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 10365,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "1309:13:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (uint256[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 10363,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1313:7:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 10364,
                                "length": null,
                                "nodeType": "ArrayTypeName",
                                "src": "1313:9:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                  "typeString": "uint256[]"
                                }
                              }
                            },
                            "id": 10368,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1309:26:59",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "src": "1299:36:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "id": 10370,
                        "nodeType": "ExpressionStatement",
                        "src": "1299:36:59"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10375,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 10371,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10318,
                              "src": "1341:7:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 10373,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 10372,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1349:1:59",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1341:10:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10374,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10304,
                            "src": "1354:8:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1341:21:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10376,
                        "nodeType": "ExpressionStatement",
                        "src": "1341:21:59"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10385,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 10377,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10318,
                              "src": "1368:7:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 10379,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 10378,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1376:1:59",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1368:10:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 10380,
                              "name": "_amountToReturn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10252,
                              "src": "1381:15:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 10384,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 10381,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10309,
                                "src": "1397:4:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 10383,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 10382,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1402:1:59",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1397:7:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1381:24:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1368:37:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10386,
                        "nodeType": "ExpressionStatement",
                        "src": "1368:37:59"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "38ed1739",
                  "id": 10388,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "swapExactTokensForTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10315,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1057:8:59"
                  },
                  "parameters": {
                    "id": 10314,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10304,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10388,
                        "src": "922:16:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10303,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "922:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10306,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10388,
                        "src": "944:7:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10305,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "944:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10309,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10388,
                        "src": "976:23:59",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10307,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "976:7:59",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 10308,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "976:9:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10311,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10388,
                        "src": "1005:10:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10310,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1005:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10313,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10388,
                        "src": "1021:7:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10312,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1021:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "916:131:59"
                  },
                  "returnParameters": {
                    "id": 10319,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10318,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10388,
                        "src": "1075:24:59",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10316,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1075:7:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10317,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1075:9:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1074:26:59"
                  },
                  "scope": 10653,
                  "src": "883:527:59",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7417
                  ],
                  "body": {
                    "id": 10469,
                    "nodeType": "Block",
                    "src": "1632:292:59",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 10412,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1667:3:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 10413,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1667:10:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 10416,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "1687:4:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MockUniswapV2Router02_$10653",
                                    "typeString": "contract MockUniswapV2Router02"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MockUniswapV2Router02_$10653",
                                    "typeString": "contract MockUniswapV2Router02"
                                  }
                                ],
                                "id": 10415,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1679:7:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 10414,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1679:7:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 10417,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1679:13:59",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 10418,
                                "name": "_amountToSwap",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10256,
                                "src": "1694:13:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 10422,
                              "indexExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 10419,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10395,
                                  "src": "1708:4:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 10421,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 10420,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1713:1:59",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1708:7:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1694:22:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 10407,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10395,
                                    "src": "1645:4:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 10409,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 10408,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1650:1:59",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1645:7:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 10406,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 77,
                                "src": "1638:6:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$77_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 10410,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1638:15:59",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$77",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 10411,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 58,
                            "src": "1638:28:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256) external returns (bool)"
                            }
                          },
                          "id": 10423,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1638:79:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10424,
                        "nodeType": "ExpressionStatement",
                        "src": "1638:79:59"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10431,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10390,
                              "src": "1752:9:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 10426,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10395,
                                    "src": "1738:4:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 10428,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 10427,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1743:1:59",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1738:7:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 10425,
                                "name": "MintableERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10751,
                                "src": "1724:13:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MintableERC20_$10751_$",
                                  "typeString": "type(contract MintableERC20)"
                                }
                              },
                              "id": 10429,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1724:22:59",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_MintableERC20_$10751",
                                "typeString": "contract MintableERC20"
                              }
                            },
                            "id": 10430,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10750,
                            "src": "1724:27:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (uint256) external returns (bool)"
                            }
                          },
                          "id": 10432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1724:38:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10433,
                        "nodeType": "ExpressionStatement",
                        "src": "1724:38:59"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10440,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10397,
                              "src": "1793:2:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10441,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10390,
                              "src": "1797:9:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 10435,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10395,
                                    "src": "1775:4:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 10437,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 10436,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1780:1:59",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1775:7:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 10434,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 77,
                                "src": "1768:6:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$77_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 10438,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1768:15:59",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$77",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 10439,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 26,
                            "src": "1768:24:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 10442,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1768:39:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10443,
                        "nodeType": "ExpressionStatement",
                        "src": "1768:39:59"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10451,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10444,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10404,
                            "src": "1814:7:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10448,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10395,
                                  "src": "1838:4:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 10449,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1838:11:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 10447,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "1824:13:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (uint256[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 10445,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1828:7:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 10446,
                                "length": null,
                                "nodeType": "ArrayTypeName",
                                "src": "1828:9:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                  "typeString": "uint256[]"
                                }
                              }
                            },
                            "id": 10450,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1824:26:59",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "src": "1814:36:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "id": 10452,
                        "nodeType": "ExpressionStatement",
                        "src": "1814:36:59"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10461,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 10453,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10404,
                              "src": "1856:7:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 10455,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 10454,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1864:1:59",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1856:10:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 10456,
                              "name": "_amountToSwap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10256,
                              "src": "1869:13:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 10460,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 10457,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10395,
                                "src": "1883:4:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 10459,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 10458,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1888:1:59",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1883:7:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1869:22:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1856:35:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10462,
                        "nodeType": "ExpressionStatement",
                        "src": "1856:35:59"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10467,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 10463,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10404,
                              "src": "1897:7:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 10465,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 10464,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1905:1:59",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1897:10:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10466,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10390,
                            "src": "1910:9:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1897:22:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10468,
                        "nodeType": "ExpressionStatement",
                        "src": "1897:22:59"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "8803dbee",
                  "id": 10470,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "swapTokensForExactTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10401,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1588:8:59"
                  },
                  "parameters": {
                    "id": 10400,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10390,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10470,
                        "src": "1453:17:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10389,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1453:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10392,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10470,
                        "src": "1476:7:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10391,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1476:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10395,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10470,
                        "src": "1507:23:59",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10393,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1507:7:59",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 10394,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1507:9:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10397,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10470,
                        "src": "1536:10:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10396,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1536:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10399,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10470,
                        "src": "1552:7:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10398,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1552:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1447:131:59"
                  },
                  "returnParameters": {
                    "id": 10405,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10404,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10470,
                        "src": "1606:24:59",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10402,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1606:7:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10403,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1606:9:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1605:26:59"
                  },
                  "scope": 10653,
                  "src": "1414:510:59",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 10491,
                    "nodeType": "Block",
                    "src": "2053:67:59",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 10481,
                                  "name": "_amountsOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10272,
                                  "src": "2059:11:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$_$",
                                    "typeString": "mapping(address => mapping(address => mapping(uint256 => uint256)))"
                                  }
                                },
                                "id": 10485,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 10482,
                                  "name": "reserveIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10474,
                                  "src": "2071:9:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2059:22:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(uint256 => uint256))"
                                }
                              },
                              "id": 10486,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 10483,
                                "name": "reserveOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10476,
                                "src": "2082:10:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2059:34:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 10487,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 10484,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10472,
                              "src": "2094:8:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2059:44:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10488,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10478,
                            "src": "2106:9:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2059:56:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10490,
                        "nodeType": "ExpressionStatement",
                        "src": "2059:56:59"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "5fdcafc8",
                  "id": 10492,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setAmountOut",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 10479,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10472,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10492,
                        "src": "1955:16:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10471,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1955:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10474,
                        "mutability": "mutable",
                        "name": "reserveIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10492,
                        "src": "1977:17:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10473,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1977:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10476,
                        "mutability": "mutable",
                        "name": "reserveOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10492,
                        "src": "2000:18:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10475,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2000:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10478,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10492,
                        "src": "2024:17:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10477,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2024:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1949:96:59"
                  },
                  "returnParameters": {
                    "id": 10480,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2053:0:59"
                  },
                  "scope": 10653,
                  "src": "1928:192:59",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10513,
                    "nodeType": "Block",
                    "src": "2248:66:59",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10511,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 10503,
                                  "name": "_amountsIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10264,
                                  "src": "2254:10:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$_$",
                                    "typeString": "mapping(address => mapping(address => mapping(uint256 => uint256)))"
                                  }
                                },
                                "id": 10507,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 10504,
                                  "name": "reserveIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10496,
                                  "src": "2265:9:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2254:21:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(uint256 => uint256))"
                                }
                              },
                              "id": 10508,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 10505,
                                "name": "reserveOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10498,
                                "src": "2276:10:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2254:33:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 10509,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 10506,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10494,
                              "src": "2288:9:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2254:44:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10510,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10500,
                            "src": "2301:8:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2254:55:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10512,
                        "nodeType": "ExpressionStatement",
                        "src": "2254:55:59"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "9da23949",
                  "id": 10514,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setAmountIn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 10501,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10494,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10514,
                        "src": "2150:17:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10493,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2150:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10496,
                        "mutability": "mutable",
                        "name": "reserveIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10514,
                        "src": "2173:17:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10495,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2173:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10498,
                        "mutability": "mutable",
                        "name": "reserveOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10514,
                        "src": "2196:18:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10497,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2196:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10500,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10514,
                        "src": "2220:16:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10499,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2220:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2144:96:59"
                  },
                  "returnParameters": {
                    "id": 10502,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2248:0:59"
                  },
                  "scope": 10653,
                  "src": "2124:190:59",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10523,
                    "nodeType": "Block",
                    "src": "2369:35:59",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10521,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10519,
                            "name": "defaultMockValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10274,
                            "src": "2375:16:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10520,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10516,
                            "src": "2394:5:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2375:24:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10522,
                        "nodeType": "ExpressionStatement",
                        "src": "2375:24:59"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "ee92b859",
                  "id": 10524,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setDefaultMockValue",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 10517,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10516,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10524,
                        "src": "2347:13:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10515,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2347:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2346:15:59"
                  },
                  "returnParameters": {
                    "id": 10518,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2369:0:59"
                  },
                  "scope": 10653,
                  "src": "2318:86:59",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7428
                  ],
                  "body": {
                    "id": 10587,
                    "nodeType": "Block",
                    "src": "2542:246:59",
                    "statements": [
                      {
                        "assignments": [
                          10540
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10540,
                            "mutability": "mutable",
                            "name": "amounts",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 10587,
                            "src": "2548:24:59",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 10538,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2548:7:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10539,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "2548:9:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10547,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 10544,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10529,
                                "src": "2589:4:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 10545,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2589:11:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10543,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "2575:13:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 10541,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2579:7:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10542,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "2579:9:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 10546,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2575:26:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2548:53:59"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10552,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 10548,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10540,
                              "src": "2607:7:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 10550,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 10549,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2615:1:59",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2607:10:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10551,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10526,
                            "src": "2620:8:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2607:21:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10553,
                        "nodeType": "ExpressionStatement",
                        "src": "2607:21:59"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10583,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 10554,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10540,
                              "src": "2634:7:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 10556,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 10555,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2642:1:59",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2634:10:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 10569,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 10557,
                                      "name": "_amountsOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10272,
                                      "src": "2647:11:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$_$",
                                        "typeString": "mapping(address => mapping(address => mapping(uint256 => uint256)))"
                                      }
                                    },
                                    "id": 10561,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 10558,
                                        "name": "path",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10529,
                                        "src": "2659:4:59",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 10560,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 10559,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2664:1:59",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2659:7:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2647:20:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(uint256 => uint256))"
                                    }
                                  },
                                  "id": 10565,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 10562,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10529,
                                      "src": "2668:4:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 10564,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 10563,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2673:1:59",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2668:7:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2647:29:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 10567,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 10566,
                                  "name": "amountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10526,
                                  "src": "2677:8:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2647:39:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 10568,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2689:1:59",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2647:43:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 10581,
                              "name": "defaultMockValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10274,
                              "src": "2747:16:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 10582,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "2647:116:59",
                            "trueExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 10570,
                                    "name": "_amountsOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10272,
                                    "src": "2699:11:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$_$",
                                      "typeString": "mapping(address => mapping(address => mapping(uint256 => uint256)))"
                                    }
                                  },
                                  "id": 10574,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 10571,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10529,
                                      "src": "2711:4:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 10573,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 10572,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2716:1:59",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2711:7:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2699:20:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                    "typeString": "mapping(address => mapping(uint256 => uint256))"
                                  }
                                },
                                "id": 10578,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 10575,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10529,
                                    "src": "2720:4:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 10577,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 10576,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2725:1:59",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2720:7:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2699:29:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                  "typeString": "mapping(uint256 => uint256)"
                                }
                              },
                              "id": 10580,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 10579,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10526,
                                "src": "2729:8:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2699:39:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2634:129:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10584,
                        "nodeType": "ExpressionStatement",
                        "src": "2634:129:59"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10585,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10540,
                          "src": "2776:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "functionReturnParameters": 10535,
                        "id": 10586,
                        "nodeType": "Return",
                        "src": "2769:14:59"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "d06ca61f",
                  "id": 10588,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountsOut",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10531,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2500:8:59"
                  },
                  "parameters": {
                    "id": 10530,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10526,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10588,
                        "src": "2431:16:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10525,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2431:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10529,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10588,
                        "src": "2449:23:59",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10527,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2449:7:59",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 10528,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2449:9:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2430:43:59"
                  },
                  "returnParameters": {
                    "id": 10535,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10534,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10588,
                        "src": "2522:16:59",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10532,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2522:7:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10533,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2522:9:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2521:18:59"
                  },
                  "scope": 10653,
                  "src": "2408:380:59",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7439
                  ],
                  "body": {
                    "id": 10651,
                    "nodeType": "Block",
                    "src": "2926:247:59",
                    "statements": [
                      {
                        "assignments": [
                          10604
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10604,
                            "mutability": "mutable",
                            "name": "amounts",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 10651,
                            "src": "2932:24:59",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 10602,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2932:7:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10603,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "2932:9:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10611,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 10608,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10593,
                                "src": "2973:4:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 10609,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2973:11:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10607,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "2959:13:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 10605,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2963:7:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 10606,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "2963:9:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 10610,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2959:26:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2932:53:59"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10641,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 10612,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10604,
                              "src": "2991:7:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 10614,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 10613,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2999:1:59",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2991:10:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 10627,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 10615,
                                      "name": "_amountsIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10264,
                                      "src": "3004:10:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$_$",
                                        "typeString": "mapping(address => mapping(address => mapping(uint256 => uint256)))"
                                      }
                                    },
                                    "id": 10619,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 10616,
                                        "name": "path",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10593,
                                        "src": "3015:4:59",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 10618,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 10617,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3020:1:59",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3015:7:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3004:19:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(uint256 => uint256))"
                                    }
                                  },
                                  "id": 10623,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 10620,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10593,
                                      "src": "3024:4:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 10622,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 10621,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3029:1:59",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3024:7:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3004:28:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 10625,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 10624,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10590,
                                  "src": "3033:9:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3004:39:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 10626,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3046:1:59",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3004:43:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 10639,
                              "name": "defaultMockValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10274,
                              "src": "3104:16:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 10640,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "3004:116:59",
                            "trueExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 10628,
                                    "name": "_amountsIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10264,
                                    "src": "3056:10:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$_$",
                                      "typeString": "mapping(address => mapping(address => mapping(uint256 => uint256)))"
                                    }
                                  },
                                  "id": 10632,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 10629,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10593,
                                      "src": "3067:4:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 10631,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 10630,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3072:1:59",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3067:7:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3056:19:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                    "typeString": "mapping(address => mapping(uint256 => uint256))"
                                  }
                                },
                                "id": 10636,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 10633,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10593,
                                    "src": "3076:4:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 10635,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 10634,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3081:1:59",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3076:7:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3056:28:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                  "typeString": "mapping(uint256 => uint256)"
                                }
                              },
                              "id": 10638,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 10637,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10590,
                                "src": "3085:9:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3056:39:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2991:129:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10642,
                        "nodeType": "ExpressionStatement",
                        "src": "2991:129:59"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10647,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 10643,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10604,
                              "src": "3126:7:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 10645,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 10644,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3134:1:59",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3126:10:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10646,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10590,
                            "src": "3139:9:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3126:22:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10648,
                        "nodeType": "ExpressionStatement",
                        "src": "3126:22:59"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10649,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10604,
                          "src": "3161:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "functionReturnParameters": 10599,
                        "id": 10650,
                        "nodeType": "Return",
                        "src": "3154:14:59"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "1f00ca74",
                  "id": 10652,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountsIn",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10595,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2884:8:59"
                  },
                  "parameters": {
                    "id": 10594,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10590,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10652,
                        "src": "2814:17:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10589,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2814:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10593,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10652,
                        "src": "2833:23:59",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10591,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2833:7:59",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 10592,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2833:9:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2813:44:59"
                  },
                  "returnParameters": {
                    "id": 10599,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10598,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10652,
                        "src": "2906:16:59",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10596,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2906:7:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10597,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2906:9:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2905:18:59"
                  },
                  "scope": 10653,
                  "src": "2792:381:59",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 10654,
              "src": "269:2906:59"
            }
          ],
          "src": "37:3139:59"
        },
        "id": 59
      },
      "contracts/mocks/tokens/MintableDelegationERC20.sol": {
        "ast": {
          "absolutePath": "contracts/mocks/tokens/MintableDelegationERC20.sol",
          "exportedSymbols": {
            "MintableDelegationERC20": [
              10708
            ]
          },
          "id": 10709,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10655,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:60"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/ERC20.sol",
              "file": "../../dependencies/openzeppelin/contracts/ERC20.sol",
              "id": 10657,
              "nodeType": "ImportDirective",
              "scope": 10709,
              "sourceUnit": 3935,
              "src": "62:74:60",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 10656,
                    "name": "ERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:5:60",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 10659,
                    "name": "ERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3934,
                    "src": "234:5:60",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20_$3934",
                      "typeString": "contract ERC20"
                    }
                  },
                  "id": 10660,
                  "nodeType": "InheritanceSpecifier",
                  "src": "234:5:60"
                }
              ],
              "contractDependencies": [
                3427,
                3934,
                4012
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 10658,
                "nodeType": "StructuredDocumentation",
                "src": "138:59:60",
                "text": " @title ERC20Mintable\n @dev ERC20 minting logic"
              },
              "fullyImplemented": true,
              "id": 10708,
              "linearizedBaseContracts": [
                10708,
                3934,
                4012,
                3427
              ],
              "name": "MintableDelegationERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "functionSelector": "1e31d053",
                  "id": 10662,
                  "mutability": "mutable",
                  "name": "delegatee",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10708,
                  "src": "244:24:60",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10661,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "244:7:60",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10679,
                    "nodeType": "Block",
                    "src": "386:35:60",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10676,
                              "name": "decimals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10668,
                              "src": "407:8:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 10675,
                            "name": "_setupDecimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3922,
                            "src": "392:14:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$",
                              "typeString": "function (uint8)"
                            }
                          },
                          "id": 10677,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "392:24:60",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10678,
                        "nodeType": "ExpressionStatement",
                        "src": "392:24:60"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 10680,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 10671,
                          "name": "name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10664,
                          "src": "372:4:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10672,
                          "name": "symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10666,
                          "src": "378:6:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        }
                      ],
                      "id": 10673,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 10670,
                        "name": "ERC20",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3934,
                        "src": "366:5:60",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC20_$3934_$",
                          "typeString": "type(contract ERC20)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "366:19:60"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 10669,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10664,
                        "mutability": "mutable",
                        "name": "name",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10680,
                        "src": "290:18:60",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10663,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "290:6:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10666,
                        "mutability": "mutable",
                        "name": "symbol",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10680,
                        "src": "314:20:60",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10665,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "314:6:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10668,
                        "mutability": "mutable",
                        "name": "decimals",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10680,
                        "src": "340:14:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 10667,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "340:5:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "284:74:60"
                  },
                  "returnParameters": {
                    "id": 10674,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "386:0:60"
                  },
                  "scope": 10708,
                  "src": "273:148:60",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10696,
                    "nodeType": "Block",
                    "src": "642:52:60",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 10689,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "654:3:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 10690,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "654:10:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10691,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10683,
                              "src": "666:5:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10688,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3810,
                            "src": "648:5:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 10692,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "648:24:60",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10693,
                        "nodeType": "ExpressionStatement",
                        "src": "648:24:60"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 10694,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "685:4:60",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 10687,
                        "id": 10695,
                        "nodeType": "Return",
                        "src": "678:11:60"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10681,
                    "nodeType": "StructuredDocumentation",
                    "src": "425:163:60",
                    "text": " @dev Function to mint tokensp\n @param value The amount of tokens to mint.\n @return A boolean that indicates if the operation was successful."
                  },
                  "functionSelector": "a0712d68",
                  "id": 10697,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 10684,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10683,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10697,
                        "src": "605:13:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10682,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "605:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "604:15:60"
                  },
                  "returnParameters": {
                    "id": 10687,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10686,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10697,
                        "src": "636:4:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 10685,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "636:4:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "635:6:60"
                  },
                  "scope": 10708,
                  "src": "591:103:60",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10706,
                    "nodeType": "Block",
                    "src": "751:39:60",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10704,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 10702,
                            "name": "delegatee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10662,
                            "src": "757:9:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10703,
                            "name": "delegateeAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10699,
                            "src": "769:16:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "757:28:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 10705,
                        "nodeType": "ExpressionStatement",
                        "src": "757:28:60"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "5c19a95c",
                  "id": 10707,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "delegate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 10700,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10699,
                        "mutability": "mutable",
                        "name": "delegateeAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10707,
                        "src": "716:24:60",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10698,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "716:7:60",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "715:26:60"
                  },
                  "returnParameters": {
                    "id": 10701,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "751:0:60"
                  },
                  "scope": 10708,
                  "src": "698:92:60",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 10709,
              "src": "198:594:60"
            }
          ],
          "src": "37:756:60"
        },
        "id": 60
      },
      "contracts/mocks/tokens/MintableERC20.sol": {
        "ast": {
          "absolutePath": "contracts/mocks/tokens/MintableERC20.sol",
          "exportedSymbols": {
            "MintableERC20": [
              10751
            ]
          },
          "id": 10752,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10710,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:61"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/ERC20.sol",
              "file": "../../dependencies/openzeppelin/contracts/ERC20.sol",
              "id": 10712,
              "nodeType": "ImportDirective",
              "scope": 10752,
              "sourceUnit": 3935,
              "src": "62:74:61",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 10711,
                    "name": "ERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:5:61",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 10714,
                    "name": "ERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3934,
                    "src": "224:5:61",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20_$3934",
                      "typeString": "contract ERC20"
                    }
                  },
                  "id": 10715,
                  "nodeType": "InheritanceSpecifier",
                  "src": "224:5:61"
                }
              ],
              "contractDependencies": [
                3427,
                3934,
                4012
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 10713,
                "nodeType": "StructuredDocumentation",
                "src": "138:59:61",
                "text": " @title ERC20Mintable\n @dev ERC20 minting logic"
              },
              "fullyImplemented": true,
              "id": 10751,
              "linearizedBaseContracts": [
                10751,
                3934,
                4012,
                3427
              ],
              "name": "MintableERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 10732,
                    "nodeType": "Block",
                    "src": "347:35:61",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10729,
                              "name": "decimals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10721,
                              "src": "368:8:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 10728,
                            "name": "_setupDecimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3922,
                            "src": "353:14:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$",
                              "typeString": "function (uint8)"
                            }
                          },
                          "id": 10730,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "353:24:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10731,
                        "nodeType": "ExpressionStatement",
                        "src": "353:24:61"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 10733,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 10724,
                          "name": "name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10717,
                          "src": "333:4:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10725,
                          "name": "symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10719,
                          "src": "339:6:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        }
                      ],
                      "id": 10726,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 10723,
                        "name": "ERC20",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3934,
                        "src": "327:5:61",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC20_$3934_$",
                          "typeString": "type(contract ERC20)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "327:19:61"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 10722,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10717,
                        "mutability": "mutable",
                        "name": "name",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10733,
                        "src": "251:18:61",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10716,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "251:6:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10719,
                        "mutability": "mutable",
                        "name": "symbol",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10733,
                        "src": "275:20:61",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10718,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "275:6:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10721,
                        "mutability": "mutable",
                        "name": "decimals",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10733,
                        "src": "301:14:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 10720,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "301:5:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "245:74:61"
                  },
                  "returnParameters": {
                    "id": 10727,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "347:0:61"
                  },
                  "scope": 10751,
                  "src": "234:148:61",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10749,
                    "nodeType": "Block",
                    "src": "602:54:61",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 10742,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3415,
                                "src": "614:10:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 10743,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "614:12:61",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10744,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10736,
                              "src": "628:5:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10741,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3810,
                            "src": "608:5:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 10745,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "608:26:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10746,
                        "nodeType": "ExpressionStatement",
                        "src": "608:26:61"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 10747,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "647:4:61",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 10740,
                        "id": 10748,
                        "nodeType": "Return",
                        "src": "640:11:61"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10734,
                    "nodeType": "StructuredDocumentation",
                    "src": "386:162:61",
                    "text": " @dev Function to mint tokens\n @param value The amount of tokens to mint.\n @return A boolean that indicates if the operation was successful."
                  },
                  "functionSelector": "a0712d68",
                  "id": 10750,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 10737,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10736,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10750,
                        "src": "565:13:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10735,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "565:7:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "564:15:61"
                  },
                  "returnParameters": {
                    "id": 10740,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10739,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10750,
                        "src": "596:4:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 10738,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "596:4:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "595:6:61"
                  },
                  "scope": 10751,
                  "src": "551:105:61",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 10752,
              "src": "198:460:61"
            }
          ],
          "src": "37:622:61"
        },
        "id": 61
      },
      "contracts/mocks/upgradeability/MockAToken.sol": {
        "ast": {
          "absolutePath": "contracts/mocks/upgradeability/MockAToken.sol",
          "exportedSymbols": {
            "MockAToken": [
              10771
            ]
          },
          "id": 10772,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10753,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:62"
            },
            {
              "absolutePath": "contracts/protocol/tokenization/AToken.sol",
              "file": "../../protocol/tokenization/AToken.sol",
              "id": 10755,
              "nodeType": "ImportDirective",
              "scope": 10772,
              "sourceUnit": 21295,
              "src": "62:62:62",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 10754,
                    "name": "AToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:6:62",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPool.sol",
              "file": "../../interfaces/ILendingPool.sol",
              "id": 10757,
              "nodeType": "ImportDirective",
              "scope": 10772,
              "sourceUnit": 6467,
              "src": "125:63:62",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 10756,
                    "name": "ILendingPool",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "133:12:62",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IAaveIncentivesController.sol",
              "file": "../../interfaces/IAaveIncentivesController.sol",
              "id": 10759,
              "nodeType": "ImportDirective",
              "scope": 10772,
              "sourceUnit": 5823,
              "src": "189:89:62",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 10758,
                    "name": "IAaveIncentivesController",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "197:25:62",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 10760,
                    "name": "AToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21294,
                    "src": "303:6:62",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AToken_$21294",
                      "typeString": "contract AToken"
                    }
                  },
                  "id": 10761,
                  "nodeType": "InheritanceSpecifier",
                  "src": "303:6:62"
                }
              ],
              "contractDependencies": [
                3427,
                4012,
                4034,
                5667,
                6015,
                7005,
                16019,
                21294,
                21971
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 10771,
              "linearizedBaseContracts": [
                10771,
                21294,
                5667,
                6015,
                7005,
                21971,
                4034,
                4012,
                3427,
                16019
              ],
              "name": "MockAToken",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "baseFunctions": [
                    20626
                  ],
                  "body": {
                    "id": 10769,
                    "nodeType": "Block",
                    "src": "378:21:62",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "307832",
                          "id": 10767,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "391:3:62",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "0x2"
                        },
                        "functionReturnParameters": 10766,
                        "id": 10768,
                        "nodeType": "Return",
                        "src": "384:10:62"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 10770,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRevision",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10763,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "351:8:62"
                  },
                  "parameters": {
                    "id": 10762,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "334:2:62"
                  },
                  "returnParameters": {
                    "id": 10766,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10765,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10770,
                        "src": "369:7:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10764,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "369:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "368:9:62"
                  },
                  "scope": 10771,
                  "src": "314:85:62",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 10772,
              "src": "280:121:62"
            }
          ],
          "src": "37:365:62"
        },
        "id": 62
      },
      "contracts/mocks/upgradeability/MockStableDebtToken.sol": {
        "ast": {
          "absolutePath": "contracts/mocks/upgradeability/MockStableDebtToken.sol",
          "exportedSymbols": {
            "MockStableDebtToken": [
              10787
            ]
          },
          "id": 10788,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10773,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:63"
            },
            {
              "absolutePath": "contracts/protocol/tokenization/StableDebtToken.sol",
              "file": "../../protocol/tokenization/StableDebtToken.sol",
              "id": 10775,
              "nodeType": "ImportDirective",
              "scope": 10788,
              "sourceUnit": 22905,
              "src": "62:80:63",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 10774,
                    "name": "StableDebtToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:15:63",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 10776,
                    "name": "StableDebtToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22904,
                    "src": "176:15:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_StableDebtToken_$22904",
                      "typeString": "contract StableDebtToken"
                    }
                  },
                  "id": 10777,
                  "nodeType": "InheritanceSpecifier",
                  "src": "176:15:63"
                }
              ],
              "contractDependencies": [
                3427,
                4012,
                4034,
                5899,
                6058,
                7133,
                16019,
                21971,
                22904,
                26043
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 10787,
              "linearizedBaseContracts": [
                10787,
                22904,
                26043,
                5899,
                16019,
                21971,
                4034,
                4012,
                3427,
                7133,
                6058
              ],
              "name": "MockStableDebtToken",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "baseFunctions": [
                    22088
                  ],
                  "body": {
                    "id": 10785,
                    "nodeType": "Block",
                    "src": "260:21:63",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "307832",
                          "id": 10783,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "273:3:63",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "0x2"
                        },
                        "functionReturnParameters": 10782,
                        "id": 10784,
                        "nodeType": "Return",
                        "src": "266:10:63"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 10786,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRevision",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10779,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "233:8:63"
                  },
                  "parameters": {
                    "id": 10778,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "216:2:63"
                  },
                  "returnParameters": {
                    "id": 10782,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10781,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10786,
                        "src": "251:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10780,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "251:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "250:9:63"
                  },
                  "scope": 10787,
                  "src": "196:85:63",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 10788,
              "src": "144:139:63"
            }
          ],
          "src": "37:247:63"
        },
        "id": 63
      },
      "contracts/mocks/upgradeability/MockVariableDebtToken.sol": {
        "ast": {
          "absolutePath": "contracts/mocks/upgradeability/MockVariableDebtToken.sol",
          "exportedSymbols": {
            "MockVariableDebtToken": [
              10803
            ]
          },
          "id": 10804,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10789,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:64"
            },
            {
              "absolutePath": "contracts/protocol/tokenization/VariableDebtToken.sol",
              "file": "../../protocol/tokenization/VariableDebtToken.sol",
              "id": 10791,
              "nodeType": "ImportDirective",
              "scope": 10804,
              "sourceUnit": 25783,
              "src": "62:84:64",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 10790,
                    "name": "VariableDebtToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:17:64",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 10792,
                    "name": "VariableDebtToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25782,
                    "src": "182:17:64",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_VariableDebtToken_$25782",
                      "typeString": "contract VariableDebtToken"
                    }
                  },
                  "id": 10793,
                  "nodeType": "InheritanceSpecifier",
                  "src": "182:17:64"
                }
              ],
              "contractDependencies": [
                3427,
                4012,
                4034,
                5899,
                6058,
                7005,
                7504,
                16019,
                21971,
                25782,
                26043
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 10803,
              "linearizedBaseContracts": [
                10803,
                25782,
                7504,
                6058,
                7005,
                26043,
                5899,
                16019,
                21971,
                4034,
                4012,
                3427
              ],
              "name": "MockVariableDebtToken",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "baseFunctions": [
                    25502
                  ],
                  "body": {
                    "id": 10801,
                    "nodeType": "Block",
                    "src": "268:21:64",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "307832",
                          "id": 10799,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "281:3:64",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "0x2"
                        },
                        "functionReturnParameters": 10798,
                        "id": 10800,
                        "nodeType": "Return",
                        "src": "274:10:64"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 10802,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRevision",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10795,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "241:8:64"
                  },
                  "parameters": {
                    "id": 10794,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "224:2:64"
                  },
                  "returnParameters": {
                    "id": 10798,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10797,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10802,
                        "src": "259:7:64",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10796,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "259:7:64",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "258:9:64"
                  },
                  "scope": 10803,
                  "src": "204:85:64",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 10804,
              "src": "148:143:64"
            }
          ],
          "src": "37:255:64"
        },
        "id": 64
      },
      "contracts/protocol/configuration/LendingPoolAddressesProvider.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/configuration/LendingPoolAddressesProvider.sol",
          "exportedSymbols": {
            "LendingPoolAddressesProvider": [
              11253
            ]
          },
          "id": 11254,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 10805,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:65"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/Ownable.sol",
              "file": "../../dependencies/openzeppelin/contracts/Ownable.sol",
              "id": 10807,
              "nodeType": "ImportDirective",
              "scope": 11254,
              "sourceUnit": 4144,
              "src": "62:78:65",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 10806,
                    "name": "Ownable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:7:65",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/aave-upgradeability/InitializableImmutableAdminUpgradeabilityProxy.sol",
              "file": "../libraries/aave-upgradeability/InitializableImmutableAdminUpgradeabilityProxy.sol",
              "id": 10809,
              "nodeType": "ImportDirective",
              "scope": 11254,
              "sourceUnit": 15939,
              "src": "211:147:65",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 10808,
                    "name": "InitializableImmutableAdminUpgradeabilityProxy",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "219:46:65",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPoolAddressesProvider.sol",
              "file": "../../interfaces/ILendingPoolAddressesProvider.sol",
              "id": 10811,
              "nodeType": "ImportDirective",
              "scope": 11254,
              "sourceUnit": 6618,
              "src": "360:97:65",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 10810,
                    "name": "ILendingPoolAddressesProvider",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "368:29:65",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 10813,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4143,
                    "src": "812:7:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$4143",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 10814,
                  "nodeType": "InheritanceSpecifier",
                  "src": "812:7:65"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 10815,
                    "name": "ILendingPoolAddressesProvider",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6617,
                    "src": "821:29:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                      "typeString": "contract ILendingPoolAddressesProvider"
                    }
                  },
                  "id": 10816,
                  "nodeType": "InheritanceSpecifier",
                  "src": "821:29:65"
                }
              ],
              "contractDependencies": [
                3427,
                4143,
                6617,
                15938
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 10812,
                "nodeType": "StructuredDocumentation",
                "src": "459:311:65",
                "text": " @title LendingPoolAddressesProvider contract\n @dev Main registry of addresses part of or connected to the protocol, including permissioned roles\n - Acting also as factory of proxies and admin of those, so with right to change its implementations\n - Owned by the Aave Governance\n @author Aave*"
              },
              "fullyImplemented": true,
              "id": 11253,
              "linearizedBaseContracts": [
                11253,
                6617,
                4143,
                3427
              ],
              "name": "LendingPoolAddressesProvider",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 10818,
                  "mutability": "mutable",
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11253,
                  "src": "855:24:65",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 10817,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "855:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 10822,
                  "mutability": "mutable",
                  "name": "_addresses",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11253,
                  "src": "883:46:65",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                    "typeString": "mapping(bytes32 => address)"
                  },
                  "typeName": {
                    "id": 10821,
                    "keyType": {
                      "id": 10819,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "891:7:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "883:27:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                      "typeString": "mapping(bytes32 => address)"
                    },
                    "valueType": {
                      "id": 10820,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "902:7:65",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 10825,
                  "mutability": "constant",
                  "name": "LENDING_POOL",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11253,
                  "src": "934:54:65",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10823,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "934:7:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "4c454e44494e475f504f4f4c",
                    "id": 10824,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "974:14:65",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_b0a02d474211257da1bdb72ce7e91b05cbdc99ae0876cb0a61bbc7ad100c58a7",
                      "typeString": "literal_string \"LENDING_POOL\""
                    },
                    "value": "LENDING_POOL"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 10828,
                  "mutability": "constant",
                  "name": "LENDING_POOL_CONFIGURATOR",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11253,
                  "src": "992:80:65",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10826,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "992:7:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "4c454e44494e475f504f4f4c5f434f4e464947555241544f52",
                    "id": 10827,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1045:27:65",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_daa78d61aa52695c850c795958745aa3b3dd53fcf767ab7e0a1b2527fbeac8ed",
                      "typeString": "literal_string \"LENDING_POOL_CONFIGURATOR\""
                    },
                    "value": "LENDING_POOL_CONFIGURATOR"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 10831,
                  "mutability": "constant",
                  "name": "POOL_ADMIN",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11253,
                  "src": "1076:50:65",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10829,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1076:7:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "504f4f4c5f41444d494e",
                    "id": 10830,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1114:12:65",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_12ad05bde78c5ab75238ce885307f96ecd482bb402ef831f99e7018a0f169b7b",
                      "typeString": "literal_string \"POOL_ADMIN\""
                    },
                    "value": "POOL_ADMIN"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 10834,
                  "mutability": "constant",
                  "name": "EMERGENCY_ADMIN",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11253,
                  "src": "1130:60:65",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10832,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1130:7:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "454d455247454e43595f41444d494e",
                    "id": 10833,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1173:17:65",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_5c91514091af31f62f596a314af7d5be40146b2f2355969392f055e12e0982fb",
                      "typeString": "literal_string \"EMERGENCY_ADMIN\""
                    },
                    "value": "EMERGENCY_ADMIN"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 10837,
                  "mutability": "constant",
                  "name": "LENDING_POOL_COLLATERAL_MANAGER",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11253,
                  "src": "1194:79:65",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10835,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1194:7:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "434f4c4c41544552414c5f4d414e41474552",
                    "id": 10836,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1253:20:65",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_413cc8bb35fe129dacd3dfaae80d6d4c5d313f64cee9dd6712e7ca52e38573a9",
                      "typeString": "literal_string \"COLLATERAL_MANAGER\""
                    },
                    "value": "COLLATERAL_MANAGER"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 10840,
                  "mutability": "constant",
                  "name": "PRICE_ORACLE",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11253,
                  "src": "1277:54:65",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10838,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1277:7:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "50524943455f4f5241434c45",
                    "id": 10839,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1317:14:65",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_dd24a0f121e5ab7c3e97c63eaaf859e0b46792c3e0edfd86e2b3ad50f63011d8",
                      "typeString": "literal_string \"PRICE_ORACLE\""
                    },
                    "value": "PRICE_ORACLE"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 10843,
                  "mutability": "constant",
                  "name": "LENDING_RATE_ORACLE",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11253,
                  "src": "1335:68:65",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10841,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1335:7:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "4c454e44494e475f524154455f4f5241434c45",
                    "id": 10842,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1382:21:65",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_15e5978bd784d37462e6f1149d489232b2958f579b9f19e8da878a8ed491e4bd",
                      "typeString": "literal_string \"LENDING_RATE_ORACLE\""
                    },
                    "value": "LENDING_RATE_ORACLE"
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 10852,
                    "nodeType": "Block",
                    "src": "1451:33:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10849,
                              "name": "marketId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10845,
                              "src": "1470:8:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 10848,
                            "name": "_setMarketId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11252,
                            "src": "1457:12:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory)"
                            }
                          },
                          "id": 10850,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1457:22:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10851,
                        "nodeType": "ExpressionStatement",
                        "src": "1457:22:65"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 10853,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 10846,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10845,
                        "mutability": "mutable",
                        "name": "marketId",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10853,
                        "src": "1420:22:65",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10844,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1420:6:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1419:24:65"
                  },
                  "returnParameters": {
                    "id": 10847,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1451:0:65"
                  },
                  "scope": 11253,
                  "src": "1408:76:65",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    6520
                  ],
                  "body": {
                    "id": 10862,
                    "nodeType": "Block",
                    "src": "1676:27:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10860,
                          "name": "_marketId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10818,
                          "src": "1689:9:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 10859,
                        "id": 10861,
                        "nodeType": "Return",
                        "src": "1682:16:65"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10854,
                    "nodeType": "StructuredDocumentation",
                    "src": "1488:115:65",
                    "text": " @dev Returns the id of the Aave market to which this contracts points to\n @return The market id*"
                  },
                  "functionSelector": "568ef470",
                  "id": 10863,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getMarketId",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10856,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1643:8:65"
                  },
                  "parameters": {
                    "id": 10855,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1626:2:65"
                  },
                  "returnParameters": {
                    "id": 10859,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10858,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10863,
                        "src": "1661:13:65",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10857,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1661:6:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1660:15:65"
                  },
                  "scope": 11253,
                  "src": "1606:97:65",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6525
                  ],
                  "body": {
                    "id": 10876,
                    "nodeType": "Block",
                    "src": "1913:33:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10873,
                              "name": "marketId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10866,
                              "src": "1932:8:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 10872,
                            "name": "_setMarketId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11252,
                            "src": "1919:12:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory)"
                            }
                          },
                          "id": 10874,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1919:22:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10875,
                        "nodeType": "ExpressionStatement",
                        "src": "1919:22:65"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10864,
                    "nodeType": "StructuredDocumentation",
                    "src": "1707:130:65",
                    "text": " @dev Allows to set the market which this LendingPoolAddressesProvider represents\n @param marketId The market id"
                  },
                  "functionSelector": "f67b1847",
                  "id": 10877,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 10870,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 10869,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "1903:9:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1903:9:65"
                    }
                  ],
                  "name": "setMarketId",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10868,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1894:8:65"
                  },
                  "parameters": {
                    "id": 10867,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10866,
                        "mutability": "mutable",
                        "name": "marketId",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10877,
                        "src": "1861:22:65",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 10865,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1861:6:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1860:24:65"
                  },
                  "returnParameters": {
                    "id": 10871,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1913:0:65"
                  },
                  "scope": 11253,
                  "src": "1840:106:65",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6539
                  ],
                  "body": {
                    "id": 10899,
                    "nodeType": "Block",
                    "src": "2535:103:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10889,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10880,
                              "src": "2553:2:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10890,
                              "name": "implementationAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10882,
                              "src": "2557:21:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10888,
                            "name": "_updateImpl",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11238,
                            "src": "2541:11:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 10891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2541:38:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10892,
                        "nodeType": "ExpressionStatement",
                        "src": "2541:38:65"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10894,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10880,
                              "src": "2601:2:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10895,
                              "name": "implementationAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10882,
                              "src": "2605:21:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 10896,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2628:4:65",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 10893,
                            "name": "AddressSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6515,
                            "src": "2590:10:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (bytes32,address,bool)"
                            }
                          },
                          "id": 10897,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2590:43:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10898,
                        "nodeType": "EmitStatement",
                        "src": "2585:48:65"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10878,
                    "nodeType": "StructuredDocumentation",
                    "src": "1950:470:65",
                    "text": " @dev General function to update the implementation of a proxy registered with\n certain `id`. If there is no proxy registered, it will instantiate one and\n set as implementation the `implementationAddress`\n IMPORTANT Use this function carefully, only for ids that don't have an explicit\n setter function, in order to avoid unexpected consequences\n @param id The id\n @param implementationAddress The address of the new implementation"
                  },
                  "functionSelector": "5dcc528c",
                  "id": 10900,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 10886,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 10885,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "2523:9:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2523:9:65"
                    }
                  ],
                  "name": "setAddressAsProxy",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10884,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2510:8:65"
                  },
                  "parameters": {
                    "id": 10883,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10880,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10900,
                        "src": "2450:10:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 10879,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2450:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10882,
                        "mutability": "mutable",
                        "name": "implementationAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10900,
                        "src": "2462:29:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10881,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2462:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2449:43:65"
                  },
                  "returnParameters": {
                    "id": 10887,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2535:0:65"
                  },
                  "scope": 11253,
                  "src": "2423:215:65",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6532
                  ],
                  "body": {
                    "id": 10923,
                    "nodeType": "Block",
                    "src": "2960:82:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10915,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 10911,
                              "name": "_addresses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10822,
                              "src": "2966:10:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                "typeString": "mapping(bytes32 => address)"
                              }
                            },
                            "id": 10913,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 10912,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10903,
                              "src": "2977:2:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2966:14:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10914,
                            "name": "newAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10905,
                            "src": "2983:10:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2966:27:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 10916,
                        "nodeType": "ExpressionStatement",
                        "src": "2966:27:65"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10918,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10903,
                              "src": "3015:2:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10919,
                              "name": "newAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10905,
                              "src": "3019:10:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 10920,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3031:5:65",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 10917,
                            "name": "AddressSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6515,
                            "src": "3004:10:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (bytes32,address,bool)"
                            }
                          },
                          "id": 10921,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3004:33:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10922,
                        "nodeType": "EmitStatement",
                        "src": "2999:38:65"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10901,
                    "nodeType": "StructuredDocumentation",
                    "src": "2642:235:65",
                    "text": " @dev Sets an address for an id replacing the address saved in the addresses map\n IMPORTANT Use this function carefully, as it will do a hard replacement\n @param id The id\n @param newAddress The address to set"
                  },
                  "functionSelector": "ca446dd9",
                  "id": 10924,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 10909,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 10908,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "2950:9:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2950:9:65"
                    }
                  ],
                  "name": "setAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10907,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2941:8:65"
                  },
                  "parameters": {
                    "id": 10906,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10903,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10924,
                        "src": "2900:10:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 10902,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2900:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10905,
                        "mutability": "mutable",
                        "name": "newAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10924,
                        "src": "2912:18:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10904,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2912:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2899:32:65"
                  },
                  "returnParameters": {
                    "id": 10910,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2960:0:65"
                  },
                  "scope": 11253,
                  "src": "2880:162:65",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6546
                  ],
                  "body": {
                    "id": 10937,
                    "nodeType": "Block",
                    "src": "3189:32:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 10933,
                            "name": "_addresses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10822,
                            "src": "3202:10:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                              "typeString": "mapping(bytes32 => address)"
                            }
                          },
                          "id": 10935,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 10934,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10927,
                            "src": "3213:2:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3202:14:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 10932,
                        "id": 10936,
                        "nodeType": "Return",
                        "src": "3195:21:65"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10925,
                    "nodeType": "StructuredDocumentation",
                    "src": "3046:69:65",
                    "text": " @dev Returns an address by id\n @return The address"
                  },
                  "functionSelector": "21f8a721",
                  "id": 10938,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10929,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3162:8:65"
                  },
                  "parameters": {
                    "id": 10928,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10927,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10938,
                        "src": "3138:10:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 10926,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3138:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3137:12:65"
                  },
                  "returnParameters": {
                    "id": 10932,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10931,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10938,
                        "src": "3180:7:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10930,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3180:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3179:9:65"
                  },
                  "scope": 11253,
                  "src": "3118:103:65",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    6551
                  ],
                  "body": {
                    "id": 10949,
                    "nodeType": "Block",
                    "src": "3403:42:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10946,
                              "name": "LENDING_POOL",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10825,
                              "src": "3427:12:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 10945,
                            "name": "getAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10938,
                            "src": "3416:10:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view returns (address)"
                            }
                          },
                          "id": 10947,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3416:24:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 10944,
                        "id": 10948,
                        "nodeType": "Return",
                        "src": "3409:31:65"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10939,
                    "nodeType": "StructuredDocumentation",
                    "src": "3225:108:65",
                    "text": " @dev Returns the address of the LendingPool proxy\n @return The LendingPool proxy address*"
                  },
                  "functionSelector": "0261bf8b",
                  "id": 10950,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLendingPool",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10941,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3376:8:65"
                  },
                  "parameters": {
                    "id": 10940,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3359:2:65"
                  },
                  "returnParameters": {
                    "id": 10944,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10943,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10950,
                        "src": "3394:7:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10942,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3394:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3393:9:65"
                  },
                  "scope": 11253,
                  "src": "3336:109:65",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6556
                  ],
                  "body": {
                    "id": 10968,
                    "nodeType": "Block",
                    "src": "3734:77:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10960,
                              "name": "LENDING_POOL",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10825,
                              "src": "3752:12:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10961,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10953,
                              "src": "3766:4:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10959,
                            "name": "_updateImpl",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11238,
                            "src": "3740:11:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 10962,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3740:31:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10963,
                        "nodeType": "ExpressionStatement",
                        "src": "3740:31:65"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10965,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10953,
                              "src": "3801:4:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10964,
                            "name": "LendingPoolUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6477,
                            "src": "3782:18:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 10966,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3782:24:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10967,
                        "nodeType": "EmitStatement",
                        "src": "3777:29:65"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10951,
                    "nodeType": "StructuredDocumentation",
                    "src": "3449:212:65",
                    "text": " @dev Updates the implementation of the LendingPool, or creates the proxy\n setting the new `pool` implementation on the first time calling it\n @param pool The new LendingPool implementation*"
                  },
                  "functionSelector": "5aef021f",
                  "id": 10969,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 10957,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 10956,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "3724:9:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3724:9:65"
                    }
                  ],
                  "name": "setLendingPoolImpl",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10955,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3715:8:65"
                  },
                  "parameters": {
                    "id": 10954,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10953,
                        "mutability": "mutable",
                        "name": "pool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10969,
                        "src": "3692:12:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10952,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3692:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3691:14:65"
                  },
                  "returnParameters": {
                    "id": 10958,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3734:0:65"
                  },
                  "scope": 11253,
                  "src": "3664:147:65",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6561
                  ],
                  "body": {
                    "id": 10980,
                    "nodeType": "Block",
                    "src": "4029:55:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10977,
                              "name": "LENDING_POOL_CONFIGURATOR",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10828,
                              "src": "4053:25:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 10976,
                            "name": "getAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10938,
                            "src": "4042:10:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view returns (address)"
                            }
                          },
                          "id": 10978,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4042:37:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 10975,
                        "id": 10979,
                        "nodeType": "Return",
                        "src": "4035:44:65"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10970,
                    "nodeType": "StructuredDocumentation",
                    "src": "3815:132:65",
                    "text": " @dev Returns the address of the LendingPoolConfigurator proxy\n @return The LendingPoolConfigurator proxy address*"
                  },
                  "functionSelector": "85c858b1",
                  "id": 10981,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLendingPoolConfigurator",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10972,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4002:8:65"
                  },
                  "parameters": {
                    "id": 10971,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3985:2:65"
                  },
                  "returnParameters": {
                    "id": 10975,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10974,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10981,
                        "src": "4020:7:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10973,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4020:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4019:9:65"
                  },
                  "scope": 11253,
                  "src": "3950:134:65",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6566
                  ],
                  "body": {
                    "id": 10999,
                    "nodeType": "Block",
                    "src": "4433:118:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10991,
                              "name": "LENDING_POOL_CONFIGURATOR",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10828,
                              "src": "4451:25:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10992,
                              "name": "configurator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10984,
                              "src": "4478:12:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10990,
                            "name": "_updateImpl",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11238,
                            "src": "4439:11:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 10993,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4439:52:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10994,
                        "nodeType": "ExpressionStatement",
                        "src": "4439:52:65"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10996,
                              "name": "configurator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10984,
                              "src": "4533:12:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10995,
                            "name": "LendingPoolConfiguratorUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6489,
                            "src": "4502:30:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 10997,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4502:44:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10998,
                        "nodeType": "EmitStatement",
                        "src": "4497:49:65"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10982,
                    "nodeType": "StructuredDocumentation",
                    "src": "4088:252:65",
                    "text": " @dev Updates the implementation of the LendingPoolConfigurator, or creates the proxy\n setting the new `configurator` implementation on the first time calling it\n @param configurator The new LendingPoolConfigurator implementation*"
                  },
                  "functionSelector": "c12542df",
                  "id": 11000,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 10988,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 10987,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "4423:9:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4423:9:65"
                    }
                  ],
                  "name": "setLendingPoolConfiguratorImpl",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10986,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4414:8:65"
                  },
                  "parameters": {
                    "id": 10985,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10984,
                        "mutability": "mutable",
                        "name": "configurator",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11000,
                        "src": "4383:20:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10983,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4383:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4382:22:65"
                  },
                  "returnParameters": {
                    "id": 10989,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4433:0:65"
                  },
                  "scope": 11253,
                  "src": "4343:208:65",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6571
                  ],
                  "body": {
                    "id": 11011,
                    "nodeType": "Block",
                    "src": "4962:61:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11008,
                              "name": "LENDING_POOL_COLLATERAL_MANAGER",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10837,
                              "src": "4986:31:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 11007,
                            "name": "getAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10938,
                            "src": "4975:10:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view returns (address)"
                            }
                          },
                          "id": 11009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4975:43:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 11006,
                        "id": 11010,
                        "nodeType": "Return",
                        "src": "4968:50:65"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11001,
                    "nodeType": "StructuredDocumentation",
                    "src": "4555:319:65",
                    "text": " @dev Returns the address of the LendingPoolCollateralManager. Since the manager is used\n through delegateCall within the LendingPool contract, the proxy contract pattern does not work properly hence\n the addresses are changed directly\n @return The address of the LendingPoolCollateralManager*"
                  },
                  "functionSelector": "712d9171",
                  "id": 11012,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLendingPoolCollateralManager",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11003,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4935:8:65"
                  },
                  "parameters": {
                    "id": 11002,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4918:2:65"
                  },
                  "returnParameters": {
                    "id": 11006,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11005,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11012,
                        "src": "4953:7:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11004,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4953:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4952:9:65"
                  },
                  "scope": 11253,
                  "src": "4878:145:65",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6576
                  ],
                  "body": {
                    "id": 11031,
                    "nodeType": "Block",
                    "src": "5257:119:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 11021,
                              "name": "_addresses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10822,
                              "src": "5263:10:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                "typeString": "mapping(bytes32 => address)"
                              }
                            },
                            "id": 11023,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 11022,
                              "name": "LENDING_POOL_COLLATERAL_MANAGER",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10837,
                              "src": "5274:31:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5263:43:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 11024,
                            "name": "manager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11015,
                            "src": "5309:7:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5263:53:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 11026,
                        "nodeType": "ExpressionStatement",
                        "src": "5263:53:65"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11028,
                              "name": "manager",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11015,
                              "src": "5363:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 11027,
                            "name": "LendingPoolCollateralManagerUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6493,
                            "src": "5327:35:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 11029,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5327:44:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11030,
                        "nodeType": "EmitStatement",
                        "src": "5322:49:65"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11013,
                    "nodeType": "StructuredDocumentation",
                    "src": "5027:141:65",
                    "text": " @dev Updates the address of the LendingPoolCollateralManager\n @param manager The new LendingPoolCollateralManager address*"
                  },
                  "functionSelector": "398e5553",
                  "id": 11032,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 11019,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 11018,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "5247:9:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5247:9:65"
                    }
                  ],
                  "name": "setLendingPoolCollateralManager",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11017,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5238:8:65"
                  },
                  "parameters": {
                    "id": 11016,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11015,
                        "mutability": "mutable",
                        "name": "manager",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11032,
                        "src": "5212:15:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11014,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5212:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5211:17:65"
                  },
                  "returnParameters": {
                    "id": 11020,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5257:0:65"
                  },
                  "scope": 11253,
                  "src": "5171:205:65",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6581
                  ],
                  "body": {
                    "id": 11043,
                    "nodeType": "Block",
                    "src": "5619:40:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11040,
                              "name": "POOL_ADMIN",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10831,
                              "src": "5643:10:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 11039,
                            "name": "getAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10938,
                            "src": "5632:10:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view returns (address)"
                            }
                          },
                          "id": 11041,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5632:22:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 11038,
                        "id": 11042,
                        "nodeType": "Return",
                        "src": "5625:29:65"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11033,
                    "nodeType": "StructuredDocumentation",
                    "src": "5380:170:65",
                    "text": " @dev The functions below are getters/setters of addresses that are outside the context\n of the protocol hence the upgradable proxy pattern is not used*"
                  },
                  "functionSelector": "aecda378",
                  "id": 11044,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPoolAdmin",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11035,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5592:8:65"
                  },
                  "parameters": {
                    "id": 11034,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5575:2:65"
                  },
                  "returnParameters": {
                    "id": 11038,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11037,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11044,
                        "src": "5610:7:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11036,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5610:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5609:9:65"
                  },
                  "scope": 11253,
                  "src": "5554:105:65",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6586
                  ],
                  "body": {
                    "id": 11062,
                    "nodeType": "Block",
                    "src": "5728:84:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11056,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 11052,
                              "name": "_addresses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10822,
                              "src": "5734:10:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                "typeString": "mapping(bytes32 => address)"
                              }
                            },
                            "id": 11054,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 11053,
                              "name": "POOL_ADMIN",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10831,
                              "src": "5745:10:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5734:22:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 11055,
                            "name": "admin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11046,
                            "src": "5759:5:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5734:30:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 11057,
                        "nodeType": "ExpressionStatement",
                        "src": "5734:30:65"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11059,
                              "name": "admin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11046,
                              "src": "5801:5:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 11058,
                            "name": "ConfigurationAdminUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6481,
                            "src": "5775:25:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 11060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5775:32:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11061,
                        "nodeType": "EmitStatement",
                        "src": "5770:37:65"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "283d62ad",
                  "id": 11063,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 11050,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 11049,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "5718:9:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5718:9:65"
                    }
                  ],
                  "name": "setPoolAdmin",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11048,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5709:8:65"
                  },
                  "parameters": {
                    "id": 11047,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11046,
                        "mutability": "mutable",
                        "name": "admin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11063,
                        "src": "5685:13:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11045,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5685:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5684:15:65"
                  },
                  "returnParameters": {
                    "id": 11051,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5728:0:65"
                  },
                  "scope": 11253,
                  "src": "5663:149:65",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6591
                  ],
                  "body": {
                    "id": 11073,
                    "nodeType": "Block",
                    "src": "5886:45:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11070,
                              "name": "EMERGENCY_ADMIN",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10834,
                              "src": "5910:15:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 11069,
                            "name": "getAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10938,
                            "src": "5899:10:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view returns (address)"
                            }
                          },
                          "id": 11071,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5899:27:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 11068,
                        "id": 11072,
                        "nodeType": "Return",
                        "src": "5892:34:65"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "ddcaa9ea",
                  "id": 11074,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getEmergencyAdmin",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11065,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5859:8:65"
                  },
                  "parameters": {
                    "id": 11064,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5842:2:65"
                  },
                  "returnParameters": {
                    "id": 11068,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11067,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11074,
                        "src": "5877:7:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11066,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5877:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5876:9:65"
                  },
                  "scope": 11253,
                  "src": "5816:115:65",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6596
                  ],
                  "body": {
                    "id": 11092,
                    "nodeType": "Block",
                    "src": "6014:103:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11086,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 11082,
                              "name": "_addresses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10822,
                              "src": "6020:10:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                "typeString": "mapping(bytes32 => address)"
                              }
                            },
                            "id": 11084,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 11083,
                              "name": "EMERGENCY_ADMIN",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10834,
                              "src": "6031:15:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6020:27:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 11085,
                            "name": "emergencyAdmin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11076,
                            "src": "6050:14:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6020:44:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 11087,
                        "nodeType": "ExpressionStatement",
                        "src": "6020:44:65"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11089,
                              "name": "emergencyAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11076,
                              "src": "6097:14:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 11088,
                            "name": "EmergencyAdminUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6485,
                            "src": "6075:21:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 11090,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6075:37:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11091,
                        "nodeType": "EmitStatement",
                        "src": "6070:42:65"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "35da3394",
                  "id": 11093,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 11080,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 11079,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "6004:9:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6004:9:65"
                    }
                  ],
                  "name": "setEmergencyAdmin",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11078,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5995:8:65"
                  },
                  "parameters": {
                    "id": 11077,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11076,
                        "mutability": "mutable",
                        "name": "emergencyAdmin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11093,
                        "src": "5962:22:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11075,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5962:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5961:24:65"
                  },
                  "returnParameters": {
                    "id": 11081,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6014:0:65"
                  },
                  "scope": 11253,
                  "src": "5935:182:65",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6601
                  ],
                  "body": {
                    "id": 11103,
                    "nodeType": "Block",
                    "src": "6188:42:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11100,
                              "name": "PRICE_ORACLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10840,
                              "src": "6212:12:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 11099,
                            "name": "getAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10938,
                            "src": "6201:10:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view returns (address)"
                            }
                          },
                          "id": 11101,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6201:24:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 11098,
                        "id": 11102,
                        "nodeType": "Return",
                        "src": "6194:31:65"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "fca513a8",
                  "id": 11104,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPriceOracle",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11095,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6161:8:65"
                  },
                  "parameters": {
                    "id": 11094,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6144:2:65"
                  },
                  "returnParameters": {
                    "id": 11098,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11097,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11104,
                        "src": "6179:7:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11096,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6179:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6178:9:65"
                  },
                  "scope": 11253,
                  "src": "6121:109:65",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6606
                  ],
                  "body": {
                    "id": 11122,
                    "nodeType": "Block",
                    "src": "6307:91:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11116,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 11112,
                              "name": "_addresses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10822,
                              "src": "6313:10:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                "typeString": "mapping(bytes32 => address)"
                              }
                            },
                            "id": 11114,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 11113,
                              "name": "PRICE_ORACLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10840,
                              "src": "6324:12:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6313:24:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 11115,
                            "name": "priceOracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11106,
                            "src": "6340:11:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6313:38:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 11117,
                        "nodeType": "ExpressionStatement",
                        "src": "6313:38:65"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11119,
                              "name": "priceOracle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11106,
                              "src": "6381:11:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 11118,
                            "name": "PriceOracleUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6497,
                            "src": "6362:18:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 11120,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6362:31:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11121,
                        "nodeType": "EmitStatement",
                        "src": "6357:36:65"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "530e784f",
                  "id": 11123,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 11110,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 11109,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "6297:9:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6297:9:65"
                    }
                  ],
                  "name": "setPriceOracle",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11108,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6288:8:65"
                  },
                  "parameters": {
                    "id": 11107,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11106,
                        "mutability": "mutable",
                        "name": "priceOracle",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11123,
                        "src": "6258:19:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11105,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6258:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6257:21:65"
                  },
                  "returnParameters": {
                    "id": 11111,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6307:0:65"
                  },
                  "scope": 11253,
                  "src": "6234:164:65",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6611
                  ],
                  "body": {
                    "id": 11133,
                    "nodeType": "Block",
                    "src": "6475:49:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11130,
                              "name": "LENDING_RATE_ORACLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10843,
                              "src": "6499:19:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 11129,
                            "name": "getAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10938,
                            "src": "6488:10:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view returns (address)"
                            }
                          },
                          "id": 11131,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6488:31:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 11128,
                        "id": 11132,
                        "nodeType": "Return",
                        "src": "6481:38:65"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "3618abba",
                  "id": 11134,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLendingRateOracle",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11125,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6448:8:65"
                  },
                  "parameters": {
                    "id": 11124,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6431:2:65"
                  },
                  "returnParameters": {
                    "id": 11128,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11127,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11134,
                        "src": "6466:7:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11126,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6466:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6465:9:65"
                  },
                  "scope": 11253,
                  "src": "6402:122:65",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6616
                  ],
                  "body": {
                    "id": 11152,
                    "nodeType": "Block",
                    "src": "6613:116:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 11142,
                              "name": "_addresses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10822,
                              "src": "6619:10:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                "typeString": "mapping(bytes32 => address)"
                              }
                            },
                            "id": 11144,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 11143,
                              "name": "LENDING_RATE_ORACLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10843,
                              "src": "6630:19:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6619:31:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 11145,
                            "name": "lendingRateOracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11136,
                            "src": "6653:17:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6619:51:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 11147,
                        "nodeType": "ExpressionStatement",
                        "src": "6619:51:65"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11149,
                              "name": "lendingRateOracle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11136,
                              "src": "6706:17:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 11148,
                            "name": "LendingRateOracleUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6501,
                            "src": "6681:24:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 11150,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6681:43:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11151,
                        "nodeType": "EmitStatement",
                        "src": "6676:48:65"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "820d1274",
                  "id": 11153,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 11140,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 11139,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "6603:9:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6603:9:65"
                    }
                  ],
                  "name": "setLendingRateOracle",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11138,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6594:8:65"
                  },
                  "parameters": {
                    "id": 11137,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11136,
                        "mutability": "mutable",
                        "name": "lendingRateOracle",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11153,
                        "src": "6558:25:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11135,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6558:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6557:27:65"
                  },
                  "returnParameters": {
                    "id": 11141,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6613:0:65"
                  },
                  "scope": 11253,
                  "src": "6528:201:65",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 11237,
                    "nodeType": "Block",
                    "src": "7373:599:65",
                    "statements": [
                      {
                        "assignments": [
                          11162
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11162,
                            "mutability": "mutable",
                            "name": "proxyAddress",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 11237,
                            "src": "7379:28:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            "typeName": {
                              "id": 11161,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7379:15:65",
                              "stateMutability": "payable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11169,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 11165,
                                "name": "_addresses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10822,
                                "src": "7418:10:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                  "typeString": "mapping(bytes32 => address)"
                                }
                              },
                              "id": 11167,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 11166,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11156,
                                "src": "7429:2:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7418:14:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 11164,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "7410:8:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_payable_$",
                              "typeString": "type(address payable)"
                            },
                            "typeName": {
                              "id": 11163,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7410:8:65",
                              "stateMutability": "payable",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 11168,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7410:23:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7379:54:65"
                      },
                      {
                        "assignments": [
                          11171
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11171,
                            "mutability": "mutable",
                            "name": "proxy",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 11237,
                            "src": "7440:52:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938",
                              "typeString": "contract InitializableImmutableAdminUpgradeabilityProxy"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 11170,
                              "name": "InitializableImmutableAdminUpgradeabilityProxy",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 15938,
                              "src": "7440:46:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938",
                                "typeString": "contract InitializableImmutableAdminUpgradeabilityProxy"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11175,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11173,
                              "name": "proxyAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11162,
                              "src": "7548:12:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 11172,
                            "name": "InitializableImmutableAdminUpgradeabilityProxy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15938,
                            "src": "7501:46:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938_$",
                              "typeString": "type(contract InitializableImmutableAdminUpgradeabilityProxy)"
                            }
                          },
                          "id": 11174,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7501:60:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938",
                            "typeString": "contract InitializableImmutableAdminUpgradeabilityProxy"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7440:121:65"
                      },
                      {
                        "assignments": [
                          11177
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11177,
                            "mutability": "mutable",
                            "name": "params",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 11237,
                            "src": "7567:19:65",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 11176,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "7567:5:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11186,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "696e697469616c697a65286164647265737329",
                              "id": 11180,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7613:21:65",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c4d66de8473e8f74cb05df264ee8262da16b56717ef1f05d73bfdcea3adc85e5",
                                "typeString": "literal_string \"initialize(address)\""
                              },
                              "value": "initialize(address)"
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 11183,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "7644:4:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LendingPoolAddressesProvider_$11253",
                                    "typeString": "contract LendingPoolAddressesProvider"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_LendingPoolAddressesProvider_$11253",
                                    "typeString": "contract LendingPoolAddressesProvider"
                                  }
                                ],
                                "id": 11182,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7636:7:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 11181,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7636:7:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 11184,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7636:13:65",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c4d66de8473e8f74cb05df264ee8262da16b56717ef1f05d73bfdcea3adc85e5",
                                "typeString": "literal_string \"initialize(address)\""
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 11178,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "7589:3:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 11179,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodeWithSignature",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7589:23:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (string memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 11185,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7589:61:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7567:83:65"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          },
                          "id": 11192,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11187,
                            "name": "proxyAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11162,
                            "src": "7661:12:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 11190,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7685:1:65",
                                "subdenomination": null,
                                "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": 11189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7677:7:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 11188,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "7677:7:65",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 11191,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7677:10:65",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "7661:26:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 11235,
                          "nodeType": "Block",
                          "src": "7911:57:65",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 11231,
                                    "name": "newAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11158,
                                    "src": "7942:10:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 11232,
                                    "name": "params",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11177,
                                    "src": "7954:6:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 11228,
                                    "name": "proxy",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11171,
                                    "src": "7919:5:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938",
                                      "typeString": "contract InitializableImmutableAdminUpgradeabilityProxy"
                                    }
                                  },
                                  "id": 11230,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "upgradeToAndCall",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15886,
                                  "src": "7919:22:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,bytes memory) payable external"
                                  }
                                },
                                "id": 11233,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7919:42:65",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 11234,
                              "nodeType": "ExpressionStatement",
                              "src": "7919:42:65"
                            }
                          ]
                        },
                        "id": 11236,
                        "nodeType": "IfStatement",
                        "src": "7657:311:65",
                        "trueBody": {
                          "id": 11227,
                          "nodeType": "Block",
                          "src": "7689:216:65",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 11201,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 11193,
                                  "name": "proxy",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11171,
                                  "src": "7697:5:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938",
                                    "typeString": "contract InitializableImmutableAdminUpgradeabilityProxy"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 11198,
                                          "name": "this",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -28,
                                          "src": "7764:4:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_LendingPoolAddressesProvider_$11253",
                                            "typeString": "contract LendingPoolAddressesProvider"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_LendingPoolAddressesProvider_$11253",
                                            "typeString": "contract LendingPoolAddressesProvider"
                                          }
                                        ],
                                        "id": 11197,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "7756:7:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 11196,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "7756:7:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 11199,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7756:13:65",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 11195,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "NewExpression",
                                    "src": "7705:50:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938_$",
                                      "typeString": "function (address) returns (contract InitializableImmutableAdminUpgradeabilityProxy)"
                                    },
                                    "typeName": {
                                      "contractScope": null,
                                      "id": 11194,
                                      "name": "InitializableImmutableAdminUpgradeabilityProxy",
                                      "nodeType": "UserDefinedTypeName",
                                      "referencedDeclaration": 15938,
                                      "src": "7709:46:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938",
                                        "typeString": "contract InitializableImmutableAdminUpgradeabilityProxy"
                                      }
                                    }
                                  },
                                  "id": 11200,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7705:65:65",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938",
                                    "typeString": "contract InitializableImmutableAdminUpgradeabilityProxy"
                                  }
                                },
                                "src": "7697:73:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938",
                                  "typeString": "contract InitializableImmutableAdminUpgradeabilityProxy"
                                }
                              },
                              "id": 11202,
                              "nodeType": "ExpressionStatement",
                              "src": "7697:73:65"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 11206,
                                    "name": "newAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11158,
                                    "src": "7795:10:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 11207,
                                    "name": "params",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11177,
                                    "src": "7807:6:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 11203,
                                    "name": "proxy",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11171,
                                    "src": "7778:5:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938",
                                      "typeString": "contract InitializableImmutableAdminUpgradeabilityProxy"
                                    }
                                  },
                                  "id": 11205,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "initialize",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4921,
                                  "src": "7778:16:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,bytes memory) payable external"
                                  }
                                },
                                "id": 11208,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7778:36:65",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 11209,
                              "nodeType": "ExpressionStatement",
                              "src": "7778:36:65"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 11217,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 11210,
                                    "name": "_addresses",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10822,
                                    "src": "7822:10:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                      "typeString": "mapping(bytes32 => address)"
                                    }
                                  },
                                  "id": 11212,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 11211,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11156,
                                    "src": "7833:2:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7822:14:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 11215,
                                      "name": "proxy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11171,
                                      "src": "7847:5:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938",
                                        "typeString": "contract InitializableImmutableAdminUpgradeabilityProxy"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938",
                                        "typeString": "contract InitializableImmutableAdminUpgradeabilityProxy"
                                      }
                                    ],
                                    "id": 11214,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "7839:7:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 11213,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7839:7:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 11216,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7839:14:65",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "7822:31:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 11218,
                              "nodeType": "ExpressionStatement",
                              "src": "7822:31:65"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 11220,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11156,
                                    "src": "7879:2:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 11223,
                                        "name": "proxy",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11171,
                                        "src": "7891:5:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938",
                                          "typeString": "contract InitializableImmutableAdminUpgradeabilityProxy"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938",
                                          "typeString": "contract InitializableImmutableAdminUpgradeabilityProxy"
                                        }
                                      ],
                                      "id": 11222,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7883:7:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 11221,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7883:7:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 11224,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7883:14:65",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "id": 11219,
                                  "name": "ProxyCreated",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6507,
                                  "src": "7866:12:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                                    "typeString": "function (bytes32,address)"
                                  }
                                },
                                "id": 11225,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7866:32:65",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 11226,
                              "nodeType": "EmitStatement",
                              "src": "7861:37:65"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11154,
                    "nodeType": "StructuredDocumentation",
                    "src": "6733:575:65",
                    "text": " @dev Internal function to update the implementation of a specific proxied component of the protocol\n - If there is no proxy registered in the given `id`, it creates the proxy setting `newAdress`\n   as implementation and calls the initialize() function on the proxy\n - If there is already a proxy registered, it just updates the implementation to `newAddress` and\n   calls the initialize() function via upgradeToAndCall() in the proxy\n @param id The id of the proxy to be updated\n @param newAddress The address of the new implementation*"
                  },
                  "id": 11238,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_updateImpl",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 11159,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11156,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11238,
                        "src": "7332:10:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 11155,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7332:7:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11158,
                        "mutability": "mutable",
                        "name": "newAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11238,
                        "src": "7344:18:65",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11157,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7344:7:65",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7331:32:65"
                  },
                  "returnParameters": {
                    "id": 11160,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7373:0:65"
                  },
                  "scope": 11253,
                  "src": "7311:661:65",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11251,
                    "nodeType": "Block",
                    "src": "8031:63:65",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 11243,
                            "name": "_marketId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10818,
                            "src": "8037:9:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 11244,
                            "name": "marketId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11240,
                            "src": "8049:8:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "8037:20:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 11246,
                        "nodeType": "ExpressionStatement",
                        "src": "8037:20:65"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11248,
                              "name": "marketId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11240,
                              "src": "8080:8:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 11247,
                            "name": "MarketIdSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6473,
                            "src": "8068:11:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory)"
                            }
                          },
                          "id": 11249,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8068:21:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11250,
                        "nodeType": "EmitStatement",
                        "src": "8063:26:65"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 11252,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setMarketId",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 11241,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11240,
                        "mutability": "mutable",
                        "name": "marketId",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11252,
                        "src": "7998:22:65",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 11239,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "7998:6:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7997:24:65"
                  },
                  "returnParameters": {
                    "id": 11242,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8031:0:65"
                  },
                  "scope": 11253,
                  "src": "7976:118:65",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 11254,
              "src": "771:7325:65"
            }
          ],
          "src": "37:8060:65"
        },
        "id": 65
      },
      "contracts/protocol/configuration/LendingPoolAddressesProviderRegistry.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/configuration/LendingPoolAddressesProviderRegistry.sol",
          "exportedSymbols": {
            "LendingPoolAddressesProviderRegistry": [
              11452
            ]
          },
          "id": 11453,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 11255,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:66"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/Ownable.sol",
              "file": "../../dependencies/openzeppelin/contracts/Ownable.sol",
              "id": 11257,
              "nodeType": "ImportDirective",
              "scope": 11453,
              "sourceUnit": 4144,
              "src": "62:78:66",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11256,
                    "name": "Ownable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPoolAddressesProviderRegistry.sol",
              "file": "../../interfaces/ILendingPoolAddressesProviderRegistry.sol",
              "id": 11259,
              "nodeType": "ImportDirective",
              "scope": 11453,
              "sourceUnit": 6655,
              "src": "141:117:66",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11258,
                    "name": "ILendingPoolAddressesProviderRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "152:37:66",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/helpers/Errors.sol",
              "file": "../libraries/helpers/Errors.sol",
              "id": 11261,
              "nodeType": "ImportDirective",
              "scope": 11453,
              "sourceUnit": 17240,
              "src": "259:55:66",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11260,
                    "name": "Errors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "267:6:66",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 11263,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4143,
                    "src": "773:7:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$4143",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 11264,
                  "nodeType": "InheritanceSpecifier",
                  "src": "773:7:66"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 11265,
                    "name": "ILendingPoolAddressesProviderRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6654,
                    "src": "782:37:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPoolAddressesProviderRegistry_$6654",
                      "typeString": "contract ILendingPoolAddressesProviderRegistry"
                    }
                  },
                  "id": 11266,
                  "nodeType": "InheritanceSpecifier",
                  "src": "782:37:66"
                }
              ],
              "contractDependencies": [
                3427,
                4143,
                6654
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 11262,
                "nodeType": "StructuredDocumentation",
                "src": "316:407:66",
                "text": " @title LendingPoolAddressesProviderRegistry contract\n @dev Main registry of LendingPoolAddressesProvider of multiple Aave protocol's markets\n - Used for indexing purposes of Aave protocol's markets\n - The id assigned to a LendingPoolAddressesProvider refers to the market it is connected with,\n   for example with `0` for the Aave main market and `1` for the next created\n @author Aave*"
              },
              "fullyImplemented": true,
              "id": 11452,
              "linearizedBaseContracts": [
                11452,
                6654,
                4143,
                3427
              ],
              "name": "LendingPoolAddressesProviderRegistry",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 11270,
                  "mutability": "mutable",
                  "name": "_addressesProviders",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11452,
                  "src": "824:55:66",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 11269,
                    "keyType": {
                      "id": 11267,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "832:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "824:27:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 11268,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "843:7:66",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 11273,
                  "mutability": "mutable",
                  "name": "_addressesProvidersList",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11452,
                  "src": "883:41:66",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 11271,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "883:7:66",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 11272,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "883:9:66",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "baseFunctions": [
                    6634
                  ],
                  "body": {
                    "id": 11335,
                    "nodeType": "Block",
                    "src": "1177:408:66",
                    "statements": [
                      {
                        "assignments": [
                          11285
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11285,
                            "mutability": "mutable",
                            "name": "addressesProvidersList",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 11335,
                            "src": "1183:39:66",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 11283,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1183:7:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 11284,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "1183:9:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11287,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 11286,
                          "name": "_addressesProvidersList",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11273,
                          "src": "1225:23:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                            "typeString": "address[] storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1183:65:66"
                      },
                      {
                        "assignments": [
                          11289
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11289,
                            "mutability": "mutable",
                            "name": "maxLength",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 11335,
                            "src": "1255:17:66",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11288,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1255:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11292,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 11290,
                            "name": "addressesProvidersList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11285,
                            "src": "1275:22:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 11291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1275:29:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1255:49:66"
                      },
                      {
                        "assignments": [
                          11297
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11297,
                            "mutability": "mutable",
                            "name": "activeProviders",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 11335,
                            "src": "1311:32:66",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 11295,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1311:7:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 11296,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "1311:9:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11303,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11301,
                              "name": "maxLength",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11289,
                              "src": "1360:9:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 11300,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "1346:13:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 11298,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1350:7:66",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 11299,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "1350:9:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 11302,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1346:24:66",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1311:59:66"
                      },
                      {
                        "body": {
                          "id": 11331,
                          "nodeType": "Block",
                          "src": "1417:135:66",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11320,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 11314,
                                    "name": "_addressesProviders",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11270,
                                    "src": "1429:19:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 11318,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 11315,
                                      "name": "addressesProvidersList",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11285,
                                      "src": "1449:22:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 11317,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 11316,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11305,
                                      "src": "1472:1:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1449:25:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1429:46:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 11319,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1478:1:66",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "1429:50:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 11330,
                              "nodeType": "IfStatement",
                              "src": "1425:121:66",
                              "trueBody": {
                                "id": 11329,
                                "nodeType": "Block",
                                "src": "1481:65:66",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11327,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 11321,
                                          "name": "activeProviders",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11297,
                                          "src": "1491:15:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                            "typeString": "address[] memory"
                                          }
                                        },
                                        "id": 11323,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 11322,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11305,
                                          "src": "1507:1:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "1491:18:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 11324,
                                          "name": "addressesProvidersList",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11285,
                                          "src": "1512:22:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                            "typeString": "address[] memory"
                                          }
                                        },
                                        "id": 11326,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 11325,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11305,
                                          "src": "1535:1:66",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "1512:25:66",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "1491:46:66",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 11328,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1491:46:66"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11310,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11308,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11305,
                            "src": "1397:1:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 11309,
                            "name": "maxLength",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11289,
                            "src": "1401:9:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1397:13:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11332,
                        "initializationExpression": {
                          "assignments": [
                            11305
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 11305,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 11332,
                              "src": "1382:9:66",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 11304,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1382:7:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 11307,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 11306,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1394:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1382:13:66"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 11312,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "1412:3:66",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 11311,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11305,
                              "src": "1412:1:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11313,
                          "nodeType": "ExpressionStatement",
                          "src": "1412:3:66"
                        },
                        "nodeType": "ForStatement",
                        "src": "1377:175:66"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11333,
                          "name": "activeProviders",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11297,
                          "src": "1565:15:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "functionReturnParameters": 11280,
                        "id": 11334,
                        "nodeType": "Return",
                        "src": "1558:22:66"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11274,
                    "nodeType": "StructuredDocumentation",
                    "src": "929:158:66",
                    "text": " @dev Returns the list of registered addresses provider\n @return The list of addresses provider, potentially containing address(0) elements*"
                  },
                  "functionSelector": "365ccbbf",
                  "id": 11336,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAddressesProvidersList",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11276,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1141:8:66"
                  },
                  "parameters": {
                    "id": 11275,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1124:2:66"
                  },
                  "returnParameters": {
                    "id": 11280,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11279,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11336,
                        "src": "1159:16:66",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11277,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1159:7:66",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 11278,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1159:9:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1158:18:66"
                  },
                  "scope": 11452,
                  "src": "1090:495:66",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6648
                  ],
                  "body": {
                    "id": 11369,
                    "nodeType": "Block",
                    "src": "1912:204:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11350,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 11348,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11341,
                                "src": "1926:2:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 11349,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1932:1:66",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1926:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 11351,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "1935:6:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 11352,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "LPAPR_INVALID_ADDRESSES_PROVIDER_ID",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17209,
                              "src": "1935:42:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 11347,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1918:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11353,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1918:60:66",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11354,
                        "nodeType": "ExpressionStatement",
                        "src": "1918:60:66"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11359,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 11355,
                              "name": "_addressesProviders",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11270,
                              "src": "1985:19:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 11357,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 11356,
                              "name": "provider",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11339,
                              "src": "2005:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1985:29:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 11358,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11341,
                            "src": "2017:2:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1985:34:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11360,
                        "nodeType": "ExpressionStatement",
                        "src": "1985:34:66"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11362,
                              "name": "provider",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11339,
                              "src": "2054:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 11361,
                            "name": "_addToAddressesProvidersList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11451,
                            "src": "2025:28:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 11363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2025:38:66",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11364,
                        "nodeType": "ExpressionStatement",
                        "src": "2025:38:66"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11366,
                              "name": "provider",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11339,
                              "src": "2102:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 11365,
                            "name": "AddressesProviderRegistered",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6624,
                            "src": "2074:27:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 11367,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2074:37:66",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11368,
                        "nodeType": "EmitStatement",
                        "src": "2069:42:66"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11337,
                    "nodeType": "StructuredDocumentation",
                    "src": "1589:227:66",
                    "text": " @dev Registers an addresses provider\n @param provider The address of the new LendingPoolAddressesProvider\n @param id The id for the new LendingPoolAddressesProvider, referring to the market it belongs to*"
                  },
                  "functionSelector": "d258191e",
                  "id": 11370,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 11345,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 11344,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "1902:9:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1902:9:66"
                    }
                  ],
                  "name": "registerAddressesProvider",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11343,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1893:8:66"
                  },
                  "parameters": {
                    "id": 11342,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11339,
                        "mutability": "mutable",
                        "name": "provider",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11370,
                        "src": "1854:16:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11338,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1854:7:66",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11341,
                        "mutability": "mutable",
                        "name": "id",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11370,
                        "src": "1872:10:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11340,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1872:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1853:30:66"
                  },
                  "returnParameters": {
                    "id": 11346,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1912:0:66"
                  },
                  "scope": 11452,
                  "src": "1819:297:66",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6653
                  ],
                  "body": {
                    "id": 11399,
                    "nodeType": "Block",
                    "src": "2374:180:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11384,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 11380,
                                  "name": "_addressesProviders",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11270,
                                  "src": "2388:19:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 11382,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 11381,
                                  "name": "provider",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11373,
                                  "src": "2408:8:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2388:29:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 11383,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2420:1:66",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2388:33:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 11385,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "2423:6:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 11386,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "LPAPR_PROVIDER_NOT_REGISTERED",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17119,
                              "src": "2423:36:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 11379,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2380:7:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2380:80:66",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11388,
                        "nodeType": "ExpressionStatement",
                        "src": "2380:80:66"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11393,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 11389,
                              "name": "_addressesProviders",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11270,
                              "src": "2466:19:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 11391,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 11390,
                              "name": "provider",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11373,
                              "src": "2486:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2466:29:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 11392,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2498:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2466:33:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11394,
                        "nodeType": "ExpressionStatement",
                        "src": "2466:33:66"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11396,
                              "name": "provider",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11373,
                              "src": "2540:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 11395,
                            "name": "AddressesProviderUnregistered",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6628,
                            "src": "2510:29:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 11397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2510:39:66",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11398,
                        "nodeType": "EmitStatement",
                        "src": "2505:44:66"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11371,
                    "nodeType": "StructuredDocumentation",
                    "src": "2120:168:66",
                    "text": " @dev Removes a LendingPoolAddressesProvider from the list of registered addresses provider\n @param provider The LendingPoolAddressesProvider address*"
                  },
                  "functionSelector": "0de26707",
                  "id": 11400,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 11377,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 11376,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "2364:9:66",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2364:9:66"
                    }
                  ],
                  "name": "unregisterAddressesProvider",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11375,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2355:8:66"
                  },
                  "parameters": {
                    "id": 11374,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11373,
                        "mutability": "mutable",
                        "name": "provider",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11400,
                        "src": "2328:16:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11372,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2328:7:66",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2327:18:66"
                  },
                  "returnParameters": {
                    "id": 11378,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2374:0:66"
                  },
                  "scope": 11452,
                  "src": "2291:263:66",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6641
                  ],
                  "body": {
                    "id": 11413,
                    "nodeType": "Block",
                    "src": "2846:56:66",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 11409,
                            "name": "_addressesProviders",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11270,
                            "src": "2859:19:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 11411,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 11410,
                            "name": "addressesProvider",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11403,
                            "src": "2879:17:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2859:38:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 11408,
                        "id": 11412,
                        "nodeType": "Return",
                        "src": "2852:45:66"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11401,
                    "nodeType": "StructuredDocumentation",
                    "src": "2558:158:66",
                    "text": " @dev Returns the id on a registered LendingPoolAddressesProvider\n @return The id or 0 if the LendingPoolAddressesProvider is not registered"
                  },
                  "functionSelector": "d0267be7",
                  "id": 11414,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAddressesProviderIdByAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11405,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2813:8:66"
                  },
                  "parameters": {
                    "id": 11404,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11403,
                        "mutability": "mutable",
                        "name": "addressesProvider",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11414,
                        "src": "2760:25:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11402,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2760:7:66",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2759:27:66"
                  },
                  "returnParameters": {
                    "id": 11408,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11407,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11414,
                        "src": "2835:7:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11406,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2835:7:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2834:9:66"
                  },
                  "scope": 11452,
                  "src": "2719:183:66",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 11450,
                    "nodeType": "Block",
                    "src": "2971:245:66",
                    "statements": [
                      {
                        "assignments": [
                          11420
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11420,
                            "mutability": "mutable",
                            "name": "providersCount",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 11450,
                            "src": "2977:22:66",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11419,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2977:7:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11423,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 11421,
                            "name": "_addressesProvidersList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11273,
                            "src": "3002:23:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 11422,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3002:30:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2977:55:66"
                      },
                      {
                        "body": {
                          "id": 11442,
                          "nodeType": "Block",
                          "src": "3084:83:66",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 11438,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 11434,
                                    "name": "_addressesProvidersList",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11273,
                                    "src": "3096:23:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                      "typeString": "address[] storage ref"
                                    }
                                  },
                                  "id": 11436,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 11435,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11425,
                                    "src": "3120:1:66",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3096:26:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 11437,
                                  "name": "provider",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11416,
                                  "src": "3126:8:66",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3096:38:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 11441,
                              "nodeType": "IfStatement",
                              "src": "3092:69:66",
                              "trueBody": {
                                "id": 11440,
                                "nodeType": "Block",
                                "src": "3136:25:66",
                                "statements": [
                                  {
                                    "expression": null,
                                    "functionReturnParameters": 11418,
                                    "id": 11439,
                                    "nodeType": "Return",
                                    "src": "3146:7:66"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11428,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11425,
                            "src": "3059:1:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 11429,
                            "name": "providersCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11420,
                            "src": "3063:14:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3059:18:66",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11443,
                        "initializationExpression": {
                          "assignments": [
                            11425
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 11425,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 11443,
                              "src": "3044:9:66",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 11424,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3044:7:66",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 11427,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 11426,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3056:1:66",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3044:13:66"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 11432,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "3079:3:66",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 11431,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11425,
                              "src": "3079:1:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11433,
                          "nodeType": "ExpressionStatement",
                          "src": "3079:3:66"
                        },
                        "nodeType": "ForStatement",
                        "src": "3039:128:66"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11447,
                              "name": "provider",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11416,
                              "src": "3202:8:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 11444,
                              "name": "_addressesProvidersList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11273,
                              "src": "3173:23:66",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 11446,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3173:28:66",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 11448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3173:38:66",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11449,
                        "nodeType": "ExpressionStatement",
                        "src": "3173:38:66"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 11451,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_addToAddressesProvidersList",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 11417,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11416,
                        "mutability": "mutable",
                        "name": "provider",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11451,
                        "src": "2944:16:66",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11415,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2944:7:66",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2943:18:66"
                  },
                  "returnParameters": {
                    "id": 11418,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2971:0:66"
                  },
                  "scope": 11452,
                  "src": "2906:310:66",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 11453,
              "src": "724:2494:66"
            }
          ],
          "src": "37:3182:66"
        },
        "id": 66
      },
      "contracts/protocol/lendingpool/DefaultReserveInterestRateStrategy.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/lendingpool/DefaultReserveInterestRateStrategy.sol",
          "exportedSymbols": {
            "DefaultReserveInterestRateStrategy": [
              11937
            ]
          },
          "id": 11938,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 11454,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:67"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeMath.sol",
              "file": "../../dependencies/openzeppelin/contracts/SafeMath.sol",
              "id": 11456,
              "nodeType": "ImportDirective",
              "scope": 11938,
              "sourceUnit": 4497,
              "src": "62:80:67",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11455,
                    "name": "SafeMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:8:67",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IReserveInterestRateStrategy.sol",
              "file": "../../interfaces/IReserveInterestRateStrategy.sol",
              "id": 11458,
              "nodeType": "ImportDirective",
              "scope": 11938,
              "sourceUnit": 6979,
              "src": "143:95:67",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11457,
                    "name": "IReserveInterestRateStrategy",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "151:28:67",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/math/WadRayMath.sol",
              "file": "../libraries/math/WadRayMath.sol",
              "id": 11460,
              "nodeType": "ImportDirective",
              "scope": 11938,
              "sourceUnit": 20494,
              "src": "239:60:67",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11459,
                    "name": "WadRayMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "247:10:67",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/math/PercentageMath.sol",
              "file": "../libraries/math/PercentageMath.sol",
              "id": 11462,
              "nodeType": "ImportDirective",
              "scope": 11938,
              "sourceUnit": 20069,
              "src": "300:68:67",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11461,
                    "name": "PercentageMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "308:14:67",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPoolAddressesProvider.sol",
              "file": "../../interfaces/ILendingPoolAddressesProvider.sol",
              "id": 11464,
              "nodeType": "ImportDirective",
              "scope": 11938,
              "sourceUnit": 6618,
              "src": "369:97:67",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11463,
                    "name": "ILendingPoolAddressesProvider",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "377:29:67",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingRateOracle.sol",
              "file": "../../interfaces/ILendingRateOracle.sol",
              "id": 11466,
              "nodeType": "ImportDirective",
              "scope": 11938,
              "sourceUnit": 6907,
              "src": "467:75:67",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11465,
                    "name": "ILendingRateOracle",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "475:18:67",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
              "file": "../../dependencies/openzeppelin/contracts/IERC20.sol",
              "id": 11468,
              "nodeType": "ImportDirective",
              "scope": 11938,
              "sourceUnit": 4013,
              "src": "543:76:67",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11467,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "551:6:67",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 11470,
                    "name": "IReserveInterestRateStrategy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6978,
                    "src": "1140:28:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IReserveInterestRateStrategy_$6978",
                      "typeString": "contract IReserveInterestRateStrategy"
                    }
                  },
                  "id": 11471,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1140:28:67"
                }
              ],
              "contractDependencies": [
                6978
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 11469,
                "nodeType": "StructuredDocumentation",
                "src": "621:471:67",
                "text": " @title DefaultReserveInterestRateStrategy contract\n @notice Implements the calculation of the interest rates depending on the reserve state\n @dev The model of interest rate is based on 2 slopes, one before the `OPTIMAL_UTILIZATION_RATE`\n point of utilization and another from that one to 100%\n - An instance of this same contract, can't be used across different Aave markets, due to the caching\n   of the LendingPoolAddressesProvider\n @author Aave*"
              },
              "fullyImplemented": true,
              "id": 11937,
              "linearizedBaseContracts": [
                11937,
                6978
              ],
              "name": "DefaultReserveInterestRateStrategy",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 11474,
                  "libraryName": {
                    "contractScope": null,
                    "id": 11472,
                    "name": "WadRayMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20493,
                    "src": "1179:10:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_WadRayMath_$20493",
                      "typeString": "library WadRayMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1173:29:67",
                  "typeName": {
                    "id": 11473,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1194:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 11477,
                  "libraryName": {
                    "contractScope": null,
                    "id": 11475,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4496,
                    "src": "1211:8:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$4496",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1205:27:67",
                  "typeName": {
                    "id": 11476,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1224:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 11480,
                  "libraryName": {
                    "contractScope": null,
                    "id": 11478,
                    "name": "PercentageMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20068,
                    "src": "1241:14:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_PercentageMath_$20068",
                      "typeString": "library PercentageMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1235:33:67",
                  "typeName": {
                    "id": 11479,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1260:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 11481,
                    "nodeType": "StructuredDocumentation",
                    "src": "1272:152:67",
                    "text": " @dev this constant represents the utilization rate at which the pool aims to obtain most competitive borrow rates.\n Expressed in ray*"
                  },
                  "functionSelector": "a15f30ac",
                  "id": 11483,
                  "mutability": "immutable",
                  "name": "OPTIMAL_UTILIZATION_RATE",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11937,
                  "src": "1427:49:67",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11482,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1427:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 11484,
                    "nodeType": "StructuredDocumentation",
                    "src": "1481:216:67",
                    "text": " @dev This constant represents the excess utilization rate above the optimal. It's always equal to\n 1-optimal utilization rate. Added as a constant here for gas optimizations.\n Expressed in ray*"
                  },
                  "functionSelector": "17319873",
                  "id": 11486,
                  "mutability": "immutable",
                  "name": "EXCESS_UTILIZATION_RATE",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11937,
                  "src": "1701:48:67",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11485,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1701:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "c72c4d10",
                  "id": 11488,
                  "mutability": "immutable",
                  "name": "addressesProvider",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11937,
                  "src": "1754:64:67",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                    "typeString": "contract ILendingPoolAddressesProvider"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11487,
                    "name": "ILendingPoolAddressesProvider",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6617,
                    "src": "1754:29:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                      "typeString": "contract ILendingPoolAddressesProvider"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 11490,
                  "mutability": "immutable",
                  "name": "_baseVariableBorrowRate",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11937,
                  "src": "1898:50:67",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11489,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1898:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11492,
                  "mutability": "immutable",
                  "name": "_variableRateSlope1",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11937,
                  "src": "2071:46:67",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11491,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2071:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11494,
                  "mutability": "immutable",
                  "name": "_variableRateSlope2",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11937,
                  "src": "2231:46:67",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11493,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2231:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11496,
                  "mutability": "immutable",
                  "name": "_stableRateSlope1",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11937,
                  "src": "2398:44:67",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11495,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2398:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11498,
                  "mutability": "immutable",
                  "name": "_stableRateSlope2",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11937,
                  "src": "2554:44:67",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11497,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2554:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11552,
                    "nodeType": "Block",
                    "src": "2866:400:67",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11517,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 11515,
                            "name": "OPTIMAL_UTILIZATION_RATE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11483,
                            "src": "2872:24:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 11516,
                            "name": "optimalUtilizationRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11502,
                            "src": "2899:22:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2872:49:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11518,
                        "nodeType": "ExpressionStatement",
                        "src": "2872:49:67"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11526,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 11519,
                            "name": "EXCESS_UTILIZATION_RATE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11486,
                            "src": "2927:23:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 11524,
                                "name": "optimalUtilizationRate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11502,
                                "src": "2974:22:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 11520,
                                    "name": "WadRayMath",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20493,
                                    "src": "2953:10:67",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_WadRayMath_$20493_$",
                                      "typeString": "type(library WadRayMath)"
                                    }
                                  },
                                  "id": 11521,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "ray",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20207,
                                  "src": "2953:14:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                    "typeString": "function () pure returns (uint256)"
                                  }
                                },
                                "id": 11522,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2953:16:67",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11523,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4346,
                              "src": "2953:20:67",
                              "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": 11525,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2953:44:67",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2927:70:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11527,
                        "nodeType": "ExpressionStatement",
                        "src": "2927:70:67"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11530,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 11528,
                            "name": "addressesProvider",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11488,
                            "src": "3003:17:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                              "typeString": "contract ILendingPoolAddressesProvider"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 11529,
                            "name": "provider",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11500,
                            "src": "3023:8:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                              "typeString": "contract ILendingPoolAddressesProvider"
                            }
                          },
                          "src": "3003:28:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                            "typeString": "contract ILendingPoolAddressesProvider"
                          }
                        },
                        "id": 11531,
                        "nodeType": "ExpressionStatement",
                        "src": "3003:28:67"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 11532,
                            "name": "_baseVariableBorrowRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11490,
                            "src": "3037:23:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 11533,
                            "name": "baseVariableBorrowRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11504,
                            "src": "3063:22:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3037:48:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11535,
                        "nodeType": "ExpressionStatement",
                        "src": "3037:48:67"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11538,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 11536,
                            "name": "_variableRateSlope1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11492,
                            "src": "3091:19:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 11537,
                            "name": "variableRateSlope1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11506,
                            "src": "3113:18:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3091:40:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11539,
                        "nodeType": "ExpressionStatement",
                        "src": "3091:40:67"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 11540,
                            "name": "_variableRateSlope2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11494,
                            "src": "3137:19:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 11541,
                            "name": "variableRateSlope2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11508,
                            "src": "3159:18:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3137:40:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11543,
                        "nodeType": "ExpressionStatement",
                        "src": "3137:40:67"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11546,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 11544,
                            "name": "_stableRateSlope1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11496,
                            "src": "3183:17:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 11545,
                            "name": "stableRateSlope1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11510,
                            "src": "3203:16:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3183:36:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11547,
                        "nodeType": "ExpressionStatement",
                        "src": "3183:36:67"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11550,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 11548,
                            "name": "_stableRateSlope2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11498,
                            "src": "3225:17:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 11549,
                            "name": "stableRateSlope2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11512,
                            "src": "3245:16:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3225:36:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11551,
                        "nodeType": "ExpressionStatement",
                        "src": "3225:36:67"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 11553,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 11513,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11500,
                        "mutability": "mutable",
                        "name": "provider",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11553,
                        "src": "2620:38:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                          "typeString": "contract ILendingPoolAddressesProvider"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 11499,
                          "name": "ILendingPoolAddressesProvider",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6617,
                          "src": "2620:29:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                            "typeString": "contract ILendingPoolAddressesProvider"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11502,
                        "mutability": "mutable",
                        "name": "optimalUtilizationRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11553,
                        "src": "2664:30:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11501,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2664:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11504,
                        "mutability": "mutable",
                        "name": "baseVariableBorrowRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11553,
                        "src": "2700:30:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11503,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2700:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11506,
                        "mutability": "mutable",
                        "name": "variableRateSlope1",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11553,
                        "src": "2736:26:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11505,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2736:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11508,
                        "mutability": "mutable",
                        "name": "variableRateSlope2",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11553,
                        "src": "2768:26:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11507,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2768:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11510,
                        "mutability": "mutable",
                        "name": "stableRateSlope1",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11553,
                        "src": "2800:24:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11509,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2800:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11512,
                        "mutability": "mutable",
                        "name": "stableRateSlope2",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11553,
                        "src": "2830:24:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11511,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2830:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2614:244:67"
                  },
                  "returnParameters": {
                    "id": 11514,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2866:0:67"
                  },
                  "scope": 11937,
                  "src": "2603:663:67",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 11560,
                    "nodeType": "Block",
                    "src": "3332:37:67",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11558,
                          "name": "_variableRateSlope1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11492,
                          "src": "3345:19:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 11557,
                        "id": 11559,
                        "nodeType": "Return",
                        "src": "3338:26:67"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "7b832f58",
                  "id": 11561,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "variableRateSlope1",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 11554,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3297:2:67"
                  },
                  "returnParameters": {
                    "id": 11557,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11556,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11561,
                        "src": "3323:7:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11555,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3323:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3322:9:67"
                  },
                  "scope": 11937,
                  "src": "3270:99:67",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 11568,
                    "nodeType": "Block",
                    "src": "3435:37:67",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11566,
                          "name": "_variableRateSlope2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11494,
                          "src": "3448:19:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 11565,
                        "id": 11567,
                        "nodeType": "Return",
                        "src": "3441:26:67"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "65614f81",
                  "id": 11569,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "variableRateSlope2",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 11562,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3400:2:67"
                  },
                  "returnParameters": {
                    "id": 11565,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11564,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11569,
                        "src": "3426:7:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11563,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3426:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3425:9:67"
                  },
                  "scope": 11937,
                  "src": "3373:99:67",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 11576,
                    "nodeType": "Block",
                    "src": "3536:35:67",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11574,
                          "name": "_stableRateSlope1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11496,
                          "src": "3549:17:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 11573,
                        "id": 11575,
                        "nodeType": "Return",
                        "src": "3542:24:67"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "0bdf953f",
                  "id": 11577,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "stableRateSlope1",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 11570,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3501:2:67"
                  },
                  "returnParameters": {
                    "id": 11573,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11572,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11577,
                        "src": "3527:7:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11571,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3527:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3526:9:67"
                  },
                  "scope": 11937,
                  "src": "3476:95:67",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 11584,
                    "nodeType": "Block",
                    "src": "3635:35:67",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11582,
                          "name": "_stableRateSlope2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11498,
                          "src": "3648:17:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 11581,
                        "id": 11583,
                        "nodeType": "Return",
                        "src": "3641:24:67"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "ccab01a3",
                  "id": 11585,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "stableRateSlope2",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 11578,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3600:2:67"
                  },
                  "returnParameters": {
                    "id": 11581,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11580,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11585,
                        "src": "3626:7:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11579,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3626:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3625:9:67"
                  },
                  "scope": 11937,
                  "src": "3575:95:67",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6926
                  ],
                  "body": {
                    "id": 11593,
                    "nodeType": "Block",
                    "src": "3749:41:67",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11591,
                          "name": "_baseVariableBorrowRate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11490,
                          "src": "3762:23:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 11590,
                        "id": 11592,
                        "nodeType": "Return",
                        "src": "3755:30:67"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "b2589544",
                  "id": 11594,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "baseVariableBorrowRate",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11587,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3722:8:67"
                  },
                  "parameters": {
                    "id": 11586,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3705:2:67"
                  },
                  "returnParameters": {
                    "id": 11590,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11589,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11594,
                        "src": "3740:7:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11588,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3740:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3739:9:67"
                  },
                  "scope": 11937,
                  "src": "3674:116:67",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6931
                  ],
                  "body": {
                    "id": 11608,
                    "nodeType": "Block",
                    "src": "3871:91:67",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11605,
                              "name": "_variableRateSlope2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11494,
                              "src": "3937:19:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 11602,
                                  "name": "_variableRateSlope1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11492,
                                  "src": "3912:19:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 11600,
                                  "name": "_baseVariableBorrowRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11490,
                                  "src": "3884:23:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 11601,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4329,
                                "src": "3884:27:67",
                                "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": 11603,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3884:48:67",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 11604,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4329,
                            "src": "3884:52:67",
                            "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": 11606,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3884:73:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 11599,
                        "id": 11607,
                        "nodeType": "Return",
                        "src": "3877:80:67"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "80031e37",
                  "id": 11609,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getMaxVariableBorrowRate",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11596,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3844:8:67"
                  },
                  "parameters": {
                    "id": 11595,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3827:2:67"
                  },
                  "returnParameters": {
                    "id": 11599,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11598,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11609,
                        "src": "3862:7:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11597,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3862:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3861:9:67"
                  },
                  "scope": 11937,
                  "src": "3794:168:67",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6977
                  ],
                  "body": {
                    "id": 11664,
                    "nodeType": "Block",
                    "src": "5048:388:67",
                    "statements": [
                      {
                        "assignments": [
                          11637
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11637,
                            "mutability": "mutable",
                            "name": "availableLiquidity",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 11664,
                            "src": "5054:26:67",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11636,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5054:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11644,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11642,
                              "name": "aToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11614,
                              "src": "5109:6:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 11639,
                                  "name": "reserve",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11612,
                                  "src": "5090:7:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 11638,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "5083:6:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 11640,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5083:15:67",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 11641,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3951,
                            "src": "5083:25:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 11643,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5083:33:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5054:62:67"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11653,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 11645,
                            "name": "availableLiquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11637,
                            "src": "5149:18:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 11651,
                                "name": "liquidityTaken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11618,
                                "src": "5213:14:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 11648,
                                    "name": "liquidityAdded",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11616,
                                    "src": "5193:14:67",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 11646,
                                    "name": "availableLiquidity",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11637,
                                    "src": "5170:18:67",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 11647,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4329,
                                  "src": "5170:22:67",
                                  "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": 11649,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5170:38:67",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11650,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4346,
                              "src": "5170:42:67",
                              "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": 11652,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5170:58:67",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5149:79:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11654,
                        "nodeType": "ExpressionStatement",
                        "src": "5149:79:67"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11656,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11612,
                              "src": "5280:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 11657,
                              "name": "availableLiquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11637,
                              "src": "5297:18:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 11658,
                              "name": "totalStableDebt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11620,
                              "src": "5325:15:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 11659,
                              "name": "totalVariableDebt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11622,
                              "src": "5350:17:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 11660,
                              "name": "averageStableBorrowRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11624,
                              "src": "5377:23:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 11661,
                              "name": "reserveFactor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11626,
                              "src": "5410:13:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 11655,
                            "name": "calculateInterestRates",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11876,
                            "src": "5248:22:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,uint256,uint256,uint256,uint256,uint256) view returns (uint256,uint256,uint256)"
                            }
                          },
                          "id": 11662,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5248:183:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 11635,
                        "id": 11663,
                        "nodeType": "Return",
                        "src": "5235:196:67"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11610,
                    "nodeType": "StructuredDocumentation",
                    "src": "3966:721:67",
                    "text": " @dev Calculates the interest rates depending on the reserve's state and configurations\n @param reserve The address of the reserve\n @param liquidityAdded The liquidity added during the operation\n @param liquidityTaken The liquidity taken during the operation\n @param totalStableDebt The total borrowed from the reserve a stable rate\n @param totalVariableDebt The total borrowed from the reserve at a variable rate\n @param averageStableBorrowRate The weighted average of all the stable rate loans\n @param reserveFactor The reserve portion of the interest that goes to the treasury of the market\n @return The liquidity rate, the stable borrow rate and the variable borrow rate*"
                  },
                  "functionSelector": "29db497d",
                  "id": 11665,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "calculateInterestRates",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11628,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4973:8:67"
                  },
                  "parameters": {
                    "id": 11627,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11612,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11665,
                        "src": "4727:15:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11611,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4727:7:67",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11614,
                        "mutability": "mutable",
                        "name": "aToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11665,
                        "src": "4748:14:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11613,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4748:7:67",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11616,
                        "mutability": "mutable",
                        "name": "liquidityAdded",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11665,
                        "src": "4768:22:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11615,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4768:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11618,
                        "mutability": "mutable",
                        "name": "liquidityTaken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11665,
                        "src": "4796:22:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11617,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4796:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11620,
                        "mutability": "mutable",
                        "name": "totalStableDebt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11665,
                        "src": "4824:23:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11619,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4824:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11622,
                        "mutability": "mutable",
                        "name": "totalVariableDebt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11665,
                        "src": "4853:25:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11621,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4853:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11624,
                        "mutability": "mutable",
                        "name": "averageStableBorrowRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11665,
                        "src": "4884:31:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11623,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4884:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11626,
                        "mutability": "mutable",
                        "name": "reserveFactor",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11665,
                        "src": "4921:21:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11625,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4921:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4721:225:67"
                  },
                  "returnParameters": {
                    "id": 11635,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11630,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11665,
                        "src": "5002:7:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11629,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5002:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11632,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11665,
                        "src": "5017:7:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11631,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5017:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11634,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11665,
                        "src": "5032:7:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11633,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5032:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4994:51:67"
                  },
                  "scope": 11937,
                  "src": "4690:746:67",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "canonicalName": "DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars",
                  "id": 11676,
                  "members": [
                    {
                      "constant": false,
                      "id": 11667,
                      "mutability": "mutable",
                      "name": "totalDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11676,
                      "src": "5480:17:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11666,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5480:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11669,
                      "mutability": "mutable",
                      "name": "currentVariableBorrowRate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11676,
                      "src": "5503:33:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11668,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5503:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11671,
                      "mutability": "mutable",
                      "name": "currentStableBorrowRate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11676,
                      "src": "5542:31:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11670,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5542:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11673,
                      "mutability": "mutable",
                      "name": "currentLiquidityRate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11676,
                      "src": "5579:28:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11672,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5579:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11675,
                      "mutability": "mutable",
                      "name": "utilizationRate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11676,
                      "src": "5613:23:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11674,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5613:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "CalcInterestRatesLocalVars",
                  "nodeType": "StructDefinition",
                  "scope": 11937,
                  "src": "5440:201:67",
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    6952
                  ],
                  "body": {
                    "id": 11875,
                    "nodeType": "Block",
                    "src": "6817:1789:67",
                    "statements": [
                      {
                        "assignments": [
                          11700
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11700,
                            "mutability": "mutable",
                            "name": "vars",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 11875,
                            "src": "6823:38:67",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_CalcInterestRatesLocalVars_$11676_memory_ptr",
                              "typeString": "struct DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 11699,
                              "name": "CalcInterestRatesLocalVars",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 11676,
                              "src": "6823:26:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CalcInterestRatesLocalVars_$11676_storage_ptr",
                                "typeString": "struct DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11701,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6823:38:67"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11709,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 11702,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11700,
                              "src": "6868:4:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CalcInterestRatesLocalVars_$11676_memory_ptr",
                                "typeString": "struct DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars memory"
                              }
                            },
                            "id": 11704,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "totalDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11667,
                            "src": "6868:14:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 11707,
                                "name": "totalVariableDebt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11685,
                                "src": "6905:17:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 11705,
                                "name": "totalStableDebt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11683,
                                "src": "6885:15:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11706,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4329,
                              "src": "6885:19:67",
                              "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": 11708,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6885:38:67",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6868:55:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11710,
                        "nodeType": "ExpressionStatement",
                        "src": "6868:55:67"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11715,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 11711,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11700,
                              "src": "6929:4:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CalcInterestRatesLocalVars_$11676_memory_ptr",
                                "typeString": "struct DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars memory"
                              }
                            },
                            "id": 11713,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "currentVariableBorrowRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11669,
                            "src": "6929:30:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 11714,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6962:1:67",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6929:34:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11716,
                        "nodeType": "ExpressionStatement",
                        "src": "6929:34:67"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11721,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 11717,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11700,
                              "src": "6969:4:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CalcInterestRatesLocalVars_$11676_memory_ptr",
                                "typeString": "struct DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars memory"
                              }
                            },
                            "id": 11719,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "currentStableBorrowRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11671,
                            "src": "6969:28:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 11720,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7000:1:67",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6969:32:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11722,
                        "nodeType": "ExpressionStatement",
                        "src": "6969:32:67"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 11723,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11700,
                              "src": "7007:4:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CalcInterestRatesLocalVars_$11676_memory_ptr",
                                "typeString": "struct DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars memory"
                              }
                            },
                            "id": 11725,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "currentLiquidityRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11673,
                            "src": "7007:25:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 11726,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7035:1:67",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7007:29:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11728,
                        "nodeType": "ExpressionStatement",
                        "src": "7007:29:67"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11747,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 11729,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11700,
                              "src": "7043:4:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CalcInterestRatesLocalVars_$11676_memory_ptr",
                                "typeString": "struct DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars memory"
                              }
                            },
                            "id": 11731,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "utilizationRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11675,
                            "src": "7043:20:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11735,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 11732,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11700,
                                  "src": "7066:4:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CalcInterestRatesLocalVars_$11676_memory_ptr",
                                    "typeString": "struct DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars memory"
                                  }
                                },
                                "id": 11733,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 11667,
                                "src": "7066:14:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 11734,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7084:1:67",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "7066:19:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 11742,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11700,
                                        "src": "7149:4:67",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CalcInterestRatesLocalVars_$11676_memory_ptr",
                                          "typeString": "struct DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars memory"
                                        }
                                      },
                                      "id": 11743,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "totalDebt",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 11667,
                                      "src": "7149:14:67",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11740,
                                      "name": "availableLiquidity",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11681,
                                      "src": "7126:18:67",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 11741,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4329,
                                    "src": "7126:22:67",
                                    "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": 11744,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7126:38:67",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 11737,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11700,
                                    "src": "7104:4:67",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CalcInterestRatesLocalVars_$11676_memory_ptr",
                                      "typeString": "struct DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars memory"
                                    }
                                  },
                                  "id": 11738,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "totalDebt",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 11667,
                                  "src": "7104:14:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 11739,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "rayDiv",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20432,
                                "src": "7104:21:67",
                                "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": 11745,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7104:61:67",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 11746,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "7066:99:67",
                            "trueExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 11736,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7094:1:67",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7043:122:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11748,
                        "nodeType": "ExpressionStatement",
                        "src": "7043:122:67"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11760,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 11749,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11700,
                              "src": "7172:4:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CalcInterestRatesLocalVars_$11676_memory_ptr",
                                "typeString": "struct DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars memory"
                              }
                            },
                            "id": 11751,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "currentStableBorrowRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11671,
                            "src": "7172:28:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 11758,
                                "name": "reserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11679,
                                "src": "7291:7:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 11753,
                                        "name": "addressesProvider",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11488,
                                        "src": "7222:17:67",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                                          "typeString": "contract ILendingPoolAddressesProvider"
                                        }
                                      },
                                      "id": 11754,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "getLendingRateOracle",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6611,
                                      "src": "7222:38:67",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                        "typeString": "function () view external returns (address)"
                                      }
                                    },
                                    "id": 11755,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7222:40:67",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 11752,
                                  "name": "ILendingRateOracle",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6906,
                                  "src": "7203:18:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ILendingRateOracle_$6906_$",
                                    "typeString": "type(contract ILendingRateOracle)"
                                  }
                                },
                                "id": 11756,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7203:60:67",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ILendingRateOracle_$6906",
                                  "typeString": "contract ILendingRateOracle"
                                }
                              },
                              "id": 11757,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getMarketBorrowRate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6897,
                              "src": "7203:87:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 11759,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7203:96:67",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7172:127:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11761,
                        "nodeType": "ExpressionStatement",
                        "src": "7172:127:67"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11765,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 11762,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11700,
                              "src": "7310:4:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CalcInterestRatesLocalVars_$11676_memory_ptr",
                                "typeString": "struct DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars memory"
                              }
                            },
                            "id": 11763,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "utilizationRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11675,
                            "src": "7310:20:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 11764,
                            "name": "OPTIMAL_UTILIZATION_RATE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11483,
                            "src": "7333:24:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7310:47:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 11842,
                          "nodeType": "Block",
                          "src": "7838:342:67",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 11824,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 11809,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11700,
                                    "src": "7846:4:67",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CalcInterestRatesLocalVars_$11676_memory_ptr",
                                      "typeString": "struct DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars memory"
                                    }
                                  },
                                  "id": 11811,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "currentStableBorrowRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 11671,
                                  "src": "7846:28:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 11820,
                                              "name": "OPTIMAL_UTILIZATION_RATE",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 11483,
                                              "src": "7972:24:67",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 11817,
                                                "name": "vars",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 11700,
                                                "src": "7944:4:67",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_CalcInterestRatesLocalVars_$11676_memory_ptr",
                                                  "typeString": "struct DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars memory"
                                                }
                                              },
                                              "id": 11818,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "utilizationRate",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 11675,
                                              "src": "7944:20:67",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 11819,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "rayDiv",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 20432,
                                            "src": "7944:27:67",
                                            "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": 11821,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "7944:53:67",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 11815,
                                          "name": "_stableRateSlope1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11496,
                                          "src": "7919:17:67",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 11816,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "rayMul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 20381,
                                        "src": "7919:24:67",
                                        "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": 11822,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7919:79:67",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 11812,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11700,
                                        "src": "7877:4:67",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CalcInterestRatesLocalVars_$11676_memory_ptr",
                                          "typeString": "struct DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars memory"
                                        }
                                      },
                                      "id": 11813,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "currentStableBorrowRate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 11671,
                                      "src": "7877:28:67",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 11814,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4329,
                                    "src": "7877:32:67",
                                    "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": 11823,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7877:129:67",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7846:160:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11825,
                              "nodeType": "ExpressionStatement",
                              "src": "7846:160:67"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 11840,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 11826,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11700,
                                    "src": "8014:4:67",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CalcInterestRatesLocalVars_$11676_memory_ptr",
                                      "typeString": "struct DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars memory"
                                    }
                                  },
                                  "id": 11828,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "currentVariableBorrowRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 11669,
                                  "src": "8014:30:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 11837,
                                          "name": "OPTIMAL_UTILIZATION_RATE",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11483,
                                          "src": "8140:24:67",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 11834,
                                              "name": "_variableRateSlope1",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 11492,
                                              "src": "8112:19:67",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 11831,
                                                "name": "vars",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 11700,
                                                "src": "8084:4:67",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_CalcInterestRatesLocalVars_$11676_memory_ptr",
                                                  "typeString": "struct DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars memory"
                                                }
                                              },
                                              "id": 11832,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "utilizationRate",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 11675,
                                              "src": "8084:20:67",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 11833,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "rayMul",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 20381,
                                            "src": "8084:27:67",
                                            "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": 11835,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "8084:48:67",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 11836,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "rayDiv",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 20432,
                                        "src": "8084:55:67",
                                        "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": 11838,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8084:81:67",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11829,
                                      "name": "_baseVariableBorrowRate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11490,
                                      "src": "8047:23:67",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 11830,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4329,
                                    "src": "8047:27:67",
                                    "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": 11839,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8047:126:67",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8014:159:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11841,
                              "nodeType": "ExpressionStatement",
                              "src": "8014:159:67"
                            }
                          ]
                        },
                        "id": 11843,
                        "nodeType": "IfStatement",
                        "src": "7306:874:67",
                        "trueBody": {
                          "id": 11808,
                          "nodeType": "Block",
                          "src": "7359:473:67",
                          "statements": [
                            {
                              "assignments": [
                                11767
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 11767,
                                  "mutability": "mutable",
                                  "name": "excessUtilizationRateRatio",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 11808,
                                  "src": "7367:34:67",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 11766,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7367:7:67",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 11776,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 11774,
                                    "name": "EXCESS_UTILIZATION_RATE",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11486,
                                    "src": "7470:23:67",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 11771,
                                        "name": "OPTIMAL_UTILIZATION_RATE",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11483,
                                        "src": "7437:24:67",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 11768,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11700,
                                          "src": "7412:4:67",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_CalcInterestRatesLocalVars_$11676_memory_ptr",
                                            "typeString": "struct DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars memory"
                                          }
                                        },
                                        "id": 11769,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "utilizationRate",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 11675,
                                        "src": "7412:20:67",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 11770,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sub",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4346,
                                      "src": "7412:24:67",
                                      "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": 11772,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7412:50:67",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 11773,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "rayDiv",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20432,
                                  "src": "7412:57:67",
                                  "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": 11775,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7412:82:67",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7367:127:67"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 11791,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 11777,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11700,
                                    "src": "7503:4:67",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CalcInterestRatesLocalVars_$11676_memory_ptr",
                                      "typeString": "struct DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars memory"
                                    }
                                  },
                                  "id": 11779,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "currentStableBorrowRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 11671,
                                  "src": "7503:28:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 11788,
                                          "name": "excessUtilizationRateRatio",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11767,
                                          "src": "7624:26:67",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 11786,
                                          "name": "_stableRateSlope2",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11498,
                                          "src": "7599:17:67",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 11787,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "rayMul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 20381,
                                        "src": "7599:24:67",
                                        "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": 11789,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7599:52:67",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 11783,
                                          "name": "_stableRateSlope1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11496,
                                          "src": "7567:17:67",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 11780,
                                            "name": "vars",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 11700,
                                            "src": "7534:4:67",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_CalcInterestRatesLocalVars_$11676_memory_ptr",
                                              "typeString": "struct DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars memory"
                                            }
                                          },
                                          "id": 11781,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "currentStableBorrowRate",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 11671,
                                          "src": "7534:28:67",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 11782,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "add",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4329,
                                        "src": "7534:32:67",
                                        "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": 11784,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7534:51:67",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 11785,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4329,
                                    "src": "7534:55:67",
                                    "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": 11790,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7534:125:67",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7503:156:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11792,
                              "nodeType": "ExpressionStatement",
                              "src": "7503:156:67"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 11806,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 11793,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11700,
                                    "src": "7668:4:67",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CalcInterestRatesLocalVars_$11676_memory_ptr",
                                      "typeString": "struct DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars memory"
                                    }
                                  },
                                  "id": 11795,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "currentVariableBorrowRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 11669,
                                  "src": "7668:30:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 11803,
                                          "name": "excessUtilizationRateRatio",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11767,
                                          "src": "7790:26:67",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 11801,
                                          "name": "_variableRateSlope2",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11494,
                                          "src": "7763:19:67",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 11802,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "rayMul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 20381,
                                        "src": "7763:26:67",
                                        "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": 11804,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7763:54:67",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 11798,
                                          "name": "_variableRateSlope1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11492,
                                          "src": "7729:19:67",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 11796,
                                          "name": "_baseVariableBorrowRate",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11490,
                                          "src": "7701:23:67",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 11797,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "add",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4329,
                                        "src": "7701:27:67",
                                        "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": 11799,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7701:48:67",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 11800,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4329,
                                    "src": "7701:52:67",
                                    "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": 11805,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7701:124:67",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7668:157:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11807,
                              "nodeType": "ExpressionStatement",
                              "src": "7668:157:67"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11865,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 11844,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11700,
                              "src": "8186:4:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CalcInterestRatesLocalVars_$11676_memory_ptr",
                                "typeString": "struct DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars memory"
                              }
                            },
                            "id": 11846,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "currentLiquidityRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11673,
                            "src": "8186:25:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 11862,
                                    "name": "reserveFactor",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11689,
                                    "src": "8459:13:67",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11859,
                                      "name": "PercentageMath",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20068,
                                      "src": "8422:14:67",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_PercentageMath_$20068_$",
                                        "typeString": "type(library PercentageMath)"
                                      }
                                    },
                                    "id": 11860,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "PERCENTAGE_FACTOR",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 19963,
                                    "src": "8422:32:67",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 11861,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4346,
                                  "src": "8422:36:67",
                                  "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": 11863,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8422:51:67",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11855,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11700,
                                      "src": "8382:4:67",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CalcInterestRatesLocalVars_$11676_memory_ptr",
                                        "typeString": "struct DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars memory"
                                      }
                                    },
                                    "id": 11856,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "utilizationRate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 11675,
                                    "src": "8382:20:67",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 11848,
                                        "name": "totalStableDebt",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11683,
                                        "src": "8243:15:67",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 11849,
                                        "name": "totalVariableDebt",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11685,
                                        "src": "8266:17:67",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 11850,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11700,
                                          "src": "8291:4:67",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_CalcInterestRatesLocalVars_$11676_memory_ptr",
                                            "typeString": "struct DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars memory"
                                          }
                                        },
                                        "id": 11851,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "currentVariableBorrowRate",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 11669,
                                        "src": "8291:39:67",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 11852,
                                        "name": "averageStableBorrowRate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11687,
                                        "src": "8338:23:67",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 11847,
                                      "name": "_getOverallBorrowRate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11936,
                                      "src": "8214:21:67",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 11853,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8214:153:67",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 11854,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "rayMul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20381,
                                  "src": "8214:167:67",
                                  "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": 11857,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8214:189:67",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11858,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "percentMul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20016,
                              "src": "8214:207:67",
                              "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": 11864,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8214:260:67",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8186:288:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11866,
                        "nodeType": "ExpressionStatement",
                        "src": "8186:288:67"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 11867,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11700,
                                "src": "8496:4:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CalcInterestRatesLocalVars_$11676_memory_ptr",
                                  "typeString": "struct DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars memory"
                                }
                              },
                              "id": 11868,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "currentLiquidityRate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11673,
                              "src": "8496:25:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 11869,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11700,
                                "src": "8529:4:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CalcInterestRatesLocalVars_$11676_memory_ptr",
                                  "typeString": "struct DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars memory"
                                }
                              },
                              "id": 11870,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "currentStableBorrowRate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11671,
                              "src": "8529:28:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 11871,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11700,
                                "src": "8565:4:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CalcInterestRatesLocalVars_$11676_memory_ptr",
                                  "typeString": "struct DefaultReserveInterestRateStrategy.CalcInterestRatesLocalVars memory"
                                }
                              },
                              "id": 11872,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "currentVariableBorrowRate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11669,
                              "src": "8565:30:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 11873,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "8488:113:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 11698,
                        "id": 11874,
                        "nodeType": "Return",
                        "src": "8481:120:67"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11677,
                    "nodeType": "StructuredDocumentation",
                    "src": "5645:857:67",
                    "text": " @dev Calculates the interest rates depending on the reserve's state and configurations.\n NOTE This function is kept for compatibility with the previous DefaultInterestRateStrategy interface.\n New protocol implementation uses the new calculateInterestRates() interface\n @param reserve The address of the reserve\n @param availableLiquidity The liquidity available in the corresponding aToken\n @param totalStableDebt The total borrowed from the reserve a stable rate\n @param totalVariableDebt The total borrowed from the reserve at a variable rate\n @param averageStableBorrowRate The weighted average of all the stable rate loans\n @param reserveFactor The reserve portion of the interest that goes to the treasury of the market\n @return The liquidity rate, the stable borrow rate and the variable borrow rate*"
                  },
                  "functionSelector": "9584df28",
                  "id": 11876,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "calculateInterestRates",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11691,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6742:8:67"
                  },
                  "parameters": {
                    "id": 11690,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11679,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11876,
                        "src": "6542:15:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11678,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6542:7:67",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11681,
                        "mutability": "mutable",
                        "name": "availableLiquidity",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11876,
                        "src": "6563:26:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11680,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6563:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11683,
                        "mutability": "mutable",
                        "name": "totalStableDebt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11876,
                        "src": "6595:23:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11682,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6595:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11685,
                        "mutability": "mutable",
                        "name": "totalVariableDebt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11876,
                        "src": "6624:25:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11684,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6624:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11687,
                        "mutability": "mutable",
                        "name": "averageStableBorrowRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11876,
                        "src": "6655:31:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11686,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6655:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11689,
                        "mutability": "mutable",
                        "name": "reserveFactor",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11876,
                        "src": "6692:21:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11688,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6692:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6536:181:67"
                  },
                  "returnParameters": {
                    "id": 11698,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11693,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11876,
                        "src": "6771:7:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11692,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6771:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11695,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11876,
                        "src": "6786:7:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11694,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6786:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11697,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11876,
                        "src": "6801:7:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11696,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6801:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6763:51:67"
                  },
                  "scope": 11937,
                  "src": "6505:2101:67",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 11935,
                    "nodeType": "Block",
                    "src": "9353:450:67",
                    "statements": [
                      {
                        "assignments": [
                          11891
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11891,
                            "mutability": "mutable",
                            "name": "totalDebt",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 11935,
                            "src": "9359:17:67",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11890,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9359:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11896,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11894,
                              "name": "totalVariableDebt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11881,
                              "src": "9399:17:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 11892,
                              "name": "totalStableDebt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11879,
                              "src": "9379:15:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 11893,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4329,
                            "src": "9379:19:67",
                            "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": 11895,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9379:38:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9359:58:67"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11899,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11897,
                            "name": "totalDebt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11891,
                            "src": "9428:9:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 11898,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9441:1:67",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "9428:14:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 11902,
                        "nodeType": "IfStatement",
                        "src": "9424:28:67",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 11900,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9451:1:67",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "functionReturnParameters": 11889,
                          "id": 11901,
                          "nodeType": "Return",
                          "src": "9444:8:67"
                        }
                      },
                      {
                        "assignments": [
                          11904
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11904,
                            "mutability": "mutable",
                            "name": "weightedVariableRate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 11935,
                            "src": "9459:28:67",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11903,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9459:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11911,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11909,
                              "name": "currentVariableBorrowRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11883,
                              "src": "9526:25:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 11905,
                                  "name": "totalVariableDebt",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11881,
                                  "src": "9490:17:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 11906,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "wadToRay",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20492,
                                "src": "9490:26:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 11907,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9490:28:67",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 11908,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayMul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20381,
                            "src": "9490:35:67",
                            "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": 11910,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9490:62:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9459:93:67"
                      },
                      {
                        "assignments": [
                          11913
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11913,
                            "mutability": "mutable",
                            "name": "weightedStableRate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 11935,
                            "src": "9559:26:67",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11912,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9559:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11920,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11918,
                              "name": "currentAverageStableBorrowRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11885,
                              "src": "9622:30:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 11914,
                                  "name": "totalStableDebt",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11879,
                                  "src": "9588:15:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 11915,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "wadToRay",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20492,
                                "src": "9588:24:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 11916,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9588:26:67",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 11917,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayMul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20381,
                            "src": "9588:33:67",
                            "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": 11919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9588:65:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9559:94:67"
                      },
                      {
                        "assignments": [
                          11922
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11922,
                            "mutability": "mutable",
                            "name": "overallBorrowRate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 11935,
                            "src": "9660:25:67",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11921,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9660:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11932,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 11928,
                                  "name": "totalDebt",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11891,
                                  "src": "9746:9:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 11929,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "wadToRay",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20492,
                                "src": "9746:18:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 11930,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9746:20:67",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 11925,
                                  "name": "weightedStableRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11913,
                                  "src": "9719:18:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 11923,
                                  "name": "weightedVariableRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11904,
                                  "src": "9694:20:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 11924,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4329,
                                "src": "9694:24:67",
                                "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": 11926,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9694:44:67",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 11927,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayDiv",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20432,
                            "src": "9694:51:67",
                            "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": 11931,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9694:73:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9660:107:67"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11933,
                          "name": "overallBorrowRate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11922,
                          "src": "9781:17:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 11889,
                        "id": 11934,
                        "nodeType": "Return",
                        "src": "9774:24:67"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11877,
                    "nodeType": "StructuredDocumentation",
                    "src": "8610:530:67",
                    "text": " @dev Calculates the overall borrow rate as the weighted average between the total variable debt and total stable debt\n @param totalStableDebt The total borrowed from the reserve a stable rate\n @param totalVariableDebt The total borrowed from the reserve at a variable rate\n @param currentVariableBorrowRate The current variable borrow rate of the reserve\n @param currentAverageStableBorrowRate The current weighted average of all the stable rate loans\n @return The weighted averaged borrow rate*"
                  },
                  "id": 11936,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getOverallBorrowRate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 11886,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11879,
                        "mutability": "mutable",
                        "name": "totalStableDebt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11936,
                        "src": "9179:23:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11878,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9179:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11881,
                        "mutability": "mutable",
                        "name": "totalVariableDebt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11936,
                        "src": "9208:25:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11880,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9208:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11883,
                        "mutability": "mutable",
                        "name": "currentVariableBorrowRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11936,
                        "src": "9239:33:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11882,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9239:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11885,
                        "mutability": "mutable",
                        "name": "currentAverageStableBorrowRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11936,
                        "src": "9278:38:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11884,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9278:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9173:147:67"
                  },
                  "returnParameters": {
                    "id": 11889,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11888,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11936,
                        "src": "9344:7:67",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11887,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9344:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9343:9:67"
                  },
                  "scope": 11937,
                  "src": "9143:660:67",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 11938,
              "src": "1093:8712:67"
            }
          ],
          "src": "37:9769:67"
        },
        "id": 67
      },
      "contracts/protocol/lendingpool/LendingPool.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/lendingpool/LendingPool.sol",
          "exportedSymbols": {
            "LendingPool": [
              13934
            ]
          },
          "id": 13935,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 11939,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:68"
            },
            {
              "id": 11940,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "61:33:68"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeMath.sol",
              "file": "../../dependencies/openzeppelin/contracts/SafeMath.sol",
              "id": 11942,
              "nodeType": "ImportDirective",
              "scope": 13935,
              "sourceUnit": 4497,
              "src": "96:80:68",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11941,
                    "name": "SafeMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "104:8:68",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
              "file": "../../dependencies/openzeppelin/contracts/IERC20.sol",
              "id": 11944,
              "nodeType": "ImportDirective",
              "scope": 13935,
              "sourceUnit": 4013,
              "src": "177:76:68",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11943,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "185:6:68",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeERC20.sol",
              "file": "../../dependencies/openzeppelin/contracts/SafeERC20.sol",
              "id": 11946,
              "nodeType": "ImportDirective",
              "scope": 13935,
              "sourceUnit": 4301,
              "src": "254:82:68",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11945,
                    "name": "SafeERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "262:9:68",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/Address.sol",
              "file": "../../dependencies/openzeppelin/contracts/Address.sol",
              "id": 11948,
              "nodeType": "ImportDirective",
              "scope": 13935,
              "sourceUnit": 3405,
              "src": "337:78:68",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11947,
                    "name": "Address",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "345:7:68",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPoolAddressesProvider.sol",
              "file": "../../interfaces/ILendingPoolAddressesProvider.sol",
              "id": 11950,
              "nodeType": "ImportDirective",
              "scope": 13935,
              "sourceUnit": 6618,
              "src": "416:97:68",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11949,
                    "name": "ILendingPoolAddressesProvider",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "424:29:68",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IAToken.sol",
              "file": "../../interfaces/IAToken.sol",
              "id": 11952,
              "nodeType": "ImportDirective",
              "scope": 13935,
              "sourceUnit": 5668,
              "src": "514:53:68",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11951,
                    "name": "IAToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "522:7:68",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IVariableDebtToken.sol",
              "file": "../../interfaces/IVariableDebtToken.sol",
              "id": 11954,
              "nodeType": "ImportDirective",
              "scope": 13935,
              "sourceUnit": 7505,
              "src": "568:75:68",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11953,
                    "name": "IVariableDebtToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "576:18:68",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/flashloan/interfaces/IFlashLoanReceiver.sol",
              "file": "../../flashloan/interfaces/IFlashLoanReceiver.sol",
              "id": 11956,
              "nodeType": "ImportDirective",
              "scope": 13935,
              "sourceUnit": 5548,
              "src": "644:85:68",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11955,
                    "name": "IFlashLoanReceiver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "652:18:68",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IPriceOracleGetter.sol",
              "file": "../../interfaces/IPriceOracleGetter.sol",
              "id": 11958,
              "nodeType": "ImportDirective",
              "scope": 13935,
              "sourceUnit": 6919,
              "src": "730:75:68",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11957,
                    "name": "IPriceOracleGetter",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "738:18:68",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IStableDebtToken.sol",
              "file": "../../interfaces/IStableDebtToken.sol",
              "id": 11960,
              "nodeType": "ImportDirective",
              "scope": 13935,
              "sourceUnit": 7134,
              "src": "806:71:68",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11959,
                    "name": "IStableDebtToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "814:16:68",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPool.sol",
              "file": "../../interfaces/ILendingPool.sol",
              "id": 11962,
              "nodeType": "ImportDirective",
              "scope": 13935,
              "sourceUnit": 6467,
              "src": "878:63:68",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11961,
                    "name": "ILendingPool",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "886:12:68",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/aave-upgradeability/VersionedInitializable.sol",
              "file": "../libraries/aave-upgradeability/VersionedInitializable.sol",
              "id": 11964,
              "nodeType": "ImportDirective",
              "scope": 13935,
              "sourceUnit": 16020,
              "src": "942:99:68",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11963,
                    "name": "VersionedInitializable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "950:22:68",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/helpers/Helpers.sol",
              "file": "../libraries/helpers/Helpers.sol",
              "id": 11966,
              "nodeType": "ImportDirective",
              "scope": 13935,
              "sourceUnit": 17305,
              "src": "1042:57:68",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11965,
                    "name": "Helpers",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "1050:7:68",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/helpers/Errors.sol",
              "file": "../libraries/helpers/Errors.sol",
              "id": 11968,
              "nodeType": "ImportDirective",
              "scope": 13935,
              "sourceUnit": 17240,
              "src": "1100:55:68",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11967,
                    "name": "Errors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "1108:6:68",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/math/WadRayMath.sol",
              "file": "../libraries/math/WadRayMath.sol",
              "id": 11970,
              "nodeType": "ImportDirective",
              "scope": 13935,
              "sourceUnit": 20494,
              "src": "1156:60:68",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11969,
                    "name": "WadRayMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "1164:10:68",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/math/PercentageMath.sol",
              "file": "../libraries/math/PercentageMath.sol",
              "id": 11972,
              "nodeType": "ImportDirective",
              "scope": 13935,
              "sourceUnit": 20069,
              "src": "1217:68:68",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11971,
                    "name": "PercentageMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "1225:14:68",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/logic/ReserveLogic.sol",
              "file": "../libraries/logic/ReserveLogic.sol",
              "id": 11974,
              "nodeType": "ImportDirective",
              "scope": 13935,
              "sourceUnit": 18796,
              "src": "1286:65:68",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11973,
                    "name": "ReserveLogic",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "1294:12:68",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/logic/GenericLogic.sol",
              "file": "../libraries/logic/GenericLogic.sol",
              "id": 11976,
              "nodeType": "ImportDirective",
              "scope": 13935,
              "sourceUnit": 17988,
              "src": "1352:65:68",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11975,
                    "name": "GenericLogic",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "1360:12:68",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/logic/ValidationLogic.sol",
              "file": "../libraries/logic/ValidationLogic.sol",
              "id": 11978,
              "nodeType": "ImportDirective",
              "scope": 13935,
              "sourceUnit": 19774,
              "src": "1418:71:68",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11977,
                    "name": "ValidationLogic",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "1426:15:68",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/configuration/ReserveConfiguration.sol",
              "file": "../libraries/configuration/ReserveConfiguration.sol",
              "id": 11980,
              "nodeType": "ImportDirective",
              "scope": 13935,
              "sourceUnit": 16742,
              "src": "1490:89:68",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11979,
                    "name": "ReserveConfiguration",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "1498:20:68",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/configuration/UserConfiguration.sol",
              "file": "../libraries/configuration/UserConfiguration.sol",
              "id": 11982,
              "nodeType": "ImportDirective",
              "scope": 13935,
              "sourceUnit": 16985,
              "src": "1580:83:68",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11981,
                    "name": "UserConfiguration",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "1588:17:68",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/types/DataTypes.sol",
              "file": "../libraries/types/DataTypes.sol",
              "id": 11984,
              "nodeType": "ImportDirective",
              "scope": 13935,
              "sourceUnit": 20532,
              "src": "1664:59:68",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11983,
                    "name": "DataTypes",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "1672:9:68",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/lendingpool/LendingPoolStorage.sol",
              "file": "./LendingPoolStorage.sol",
              "id": 11986,
              "nodeType": "ImportDirective",
              "scope": 13935,
              "sourceUnit": 15793,
              "src": "1724:60:68",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 11985,
                    "name": "LendingPoolStorage",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "1732:18:68",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 11988,
                    "name": "VersionedInitializable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16019,
                    "src": "2443:22:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_VersionedInitializable_$16019",
                      "typeString": "contract VersionedInitializable"
                    }
                  },
                  "id": 11989,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2443:22:68"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 11990,
                    "name": "ILendingPool",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6466,
                    "src": "2467:12:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                      "typeString": "contract ILendingPool"
                    }
                  },
                  "id": 11991,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2467:12:68"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 11992,
                    "name": "LendingPoolStorage",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 15792,
                    "src": "2481:18:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LendingPoolStorage_$15792",
                      "typeString": "contract LendingPoolStorage"
                    }
                  },
                  "id": 11993,
                  "nodeType": "InheritanceSpecifier",
                  "src": "2481:18:68"
                }
              ],
              "contractDependencies": [
                6466,
                15792,
                16019
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 11987,
                "nodeType": "StructuredDocumentation",
                "src": "1786:632:68",
                "text": " @title LendingPool contract\n @dev Main point of interaction with an Aave protocol's market\n - Users can:\n   # Deposit\n   # Withdraw\n   # Borrow\n   # Repay\n   # Swap their loans between variable and stable rate\n   # Enable/disable their deposits as collateral rebalance stable rate borrow positions\n   # Liquidate positions\n   # Execute Flash Loans\n - To be covered by a proxy contract, owned by the LendingPoolAddressesProvider of the specific market\n - All admin functions are callable by the LendingPoolConfigurator contract defined also in the\n   LendingPoolAddressesProvider\n @author Aave*"
              },
              "fullyImplemented": true,
              "id": 13934,
              "linearizedBaseContracts": [
                13934,
                15792,
                6466,
                16019
              ],
              "name": "LendingPool",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 11996,
                  "libraryName": {
                    "contractScope": null,
                    "id": 11994,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4496,
                    "src": "2510:8:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$4496",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "2504:27:68",
                  "typeName": {
                    "id": 11995,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2523:7:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 11999,
                  "libraryName": {
                    "contractScope": null,
                    "id": 11997,
                    "name": "WadRayMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20493,
                    "src": "2540:10:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_WadRayMath_$20493",
                      "typeString": "library WadRayMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "2534:29:68",
                  "typeName": {
                    "id": 11998,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2555:7:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 12002,
                  "libraryName": {
                    "contractScope": null,
                    "id": 12000,
                    "name": "PercentageMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20068,
                    "src": "2572:14:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_PercentageMath_$20068",
                      "typeString": "library PercentageMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "2566:33:68",
                  "typeName": {
                    "id": 12001,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2591:7:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 12005,
                  "libraryName": {
                    "contractScope": null,
                    "id": 12003,
                    "name": "SafeERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4300,
                    "src": "2608:9:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeERC20_$4300",
                      "typeString": "library SafeERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "2602:27:68",
                  "typeName": {
                    "contractScope": null,
                    "id": 12004,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4012,
                    "src": "2622:6:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$4012",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "constant": true,
                  "functionSelector": "8afaff02",
                  "id": 12008,
                  "mutability": "constant",
                  "name": "LENDINGPOOL_REVISION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13934,
                  "src": "2633:50:68",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12006,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2633:7:68",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307832",
                    "id": 12007,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2680:3:68",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2_by_1",
                      "typeString": "int_const 2"
                    },
                    "value": "0x2"
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 12014,
                    "nodeType": "Block",
                    "src": "2713:34:68",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 12010,
                            "name": "_whenNotPaused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12033,
                            "src": "2719:14:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 12011,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2719:16:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12012,
                        "nodeType": "ExpressionStatement",
                        "src": "2719:16:68"
                      },
                      {
                        "id": 12013,
                        "nodeType": "PlaceholderStatement",
                        "src": "2741:1:68"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 12015,
                  "name": "whenNotPaused",
                  "nodeType": "ModifierDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 12009,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2710:2:68"
                  },
                  "src": "2688:59:68",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 12021,
                    "nodeType": "Block",
                    "src": "2790:48:68",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 12017,
                            "name": "_onlyLendingPoolConfigurator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12048,
                            "src": "2796:28:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 12018,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2796:30:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12019,
                        "nodeType": "ExpressionStatement",
                        "src": "2796:30:68"
                      },
                      {
                        "id": 12020,
                        "nodeType": "PlaceholderStatement",
                        "src": "2832:1:68"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 12022,
                  "name": "onlyLendingPoolConfigurator",
                  "nodeType": "ModifierDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 12016,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2787:2:68"
                  },
                  "src": "2751:87:68",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 12032,
                    "nodeType": "Block",
                    "src": "2882:49:68",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12027,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "2896:8:68",
                              "subExpression": {
                                "argumentTypes": null,
                                "id": 12026,
                                "name": "_paused",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15785,
                                "src": "2897:7:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12028,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "2906:6:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 12029,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "LP_IS_PAUSED",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17185,
                              "src": "2906:19:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 12025,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2888:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12030,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2888:38:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12031,
                        "nodeType": "ExpressionStatement",
                        "src": "2888:38:68"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 12033,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_whenNotPaused",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 12023,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2865:2:68"
                  },
                  "returnParameters": {
                    "id": 12024,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2882:0:68"
                  },
                  "scope": 13934,
                  "src": "2842:89:68",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 12047,
                    "nodeType": "Block",
                    "src": "2989:147:68",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 12042,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 12037,
                                    "name": "_addressesProvider",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15769,
                                    "src": "3010:18:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                                      "typeString": "contract ILendingPoolAddressesProvider"
                                    }
                                  },
                                  "id": 12038,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getLendingPoolConfigurator",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6561,
                                  "src": "3010:45:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                    "typeString": "function () view external returns (address)"
                                  }
                                },
                                "id": 12039,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3010:47:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12040,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "3061:3:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 12041,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3061:10:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3010:61:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12043,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "3079:6:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 12044,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "LP_CALLER_NOT_LENDING_POOL_CONFIGURATOR",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17074,
                              "src": "3079:46:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 12036,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2995:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12045,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2995:136:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12046,
                        "nodeType": "ExpressionStatement",
                        "src": "2995:136:68"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 12048,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_onlyLendingPoolConfigurator",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 12034,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2972:2:68"
                  },
                  "returnParameters": {
                    "id": 12035,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2989:0:68"
                  },
                  "scope": 13934,
                  "src": "2935:201:68",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    15999
                  ],
                  "body": {
                    "id": 12056,
                    "nodeType": "Block",
                    "src": "3204:38:68",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12054,
                          "name": "LENDINGPOOL_REVISION",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12008,
                          "src": "3217:20:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 12053,
                        "id": 12055,
                        "nodeType": "Return",
                        "src": "3210:27:68"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 12057,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRevision",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12050,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3177:8:68"
                  },
                  "parameters": {
                    "id": 12049,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3160:2:68"
                  },
                  "returnParameters": {
                    "id": 12053,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12052,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12057,
                        "src": "3195:7:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12051,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3195:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3194:9:68"
                  },
                  "scope": 13934,
                  "src": "3140:102:68",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 12081,
                    "nodeType": "Block",
                    "src": "3684:148:68",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12067,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 12065,
                            "name": "_addressesProvider",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15769,
                            "src": "3690:18:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                              "typeString": "contract ILendingPoolAddressesProvider"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 12066,
                            "name": "provider",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12060,
                            "src": "3711:8:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                              "typeString": "contract ILendingPoolAddressesProvider"
                            }
                          },
                          "src": "3690:29:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                            "typeString": "contract ILendingPoolAddressesProvider"
                          }
                        },
                        "id": 12068,
                        "nodeType": "ExpressionStatement",
                        "src": "3690:29:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12071,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 12069,
                            "name": "_maxStableRateBorrowSizePercent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15787,
                            "src": "3725:31:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "32353030",
                            "id": 12070,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3759:4:68",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2500_by_1",
                              "typeString": "int_const 2500"
                            },
                            "value": "2500"
                          },
                          "src": "3725:38:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12072,
                        "nodeType": "ExpressionStatement",
                        "src": "3725:38:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12075,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 12073,
                            "name": "_flashLoanPremiumTotal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15789,
                            "src": "3769:22:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "39",
                            "id": 12074,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3794:1:68",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_9_by_1",
                              "typeString": "int_const 9"
                            },
                            "value": "9"
                          },
                          "src": "3769:26:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12076,
                        "nodeType": "ExpressionStatement",
                        "src": "3769:26:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12079,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 12077,
                            "name": "_maxNumberOfReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15791,
                            "src": "3801:20:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "313238",
                            "id": 12078,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3824:3:68",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_128_by_1",
                              "typeString": "int_const 128"
                            },
                            "value": "128"
                          },
                          "src": "3801:26:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12080,
                        "nodeType": "ExpressionStatement",
                        "src": "3801:26:68"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12058,
                    "nodeType": "StructuredDocumentation",
                    "src": "3246:356:68",
                    "text": " @dev Function is invoked by the proxy contract when the LendingPool contract is added to the\n LendingPoolAddressesProvider of the market.\n - Caching the address of the LendingPoolAddressesProvider in order to reduce gas consumption\n   on subsequent operations\n @param provider The address of the LendingPoolAddressesProvider*"
                  },
                  "functionSelector": "c4d66de8",
                  "id": 12082,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 12063,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 12062,
                        "name": "initializer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15993,
                        "src": "3672:11:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3672:11:68"
                    }
                  ],
                  "name": "initialize",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 12061,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12060,
                        "mutability": "mutable",
                        "name": "provider",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12082,
                        "src": "3625:38:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                          "typeString": "contract ILendingPoolAddressesProvider"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 12059,
                          "name": "ILendingPoolAddressesProvider",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6617,
                          "src": "3625:29:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                            "typeString": "contract ILendingPoolAddressesProvider"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3624:40:68"
                  },
                  "returnParameters": {
                    "id": 12064,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3684:0:68"
                  },
                  "scope": 13934,
                  "src": "3605:227:68",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    6245
                  ],
                  "body": {
                    "id": 12179,
                    "nodeType": "Block",
                    "src": "4692:650:68",
                    "statements": [
                      {
                        "assignments": [
                          12100
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12100,
                            "mutability": "mutable",
                            "name": "reserve",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12179,
                            "src": "4698:37:68",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                              "typeString": "struct DataTypes.ReserveData"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12099,
                              "name": "DataTypes.ReserveData",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20520,
                              "src": "4698:21:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12104,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 12101,
                            "name": "_reserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15773,
                            "src": "4738:9:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                              "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                            }
                          },
                          "id": 12103,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 12102,
                            "name": "asset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12085,
                            "src": "4748:5:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4738:16:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                            "typeString": "struct DataTypes.ReserveData storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4698:56:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12108,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12100,
                              "src": "4793:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12109,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12087,
                              "src": "4802:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12105,
                              "name": "ValidationLogic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19773,
                              "src": "4761:15:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ValidationLogic_$19773_$",
                                "typeString": "type(library ValidationLogic)"
                              }
                            },
                            "id": 12107,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "validateDeposit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18893,
                            "src": "4761:31:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_delegatecall_view$_t_struct$_ReserveData_$20520_storage_ptr_$_t_uint256_$returns$__$",
                              "typeString": "function (struct DataTypes.ReserveData storage pointer,uint256) view"
                            }
                          },
                          "id": 12110,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4761:48:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12111,
                        "nodeType": "ExpressionStatement",
                        "src": "4761:48:68"
                      },
                      {
                        "assignments": [
                          12113
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12113,
                            "mutability": "mutable",
                            "name": "aToken",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12179,
                            "src": "4816:14:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 12112,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4816:7:68",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12116,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 12114,
                            "name": "reserve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12100,
                            "src": "4833:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                              "typeString": "struct DataTypes.ReserveData storage pointer"
                            }
                          },
                          "id": 12115,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "aTokenAddress",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 20511,
                          "src": "4833:21:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4816:38:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12117,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12100,
                              "src": "4861:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            "id": 12119,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "updateState",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18183,
                            "src": "4861:19:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReserveData_$20520_storage_ptr_$returns$__$bound_to$_t_struct$_ReserveData_$20520_storage_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveData storage pointer)"
                            }
                          },
                          "id": 12120,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4861:21:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12121,
                        "nodeType": "ExpressionStatement",
                        "src": "4861:21:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12125,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12085,
                              "src": "4916:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12126,
                              "name": "aToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12113,
                              "src": "4923:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12127,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12087,
                              "src": "4931:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 12128,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4939:1:68",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12122,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12100,
                              "src": "4888:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            "id": 12124,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "updateInterestRates",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18500,
                            "src": "4888:27:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReserveData_$20520_storage_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$bound_to$_t_struct$_ReserveData_$20520_storage_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveData storage pointer,address,address,uint256,uint256)"
                            }
                          },
                          "id": 12129,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4888:53:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12130,
                        "nodeType": "ExpressionStatement",
                        "src": "4888:53:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12135,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4979:3:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 12136,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4979:10:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12137,
                              "name": "aToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12113,
                              "src": "4991:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12138,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12087,
                              "src": "4999:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12132,
                                  "name": "asset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12085,
                                  "src": "4955:5:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 12131,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "4948:6:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 12133,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4948:13:68",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 12134,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4205,
                            "src": "4948:30:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                              "typeString": "function (contract IERC20,address,address,uint256)"
                            }
                          },
                          "id": 12139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4948:58:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12140,
                        "nodeType": "ExpressionStatement",
                        "src": "4948:58:68"
                      },
                      {
                        "assignments": [
                          12142
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12142,
                            "mutability": "mutable",
                            "name": "isFirstDeposit",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12179,
                            "src": "5013:19:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 12141,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "5013:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12152,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12147,
                              "name": "onBehalfOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12089,
                              "src": "5056:10:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12148,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12087,
                              "src": "5068:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12149,
                                "name": "reserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12100,
                                "src": "5076:7:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                }
                              },
                              "id": 12150,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "liquidityIndex",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20499,
                              "src": "5076:22:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12144,
                                  "name": "aToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12113,
                                  "src": "5043:6:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 12143,
                                "name": "IAToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5667,
                                "src": "5035:7:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IAToken_$5667_$",
                                  "typeString": "type(contract IAToken)"
                                }
                              },
                              "id": 12145,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5035:15:68",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAToken_$5667",
                                "typeString": "contract IAToken"
                              }
                            },
                            "id": 12146,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5584,
                            "src": "5035:20:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256,uint256) external returns (bool)"
                            }
                          },
                          "id": 12151,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5035:64:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5013:86:68"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 12153,
                          "name": "isFirstDeposit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12142,
                          "src": "5110:14:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12169,
                        "nodeType": "IfStatement",
                        "src": "5106:160:68",
                        "trueBody": {
                          "id": 12168,
                          "nodeType": "Block",
                          "src": "5126:140:68",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12158,
                                      "name": "reserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12100,
                                      "src": "5180:7:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                        "typeString": "struct DataTypes.ReserveData storage pointer"
                                      }
                                    },
                                    "id": 12159,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "id",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20519,
                                    "src": "5180:10:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "74727565",
                                    "id": 12160,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5192:4:68",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 12154,
                                      "name": "_usersConfig",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15777,
                                      "src": "5134:12:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserConfigurationMap_$20526_storage_$",
                                        "typeString": "mapping(address => struct DataTypes.UserConfigurationMap storage ref)"
                                      }
                                    },
                                    "id": 12156,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 12155,
                                      "name": "onBehalfOf",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12089,
                                      "src": "5147:10:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5134:24:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage",
                                      "typeString": "struct DataTypes.UserConfigurationMap storage ref"
                                    }
                                  },
                                  "id": 12157,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "setUsingAsCollateral",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 16855,
                                  "src": "5134:45:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UserConfigurationMap_$20526_storage_ptr_$_t_uint256_$_t_bool_$returns$__$bound_to$_t_struct$_UserConfigurationMap_$20526_storage_ptr_$",
                                    "typeString": "function (struct DataTypes.UserConfigurationMap storage pointer,uint256,bool)"
                                  }
                                },
                                "id": 12161,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5134:63:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12162,
                              "nodeType": "ExpressionStatement",
                              "src": "5134:63:68"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12164,
                                    "name": "asset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12085,
                                    "src": "5241:5:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12165,
                                    "name": "onBehalfOf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12089,
                                    "src": "5248:10:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 12163,
                                  "name": "ReserveUsedAsCollateralEnabled",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6166,
                                  "src": "5210:30:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                                    "typeString": "function (address,address)"
                                  }
                                },
                                "id": 12166,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5210:49:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12167,
                              "nodeType": "EmitStatement",
                              "src": "5205:54:68"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12171,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12085,
                              "src": "5285:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12172,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "5292:3:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 12173,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5292:10:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12174,
                              "name": "onBehalfOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12089,
                              "src": "5304:10:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12175,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12087,
                              "src": "5316:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12176,
                              "name": "referralCode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12091,
                              "src": "5324:12:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            ],
                            "id": 12170,
                            "name": "Deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6111,
                            "src": "5277:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint16_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint16)"
                            }
                          },
                          "id": 12177,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5277:60:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12178,
                        "nodeType": "EmitStatement",
                        "src": "5272:65:68"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12083,
                    "nodeType": "StructuredDocumentation",
                    "src": "3836:712:68",
                    "text": " @dev Deposits an `amount` of underlying asset into the reserve, receiving in return overlying aTokens.\n - E.g. User deposits 100 USDC and gets in return 100 aUSDC\n @param asset The address of the underlying asset to deposit\n @param amount The amount to be deposited\n @param onBehalfOf The address that will receive the aTokens, same as msg.sender if the user\n   wants to receive them on his own wallet, or a different address if the beneficiary of aTokens\n   is a different wallet\n @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   0 if the action is executed directly by the user, without any middle-man*"
                  },
                  "functionSelector": "e8eda9df",
                  "id": 12180,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 12095,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 12094,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12015,
                        "src": "4678:13:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4678:13:68"
                    }
                  ],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12093,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4669:8:68"
                  },
                  "parameters": {
                    "id": 12092,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12085,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12180,
                        "src": "4573:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12084,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4573:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12087,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12180,
                        "src": "4592:14:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12086,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4592:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12089,
                        "mutability": "mutable",
                        "name": "onBehalfOf",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12180,
                        "src": "4612:18:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12088,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4612:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12091,
                        "mutability": "mutable",
                        "name": "referralCode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12180,
                        "src": "4636:19:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 12090,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "4636:6:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4567:92:68"
                  },
                  "returnParameters": {
                    "id": 12096,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4692:0:68"
                  },
                  "scope": 13934,
                  "src": "4551:791:68",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6257
                  ],
                  "body": {
                    "id": 12310,
                    "nodeType": "Block",
                    "src": "6141:997:68",
                    "statements": [
                      {
                        "assignments": [
                          12198
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12198,
                            "mutability": "mutable",
                            "name": "reserve",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12310,
                            "src": "6147:37:68",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                              "typeString": "struct DataTypes.ReserveData"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12197,
                              "name": "DataTypes.ReserveData",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20520,
                              "src": "6147:21:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12202,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 12199,
                            "name": "_reserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15773,
                            "src": "6187:9:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                              "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                            }
                          },
                          "id": 12201,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 12200,
                            "name": "asset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12183,
                            "src": "6197:5:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6187:16:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                            "typeString": "struct DataTypes.ReserveData storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6147:56:68"
                      },
                      {
                        "assignments": [
                          12204
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12204,
                            "mutability": "mutable",
                            "name": "aToken",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12310,
                            "src": "6210:14:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 12203,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6210:7:68",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12207,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 12205,
                            "name": "reserve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12198,
                            "src": "6227:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                              "typeString": "struct DataTypes.ReserveData storage pointer"
                            }
                          },
                          "id": 12206,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "aTokenAddress",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 20511,
                          "src": "6227:21:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6210:38:68"
                      },
                      {
                        "assignments": [
                          12209
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12209,
                            "mutability": "mutable",
                            "name": "userBalance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12310,
                            "src": "6255:19:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12208,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6255:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12217,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12214,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "6303:3:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 12215,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6303:10:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12211,
                                  "name": "aToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12204,
                                  "src": "6285:6:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 12210,
                                "name": "IAToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5667,
                                "src": "6277:7:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IAToken_$5667_$",
                                  "typeString": "type(contract IAToken)"
                                }
                              },
                              "id": 12212,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6277:15:68",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAToken_$5667",
                                "typeString": "contract IAToken"
                              }
                            },
                            "id": 12213,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3951,
                            "src": "6277:25:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 12216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6277:37:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6255:59:68"
                      },
                      {
                        "assignments": [
                          12219
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12219,
                            "mutability": "mutable",
                            "name": "amountToWithdraw",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12310,
                            "src": "6321:24:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12218,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6321:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12221,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 12220,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12185,
                          "src": "6348:6:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6321:33:68"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12228,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12222,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12185,
                            "src": "6365:6:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12225,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6380:7:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 12224,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6380:7:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  }
                                ],
                                "id": 12223,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "6375:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 12226,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6375:13:68",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint256",
                                "typeString": "type(uint256)"
                              }
                            },
                            "id": 12227,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6375:17:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6365:27:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12234,
                        "nodeType": "IfStatement",
                        "src": "6361:78:68",
                        "trueBody": {
                          "id": 12233,
                          "nodeType": "Block",
                          "src": "6394:45:68",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 12231,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 12229,
                                  "name": "amountToWithdraw",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12219,
                                  "src": "6402:16:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 12230,
                                  "name": "userBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12209,
                                  "src": "6421:11:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6402:30:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 12232,
                              "nodeType": "ExpressionStatement",
                              "src": "6402:30:68"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12238,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12183,
                              "src": "6485:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12239,
                              "name": "amountToWithdraw",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12219,
                              "src": "6498:16:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12240,
                              "name": "userBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12209,
                              "src": "6522:11:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12241,
                              "name": "_reserves",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15773,
                              "src": "6541:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 12242,
                                "name": "_usersConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15777,
                                "src": "6558:12:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserConfigurationMap_$20526_storage_$",
                                  "typeString": "mapping(address => struct DataTypes.UserConfigurationMap storage ref)"
                                }
                              },
                              "id": 12245,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12243,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "6571:3:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 12244,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6571:10:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6558:24:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage",
                                "typeString": "struct DataTypes.UserConfigurationMap storage ref"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12246,
                              "name": "_reservesList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15781,
                              "src": "6590:13:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12247,
                              "name": "_reservesCount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15783,
                              "src": "6611:14:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12248,
                                  "name": "_addressesProvider",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15769,
                                  "src": "6633:18:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                                    "typeString": "contract ILendingPoolAddressesProvider"
                                  }
                                },
                                "id": 12249,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getPriceOracle",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6601,
                                "src": "6633:33:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              "id": 12250,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6633:35:68",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                              },
                              {
                                "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage",
                                "typeString": "struct DataTypes.UserConfigurationMap storage ref"
                              },
                              {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12235,
                              "name": "ValidationLogic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19773,
                              "src": "6445:15:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ValidationLogic_$19773_$",
                                "typeString": "type(library ValidationLogic)"
                              }
                            },
                            "id": 12237,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "validateWithdraw",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18966,
                            "src": "6445:32:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_delegatecall_view$_t_address_$_t_uint256_$_t_uint256_$_t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$_$_t_struct$_UserConfigurationMap_$20526_storage_ptr_$_t_mapping$_t_uint256_$_t_address_$_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,uint256,mapping(address => struct DataTypes.ReserveData storage ref),struct DataTypes.UserConfigurationMap storage pointer,mapping(uint256 => address),uint256,address) view"
                            }
                          },
                          "id": 12251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6445:229:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12252,
                        "nodeType": "ExpressionStatement",
                        "src": "6445:229:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12253,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12198,
                              "src": "6681:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            "id": 12255,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "updateState",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18183,
                            "src": "6681:19:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReserveData_$20520_storage_ptr_$returns$__$bound_to$_t_struct$_ReserveData_$20520_storage_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveData storage pointer)"
                            }
                          },
                          "id": 12256,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6681:21:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12257,
                        "nodeType": "ExpressionStatement",
                        "src": "6681:21:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12261,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12183,
                              "src": "6737:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12262,
                              "name": "aToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12204,
                              "src": "6744:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 12263,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6752:1:68",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 12264,
                              "name": "amountToWithdraw",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12219,
                              "src": "6755:16:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12258,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12198,
                              "src": "6709:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            "id": 12260,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "updateInterestRates",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18500,
                            "src": "6709:27:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReserveData_$20520_storage_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$bound_to$_t_struct$_ReserveData_$20520_storage_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveData storage pointer,address,address,uint256,uint256)"
                            }
                          },
                          "id": 12265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6709:63:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12266,
                        "nodeType": "ExpressionStatement",
                        "src": "6709:63:68"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12269,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12267,
                            "name": "amountToWithdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12219,
                            "src": "6783:16:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 12268,
                            "name": "userBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12209,
                            "src": "6803:11:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6783:31:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12287,
                        "nodeType": "IfStatement",
                        "src": "6779:179:68",
                        "trueBody": {
                          "id": 12286,
                          "nodeType": "Block",
                          "src": "6816:142:68",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12275,
                                      "name": "reserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12198,
                                      "src": "6870:7:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                        "typeString": "struct DataTypes.ReserveData storage pointer"
                                      }
                                    },
                                    "id": 12276,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "id",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20519,
                                    "src": "6870:10:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "66616c7365",
                                    "id": 12277,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6882:5:68",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "false"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 12270,
                                      "name": "_usersConfig",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15777,
                                      "src": "6824:12:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserConfigurationMap_$20526_storage_$",
                                        "typeString": "mapping(address => struct DataTypes.UserConfigurationMap storage ref)"
                                      }
                                    },
                                    "id": 12273,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 12271,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "6837:3:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 12272,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "6837:10:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6824:24:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage",
                                      "typeString": "struct DataTypes.UserConfigurationMap storage ref"
                                    }
                                  },
                                  "id": 12274,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "setUsingAsCollateral",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 16855,
                                  "src": "6824:45:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UserConfigurationMap_$20526_storage_ptr_$_t_uint256_$_t_bool_$returns$__$bound_to$_t_struct$_UserConfigurationMap_$20526_storage_ptr_$",
                                    "typeString": "function (struct DataTypes.UserConfigurationMap storage pointer,uint256,bool)"
                                  }
                                },
                                "id": 12278,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6824:64:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12279,
                              "nodeType": "ExpressionStatement",
                              "src": "6824:64:68"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12281,
                                    "name": "asset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12183,
                                    "src": "6933:5:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12282,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "6940:3:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 12283,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "6940:10:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "id": 12280,
                                  "name": "ReserveUsedAsCollateralDisabled",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6173,
                                  "src": "6901:31:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                                    "typeString": "function (address,address)"
                                  }
                                },
                                "id": 12284,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6901:50:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12285,
                              "nodeType": "EmitStatement",
                              "src": "6896:55:68"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12292,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "6985:3:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 12293,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6985:10:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12294,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12187,
                              "src": "6997:2:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12295,
                              "name": "amountToWithdraw",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12219,
                              "src": "7001:16:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12296,
                                "name": "reserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12198,
                                "src": "7019:7:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                }
                              },
                              "id": 12297,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "liquidityIndex",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20499,
                              "src": "7019:22:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12289,
                                  "name": "aToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12204,
                                  "src": "6972:6:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 12288,
                                "name": "IAToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5667,
                                "src": "6964:7:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IAToken_$5667_$",
                                  "typeString": "type(contract IAToken)"
                                }
                              },
                              "id": 12290,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6964:15:68",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAToken_$5667",
                                "typeString": "contract IAToken"
                              }
                            },
                            "id": 12291,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "burn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5618,
                            "src": "6964:20:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256) external"
                            }
                          },
                          "id": 12298,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6964:78:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12299,
                        "nodeType": "ExpressionStatement",
                        "src": "6964:78:68"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12301,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12183,
                              "src": "7063:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12302,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "7070:3:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 12303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7070:10:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12304,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12187,
                              "src": "7082:2:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12305,
                              "name": "amountToWithdraw",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12219,
                              "src": "7086:16:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 12300,
                            "name": "Withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6122,
                            "src": "7054:8:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 12306,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7054:49:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12307,
                        "nodeType": "EmitStatement",
                        "src": "7049:54:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12308,
                          "name": "amountToWithdraw",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12219,
                          "src": "7117:16:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 12194,
                        "id": 12309,
                        "nodeType": "Return",
                        "src": "7110:23:68"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12181,
                    "nodeType": "StructuredDocumentation",
                    "src": "5346:665:68",
                    "text": " @dev Withdraws an `amount` of underlying asset from the reserve, burning the equivalent aTokens owned\n E.g. User has 100 aUSDC, calls withdraw() and receives 100 USDC, burning the 100 aUSDC\n @param asset The address of the underlying asset to withdraw\n @param amount The underlying amount to be withdrawn\n   - Send the value type(uint256).max in order to withdraw the whole aToken balance\n @param to Address that will receive the underlying, same as msg.sender if the user\n   wants to receive it on his own wallet, or a different address if the beneficiary is a\n   different wallet\n @return The final amount withdrawn*"
                  },
                  "functionSelector": "69328dec",
                  "id": 12311,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 12191,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 12190,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12015,
                        "src": "6109:13:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6109:13:68"
                    }
                  ],
                  "name": "withdraw",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12189,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6100:8:68"
                  },
                  "parameters": {
                    "id": 12188,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12183,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12311,
                        "src": "6037:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12182,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6037:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12185,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12311,
                        "src": "6056:14:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12184,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6056:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12187,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12311,
                        "src": "6076:10:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12186,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6076:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6031:59:68"
                  },
                  "returnParameters": {
                    "id": 12194,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12193,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12311,
                        "src": "6132:7:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12192,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6132:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6131:9:68"
                  },
                  "scope": 13934,
                  "src": "6014:1124:68",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6271
                  ],
                  "body": {
                    "id": 12351,
                    "nodeType": "Block",
                    "src": "8504:293:68",
                    "statements": [
                      {
                        "assignments": [
                          12331
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12331,
                            "mutability": "mutable",
                            "name": "reserve",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12351,
                            "src": "8510:37:68",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                              "typeString": "struct DataTypes.ReserveData"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12330,
                              "name": "DataTypes.ReserveData",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20520,
                              "src": "8510:21:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12335,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 12332,
                            "name": "_reserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15773,
                            "src": "8550:9:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                              "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                            }
                          },
                          "id": 12334,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 12333,
                            "name": "asset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12314,
                            "src": "8560:5:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8550:16:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                            "typeString": "struct DataTypes.ReserveData storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8510:56:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12338,
                                  "name": "asset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12314,
                                  "src": "8624:5:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 12339,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "8639:3:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 12340,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "8639:10:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 12341,
                                  "name": "onBehalfOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12322,
                                  "src": "8659:10:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 12342,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12316,
                                  "src": "8679:6:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 12343,
                                  "name": "interestRateMode",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12318,
                                  "src": "8695:16:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 12344,
                                    "name": "reserve",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12331,
                                    "src": "8721:7:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                      "typeString": "struct DataTypes.ReserveData storage pointer"
                                    }
                                  },
                                  "id": 12345,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "aTokenAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20511,
                                  "src": "8721:21:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 12346,
                                  "name": "referralCode",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12320,
                                  "src": "8752:12:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 12347,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8774:4:68",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "id": 12337,
                                "name": "ExecuteBorrowParams",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13668,
                                "src": "8595:19:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_ExecuteBorrowParams_$13668_storage_ptr_$",
                                  "typeString": "type(struct LendingPool.ExecuteBorrowParams storage pointer)"
                                }
                              },
                              "id": 12348,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8595:191:68",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                              }
                            ],
                            "id": 12336,
                            "name": "_executeBorrow",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13874,
                            "src": "8573:14:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ExecuteBorrowParams_$13668_memory_ptr_$returns$__$",
                              "typeString": "function (struct LendingPool.ExecuteBorrowParams memory)"
                            }
                          },
                          "id": 12349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8573:219:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12350,
                        "nodeType": "ExpressionStatement",
                        "src": "8573:219:68"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12312,
                    "nodeType": "StructuredDocumentation",
                    "src": "7142:1189:68",
                    "text": " @dev Allows users to borrow a specific `amount` of the reserve underlying asset, provided that the borrower\n already deposited enough collateral, or he was given enough allowance by a credit delegator on the\n corresponding debt token (StableDebtToken or VariableDebtToken)\n - E.g. User borrows 100 USDC passing as `onBehalfOf` his own address, receiving the 100 USDC in his wallet\n   and 100 stable/variable debt tokens, depending on the `interestRateMode`\n @param asset The address of the underlying asset to borrow\n @param amount The amount to be borrowed\n @param interestRateMode The interest rate mode at which the user wants to borrow: 1 for Stable, 2 for Variable\n @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   0 if the action is executed directly by the user, without any middle-man\n @param onBehalfOf Address of the user who will receive the debt. Should be the address of the borrower itself\n calling the function if he wants to borrow against his own collateral, or the address of the credit delegator\n if he has been given credit delegation allowance*"
                  },
                  "functionSelector": "a415bcad",
                  "id": 12352,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 12326,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 12325,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12015,
                        "src": "8490:13:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8490:13:68"
                    }
                  ],
                  "name": "borrow",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12324,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8481:8:68"
                  },
                  "parameters": {
                    "id": 12323,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12314,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12352,
                        "src": "8355:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12313,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8355:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12316,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12352,
                        "src": "8374:14:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12315,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8374:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12318,
                        "mutability": "mutable",
                        "name": "interestRateMode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12352,
                        "src": "8394:24:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12317,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8394:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12320,
                        "mutability": "mutable",
                        "name": "referralCode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12352,
                        "src": "8424:19:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 12319,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "8424:6:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12322,
                        "mutability": "mutable",
                        "name": "onBehalfOf",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12352,
                        "src": "8449:18:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12321,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8449:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8349:122:68"
                  },
                  "returnParameters": {
                    "id": 12327,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8504:0:68"
                  },
                  "scope": 13934,
                  "src": "8334:463:68",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6285
                  ],
                  "body": {
                    "id": 12523,
                    "nodeType": "Block",
                    "src": "9820:1422:68",
                    "statements": [
                      {
                        "assignments": [
                          12372
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12372,
                            "mutability": "mutable",
                            "name": "reserve",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12523,
                            "src": "9826:37:68",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                              "typeString": "struct DataTypes.ReserveData"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12371,
                              "name": "DataTypes.ReserveData",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20520,
                              "src": "9826:21:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12376,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 12373,
                            "name": "_reserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15773,
                            "src": "9866:9:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                              "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                            }
                          },
                          "id": 12375,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 12374,
                            "name": "asset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12355,
                            "src": "9876:5:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9866:16:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                            "typeString": "struct DataTypes.ReserveData storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9826:56:68"
                      },
                      {
                        "assignments": [
                          12378,
                          12380
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12378,
                            "mutability": "mutable",
                            "name": "stableDebt",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12523,
                            "src": "9890:18:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12377,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9890:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 12380,
                            "mutability": "mutable",
                            "name": "variableDebt",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12523,
                            "src": "9910:20:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12379,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9910:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12386,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12383,
                              "name": "onBehalfOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12361,
                              "src": "9961:10:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12384,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12372,
                              "src": "9973:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12381,
                              "name": "Helpers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17304,
                              "src": "9934:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Helpers_$17304_$",
                                "typeString": "type(library Helpers)"
                              }
                            },
                            "id": 12382,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getUserCurrentDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17275,
                            "src": "9934:26:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_struct$_ReserveData_$20520_storage_ptr_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,struct DataTypes.ReserveData storage pointer) view returns (uint256,uint256)"
                            }
                          },
                          "id": 12385,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9934:47:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9889:92:68"
                      },
                      {
                        "assignments": [
                          12390
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12390,
                            "mutability": "mutable",
                            "name": "interestRateMode",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12523,
                            "src": "9988:43:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                              "typeString": "enum DataTypes.InterestRateMode"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12389,
                              "name": "DataTypes.InterestRateMode",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20530,
                              "src": "9988:26:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                "typeString": "enum DataTypes.InterestRateMode"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12395,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12393,
                              "name": "rateMode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12359,
                              "src": "10061:8:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12391,
                              "name": "DataTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20531,
                              "src": "10034:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_DataTypes_$20531_$",
                                "typeString": "type(library DataTypes)"
                              }
                            },
                            "id": 12392,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "InterestRateMode",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20530,
                            "src": "10034:26:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_InterestRateMode_$20530_$",
                              "typeString": "type(enum DataTypes.InterestRateMode)"
                            }
                          },
                          "id": 12394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10034:36:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                            "typeString": "enum DataTypes.InterestRateMode"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9988:82:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12399,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12372,
                              "src": "10114:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12400,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12357,
                              "src": "10129:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12401,
                              "name": "interestRateMode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12390,
                              "src": "10143:16:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                "typeString": "enum DataTypes.InterestRateMode"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12402,
                              "name": "onBehalfOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12361,
                              "src": "10167:10:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12403,
                              "name": "stableDebt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12378,
                              "src": "10185:10:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12404,
                              "name": "variableDebt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12380,
                              "src": "10203:12:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                "typeString": "enum DataTypes.InterestRateMode"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12396,
                              "name": "ValidationLogic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19773,
                              "src": "10077:15:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ValidationLogic_$19773_$",
                                "typeString": "type(library ValidationLogic)"
                              }
                            },
                            "id": 12398,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "validateRepay",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 19319,
                            "src": "10077:29:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_delegatecall_view$_t_struct$_ReserveData_$20520_storage_ptr_$_t_uint256_$_t_enum$_InterestRateMode_$20530_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (struct DataTypes.ReserveData storage pointer,uint256,enum DataTypes.InterestRateMode,address,uint256,uint256) view"
                            }
                          },
                          "id": 12405,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10077:144:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12406,
                        "nodeType": "ExpressionStatement",
                        "src": "10077:144:68"
                      },
                      {
                        "assignments": [
                          12408
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12408,
                            "mutability": "mutable",
                            "name": "paybackAmount",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12523,
                            "src": "10228:21:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12407,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10228:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12417,
                        "initialValue": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                              "typeString": "enum DataTypes.InterestRateMode"
                            },
                            "id": 12413,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 12409,
                              "name": "interestRateMode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12390,
                              "src": "10258:16:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                "typeString": "enum DataTypes.InterestRateMode"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12410,
                                  "name": "DataTypes",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20531,
                                  "src": "10278:9:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_DataTypes_$20531_$",
                                    "typeString": "type(library DataTypes)"
                                  }
                                },
                                "id": 12411,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "InterestRateMode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20530,
                                "src": "10278:26:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_InterestRateMode_$20530_$",
                                  "typeString": "type(enum DataTypes.InterestRateMode)"
                                }
                              },
                              "id": 12412,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "STABLE",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10278:33:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                "typeString": "enum DataTypes.InterestRateMode"
                              }
                            },
                            "src": "10258:53:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "id": 12415,
                            "name": "variableDebt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12380,
                            "src": "10327:12:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 12416,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "10258:81:68",
                          "trueExpression": {
                            "argumentTypes": null,
                            "id": 12414,
                            "name": "stableDebt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12378,
                            "src": "10314:10:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10228:111:68"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12420,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12418,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12357,
                            "src": "10350:6:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 12419,
                            "name": "paybackAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12408,
                            "src": "10359:13:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10350:22:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12426,
                        "nodeType": "IfStatement",
                        "src": "10346:65:68",
                        "trueBody": {
                          "id": 12425,
                          "nodeType": "Block",
                          "src": "10374:37:68",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 12423,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 12421,
                                  "name": "paybackAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12408,
                                  "src": "10382:13:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 12422,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12357,
                                  "src": "10398:6:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10382:22:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 12424,
                              "nodeType": "ExpressionStatement",
                              "src": "10382:22:68"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12427,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12372,
                              "src": "10417:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            "id": 12429,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "updateState",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18183,
                            "src": "10417:19:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReserveData_$20520_storage_ptr_$returns$__$bound_to$_t_struct$_ReserveData_$20520_storage_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveData storage pointer)"
                            }
                          },
                          "id": 12430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10417:21:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12431,
                        "nodeType": "ExpressionStatement",
                        "src": "10417:21:68"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                            "typeString": "enum DataTypes.InterestRateMode"
                          },
                          "id": 12436,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12432,
                            "name": "interestRateMode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12390,
                            "src": "10449:16:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                              "typeString": "enum DataTypes.InterestRateMode"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12433,
                                "name": "DataTypes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20531,
                                "src": "10469:9:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_DataTypes_$20531_$",
                                  "typeString": "type(library DataTypes)"
                                }
                              },
                              "id": 12434,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "InterestRateMode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20530,
                              "src": "10469:26:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_InterestRateMode_$20530_$",
                                "typeString": "type(enum DataTypes.InterestRateMode)"
                              }
                            },
                            "id": 12435,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "STABLE",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10469:33:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                              "typeString": "enum DataTypes.InterestRateMode"
                            }
                          },
                          "src": "10449:53:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 12458,
                          "nodeType": "Block",
                          "src": "10605:160:68",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12452,
                                    "name": "onBehalfOf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12361,
                                    "src": "10680:10:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12453,
                                    "name": "paybackAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12408,
                                    "src": "10700:13:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12454,
                                      "name": "reserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12372,
                                      "src": "10723:7:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                        "typeString": "struct DataTypes.ReserveData storage pointer"
                                      }
                                    },
                                    "id": 12455,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "variableBorrowIndex",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20501,
                                    "src": "10723:27:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 12448,
                                          "name": "reserve",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12372,
                                          "src": "10632:7:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                            "typeString": "struct DataTypes.ReserveData storage pointer"
                                          }
                                        },
                                        "id": 12449,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "variableDebtTokenAddress",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 20515,
                                        "src": "10632:32:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 12447,
                                      "name": "IVariableDebtToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7504,
                                      "src": "10613:18:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IVariableDebtToken_$7504_$",
                                        "typeString": "type(contract IVariableDebtToken)"
                                      }
                                    },
                                    "id": 12450,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10613:52:68",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IVariableDebtToken_$7504",
                                      "typeString": "contract IVariableDebtToken"
                                    }
                                  },
                                  "id": 12451,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "burn",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7497,
                                  "src": "10613:57:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256) external"
                                  }
                                },
                                "id": 12456,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10613:145:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12457,
                              "nodeType": "ExpressionStatement",
                              "src": "10613:145:68"
                            }
                          ]
                        },
                        "id": 12459,
                        "nodeType": "IfStatement",
                        "src": "10445:320:68",
                        "trueBody": {
                          "id": 12446,
                          "nodeType": "Block",
                          "src": "10504:95:68",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12442,
                                    "name": "onBehalfOf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12361,
                                    "src": "10566:10:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12443,
                                    "name": "paybackAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12408,
                                    "src": "10578:13:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 12438,
                                          "name": "reserve",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12372,
                                          "src": "10529:7:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                            "typeString": "struct DataTypes.ReserveData storage pointer"
                                          }
                                        },
                                        "id": 12439,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "stableDebtTokenAddress",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 20513,
                                        "src": "10529:30:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 12437,
                                      "name": "IStableDebtToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7133,
                                      "src": "10512:16:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IStableDebtToken_$7133_$",
                                        "typeString": "type(contract IStableDebtToken)"
                                      }
                                    },
                                    "id": 12440,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10512:48:68",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IStableDebtToken_$7133",
                                      "typeString": "contract IStableDebtToken"
                                    }
                                  },
                                  "id": 12441,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "burn",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7070,
                                  "src": "10512:53:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256) external"
                                  }
                                },
                                "id": 12444,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10512:80:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12445,
                              "nodeType": "ExpressionStatement",
                              "src": "10512:80:68"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          12461
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12461,
                            "mutability": "mutable",
                            "name": "aToken",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12523,
                            "src": "10771:14:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 12460,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "10771:7:68",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12464,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 12462,
                            "name": "reserve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12372,
                            "src": "10788:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                              "typeString": "struct DataTypes.ReserveData storage pointer"
                            }
                          },
                          "id": 12463,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "aTokenAddress",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 20511,
                          "src": "10788:21:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10771:38:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12468,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12355,
                              "src": "10843:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12469,
                              "name": "aToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12461,
                              "src": "10850:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12470,
                              "name": "paybackAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12408,
                              "src": "10858:13:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 12471,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10873:1:68",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12465,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12372,
                              "src": "10815:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            "id": 12467,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "updateInterestRates",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18500,
                            "src": "10815:27:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReserveData_$20520_storage_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$bound_to$_t_struct$_ReserveData_$20520_storage_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveData storage pointer,address,address,uint256,uint256)"
                            }
                          },
                          "id": 12472,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10815:60:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12473,
                        "nodeType": "ExpressionStatement",
                        "src": "10815:60:68"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12482,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 12479,
                                "name": "paybackAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12408,
                                "src": "10919:13:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12476,
                                    "name": "variableDebt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12380,
                                    "src": "10901:12:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 12474,
                                    "name": "stableDebt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12378,
                                    "src": "10886:10:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 12475,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4329,
                                  "src": "10886:14:68",
                                  "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": 12477,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10886:28:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 12478,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4346,
                              "src": "10886:32:68",
                              "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": 12480,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10886:47:68",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 12481,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10937:1:68",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "10886:52:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 12493,
                        "nodeType": "IfStatement",
                        "src": "10882:129:68",
                        "trueBody": {
                          "id": 12492,
                          "nodeType": "Block",
                          "src": "10940:71:68",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12487,
                                      "name": "reserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12372,
                                      "src": "10986:7:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                        "typeString": "struct DataTypes.ReserveData storage pointer"
                                      }
                                    },
                                    "id": 12488,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "id",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20519,
                                    "src": "10986:10:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "66616c7365",
                                    "id": 12489,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10998:5:68",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "false"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 12483,
                                      "name": "_usersConfig",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15777,
                                      "src": "10948:12:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserConfigurationMap_$20526_storage_$",
                                        "typeString": "mapping(address => struct DataTypes.UserConfigurationMap storage ref)"
                                      }
                                    },
                                    "id": 12485,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 12484,
                                      "name": "onBehalfOf",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12361,
                                      "src": "10961:10:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "10948:24:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage",
                                      "typeString": "struct DataTypes.UserConfigurationMap storage ref"
                                    }
                                  },
                                  "id": 12486,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "setBorrowing",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 16801,
                                  "src": "10948:37:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UserConfigurationMap_$20526_storage_ptr_$_t_uint256_$_t_bool_$returns$__$bound_to$_t_struct$_UserConfigurationMap_$20526_storage_ptr_$",
                                    "typeString": "function (struct DataTypes.UserConfigurationMap storage pointer,uint256,bool)"
                                  }
                                },
                                "id": 12490,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10948:56:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12491,
                              "nodeType": "ExpressionStatement",
                              "src": "10948:56:68"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12498,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "11048:3:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 12499,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11048:10:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12500,
                              "name": "aToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12461,
                              "src": "11060:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12501,
                              "name": "paybackAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12408,
                              "src": "11068:13:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12495,
                                  "name": "asset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12355,
                                  "src": "11024:5:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 12494,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "11017:6:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 12496,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11017:13:68",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 12497,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4205,
                            "src": "11017:30:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                              "typeString": "function (contract IERC20,address,address,uint256)"
                            }
                          },
                          "id": 12502,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11017:65:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12503,
                        "nodeType": "ExpressionStatement",
                        "src": "11017:65:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12508,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "11121:3:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 12509,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11121:10:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12510,
                              "name": "paybackAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12408,
                              "src": "11133:13:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12505,
                                  "name": "aToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12461,
                                  "src": "11097:6:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 12504,
                                "name": "IAToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5667,
                                "src": "11089:7:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IAToken_$5667_$",
                                  "typeString": "type(contract IAToken)"
                                }
                              },
                              "id": 12506,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11089:15:68",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAToken_$5667",
                                "typeString": "contract IAToken"
                              }
                            },
                            "id": 12507,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "handleRepayment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5654,
                            "src": "11089:31:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 12511,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11089:58:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12512,
                        "nodeType": "ExpressionStatement",
                        "src": "11089:58:68"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12514,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12355,
                              "src": "11165:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12515,
                              "name": "onBehalfOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12361,
                              "src": "11172:10:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12516,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "11184:3:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 12517,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11184:10:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12518,
                              "name": "paybackAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12408,
                              "src": "11196:13:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 12513,
                            "name": "Repay",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6150,
                            "src": "11159:5:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 12519,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11159:51:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12520,
                        "nodeType": "EmitStatement",
                        "src": "11154:56:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12521,
                          "name": "paybackAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12408,
                          "src": "11224:13:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 12368,
                        "id": 12522,
                        "nodeType": "Return",
                        "src": "11217:20:68"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12353,
                    "nodeType": "StructuredDocumentation",
                    "src": "8801:862:68",
                    "text": " @notice Repays a borrowed `amount` on a specific reserve, burning the equivalent debt tokens owned\n - E.g. User repays 100 USDC, burning 100 variable/stable debt tokens of the `onBehalfOf` address\n @param asset The address of the borrowed underlying asset previously borrowed\n @param amount The amount to repay\n - Send the value type(uint256).max in order to repay the whole debt for `asset` on the specific `debtMode`\n @param rateMode The interest rate mode at of the debt the user wants to repay: 1 for Stable, 2 for Variable\n @param onBehalfOf Address of the user who will get his debt reduced/removed. Should be the address of the\n user calling the function if he wants to reduce/remove his own debt, or the address of any other\n other borrower whose debt should be removed\n @return The final amount repaid*"
                  },
                  "functionSelector": "573ade81",
                  "id": 12524,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 12365,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 12364,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12015,
                        "src": "9788:13:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "9788:13:68"
                    }
                  ],
                  "name": "repay",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12363,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9779:8:68"
                  },
                  "parameters": {
                    "id": 12362,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12355,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12524,
                        "src": "9686:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12354,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9686:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12357,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12524,
                        "src": "9705:14:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12356,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9705:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12359,
                        "mutability": "mutable",
                        "name": "rateMode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12524,
                        "src": "9725:16:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12358,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9725:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12361,
                        "mutability": "mutable",
                        "name": "onBehalfOf",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12524,
                        "src": "9747:18:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12360,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9747:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9680:89:68"
                  },
                  "returnParameters": {
                    "id": 12368,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12367,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12524,
                        "src": "9811:7:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12366,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9811:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9810:9:68"
                  },
                  "scope": 13934,
                  "src": "9666:1576:68",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6293
                  ],
                  "body": {
                    "id": 12656,
                    "nodeType": "Block",
                    "src": "11573:1220:68",
                    "statements": [
                      {
                        "assignments": [
                          12538
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12538,
                            "mutability": "mutable",
                            "name": "reserve",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12656,
                            "src": "11579:37:68",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                              "typeString": "struct DataTypes.ReserveData"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12537,
                              "name": "DataTypes.ReserveData",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20520,
                              "src": "11579:21:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12542,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 12539,
                            "name": "_reserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15773,
                            "src": "11619:9:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                              "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                            }
                          },
                          "id": 12541,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 12540,
                            "name": "asset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12527,
                            "src": "11629:5:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11619:16:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                            "typeString": "struct DataTypes.ReserveData storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11579:56:68"
                      },
                      {
                        "assignments": [
                          12544,
                          12546
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12544,
                            "mutability": "mutable",
                            "name": "stableDebt",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12656,
                            "src": "11643:18:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12543,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11643:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 12546,
                            "mutability": "mutable",
                            "name": "variableDebt",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12656,
                            "src": "11663:20:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12545,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11663:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12553,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12549,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "11714:3:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 12550,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11714:10:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12551,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12538,
                              "src": "11726:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12547,
                              "name": "Helpers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17304,
                              "src": "11687:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Helpers_$17304_$",
                                "typeString": "type(library Helpers)"
                              }
                            },
                            "id": 12548,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getUserCurrentDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17275,
                            "src": "11687:26:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_struct$_ReserveData_$20520_storage_ptr_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,struct DataTypes.ReserveData storage pointer) view returns (uint256,uint256)"
                            }
                          },
                          "id": 12552,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11687:47:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11642:92:68"
                      },
                      {
                        "assignments": [
                          12557
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12557,
                            "mutability": "mutable",
                            "name": "interestRateMode",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12656,
                            "src": "11741:43:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                              "typeString": "enum DataTypes.InterestRateMode"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12556,
                              "name": "DataTypes.InterestRateMode",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20530,
                              "src": "11741:26:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                "typeString": "enum DataTypes.InterestRateMode"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12562,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12560,
                              "name": "rateMode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12529,
                              "src": "11814:8:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12558,
                              "name": "DataTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20531,
                              "src": "11787:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_DataTypes_$20531_$",
                                "typeString": "type(library DataTypes)"
                              }
                            },
                            "id": 12559,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "InterestRateMode",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20530,
                            "src": "11787:26:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_InterestRateMode_$20530_$",
                              "typeString": "type(enum DataTypes.InterestRateMode)"
                            }
                          },
                          "id": 12561,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11787:36:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                            "typeString": "enum DataTypes.InterestRateMode"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11741:82:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12566,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12538,
                              "src": "11874:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 12567,
                                "name": "_usersConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15777,
                                "src": "11889:12:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserConfigurationMap_$20526_storage_$",
                                  "typeString": "mapping(address => struct DataTypes.UserConfigurationMap storage ref)"
                                }
                              },
                              "id": 12570,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12568,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "11902:3:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 12569,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "11902:10:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11889:24:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage",
                                "typeString": "struct DataTypes.UserConfigurationMap storage ref"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12571,
                              "name": "stableDebt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12544,
                              "src": "11921:10:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12572,
                              "name": "variableDebt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12546,
                              "src": "11939:12:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12573,
                              "name": "interestRateMode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12557,
                              "src": "11959:16:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                "typeString": "enum DataTypes.InterestRateMode"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              },
                              {
                                "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage",
                                "typeString": "struct DataTypes.UserConfigurationMap storage ref"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                "typeString": "enum DataTypes.InterestRateMode"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12563,
                              "name": "ValidationLogic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19773,
                              "src": "11830:15:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ValidationLogic_$19773_$",
                                "typeString": "type(library ValidationLogic)"
                              }
                            },
                            "id": 12565,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "validateSwapRateMode",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 19432,
                            "src": "11830:36:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_delegatecall_view$_t_struct$_ReserveData_$20520_storage_ptr_$_t_struct$_UserConfigurationMap_$20526_storage_ptr_$_t_uint256_$_t_uint256_$_t_enum$_InterestRateMode_$20530_$returns$__$",
                              "typeString": "function (struct DataTypes.ReserveData storage pointer,struct DataTypes.UserConfigurationMap storage pointer,uint256,uint256,enum DataTypes.InterestRateMode) view"
                            }
                          },
                          "id": 12574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11830:151:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12575,
                        "nodeType": "ExpressionStatement",
                        "src": "11830:151:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12576,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12538,
                              "src": "11988:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            "id": 12578,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "updateState",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18183,
                            "src": "11988:19:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReserveData_$20520_storage_ptr_$returns$__$bound_to$_t_struct$_ReserveData_$20520_storage_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveData storage pointer)"
                            }
                          },
                          "id": 12579,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11988:21:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12580,
                        "nodeType": "ExpressionStatement",
                        "src": "11988:21:68"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                            "typeString": "enum DataTypes.InterestRateMode"
                          },
                          "id": 12585,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12581,
                            "name": "interestRateMode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12557,
                            "src": "12020:16:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                              "typeString": "enum DataTypes.InterestRateMode"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12582,
                                "name": "DataTypes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20531,
                                "src": "12040:9:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_DataTypes_$20531_$",
                                  "typeString": "type(library DataTypes)"
                                }
                              },
                              "id": 12583,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "InterestRateMode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20530,
                              "src": "12040:26:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_InterestRateMode_$20530_$",
                                "typeString": "type(enum DataTypes.InterestRateMode)"
                              }
                            },
                            "id": 12584,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "STABLE",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12040:33:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                              "typeString": "enum DataTypes.InterestRateMode"
                            }
                          },
                          "src": "12020:53:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 12637,
                          "nodeType": "Block",
                          "src": "12343:331:68",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12616,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "12418:3:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 12617,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12418:10:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12618,
                                    "name": "variableDebt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12546,
                                    "src": "12438:12:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12619,
                                      "name": "reserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12538,
                                      "src": "12460:7:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                        "typeString": "struct DataTypes.ReserveData storage pointer"
                                      }
                                    },
                                    "id": 12620,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "variableBorrowIndex",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20501,
                                    "src": "12460:27:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 12612,
                                          "name": "reserve",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12538,
                                          "src": "12370:7:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                            "typeString": "struct DataTypes.ReserveData storage pointer"
                                          }
                                        },
                                        "id": 12613,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "variableDebtTokenAddress",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 20515,
                                        "src": "12370:32:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 12611,
                                      "name": "IVariableDebtToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7504,
                                      "src": "12351:18:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IVariableDebtToken_$7504_$",
                                        "typeString": "type(contract IVariableDebtToken)"
                                      }
                                    },
                                    "id": 12614,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12351:52:68",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IVariableDebtToken_$7504",
                                      "typeString": "contract IVariableDebtToken"
                                    }
                                  },
                                  "id": 12615,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "burn",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7497,
                                  "src": "12351:57:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256) external"
                                  }
                                },
                                "id": 12621,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12351:144:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12622,
                              "nodeType": "ExpressionStatement",
                              "src": "12351:144:68"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12628,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "12566:3:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 12629,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12566:10:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12630,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "12586:3:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 12631,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12586:10:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12632,
                                    "name": "variableDebt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12546,
                                    "src": "12606:12:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12633,
                                      "name": "reserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12538,
                                      "src": "12628:7:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                        "typeString": "struct DataTypes.ReserveData storage pointer"
                                      }
                                    },
                                    "id": 12634,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "currentStableBorrowRate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20507,
                                    "src": "12628:31:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 12624,
                                          "name": "reserve",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12538,
                                          "src": "12520:7:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                            "typeString": "struct DataTypes.ReserveData storage pointer"
                                          }
                                        },
                                        "id": 12625,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "stableDebtTokenAddress",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 20513,
                                        "src": "12520:30:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 12623,
                                      "name": "IStableDebtToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7133,
                                      "src": "12503:16:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IStableDebtToken_$7133_$",
                                        "typeString": "type(contract IStableDebtToken)"
                                      }
                                    },
                                    "id": 12626,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12503:48:68",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IStableDebtToken_$7133",
                                      "typeString": "contract IStableDebtToken"
                                    }
                                  },
                                  "id": 12627,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mint",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7062,
                                  "src": "12503:53:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (address,address,uint256,uint256) external returns (bool)"
                                  }
                                },
                                "id": 12635,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12503:164:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 12636,
                              "nodeType": "ExpressionStatement",
                              "src": "12503:164:68"
                            }
                          ]
                        },
                        "id": 12638,
                        "nodeType": "IfStatement",
                        "src": "12016:658:68",
                        "trueBody": {
                          "id": 12610,
                          "nodeType": "Block",
                          "src": "12075:262:68",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12591,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "12137:3:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 12592,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12137:10:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12593,
                                    "name": "stableDebt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12544,
                                    "src": "12149:10:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 12587,
                                          "name": "reserve",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12538,
                                          "src": "12100:7:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                            "typeString": "struct DataTypes.ReserveData storage pointer"
                                          }
                                        },
                                        "id": 12588,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "stableDebtTokenAddress",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 20513,
                                        "src": "12100:30:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 12586,
                                      "name": "IStableDebtToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7133,
                                      "src": "12083:16:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IStableDebtToken_$7133_$",
                                        "typeString": "type(contract IStableDebtToken)"
                                      }
                                    },
                                    "id": 12589,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12083:48:68",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IStableDebtToken_$7133",
                                      "typeString": "contract IStableDebtToken"
                                    }
                                  },
                                  "id": 12590,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "burn",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7070,
                                  "src": "12083:53:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256) external"
                                  }
                                },
                                "id": 12594,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12083:77:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12595,
                              "nodeType": "ExpressionStatement",
                              "src": "12083:77:68"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12601,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "12235:3:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 12602,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12235:10:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12603,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "12255:3:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 12604,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12255:10:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 12605,
                                    "name": "stableDebt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12544,
                                    "src": "12275:10:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12606,
                                      "name": "reserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12538,
                                      "src": "12295:7:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                        "typeString": "struct DataTypes.ReserveData storage pointer"
                                      }
                                    },
                                    "id": 12607,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "variableBorrowIndex",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20501,
                                    "src": "12295:27:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 12597,
                                          "name": "reserve",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12538,
                                          "src": "12187:7:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                            "typeString": "struct DataTypes.ReserveData storage pointer"
                                          }
                                        },
                                        "id": 12598,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "variableDebtTokenAddress",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 20515,
                                        "src": "12187:32:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 12596,
                                      "name": "IVariableDebtToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7504,
                                      "src": "12168:18:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IVariableDebtToken_$7504_$",
                                        "typeString": "type(contract IVariableDebtToken)"
                                      }
                                    },
                                    "id": 12599,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12168:52:68",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IVariableDebtToken_$7504",
                                      "typeString": "contract IVariableDebtToken"
                                    }
                                  },
                                  "id": 12600,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mint",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7478,
                                  "src": "12168:57:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (address,address,uint256,uint256) external returns (bool)"
                                  }
                                },
                                "id": 12608,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12168:162:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 12609,
                              "nodeType": "ExpressionStatement",
                              "src": "12168:162:68"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12642,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12527,
                              "src": "12708:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12643,
                                "name": "reserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12538,
                                "src": "12715:7:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                }
                              },
                              "id": 12644,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "aTokenAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20511,
                              "src": "12715:21:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 12645,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12738:1:68",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 12646,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12741:1:68",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12639,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12538,
                              "src": "12680:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            "id": 12641,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "updateInterestRates",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18500,
                            "src": "12680:27:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReserveData_$20520_storage_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$bound_to$_t_struct$_ReserveData_$20520_storage_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveData storage pointer,address,address,uint256,uint256)"
                            }
                          },
                          "id": 12647,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12680:63:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12648,
                        "nodeType": "ExpressionStatement",
                        "src": "12680:63:68"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12650,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12527,
                              "src": "12760:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12651,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "12767:3:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 12652,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12767:10:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12653,
                              "name": "rateMode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12529,
                              "src": "12779:8:68",
                              "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": 12649,
                            "name": "Swap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6159,
                            "src": "12755:4:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 12654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12755:33:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12655,
                        "nodeType": "EmitStatement",
                        "src": "12750:38:68"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12525,
                    "nodeType": "StructuredDocumentation",
                    "src": "11246:231:68",
                    "text": " @dev Allows a borrower to swap his debt between stable and variable mode, or viceversa\n @param asset The address of the underlying asset borrowed\n @param rateMode The rate mode that the user wants to swap to*"
                  },
                  "functionSelector": "94ba89a2",
                  "id": 12657,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 12533,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 12532,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12015,
                        "src": "11559:13:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "11559:13:68"
                    }
                  ],
                  "name": "swapBorrowRateMode",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12531,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "11550:8:68"
                  },
                  "parameters": {
                    "id": 12530,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12527,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12657,
                        "src": "11508:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12526,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11508:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12529,
                        "mutability": "mutable",
                        "name": "rateMode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12657,
                        "src": "11523:16:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12528,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11523:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11507:33:68"
                  },
                  "returnParameters": {
                    "id": 12534,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11573:0:68"
                  },
                  "scope": 13934,
                  "src": "11480:1313:68",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6301
                  ],
                  "body": {
                    "id": 12758,
                    "nodeType": "Block",
                    "src": "13449:839:68",
                    "statements": [
                      {
                        "assignments": [
                          12671
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12671,
                            "mutability": "mutable",
                            "name": "reserve",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12758,
                            "src": "13455:37:68",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                              "typeString": "struct DataTypes.ReserveData"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12670,
                              "name": "DataTypes.ReserveData",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20520,
                              "src": "13455:21:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12675,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 12672,
                            "name": "_reserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15773,
                            "src": "13495:9:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                              "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                            }
                          },
                          "id": 12674,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 12673,
                            "name": "asset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12660,
                            "src": "13505:5:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13495:16:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                            "typeString": "struct DataTypes.ReserveData storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13455:56:68"
                      },
                      {
                        "assignments": [
                          12677
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12677,
                            "mutability": "mutable",
                            "name": "stableDebtToken",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12758,
                            "src": "13518:22:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$4012",
                              "typeString": "contract IERC20"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12676,
                              "name": "IERC20",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4012,
                              "src": "13518:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12682,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12679,
                                "name": "reserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12671,
                                "src": "13550:7:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                }
                              },
                              "id": 12680,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "stableDebtTokenAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20513,
                              "src": "13550:30:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 12678,
                            "name": "IERC20",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4012,
                            "src": "13543:6:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                              "typeString": "type(contract IERC20)"
                            }
                          },
                          "id": 12681,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13543:38:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$4012",
                            "typeString": "contract IERC20"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13518:63:68"
                      },
                      {
                        "assignments": [
                          12684
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12684,
                            "mutability": "mutable",
                            "name": "variableDebtToken",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12758,
                            "src": "13587:24:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$4012",
                              "typeString": "contract IERC20"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12683,
                              "name": "IERC20",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4012,
                              "src": "13587:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12689,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12686,
                                "name": "reserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12671,
                                "src": "13621:7:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                }
                              },
                              "id": 12687,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "variableDebtTokenAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20515,
                              "src": "13621:32:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 12685,
                            "name": "IERC20",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4012,
                            "src": "13614:6:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                              "typeString": "type(contract IERC20)"
                            }
                          },
                          "id": 12688,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13614:40:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$4012",
                            "typeString": "contract IERC20"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13587:67:68"
                      },
                      {
                        "assignments": [
                          12691
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12691,
                            "mutability": "mutable",
                            "name": "aTokenAddress",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12758,
                            "src": "13660:21:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 12690,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "13660:7:68",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12694,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 12692,
                            "name": "reserve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12671,
                            "src": "13684:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                              "typeString": "struct DataTypes.ReserveData storage pointer"
                            }
                          },
                          "id": 12693,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "aTokenAddress",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 20511,
                          "src": "13684:21:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13660:45:68"
                      },
                      {
                        "assignments": [
                          12696
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12696,
                            "mutability": "mutable",
                            "name": "stableDebt",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12758,
                            "src": "13712:18:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12695,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13712:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12703,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12701,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12662,
                              "src": "13767:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 12698,
                                  "name": "stableDebtToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12677,
                                  "src": "13740:15:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$4012",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$4012",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 12697,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "13733:6:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 12699,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13733:23:68",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 12700,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3951,
                            "src": "13733:33:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 12702,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13733:39:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13712:60:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12707,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12671,
                              "src": "13836:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12708,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12660,
                              "src": "13851:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12709,
                              "name": "stableDebtToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12677,
                              "src": "13864:15:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12710,
                              "name": "variableDebtToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12684,
                              "src": "13887:17:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12711,
                              "name": "aTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12691,
                              "src": "13912:13:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              },
                              {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12704,
                              "name": "ValidationLogic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19773,
                              "src": "13779:15:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ValidationLogic_$19773_$",
                                "typeString": "type(library ValidationLogic)"
                              }
                            },
                            "id": 12706,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "validateRebalanceStableBorrowRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 19528,
                            "src": "13779:49:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_delegatecall_view$_t_struct$_ReserveData_$20520_storage_ptr_$_t_address_$_t_contract$_IERC20_$4012_$_t_contract$_IERC20_$4012_$_t_address_$returns$__$",
                              "typeString": "function (struct DataTypes.ReserveData storage pointer,address,contract IERC20,contract IERC20,address) view"
                            }
                          },
                          "id": 12712,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13779:152:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12713,
                        "nodeType": "ExpressionStatement",
                        "src": "13779:152:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12714,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12671,
                              "src": "13938:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            "id": 12716,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "updateState",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18183,
                            "src": "13938:19:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReserveData_$20520_storage_ptr_$returns$__$bound_to$_t_struct$_ReserveData_$20520_storage_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveData storage pointer)"
                            }
                          },
                          "id": 12717,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13938:21:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12718,
                        "nodeType": "ExpressionStatement",
                        "src": "13938:21:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12726,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12662,
                              "src": "14014:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12727,
                              "name": "stableDebt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12696,
                              "src": "14020:10:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 12722,
                                      "name": "stableDebtToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12677,
                                      "src": "13991:15:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$4012",
                                        "typeString": "contract IERC20"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IERC20_$4012",
                                        "typeString": "contract IERC20"
                                      }
                                    ],
                                    "id": 12721,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13983:7:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 12720,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13983:7:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 12723,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13983:24:68",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 12719,
                                "name": "IStableDebtToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7133,
                                "src": "13966:16:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IStableDebtToken_$7133_$",
                                  "typeString": "type(contract IStableDebtToken)"
                                }
                              },
                              "id": 12724,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13966:42:68",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IStableDebtToken_$7133",
                                "typeString": "contract IStableDebtToken"
                              }
                            },
                            "id": 12725,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "burn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7070,
                            "src": "13966:47:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 12728,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13966:65:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12729,
                        "nodeType": "ExpressionStatement",
                        "src": "13966:65:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12737,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12662,
                              "src": "14092:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12738,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12662,
                              "src": "14104:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12739,
                              "name": "stableDebt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12696,
                              "src": "14116:10:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12740,
                                "name": "reserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12671,
                                "src": "14134:7:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                }
                              },
                              "id": 12741,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "currentStableBorrowRate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20507,
                              "src": "14134:31:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 12733,
                                      "name": "stableDebtToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12677,
                                      "src": "14062:15:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$4012",
                                        "typeString": "contract IERC20"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IERC20_$4012",
                                        "typeString": "contract IERC20"
                                      }
                                    ],
                                    "id": 12732,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "14054:7:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 12731,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "14054:7:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 12734,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14054:24:68",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 12730,
                                "name": "IStableDebtToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7133,
                                "src": "14037:16:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IStableDebtToken_$7133_$",
                                  "typeString": "type(contract IStableDebtToken)"
                                }
                              },
                              "id": 12735,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14037:42:68",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IStableDebtToken_$7133",
                                "typeString": "contract IStableDebtToken"
                              }
                            },
                            "id": 12736,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7062,
                            "src": "14037:47:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256,uint256) external returns (bool)"
                            }
                          },
                          "id": 12742,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14037:134:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12743,
                        "nodeType": "ExpressionStatement",
                        "src": "14037:134:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12747,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12660,
                              "src": "14206:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12748,
                              "name": "aTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12691,
                              "src": "14213:13:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 12749,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14228:1:68",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 12750,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14231:1:68",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12744,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12671,
                              "src": "14178:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            "id": 12746,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "updateInterestRates",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18500,
                            "src": "14178:27:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReserveData_$20520_storage_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$bound_to$_t_struct$_ReserveData_$20520_storage_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveData storage pointer,address,address,uint256,uint256)"
                            }
                          },
                          "id": 12751,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14178:55:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12752,
                        "nodeType": "ExpressionStatement",
                        "src": "14178:55:68"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12754,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12660,
                              "src": "14271:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12755,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12662,
                              "src": "14278:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 12753,
                            "name": "RebalanceStableBorrowRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6180,
                            "src": "14245:25:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 12756,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14245:38:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12757,
                        "nodeType": "EmitStatement",
                        "src": "14240:43:68"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12658,
                    "nodeType": "StructuredDocumentation",
                    "src": "12797:553:68",
                    "text": " @dev Rebalances the stable interest rate of a user to the current stable rate defined on the reserve.\n - Users can be rebalanced if the following conditions are satisfied:\n     1. Usage ratio is above 95%\n     2. the current deposit APY is below REBALANCE_UP_THRESHOLD * maxVariableBorrowRate, which means that too much has been\n        borrowed at a stable rate and depositors are not earning enough\n @param asset The address of the underlying asset borrowed\n @param user The address of the user to be rebalanced*"
                  },
                  "functionSelector": "cd112382",
                  "id": 12759,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 12666,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 12665,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12015,
                        "src": "13435:13:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "13435:13:68"
                    }
                  ],
                  "name": "rebalanceStableBorrowRate",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12664,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "13426:8:68"
                  },
                  "parameters": {
                    "id": 12663,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12660,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12759,
                        "src": "13388:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12659,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13388:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12662,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12759,
                        "src": "13403:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12661,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13403:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13387:29:68"
                  },
                  "returnParameters": {
                    "id": 12667,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13449:0:68"
                  },
                  "scope": 13934,
                  "src": "13353:935:68",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6309
                  ],
                  "body": {
                    "id": 12822,
                    "nodeType": "Block",
                    "src": "14683:568:68",
                    "statements": [
                      {
                        "assignments": [
                          12773
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12773,
                            "mutability": "mutable",
                            "name": "reserve",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12822,
                            "src": "14689:37:68",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                              "typeString": "struct DataTypes.ReserveData"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12772,
                              "name": "DataTypes.ReserveData",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20520,
                              "src": "14689:21:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12777,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 12774,
                            "name": "_reserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15773,
                            "src": "14729:9:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                              "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                            }
                          },
                          "id": 12776,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 12775,
                            "name": "asset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12762,
                            "src": "14739:5:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "14729:16:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                            "typeString": "struct DataTypes.ReserveData storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14689:56:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12781,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12773,
                              "src": "14809:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12782,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12762,
                              "src": "14824:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12783,
                              "name": "useAsCollateral",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12764,
                              "src": "14837:15:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12784,
                              "name": "_reserves",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15773,
                              "src": "14860:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 12785,
                                "name": "_usersConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15777,
                                "src": "14877:12:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserConfigurationMap_$20526_storage_$",
                                  "typeString": "mapping(address => struct DataTypes.UserConfigurationMap storage ref)"
                                }
                              },
                              "id": 12788,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12786,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "14890:3:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 12787,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "14890:10:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14877:24:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage",
                                "typeString": "struct DataTypes.UserConfigurationMap storage ref"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12789,
                              "name": "_reservesList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15781,
                              "src": "14909:13:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12790,
                              "name": "_reservesCount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15783,
                              "src": "14930:14:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12791,
                                  "name": "_addressesProvider",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15769,
                                  "src": "14952:18:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                                    "typeString": "contract ILendingPoolAddressesProvider"
                                  }
                                },
                                "id": 12792,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getPriceOracle",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6601,
                                "src": "14952:33:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              "id": 12793,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14952:35:68",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                              },
                              {
                                "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage",
                                "typeString": "struct DataTypes.UserConfigurationMap storage ref"
                              },
                              {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12778,
                              "name": "ValidationLogic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19773,
                              "src": "14752:15:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ValidationLogic_$19773_$",
                                "typeString": "type(library ValidationLogic)"
                              }
                            },
                            "id": 12780,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "validateSetUseReserveAsCollateral",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 19591,
                            "src": "14752:49:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_delegatecall_view$_t_struct$_ReserveData_$20520_storage_ptr_$_t_address_$_t_bool_$_t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$_$_t_struct$_UserConfigurationMap_$20526_storage_ptr_$_t_mapping$_t_uint256_$_t_address_$_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (struct DataTypes.ReserveData storage pointer,address,bool,mapping(address => struct DataTypes.ReserveData storage ref),struct DataTypes.UserConfigurationMap storage pointer,mapping(uint256 => address),uint256,address) view"
                            }
                          },
                          "id": 12794,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14752:241:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12795,
                        "nodeType": "ExpressionStatement",
                        "src": "14752:241:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12801,
                                "name": "reserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12773,
                                "src": "15046:7:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                }
                              },
                              "id": 12802,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "id",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20519,
                              "src": "15046:10:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12803,
                              "name": "useAsCollateral",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12764,
                              "src": "15058:15:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 12796,
                                "name": "_usersConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15777,
                                "src": "15000:12:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserConfigurationMap_$20526_storage_$",
                                  "typeString": "mapping(address => struct DataTypes.UserConfigurationMap storage ref)"
                                }
                              },
                              "id": 12799,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12797,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "15013:3:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 12798,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "15013:10:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "15000:24:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage",
                                "typeString": "struct DataTypes.UserConfigurationMap storage ref"
                              }
                            },
                            "id": 12800,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setUsingAsCollateral",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16855,
                            "src": "15000:45:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UserConfigurationMap_$20526_storage_ptr_$_t_uint256_$_t_bool_$returns$__$bound_to$_t_struct$_UserConfigurationMap_$20526_storage_ptr_$",
                              "typeString": "function (struct DataTypes.UserConfigurationMap storage pointer,uint256,bool)"
                            }
                          },
                          "id": 12804,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15000:74:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12805,
                        "nodeType": "ExpressionStatement",
                        "src": "15000:74:68"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 12806,
                          "name": "useAsCollateral",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12764,
                          "src": "15085:15:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 12820,
                          "nodeType": "Block",
                          "src": "15177:70:68",
                          "statements": [
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12815,
                                    "name": "asset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12762,
                                    "src": "15222:5:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12816,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "15229:3:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 12817,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "15229:10:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "id": 12814,
                                  "name": "ReserveUsedAsCollateralDisabled",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6173,
                                  "src": "15190:31:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                                    "typeString": "function (address,address)"
                                  }
                                },
                                "id": 12818,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15190:50:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12819,
                              "nodeType": "EmitStatement",
                              "src": "15185:55:68"
                            }
                          ]
                        },
                        "id": 12821,
                        "nodeType": "IfStatement",
                        "src": "15081:166:68",
                        "trueBody": {
                          "id": 12813,
                          "nodeType": "Block",
                          "src": "15102:69:68",
                          "statements": [
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 12808,
                                    "name": "asset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12762,
                                    "src": "15146:5:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12809,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "15153:3:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 12810,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "15153:10:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "id": 12807,
                                  "name": "ReserveUsedAsCollateralEnabled",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6166,
                                  "src": "15115:30:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                                    "typeString": "function (address,address)"
                                  }
                                },
                                "id": 12811,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15115:49:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 12812,
                              "nodeType": "EmitStatement",
                              "src": "15110:54:68"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12760,
                    "nodeType": "StructuredDocumentation",
                    "src": "14292:266:68",
                    "text": " @dev Allows depositors to enable/disable a specific deposited asset as collateral\n @param asset The address of the underlying asset deposited\n @param useAsCollateral `true` if the user wants to use the deposit as collateral, `false` otherwise*"
                  },
                  "functionSelector": "5a3b74b9",
                  "id": 12823,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 12768,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 12767,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12015,
                        "src": "14667:13:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "14667:13:68"
                    }
                  ],
                  "name": "setUserUseReserveAsCollateral",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12766,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "14654:8:68"
                  },
                  "parameters": {
                    "id": 12765,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12762,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12823,
                        "src": "14600:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12761,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14600:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12764,
                        "mutability": "mutable",
                        "name": "useAsCollateral",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12823,
                        "src": "14615:20:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12763,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "14615:4:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14599:37:68"
                  },
                  "returnParameters": {
                    "id": 12769,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14683:0:68"
                  },
                  "scope": 13934,
                  "src": "14561:690:68",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6323
                  ],
                  "body": {
                    "id": 12896,
                    "nodeType": "Block",
                    "src": "16298:659:68",
                    "statements": [
                      {
                        "assignments": [
                          12841
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12841,
                            "mutability": "mutable",
                            "name": "collateralManager",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12896,
                            "src": "16304:25:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 12840,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "16304:7:68",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12845,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12842,
                              "name": "_addressesProvider",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15769,
                              "src": "16332:18:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                                "typeString": "contract ILendingPoolAddressesProvider"
                              }
                            },
                            "id": 12843,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getLendingPoolCollateralManager",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6571,
                            "src": "16332:50:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 12844,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16332:52:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16304:80:68"
                      },
                      {
                        "assignments": [
                          12847,
                          12849
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12847,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12896,
                            "src": "16423:12:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 12846,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "16423:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 12849,
                            "mutability": "mutable",
                            "name": "result",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12896,
                            "src": "16437:19:68",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 12848,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "16437:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12862,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "6c69717569646174696f6e43616c6c28616464726573732c616464726573732c616464726573732c75696e743235362c626f6f6c29",
                                  "id": 12854,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16541:55:68",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_00a718a9d9ad23be6d712c3f743c97c344c043a2f5b8915b20cad9ae11f3f067",
                                    "typeString": "literal_string \"liquidationCall(address,address,address,uint256,bool)\""
                                  },
                                  "value": "liquidationCall(address,address,address,uint256,bool)"
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 12855,
                                  "name": "collateralAsset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12826,
                                  "src": "16608:15:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 12856,
                                  "name": "debtAsset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12828,
                                  "src": "16635:9:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 12857,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12830,
                                  "src": "16656:4:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 12858,
                                  "name": "debtToCover",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12832,
                                  "src": "16672:11:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 12859,
                                  "name": "receiveAToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12834,
                                  "src": "16695:13:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_00a718a9d9ad23be6d712c3f743c97c344c043a2f5b8915b20cad9ae11f3f067",
                                    "typeString": "literal_string \"liquidationCall(address,address,address,uint256,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 12852,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "16506:3:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 12853,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "16506:23:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 12860,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16506:212:68",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12850,
                              "name": "collateralManager",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12841,
                              "src": "16466:17:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 12851,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "delegatecall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "16466:30:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) returns (bool,bytes memory)"
                            }
                          },
                          "id": 12861,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16466:260:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16422:304:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12864,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12847,
                              "src": "16741:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12865,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "16750:6:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 12866,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "LP_LIQUIDATION_CALL_FAILED",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17062,
                              "src": "16750:33:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 12863,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "16733:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12867,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16733:51:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12868,
                        "nodeType": "ExpressionStatement",
                        "src": "16733:51:68"
                      },
                      {
                        "assignments": [
                          12870,
                          12872
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12870,
                            "mutability": "mutable",
                            "name": "returnCode",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12896,
                            "src": "16792:18:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12869,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16792:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 12872,
                            "mutability": "mutable",
                            "name": "returnMessage",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 12896,
                            "src": "16812:27:68",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string"
                            },
                            "typeName": {
                              "id": 12871,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "16812:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12882,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12875,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12849,
                              "src": "16854:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 12877,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "16863:7:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 12876,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16863:7:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 12879,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "16872:6:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                    "typeString": "type(string storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 12878,
                                    "name": "string",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16872:6:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                }
                              ],
                              "id": 12880,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "16862:17:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_uint256_$_$_t_type$_t_string_storage_ptr_$_$",
                                "typeString": "tuple(type(uint256),type(string storage pointer))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_uint256_$_$_t_type$_t_string_storage_ptr_$_$",
                                "typeString": "tuple(type(uint256),type(string storage pointer))"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12873,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "16843:3:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 12874,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "16843:10:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 12881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16843:37:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_string_memory_ptr_$",
                            "typeString": "tuple(uint256,string memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16791:89:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 12886,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 12884,
                                "name": "returnCode",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12870,
                                "src": "16895:10:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 12885,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16909:1:68",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "16895:15:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 12891,
                                      "name": "returnMessage",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12872,
                                      "src": "16936:13:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12889,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "16919:3:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 12890,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "16919:16:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 12892,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "16919:31:68",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 12888,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "16912:6:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                  "typeString": "type(string storage pointer)"
                                },
                                "typeName": {
                                  "id": 12887,
                                  "name": "string",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "16912:6:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 12893,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16912:39:68",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 12883,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "16887:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12894,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16887:65:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12895,
                        "nodeType": "ExpressionStatement",
                        "src": "16887:65:68"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12824,
                    "nodeType": "StructuredDocumentation",
                    "src": "15255:860:68",
                    "text": " @dev Function to liquidate a non-healthy position collateral-wise, with Health Factor below 1\n - The caller (liquidator) covers `debtToCover` amount of debt of the user getting liquidated, and receives\n   a proportionally amount of the `collateralAsset` plus a bonus to cover market risk\n @param collateralAsset The address of the underlying asset used as collateral, to receive as result of the liquidation\n @param debtAsset The address of the underlying borrowed asset to be repaid with the liquidation\n @param user The address of the borrower getting liquidated\n @param debtToCover The debt amount of borrowed `asset` the liquidator wants to cover\n @param receiveAToken `true` if the liquidators wants to receive the collateral aTokens, `false` if he wants\n to receive the underlying collateral asset directly*"
                  },
                  "functionSelector": "00a718a9",
                  "id": 12897,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 12838,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 12837,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12015,
                        "src": "16284:13:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "16284:13:68"
                    }
                  ],
                  "name": "liquidationCall",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12836,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "16275:8:68"
                  },
                  "parameters": {
                    "id": 12835,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12826,
                        "mutability": "mutable",
                        "name": "collateralAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12897,
                        "src": "16148:23:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12825,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16148:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12828,
                        "mutability": "mutable",
                        "name": "debtAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12897,
                        "src": "16177:17:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12827,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16177:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12830,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12897,
                        "src": "16200:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12829,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16200:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12832,
                        "mutability": "mutable",
                        "name": "debtToCover",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12897,
                        "src": "16218:19:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12831,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16218:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12834,
                        "mutability": "mutable",
                        "name": "receiveAToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12897,
                        "src": "16243:18:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12833,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "16243:4:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16142:123:68"
                  },
                  "returnParameters": {
                    "id": 12839,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16298:0:68"
                  },
                  "scope": 13934,
                  "src": "16118:839:68",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "canonicalName": "LendingPool.FlashLoanLocalVars",
                  "id": 12916,
                  "members": [
                    {
                      "constant": false,
                      "id": 12899,
                      "mutability": "mutable",
                      "name": "receiver",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12916,
                      "src": "16993:27:68",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IFlashLoanReceiver_$5547",
                        "typeString": "contract IFlashLoanReceiver"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12898,
                        "name": "IFlashLoanReceiver",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5547,
                        "src": "16993:18:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IFlashLoanReceiver_$5547",
                          "typeString": "contract IFlashLoanReceiver"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12901,
                      "mutability": "mutable",
                      "name": "oracle",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12916,
                      "src": "17026:14:68",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 12900,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "17026:7:68",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12903,
                      "mutability": "mutable",
                      "name": "i",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12916,
                      "src": "17046:9:68",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12902,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "17046:7:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12905,
                      "mutability": "mutable",
                      "name": "currentAsset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12916,
                      "src": "17061:20:68",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 12904,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "17061:7:68",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12907,
                      "mutability": "mutable",
                      "name": "currentATokenAddress",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12916,
                      "src": "17087:28:68",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 12906,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "17087:7:68",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12909,
                      "mutability": "mutable",
                      "name": "currentAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12916,
                      "src": "17121:21:68",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12908,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "17121:7:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12911,
                      "mutability": "mutable",
                      "name": "currentPremium",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12916,
                      "src": "17148:22:68",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12910,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "17148:7:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12913,
                      "mutability": "mutable",
                      "name": "currentAmountPlusPremium",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12916,
                      "src": "17176:32:68",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12912,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "17176:7:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12915,
                      "mutability": "mutable",
                      "name": "debtToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 12916,
                      "src": "17214:17:68",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 12914,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "17214:7:68",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "FlashLoanLocalVars",
                  "nodeType": "StructDefinition",
                  "scope": 13934,
                  "src": "16961:275:68",
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    6344
                  ],
                  "body": {
                    "id": 13216,
                    "nodeType": "Block",
                    "src": "18872:2413:68",
                    "statements": [
                      {
                        "assignments": [
                          12941
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12941,
                            "mutability": "mutable",
                            "name": "vars",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 13216,
                            "src": "18878:30:68",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                              "typeString": "struct LendingPool.FlashLoanLocalVars"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 12940,
                              "name": "FlashLoanLocalVars",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 12916,
                              "src": "18878:18:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_storage_ptr",
                                "typeString": "struct LendingPool.FlashLoanLocalVars"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12942,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18878:30:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 12946,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12922,
                              "src": "18949:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12947,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12925,
                              "src": "18957:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12943,
                              "name": "ValidationLogic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19773,
                              "src": "18915:15:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ValidationLogic_$19773_$",
                                "typeString": "type(library ValidationLogic)"
                              }
                            },
                            "id": 12945,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "validateFlashloan",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 19612,
                            "src": "18915:33:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address[] memory,uint256[] memory) pure"
                            }
                          },
                          "id": 12948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18915:50:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12949,
                        "nodeType": "ExpressionStatement",
                        "src": "18915:50:68"
                      },
                      {
                        "assignments": [
                          12954
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12954,
                            "mutability": "mutable",
                            "name": "aTokenAddresses",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 13216,
                            "src": "18972:32:68",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 12952,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "18972:7:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 12953,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "18972:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12961,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12958,
                                "name": "assets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12922,
                                "src": "19021:6:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 12959,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "19021:13:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 12957,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "19007:13:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 12955,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "19011:7:68",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 12956,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "19011:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 12960,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19007:28:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18972:63:68"
                      },
                      {
                        "assignments": [
                          12966
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12966,
                            "mutability": "mutable",
                            "name": "premiums",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 13216,
                            "src": "19041:25:68",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 12964,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "19041:7:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 12965,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "19041:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 12973,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12970,
                                "name": "assets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12922,
                                "src": "19083:6:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 12971,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "19083:13:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 12969,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "19069:13:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 12967,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "19073:7:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 12968,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "19073:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 12972,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19069:28:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19041:56:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12974,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12941,
                              "src": "19104:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                              }
                            },
                            "id": 12976,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "receiver",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12899,
                            "src": "19104:13:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IFlashLoanReceiver_$5547",
                              "typeString": "contract IFlashLoanReceiver"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 12978,
                                "name": "receiverAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12919,
                                "src": "19139:15:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 12977,
                              "name": "IFlashLoanReceiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5547,
                              "src": "19120:18:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IFlashLoanReceiver_$5547_$",
                                "typeString": "type(contract IFlashLoanReceiver)"
                              }
                            },
                            "id": 12979,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19120:35:68",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IFlashLoanReceiver_$5547",
                              "typeString": "contract IFlashLoanReceiver"
                            }
                          },
                          "src": "19104:51:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IFlashLoanReceiver_$5547",
                            "typeString": "contract IFlashLoanReceiver"
                          }
                        },
                        "id": 12981,
                        "nodeType": "ExpressionStatement",
                        "src": "19104:51:68"
                      },
                      {
                        "body": {
                          "id": 13040,
                          "nodeType": "Block",
                          "src": "19213:258:68",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13008,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 12997,
                                    "name": "aTokenAddresses",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12954,
                                    "src": "19221:15:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 13000,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12998,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12941,
                                      "src": "19237:4:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                        "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                      }
                                    },
                                    "id": 12999,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "i",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12903,
                                    "src": "19237:6:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "19221:23:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13001,
                                      "name": "_reserves",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15773,
                                      "src": "19247:9:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                        "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                      }
                                    },
                                    "id": 13006,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 13002,
                                        "name": "assets",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12922,
                                        "src": "19257:6:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 13005,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 13003,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12941,
                                          "src": "19264:4:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                            "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                          }
                                        },
                                        "id": 13004,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "i",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12903,
                                        "src": "19264:6:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "19257:14:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "19247:25:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                                      "typeString": "struct DataTypes.ReserveData storage ref"
                                    }
                                  },
                                  "id": 13007,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "aTokenAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20511,
                                  "src": "19247:39:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "19221:65:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 13009,
                              "nodeType": "ExpressionStatement",
                              "src": "19221:65:68"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13024,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13010,
                                    "name": "premiums",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12966,
                                    "src": "19295:8:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 13013,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13011,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12941,
                                      "src": "19304:4:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                        "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                      }
                                    },
                                    "id": 13012,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "i",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12903,
                                    "src": "19304:6:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "19295:16:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "3130303030",
                                      "id": 13022,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "19362:5:68",
                                      "subdenomination": null,
                                      "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": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 13019,
                                          "name": "_flashLoanPremiumTotal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15789,
                                          "src": "19334:22:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 13014,
                                            "name": "amounts",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12925,
                                            "src": "19314:7:68",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                              "typeString": "uint256[] calldata"
                                            }
                                          },
                                          "id": 13017,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 13015,
                                              "name": "vars",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 12941,
                                              "src": "19322:4:68",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                                "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                              }
                                            },
                                            "id": 13016,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "i",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12903,
                                            "src": "19322:6:68",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "19314:15:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 13018,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4409,
                                        "src": "19314:19:68",
                                        "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": 13020,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "19314:43:68",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 13021,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "div",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4426,
                                    "src": "19314:47:68",
                                    "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": 13023,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "19314:54:68",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19295:73:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13025,
                              "nodeType": "ExpressionStatement",
                              "src": "19295:73:68"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 13033,
                                    "name": "receiverAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12919,
                                    "src": "19431:15:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13034,
                                      "name": "amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12925,
                                      "src": "19448:7:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 13037,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 13035,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12941,
                                        "src": "19456:4:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                          "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                        }
                                      },
                                      "id": 13036,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "i",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12903,
                                      "src": "19456:6:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "19448:15:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 13027,
                                          "name": "aTokenAddresses",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12954,
                                          "src": "19385:15:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                            "typeString": "address[] memory"
                                          }
                                        },
                                        "id": 13030,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 13028,
                                            "name": "vars",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12941,
                                            "src": "19401:4:68",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                              "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                            }
                                          },
                                          "id": 13029,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "i",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12903,
                                          "src": "19401:6:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "19385:23:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 13026,
                                      "name": "IAToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5667,
                                      "src": "19377:7:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IAToken_$5667_$",
                                        "typeString": "type(contract IAToken)"
                                      }
                                    },
                                    "id": 13031,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "19377:32:68",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IAToken_$5667",
                                      "typeString": "contract IAToken"
                                    }
                                  },
                                  "id": 13032,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "transferUnderlyingTo",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5646,
                                  "src": "19377:53:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (address,uint256) external returns (uint256)"
                                  }
                                },
                                "id": 13038,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19377:87:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13039,
                              "nodeType": "ExpressionStatement",
                              "src": "19377:87:68"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12992,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12988,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12941,
                              "src": "19179:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                              }
                            },
                            "id": 12989,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "i",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12903,
                            "src": "19179:6:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12990,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12922,
                              "src": "19188:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 12991,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "19188:13:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19179:22:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13041,
                        "initializationExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 12986,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12982,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12941,
                                "src": "19167:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                  "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                }
                              },
                              "id": 12984,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "i",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12903,
                              "src": "19167:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 12985,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19176:1:68",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "19167:10:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 12987,
                          "nodeType": "ExpressionStatement",
                          "src": "19167:10:68"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 12995,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "19203:8:68",
                            "subExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12993,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12941,
                                "src": "19203:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                  "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                }
                              },
                              "id": 12994,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "i",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12903,
                              "src": "19203:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 12996,
                          "nodeType": "ExpressionStatement",
                          "src": "19203:8:68"
                        },
                        "nodeType": "ForStatement",
                        "src": "19162:309:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 13046,
                                  "name": "assets",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12922,
                                  "src": "19523:6:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 13047,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12925,
                                  "src": "19531:7:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                    "typeString": "uint256[] calldata"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 13048,
                                  "name": "premiums",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12966,
                                  "src": "19540:8:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 13049,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "19550:3:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 13050,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "19550:10:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 13051,
                                  "name": "params",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12932,
                                  "src": "19562:6:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                    "typeString": "uint256[] calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 13043,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12941,
                                    "src": "19492:4:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                      "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                    }
                                  },
                                  "id": 13044,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "receiver",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12899,
                                  "src": "19492:13:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IFlashLoanReceiver_$5547",
                                    "typeString": "contract IFlashLoanReceiver"
                                  }
                                },
                                "id": 13045,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "executeOperation",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5536,
                                "src": "19492:30:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                                  "typeString": "function (address[] memory,uint256[] memory,uint256[] memory,address,bytes memory) external returns (bool)"
                                }
                              },
                              "id": 13052,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19492:77:68",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13053,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "19577:6:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 13054,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "LP_INVALID_FLASH_LOAN_EXECUTOR_RETURN",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17191,
                              "src": "19577:44:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 13042,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "19477:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13055,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19477:150:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13056,
                        "nodeType": "ExpressionStatement",
                        "src": "19477:150:68"
                      },
                      {
                        "body": {
                          "id": 13214,
                          "nodeType": "Block",
                          "src": "19685:1596:68",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13079,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 13072,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12941,
                                    "src": "19693:4:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                      "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                    }
                                  },
                                  "id": 13074,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "currentAsset",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12905,
                                  "src": "19693:17:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13075,
                                    "name": "assets",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12922,
                                    "src": "19713:6:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 13078,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13076,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12941,
                                      "src": "19720:4:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                        "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                      }
                                    },
                                    "id": 13077,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "i",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12903,
                                    "src": "19720:6:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "19713:14:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "19693:34:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 13080,
                              "nodeType": "ExpressionStatement",
                              "src": "19693:34:68"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13088,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 13081,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12941,
                                    "src": "19735:4:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                      "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                    }
                                  },
                                  "id": 13083,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "currentAmount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12909,
                                  "src": "19735:18:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13084,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12925,
                                    "src": "19756:7:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                      "typeString": "uint256[] calldata"
                                    }
                                  },
                                  "id": 13087,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13085,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12941,
                                      "src": "19764:4:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                        "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                      }
                                    },
                                    "id": 13086,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "i",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12903,
                                    "src": "19764:6:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "19756:15:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19735:36:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13089,
                              "nodeType": "ExpressionStatement",
                              "src": "19735:36:68"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13097,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 13090,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12941,
                                    "src": "19779:4:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                      "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                    }
                                  },
                                  "id": 13092,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "currentPremium",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12911,
                                  "src": "19779:19:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13093,
                                    "name": "premiums",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12966,
                                    "src": "19801:8:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 13096,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13094,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12941,
                                      "src": "19810:4:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                        "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                      }
                                    },
                                    "id": 13095,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "i",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12903,
                                    "src": "19810:6:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "19801:16:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19779:38:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13098,
                              "nodeType": "ExpressionStatement",
                              "src": "19779:38:68"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13106,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 13099,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12941,
                                    "src": "19825:4:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                      "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                    }
                                  },
                                  "id": 13101,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "currentATokenAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12907,
                                  "src": "19825:25:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13102,
                                    "name": "aTokenAddresses",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12954,
                                    "src": "19853:15:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 13105,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13103,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12941,
                                      "src": "19869:4:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                        "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                      }
                                    },
                                    "id": 13104,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "i",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12903,
                                    "src": "19869:6:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "19853:23:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "19825:51:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 13107,
                              "nodeType": "ExpressionStatement",
                              "src": "19825:51:68"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13117,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 13108,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12941,
                                    "src": "19884:4:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                      "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                    }
                                  },
                                  "id": 13110,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "currentAmountPlusPremium",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12913,
                                  "src": "19884:29:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 13114,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12941,
                                        "src": "19939:4:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                          "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                        }
                                      },
                                      "id": 13115,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "currentPremium",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12911,
                                      "src": "19939:19:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 13111,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12941,
                                        "src": "19916:4:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                          "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                        }
                                      },
                                      "id": 13112,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "currentAmount",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12909,
                                      "src": "19916:18:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 13113,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4329,
                                    "src": "19916:22:68",
                                    "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": 13116,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "19916:43:68",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19884:75:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13118,
                              "nodeType": "ExpressionStatement",
                              "src": "19884:75:68"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                  "typeString": "enum DataTypes.InterestRateMode"
                                },
                                "id": 13129,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 13121,
                                        "name": "modes",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12928,
                                        "src": "19999:5:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                          "typeString": "uint256[] calldata"
                                        }
                                      },
                                      "id": 13124,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 13122,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12941,
                                          "src": "20005:4:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                            "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                          }
                                        },
                                        "id": 13123,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "i",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12903,
                                        "src": "20005:6:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "19999:13:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13119,
                                      "name": "DataTypes",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20531,
                                      "src": "19972:9:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_DataTypes_$20531_$",
                                        "typeString": "type(library DataTypes)"
                                      }
                                    },
                                    "id": 13120,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "InterestRateMode",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20530,
                                    "src": "19972:26:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_InterestRateMode_$20530_$",
                                      "typeString": "type(enum DataTypes.InterestRateMode)"
                                    }
                                  },
                                  "id": 13125,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "19972:41:68",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                    "typeString": "enum DataTypes.InterestRateMode"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13126,
                                      "name": "DataTypes",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20531,
                                      "src": "20017:9:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_DataTypes_$20531_$",
                                        "typeString": "type(library DataTypes)"
                                      }
                                    },
                                    "id": 13127,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "InterestRateMode",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20530,
                                    "src": "20017:26:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_InterestRateMode_$20530_$",
                                      "typeString": "type(enum DataTypes.InterestRateMode)"
                                    }
                                  },
                                  "id": 13128,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "NONE",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "20017:31:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                    "typeString": "enum DataTypes.InterestRateMode"
                                  }
                                },
                                "src": "19972:76:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 13199,
                                "nodeType": "Block",
                                "src": "20636:458:68",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 13181,
                                                "name": "vars",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12941,
                                                "src": "20855:4:68",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                                  "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                                }
                                              },
                                              "id": 13182,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "currentAsset",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 12905,
                                              "src": "20855:17:68",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 13183,
                                                "name": "msg",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -15,
                                                "src": "20886:3:68",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_message",
                                                  "typeString": "msg"
                                                }
                                              },
                                              "id": 13184,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "sender",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "20886:10:68",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "id": 13185,
                                              "name": "onBehalfOf",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 12930,
                                              "src": "20910:10:68",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 13186,
                                                "name": "vars",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12941,
                                                "src": "20934:4:68",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                                  "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                                }
                                              },
                                              "id": 13187,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "currentAmount",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 12909,
                                              "src": "20934:18:68",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 13188,
                                                "name": "modes",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12928,
                                                "src": "20966:5:68",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                                  "typeString": "uint256[] calldata"
                                                }
                                              },
                                              "id": 13191,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 13189,
                                                  "name": "vars",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 12941,
                                                  "src": "20972:4:68",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                                    "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                                  }
                                                },
                                                "id": 13190,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "i",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 12903,
                                                "src": "20972:6:68",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "20966:13:68",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 13192,
                                                "name": "vars",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12941,
                                                "src": "20993:4:68",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                                  "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                                }
                                              },
                                              "id": 13193,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "currentATokenAddress",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 12907,
                                              "src": "20993:25:68",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "id": 13194,
                                              "name": "referralCode",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 12934,
                                              "src": "21032:12:68",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint16",
                                                "typeString": "uint16"
                                              }
                                            },
                                            {
                                              "argumentTypes": null,
                                              "hexValue": "66616c7365",
                                              "id": 13195,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "bool",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "21058:5:68",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              },
                                              "value": "false"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              },
                                              {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                              },
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              },
                                              {
                                                "typeIdentifier": "t_uint16",
                                                "typeString": "uint16"
                                              },
                                              {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            ],
                                            "id": 13180,
                                            "name": "ExecuteBorrowParams",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 13668,
                                            "src": "20822:19:68",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_struct$_ExecuteBorrowParams_$13668_storage_ptr_$",
                                              "typeString": "type(struct LendingPool.ExecuteBorrowParams storage pointer)"
                                            }
                                          },
                                          "id": 13196,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "structConstructorCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "20822:253:68",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                            "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                            "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                          }
                                        ],
                                        "id": 13179,
                                        "name": "_executeBorrow",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13874,
                                        "src": "20796:14:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ExecuteBorrowParams_$13668_memory_ptr_$returns$__$",
                                          "typeString": "function (struct LendingPool.ExecuteBorrowParams memory)"
                                        }
                                      },
                                      "id": 13197,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "20796:289:68",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 13198,
                                    "nodeType": "ExpressionStatement",
                                    "src": "20796:289:68"
                                  }
                                ]
                              },
                              "id": 13200,
                              "nodeType": "IfStatement",
                              "src": "19968:1126:68",
                              "trueBody": {
                                "id": 13178,
                                "nodeType": "Block",
                                "src": "20050:580:68",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 13130,
                                            "name": "_reserves",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 15773,
                                            "src": "20060:9:68",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                              "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                            }
                                          },
                                          "id": 13133,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 13131,
                                              "name": "vars",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 12941,
                                              "src": "20070:4:68",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                                "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                              }
                                            },
                                            "id": 13132,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "currentAsset",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12905,
                                            "src": "20070:17:68",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "20060:28:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                                            "typeString": "struct DataTypes.ReserveData storage ref"
                                          }
                                        },
                                        "id": 13134,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "updateState",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 18183,
                                        "src": "20060:40:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReserveData_$20520_storage_ptr_$returns$__$bound_to$_t_struct$_ReserveData_$20520_storage_ptr_$",
                                          "typeString": "function (struct DataTypes.ReserveData storage pointer)"
                                        }
                                      },
                                      "id": 13135,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "20060:42:68",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 13136,
                                    "nodeType": "ExpressionStatement",
                                    "src": "20060:42:68"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 13143,
                                                    "name": "vars",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12941,
                                                    "src": "20184:4:68",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                                      "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                                    }
                                                  },
                                                  "id": 13144,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "currentATokenAddress",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 12907,
                                                  "src": "20184:25:68",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                ],
                                                "id": 13142,
                                                "name": "IERC20",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4012,
                                                "src": "20177:6:68",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                                  "typeString": "type(contract IERC20)"
                                                }
                                              },
                                              "id": 13145,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "20177:33:68",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                                "typeString": "contract IERC20"
                                              }
                                            },
                                            "id": 13146,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "totalSupply",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3943,
                                            "src": "20177:45:68",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                              "typeString": "function () view external returns (uint256)"
                                            }
                                          },
                                          "id": 13147,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "20177:47:68",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 13148,
                                            "name": "vars",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12941,
                                            "src": "20236:4:68",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                              "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                            }
                                          },
                                          "id": 13149,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "currentPremium",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12911,
                                          "src": "20236:19:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 13137,
                                            "name": "_reserves",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 15773,
                                            "src": "20112:9:68",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                              "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                            }
                                          },
                                          "id": 13140,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 13138,
                                              "name": "vars",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 12941,
                                              "src": "20122:4:68",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                                "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                              }
                                            },
                                            "id": 13139,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "currentAsset",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12905,
                                            "src": "20122:17:68",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "20112:28:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                                            "typeString": "struct DataTypes.ReserveData storage ref"
                                          }
                                        },
                                        "id": 13141,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "cumulateToLiquidityIndex",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 18243,
                                        "src": "20112:53:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReserveData_$20520_storage_ptr_$_t_uint256_$_t_uint256_$returns$__$bound_to$_t_struct$_ReserveData_$20520_storage_ptr_$",
                                          "typeString": "function (struct DataTypes.ReserveData storage pointer,uint256,uint256)"
                                        }
                                      },
                                      "id": 13150,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "20112:153:68",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 13151,
                                    "nodeType": "ExpressionStatement",
                                    "src": "20112:153:68"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 13157,
                                            "name": "vars",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12941,
                                            "src": "20335:4:68",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                              "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                            }
                                          },
                                          "id": 13158,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "currentAsset",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12905,
                                          "src": "20335:17:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 13159,
                                            "name": "vars",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12941,
                                            "src": "20364:4:68",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                              "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                            }
                                          },
                                          "id": 13160,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "currentATokenAddress",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12907,
                                          "src": "20364:25:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 13161,
                                            "name": "vars",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12941,
                                            "src": "20401:4:68",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                              "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                            }
                                          },
                                          "id": 13162,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "currentAmountPlusPremium",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12913,
                                          "src": "20401:29:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 13163,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "20442:1:68",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 13152,
                                            "name": "_reserves",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 15773,
                                            "src": "20275:9:68",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                              "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                            }
                                          },
                                          "id": 13155,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 13153,
                                              "name": "vars",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 12941,
                                              "src": "20285:4:68",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                                "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                              }
                                            },
                                            "id": 13154,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "currentAsset",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12905,
                                            "src": "20285:17:68",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "20275:28:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                                            "typeString": "struct DataTypes.ReserveData storage ref"
                                          }
                                        },
                                        "id": 13156,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "updateInterestRates",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 18500,
                                        "src": "20275:48:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReserveData_$20520_storage_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$bound_to$_t_struct$_ReserveData_$20520_storage_ptr_$",
                                          "typeString": "function (struct DataTypes.ReserveData storage pointer,address,address,uint256,uint256)"
                                        }
                                      },
                                      "id": 13164,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "20275:178:68",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 13165,
                                    "nodeType": "ExpressionStatement",
                                    "src": "20275:178:68"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 13171,
                                          "name": "receiverAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12919,
                                          "src": "20518:15:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 13172,
                                            "name": "vars",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12941,
                                            "src": "20545:4:68",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                              "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                            }
                                          },
                                          "id": 13173,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "currentATokenAddress",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12907,
                                          "src": "20545:25:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 13174,
                                            "name": "vars",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12941,
                                            "src": "20582:4:68",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                              "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                            }
                                          },
                                          "id": 13175,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "currentAmountPlusPremium",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12913,
                                          "src": "20582:29:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 13167,
                                                "name": "vars",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12941,
                                                "src": "20471:4:68",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                                  "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                                }
                                              },
                                              "id": 13168,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "currentAsset",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 12905,
                                              "src": "20471:17:68",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 13166,
                                            "name": "IERC20",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4012,
                                            "src": "20464:6:68",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                              "typeString": "type(contract IERC20)"
                                            }
                                          },
                                          "id": 13169,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "20464:25:68",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$4012",
                                            "typeString": "contract IERC20"
                                          }
                                        },
                                        "id": 13170,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "safeTransferFrom",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4205,
                                        "src": "20464:42:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                                          "typeString": "function (contract IERC20,address,address,uint256)"
                                        }
                                      },
                                      "id": 13176,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "20464:157:68",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 13177,
                                    "nodeType": "ExpressionStatement",
                                    "src": "20464:157:68"
                                  }
                                ]
                              }
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 13202,
                                    "name": "receiverAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12919,
                                    "src": "21125:15:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13203,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "21150:3:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 13204,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "21150:10:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13205,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12941,
                                      "src": "21170:4:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                        "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                      }
                                    },
                                    "id": 13206,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "currentAsset",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12905,
                                    "src": "21170:17:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13207,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12941,
                                      "src": "21197:4:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                        "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                      }
                                    },
                                    "id": 13208,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "currentAmount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12909,
                                    "src": "21197:18:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13209,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12941,
                                      "src": "21225:4:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                        "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                      }
                                    },
                                    "id": 13210,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "currentPremium",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12911,
                                    "src": "21225:19:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 13211,
                                    "name": "referralCode",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12934,
                                    "src": "21254:12:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  ],
                                  "id": 13201,
                                  "name": "FlashLoan",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6195,
                                  "src": "21106:9:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint16_$returns$__$",
                                    "typeString": "function (address,address,address,uint256,uint256,uint16)"
                                  }
                                },
                                "id": 13212,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "21106:168:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 13213,
                              "nodeType": "EmitStatement",
                              "src": "21101:173:68"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13067,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13063,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12941,
                              "src": "19651:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                              }
                            },
                            "id": 13064,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "i",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12903,
                            "src": "19651:6:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13065,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12922,
                              "src": "19660:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 13066,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "19660:13:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19651:22:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13215,
                        "initializationExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 13061,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13057,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12941,
                                "src": "19639:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                  "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                }
                              },
                              "id": 13059,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "i",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12903,
                              "src": "19639:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 13060,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19648:1:68",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "19639:10:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 13062,
                          "nodeType": "ExpressionStatement",
                          "src": "19639:10:68"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 13070,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "19675:8:68",
                            "subExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13068,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12941,
                                "src": "19675:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_FlashLoanLocalVars_$12916_memory_ptr",
                                  "typeString": "struct LendingPool.FlashLoanLocalVars memory"
                                }
                              },
                              "id": 13069,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "i",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12903,
                              "src": "19675:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 13071,
                          "nodeType": "ExpressionStatement",
                          "src": "19675:8:68"
                        },
                        "nodeType": "ForStatement",
                        "src": "19634:1647:68"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12917,
                    "nodeType": "StructuredDocumentation",
                    "src": "17240:1376:68",
                    "text": " @dev Allows smartcontracts to access the liquidity of the pool within one transaction,\n as long as the amount taken plus a fee is returned.\n IMPORTANT There are security concerns for developers of flashloan receiver contracts that must be kept into consideration.\n For further details please visit https://developers.aave.com\n @param receiverAddress The address of the contract receiving the funds, implementing the IFlashLoanReceiver interface\n @param assets The addresses of the assets being flash-borrowed\n @param amounts The amounts amounts being flash-borrowed\n @param modes Types of the debt to open if the flash loan is not returned:\n   0 -> Don't open any debt, just revert if funds can't be transferred from the receiver\n   1 -> Open debt at stable rate for the value of the amount flash-borrowed to the `onBehalfOf` address\n   2 -> Open debt at variable rate for the value of the amount flash-borrowed to the `onBehalfOf` address\n @param onBehalfOf The address  that will receive the debt in the case of using on `modes` 1 or 2\n @param params Variadic packed params to pass to the receiver as extra information\n @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   0 if the action is executed directly by the user, without any middle-man*"
                  },
                  "functionSelector": "ab9c4b5d",
                  "id": 13217,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 12938,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 12937,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12015,
                        "src": "18858:13:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "18858:13:68"
                    }
                  ],
                  "name": "flashLoan",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12936,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "18849:8:68"
                  },
                  "parameters": {
                    "id": 12935,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12919,
                        "mutability": "mutable",
                        "name": "receiverAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13217,
                        "src": "18643:23:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12918,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18643:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12922,
                        "mutability": "mutable",
                        "name": "assets",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13217,
                        "src": "18672:25:68",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 12920,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "18672:7:68",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 12921,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "18672:9:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12925,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13217,
                        "src": "18703:26:68",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 12923,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "18703:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 12924,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "18703:9:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12928,
                        "mutability": "mutable",
                        "name": "modes",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13217,
                        "src": "18735:24:68",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 12926,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "18735:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 12927,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "18735:9:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12930,
                        "mutability": "mutable",
                        "name": "onBehalfOf",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13217,
                        "src": "18765:18:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12929,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18765:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12932,
                        "mutability": "mutable",
                        "name": "params",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13217,
                        "src": "18789:21:68",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 12931,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "18789:5:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12934,
                        "mutability": "mutable",
                        "name": "referralCode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13217,
                        "src": "18816:19:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 12933,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "18816:6:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18637:202:68"
                  },
                  "returnParameters": {
                    "id": 12939,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18872:0:68"
                  },
                  "scope": 13934,
                  "src": "18619:2666:68",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6429
                  ],
                  "body": {
                    "id": 13230,
                    "nodeType": "Block",
                    "src": "21589:34:68",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13226,
                            "name": "_reserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15773,
                            "src": "21602:9:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                              "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                            }
                          },
                          "id": 13228,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 13227,
                            "name": "asset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13220,
                            "src": "21612:5:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "21602:16:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                            "typeString": "struct DataTypes.ReserveData storage ref"
                          }
                        },
                        "functionReturnParameters": 13225,
                        "id": 13229,
                        "nodeType": "Return",
                        "src": "21595:23:68"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13218,
                    "nodeType": "StructuredDocumentation",
                    "src": "21289:178:68",
                    "text": " @dev Returns the state and configuration of the reserve\n @param asset The address of the underlying asset of the reserve\n @return The state of the reserve*"
                  },
                  "functionSelector": "35ea6a75",
                  "id": 13231,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReserveData",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13222,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "21535:8:68"
                  },
                  "parameters": {
                    "id": 13221,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13220,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13231,
                        "src": "21494:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13219,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "21494:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21493:15:68"
                  },
                  "returnParameters": {
                    "id": 13225,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13224,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13231,
                        "src": "21557:28:68",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                          "typeString": "struct DataTypes.ReserveData"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 13223,
                          "name": "DataTypes.ReserveData",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20520,
                          "src": "21557:21:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                            "typeString": "struct DataTypes.ReserveData"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21556:30:68"
                  },
                  "scope": 13934,
                  "src": "21470:153:68",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6362
                  ],
                  "body": {
                    "id": 13280,
                    "nodeType": "Block",
                    "src": "22422:449:68",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13269,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 13250,
                                "name": "totalCollateralETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13238,
                                "src": "22436:18:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 13251,
                                "name": "totalDebtETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13240,
                                "src": "22462:12:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 13252,
                                "name": "ltv",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13246,
                                "src": "22482:3:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 13253,
                                "name": "currentLiquidationThreshold",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13244,
                                "src": "22493:27:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 13254,
                                "name": "healthFactor",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13248,
                                "src": "22528:12:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 13255,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "22428:118:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 13258,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13234,
                                "src": "22594:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 13259,
                                "name": "_reserves",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15773,
                                "src": "22606:9:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                  "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 13260,
                                  "name": "_usersConfig",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15777,
                                  "src": "22623:12:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserConfigurationMap_$20526_storage_$",
                                    "typeString": "mapping(address => struct DataTypes.UserConfigurationMap storage ref)"
                                  }
                                },
                                "id": 13262,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 13261,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13234,
                                  "src": "22636:4:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "22623:18:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage",
                                  "typeString": "struct DataTypes.UserConfigurationMap storage ref"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 13263,
                                "name": "_reservesList",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15781,
                                "src": "22649:13:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                  "typeString": "mapping(uint256 => address)"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 13264,
                                "name": "_reservesCount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15783,
                                "src": "22670:14:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 13265,
                                    "name": "_addressesProvider",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15769,
                                    "src": "22692:18:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                                      "typeString": "contract ILendingPoolAddressesProvider"
                                    }
                                  },
                                  "id": 13266,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getPriceOracle",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6601,
                                  "src": "22692:33:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                    "typeString": "function () view external returns (address)"
                                  }
                                },
                                "id": 13267,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "22692:35:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                  "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                },
                                {
                                  "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage",
                                  "typeString": "struct DataTypes.UserConfigurationMap storage ref"
                                },
                                {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                  "typeString": "mapping(uint256 => address)"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 13256,
                                "name": "GenericLogic",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17987,
                                "src": "22549:12:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_GenericLogic_$17987_$",
                                  "typeString": "type(library GenericLogic)"
                                }
                              },
                              "id": 13257,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "calculateUserAccountData",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17918,
                              "src": "22549:37:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$_$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$_t_mapping$_t_uint256_$_t_address_$_$_t_uint256_$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "function (address,mapping(address => struct DataTypes.ReserveData storage ref),struct DataTypes.UserConfigurationMap memory,mapping(uint256 => address),uint256,address) view returns (uint256,uint256,uint256,uint256,uint256)"
                              }
                            },
                            "id": 13268,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "22549:184:68",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "src": "22428:305:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13270,
                        "nodeType": "ExpressionStatement",
                        "src": "22428:305:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 13271,
                            "name": "availableBorrowsETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13242,
                            "src": "22740:19:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 13274,
                                "name": "totalCollateralETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13238,
                                "src": "22811:18:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 13275,
                                "name": "totalDebtETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13240,
                                "src": "22837:12:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 13276,
                                "name": "ltv",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13246,
                                "src": "22857:3:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 13272,
                                "name": "GenericLogic",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17987,
                                "src": "22762:12:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_GenericLogic_$17987_$",
                                  "typeString": "type(library GenericLogic)"
                                }
                              },
                              "id": 13273,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "calculateAvailableBorrowsETH",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17986,
                              "src": "22762:41:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 13277,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "22762:104:68",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22740:126:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13279,
                        "nodeType": "ExpressionStatement",
                        "src": "22740:126:68"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13232,
                    "nodeType": "StructuredDocumentation",
                    "src": "21627:507:68",
                    "text": " @dev Returns the user account data across all the reserves\n @param user The address of the user\n @return totalCollateralETH the total collateral in ETH of the user\n @return totalDebtETH the total debt in ETH of the user\n @return availableBorrowsETH the borrowing power left of the user\n @return currentLiquidationThreshold the liquidation threshold of the user\n @return ltv the loan to value of the user\n @return healthFactor the current health factor of the user*"
                  },
                  "functionSelector": "bf92857c",
                  "id": 13281,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUserAccountData",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13236,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "22205:8:68"
                  },
                  "parameters": {
                    "id": 13235,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13234,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13281,
                        "src": "22165:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13233,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22165:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22164:14:68"
                  },
                  "returnParameters": {
                    "id": 13249,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13238,
                        "mutability": "mutable",
                        "name": "totalCollateralETH",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13281,
                        "src": "22234:26:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13237,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22234:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13240,
                        "mutability": "mutable",
                        "name": "totalDebtETH",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13281,
                        "src": "22268:20:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13239,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22268:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13242,
                        "mutability": "mutable",
                        "name": "availableBorrowsETH",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13281,
                        "src": "22296:27:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13241,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22296:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13244,
                        "mutability": "mutable",
                        "name": "currentLiquidationThreshold",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13281,
                        "src": "22331:35:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13243,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22331:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13246,
                        "mutability": "mutable",
                        "name": "ltv",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13281,
                        "src": "22374:11:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13245,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22374:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13248,
                        "mutability": "mutable",
                        "name": "healthFactor",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13281,
                        "src": "22393:20:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13247,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22393:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22226:193:68"
                  },
                  "scope": 13934,
                  "src": "22137:734:68",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6397
                  ],
                  "body": {
                    "id": 13295,
                    "nodeType": "Block",
                    "src": "23187:48:68",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 13290,
                              "name": "_reserves",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15773,
                              "src": "23200:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                              }
                            },
                            "id": 13292,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 13291,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13284,
                              "src": "23210:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "23200:16:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                              "typeString": "struct DataTypes.ReserveData storage ref"
                            }
                          },
                          "id": 13293,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "configuration",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 20497,
                          "src": "23200:30:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage",
                            "typeString": "struct DataTypes.ReserveConfigurationMap storage ref"
                          }
                        },
                        "functionReturnParameters": 13289,
                        "id": 13294,
                        "nodeType": "Return",
                        "src": "23193:37:68"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13282,
                    "nodeType": "StructuredDocumentation",
                    "src": "22875:176:68",
                    "text": " @dev Returns the configuration of the reserve\n @param asset The address of the underlying asset of the reserve\n @return The configuration of the reserve*"
                  },
                  "functionSelector": "c44b11f7",
                  "id": 13296,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getConfiguration",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13286,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "23121:8:68"
                  },
                  "parameters": {
                    "id": 13285,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13284,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13296,
                        "src": "23080:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13283,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "23080:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23079:15:68"
                  },
                  "returnParameters": {
                    "id": 13289,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13288,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13296,
                        "src": "23143:40:68",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                          "typeString": "struct DataTypes.ReserveConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 13287,
                          "name": "DataTypes.ReserveConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20523,
                          "src": "23143:33:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23142:42:68"
                  },
                  "scope": 13934,
                  "src": "23054:181:68",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6405
                  ],
                  "body": {
                    "id": 13309,
                    "nodeType": "Block",
                    "src": "23534:36:68",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13305,
                            "name": "_usersConfig",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15777,
                            "src": "23547:12:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserConfigurationMap_$20526_storage_$",
                              "typeString": "mapping(address => struct DataTypes.UserConfigurationMap storage ref)"
                            }
                          },
                          "id": 13307,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 13306,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13299,
                            "src": "23560:4:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "23547:18:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage",
                            "typeString": "struct DataTypes.UserConfigurationMap storage ref"
                          }
                        },
                        "functionReturnParameters": 13304,
                        "id": 13308,
                        "nodeType": "Return",
                        "src": "23540:25:68"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13297,
                    "nodeType": "StructuredDocumentation",
                    "src": "23239:159:68",
                    "text": " @dev Returns the configuration of the user across all the reserves\n @param user The user address\n @return The configuration of the user*"
                  },
                  "functionSelector": "4417a583",
                  "id": 13310,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUserConfiguration",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13301,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "23471:8:68"
                  },
                  "parameters": {
                    "id": 13300,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13299,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13310,
                        "src": "23431:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13298,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "23431:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23430:14:68"
                  },
                  "returnParameters": {
                    "id": 13304,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13303,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13310,
                        "src": "23493:37:68",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_memory_ptr",
                          "typeString": "struct DataTypes.UserConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 13302,
                          "name": "DataTypes.UserConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20526,
                          "src": "23493:30:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                            "typeString": "struct DataTypes.UserConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23492:39:68"
                  },
                  "scope": 13934,
                  "src": "23401:169:68",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6413
                  ],
                  "body": {
                    "id": 13325,
                    "nodeType": "Block",
                    "src": "23880:56:68",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 13319,
                                "name": "_reserves",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15773,
                                "src": "23893:9:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                  "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                }
                              },
                              "id": 13321,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 13320,
                                "name": "asset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13313,
                                "src": "23903:5:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "23893:16:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                                "typeString": "struct DataTypes.ReserveData storage ref"
                              }
                            },
                            "id": 13322,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getNormalizedIncome",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18090,
                            "src": "23893:36:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_ReserveData_$20520_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_ReserveData_$20520_storage_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveData storage pointer) view returns (uint256)"
                            }
                          },
                          "id": 13323,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23893:38:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 13318,
                        "id": 13324,
                        "nodeType": "Return",
                        "src": "23886:45:68"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13311,
                    "nodeType": "StructuredDocumentation",
                    "src": "23574:181:68",
                    "text": " @dev Returns the normalized income per unit of asset\n @param asset The address of the underlying asset of the reserve\n @return The reserve's normalized income"
                  },
                  "functionSelector": "d15e0053",
                  "id": 13326,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReserveNormalizedIncome",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13315,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "23847:8:68"
                  },
                  "parameters": {
                    "id": 13314,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13313,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13326,
                        "src": "23794:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13312,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "23794:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23793:15:68"
                  },
                  "returnParameters": {
                    "id": 13318,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13317,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13326,
                        "src": "23869:7:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13316,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23869:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "23868:9:68"
                  },
                  "scope": 13934,
                  "src": "23758:178:68",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6421
                  ],
                  "body": {
                    "id": 13341,
                    "nodeType": "Block",
                    "src": "24252:54:68",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 13335,
                                "name": "_reserves",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15773,
                                "src": "24265:9:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                  "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                }
                              },
                              "id": 13337,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 13336,
                                "name": "asset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13329,
                                "src": "24275:5:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "24265:16:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                                "typeString": "struct DataTypes.ReserveData storage ref"
                              }
                            },
                            "id": 13338,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getNormalizedDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18131,
                            "src": "24265:34:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_ReserveData_$20520_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_ReserveData_$20520_storage_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveData storage pointer) view returns (uint256)"
                            }
                          },
                          "id": 13339,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24265:36:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 13334,
                        "id": 13340,
                        "nodeType": "Return",
                        "src": "24258:43:68"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13327,
                    "nodeType": "StructuredDocumentation",
                    "src": "23940:193:68",
                    "text": " @dev Returns the normalized variable debt per unit of asset\n @param asset The address of the underlying asset of the reserve\n @return The reserve normalized variable debt"
                  },
                  "functionSelector": "386497fd",
                  "id": 13342,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReserveNormalizedVariableDebt",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13331,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "24219:8:68"
                  },
                  "parameters": {
                    "id": 13330,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13329,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13342,
                        "src": "24178:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13328,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "24178:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "24177:15:68"
                  },
                  "returnParameters": {
                    "id": 13334,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13333,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13342,
                        "src": "24241:7:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13332,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24241:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "24240:9:68"
                  },
                  "scope": 13934,
                  "src": "24136:170:68",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6465
                  ],
                  "body": {
                    "id": 13351,
                    "nodeType": "Block",
                    "src": "24425:25:68",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13349,
                          "name": "_paused",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15785,
                          "src": "24438:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 13348,
                        "id": 13350,
                        "nodeType": "Return",
                        "src": "24431:14:68"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13343,
                    "nodeType": "StructuredDocumentation",
                    "src": "24310:56:68",
                    "text": " @dev Returns if the LendingPool is paused"
                  },
                  "functionSelector": "5c975abb",
                  "id": 13352,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "paused",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13345,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "24401:8:68"
                  },
                  "parameters": {
                    "id": 13344,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24384:2:68"
                  },
                  "returnParameters": {
                    "id": 13348,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13347,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13352,
                        "src": "24419:4:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13346,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "24419:4:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "24418:6:68"
                  },
                  "scope": 13934,
                  "src": "24369:81:68",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6450
                  ],
                  "body": {
                    "id": 13393,
                    "nodeType": "Block",
                    "src": "24599:206:68",
                    "statements": [
                      {
                        "assignments": [
                          13364
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13364,
                            "mutability": "mutable",
                            "name": "_activeReserves",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 13393,
                            "src": "24605:32:68",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 13362,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "24605:7:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 13363,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "24605:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13370,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13368,
                              "name": "_reservesCount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15783,
                              "src": "24654:14:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 13367,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "24640:13:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 13365,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "24644:7:68",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 13366,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "24644:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 13369,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24640:29:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "24605:64:68"
                      },
                      {
                        "body": {
                          "id": 13389,
                          "nodeType": "Block",
                          "src": "24721:52:68",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13387,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13381,
                                    "name": "_activeReserves",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13364,
                                    "src": "24729:15:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 13383,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 13382,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13372,
                                    "src": "24745:1:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "24729:18:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13384,
                                    "name": "_reservesList",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15781,
                                    "src": "24750:13:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                      "typeString": "mapping(uint256 => address)"
                                    }
                                  },
                                  "id": 13386,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 13385,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13372,
                                    "src": "24764:1:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "24750:16:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "24729:37:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 13388,
                              "nodeType": "ExpressionStatement",
                              "src": "24729:37:68"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13377,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 13375,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13372,
                            "src": "24696:1:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 13376,
                            "name": "_reservesCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15783,
                            "src": "24700:14:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "24696:18:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13390,
                        "initializationExpression": {
                          "assignments": [
                            13372
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 13372,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 13390,
                              "src": "24681:9:68",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 13371,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "24681:7:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 13374,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 13373,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24693:1:68",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "24681:13:68"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 13379,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "24716:3:68",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 13378,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13372,
                              "src": "24716:1:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 13380,
                          "nodeType": "ExpressionStatement",
                          "src": "24716:3:68"
                        },
                        "nodeType": "ForStatement",
                        "src": "24676:97:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13391,
                          "name": "_activeReserves",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13364,
                          "src": "24785:15:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "functionReturnParameters": 13359,
                        "id": 13392,
                        "nodeType": "Return",
                        "src": "24778:22:68"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13353,
                    "nodeType": "StructuredDocumentation",
                    "src": "24454:65:68",
                    "text": " @dev Returns the list of the initialized reserves*"
                  },
                  "functionSelector": "d1946dbc",
                  "id": 13394,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReservesList",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13355,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "24563:8:68"
                  },
                  "parameters": {
                    "id": 13354,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24546:2:68"
                  },
                  "returnParameters": {
                    "id": 13359,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13358,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13394,
                        "src": "24581:16:68",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13356,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "24581:7:68",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 13357,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "24581:9:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "24580:18:68"
                  },
                  "scope": 13934,
                  "src": "24522:283:68",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6455
                  ],
                  "body": {
                    "id": 13403,
                    "nodeType": "Block",
                    "src": "25002:36:68",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13401,
                          "name": "_addressesProvider",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15769,
                          "src": "25015:18:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                            "typeString": "contract ILendingPoolAddressesProvider"
                          }
                        },
                        "functionReturnParameters": 13400,
                        "id": 13402,
                        "nodeType": "Return",
                        "src": "25008:25:68"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13395,
                    "nodeType": "StructuredDocumentation",
                    "src": "24809:95:68",
                    "text": " @dev Returns the cached LendingPoolAddressesProvider connected to this contract*"
                  },
                  "functionSelector": "fe65acfe",
                  "id": 13404,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAddressesProvider",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13397,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "24953:8:68"
                  },
                  "parameters": {
                    "id": 13396,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24936:2:68"
                  },
                  "returnParameters": {
                    "id": 13400,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13399,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13404,
                        "src": "24971:29:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                          "typeString": "contract ILendingPoolAddressesProvider"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 13398,
                          "name": "ILendingPoolAddressesProvider",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6617,
                          "src": "24971:29:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                            "typeString": "contract ILendingPoolAddressesProvider"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "24970:31:68"
                  },
                  "scope": 13934,
                  "src": "24907:131:68",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 13412,
                    "nodeType": "Block",
                    "src": "25231:49:68",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13410,
                          "name": "_maxStableRateBorrowSizePercent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15787,
                          "src": "25244:31:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 13409,
                        "id": 13411,
                        "nodeType": "Return",
                        "src": "25237:38:68"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13405,
                    "nodeType": "StructuredDocumentation",
                    "src": "25042:109:68",
                    "text": " @dev Returns the percentage of available liquidity that can be borrowed at once at stable rate"
                  },
                  "functionSelector": "e82fec2f",
                  "id": 13413,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "MAX_STABLE_RATE_BORROW_SIZE_PERCENT",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 13406,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "25198:2:68"
                  },
                  "returnParameters": {
                    "id": 13409,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13408,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13413,
                        "src": "25222:7:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13407,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "25222:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "25221:9:68"
                  },
                  "scope": 13934,
                  "src": "25154:126:68",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 13421,
                    "nodeType": "Block",
                    "src": "25403:40:68",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13419,
                          "name": "_flashLoanPremiumTotal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15789,
                          "src": "25416:22:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 13418,
                        "id": 13420,
                        "nodeType": "Return",
                        "src": "25409:29:68"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13414,
                    "nodeType": "StructuredDocumentation",
                    "src": "25284:51:68",
                    "text": " @dev Returns the fee on flash loans "
                  },
                  "functionSelector": "074b2e43",
                  "id": 13422,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "FLASHLOAN_PREMIUM_TOTAL",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 13415,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "25370:2:68"
                  },
                  "returnParameters": {
                    "id": 13418,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13417,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13422,
                        "src": "25394:7:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13416,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "25394:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "25393:9:68"
                  },
                  "scope": 13934,
                  "src": "25338:105:68",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 13430,
                    "nodeType": "Block",
                    "src": "25612:38:68",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13428,
                          "name": "_maxNumberOfReserves",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15791,
                          "src": "25625:20:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 13427,
                        "id": 13429,
                        "nodeType": "Return",
                        "src": "25618:27:68"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13423,
                    "nodeType": "StructuredDocumentation",
                    "src": "25447:101:68",
                    "text": " @dev Returns the maximum number of reserves supported to be listed in this LendingPool"
                  },
                  "functionSelector": "f8119d51",
                  "id": 13431,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "MAX_NUMBER_RESERVES",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 13424,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "25579:2:68"
                  },
                  "returnParameters": {
                    "id": 13427,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13426,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13431,
                        "src": "25603:7:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13425,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "25603:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "25602:9:68"
                  },
                  "scope": 13934,
                  "src": "25551:99:68",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    6444
                  ],
                  "body": {
                    "id": 13546,
                    "nodeType": "Block",
                    "src": "26383:861:68",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 13457,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13451,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "26397:3:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 13452,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "26397:10:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13453,
                                    "name": "_reserves",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15773,
                                    "src": "26411:9:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                      "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                    }
                                  },
                                  "id": 13455,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 13454,
                                    "name": "asset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13434,
                                    "src": "26421:5:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "26411:16:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                                    "typeString": "struct DataTypes.ReserveData storage ref"
                                  }
                                },
                                "id": 13456,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "aTokenAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20511,
                                "src": "26411:30:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "26397:44:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13458,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "26443:6:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 13459,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "LP_CALLER_MUST_BE_AN_ATOKEN",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17182,
                              "src": "26443:34:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 13450,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "26389:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13460,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26389:89:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13461,
                        "nodeType": "ExpressionStatement",
                        "src": "26389:89:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13465,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13436,
                              "src": "26525:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13466,
                              "name": "_reserves",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15773,
                              "src": "26537:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 13467,
                                "name": "_usersConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15777,
                                "src": "26554:12:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserConfigurationMap_$20526_storage_$",
                                  "typeString": "mapping(address => struct DataTypes.UserConfigurationMap storage ref)"
                                }
                              },
                              "id": 13469,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 13468,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13436,
                                "src": "26567:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "26554:18:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage",
                                "typeString": "struct DataTypes.UserConfigurationMap storage ref"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13470,
                              "name": "_reservesList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15781,
                              "src": "26580:13:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13471,
                              "name": "_reservesCount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15783,
                              "src": "26601:14:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13472,
                                  "name": "_addressesProvider",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15769,
                                  "src": "26623:18:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                                    "typeString": "contract ILendingPoolAddressesProvider"
                                  }
                                },
                                "id": 13473,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getPriceOracle",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6601,
                                "src": "26623:33:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              "id": 13474,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26623:35:68",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                              },
                              {
                                "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage",
                                "typeString": "struct DataTypes.UserConfigurationMap storage ref"
                              },
                              {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 13462,
                              "name": "ValidationLogic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19773,
                              "src": "26485:15:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ValidationLogic_$19773_$",
                                "typeString": "type(library ValidationLogic)"
                              }
                            },
                            "id": 13464,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "validateTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 19772,
                            "src": "26485:32:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$_$_t_struct$_UserConfigurationMap_$20526_storage_ptr_$_t_mapping$_t_uint256_$_t_address_$_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,mapping(address => struct DataTypes.ReserveData storage ref),struct DataTypes.UserConfigurationMap storage pointer,mapping(uint256 => address),uint256,address) view"
                            }
                          },
                          "id": 13475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26485:179:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13476,
                        "nodeType": "ExpressionStatement",
                        "src": "26485:179:68"
                      },
                      {
                        "assignments": [
                          13478
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13478,
                            "mutability": "mutable",
                            "name": "reserveId",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 13546,
                            "src": "26671:17:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13477,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "26671:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13483,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 13479,
                              "name": "_reserves",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15773,
                              "src": "26691:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                              }
                            },
                            "id": 13481,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 13480,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13434,
                              "src": "26701:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "26691:16:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                              "typeString": "struct DataTypes.ReserveData storage ref"
                            }
                          },
                          "id": 13482,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "id",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 20519,
                          "src": "26691:19:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "26671:39:68"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 13486,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 13484,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13436,
                            "src": "26721:4:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 13485,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13438,
                            "src": "26729:2:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "26721:10:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 13545,
                        "nodeType": "IfStatement",
                        "src": "26717:523:68",
                        "trueBody": {
                          "id": 13544,
                          "nodeType": "Block",
                          "src": "26733:507:68",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 13492,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 13489,
                                      "name": "amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13440,
                                      "src": "26767:6:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13487,
                                      "name": "balanceFromBefore",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13442,
                                      "src": "26745:17:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 13488,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4346,
                                    "src": "26745:21:68",
                                    "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": 13490,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "26745:29:68",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 13491,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "26778:1:68",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "26745:34:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 13514,
                              "nodeType": "IfStatement",
                              "src": "26741:247:68",
                              "trueBody": {
                                "id": 13513,
                                "nodeType": "Block",
                                "src": "26781:207:68",
                                "statements": [
                                  {
                                    "assignments": [
                                      13496
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 13496,
                                        "mutability": "mutable",
                                        "name": "fromConfig",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 13513,
                                        "src": "26791:49:68",
                                        "stateVariable": false,
                                        "storageLocation": "storage",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                          "typeString": "struct DataTypes.UserConfigurationMap"
                                        },
                                        "typeName": {
                                          "contractScope": null,
                                          "id": 13495,
                                          "name": "DataTypes.UserConfigurationMap",
                                          "nodeType": "UserDefinedTypeName",
                                          "referencedDeclaration": 20526,
                                          "src": "26791:30:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                            "typeString": "struct DataTypes.UserConfigurationMap"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 13500,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 13497,
                                        "name": "_usersConfig",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15777,
                                        "src": "26843:12:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserConfigurationMap_$20526_storage_$",
                                          "typeString": "mapping(address => struct DataTypes.UserConfigurationMap storage ref)"
                                        }
                                      },
                                      "id": 13499,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 13498,
                                        "name": "from",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13436,
                                        "src": "26856:4:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "26843:18:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage",
                                        "typeString": "struct DataTypes.UserConfigurationMap storage ref"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "26791:70:68"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 13504,
                                          "name": "reserveId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13478,
                                          "src": "26903:9:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "66616c7365",
                                          "id": 13505,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "bool",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "26914:5:68",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "value": "false"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 13501,
                                          "name": "fromConfig",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13496,
                                          "src": "26871:10:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                            "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                                          }
                                        },
                                        "id": 13503,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "setUsingAsCollateral",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 16855,
                                        "src": "26871:31:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UserConfigurationMap_$20526_storage_ptr_$_t_uint256_$_t_bool_$returns$__$bound_to$_t_struct$_UserConfigurationMap_$20526_storage_ptr_$",
                                          "typeString": "function (struct DataTypes.UserConfigurationMap storage pointer,uint256,bool)"
                                        }
                                      },
                                      "id": 13506,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "26871:49:68",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 13507,
                                    "nodeType": "ExpressionStatement",
                                    "src": "26871:49:68"
                                  },
                                  {
                                    "eventCall": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 13509,
                                          "name": "asset",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13434,
                                          "src": "26967:5:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 13510,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13436,
                                          "src": "26974:4:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 13508,
                                        "name": "ReserveUsedAsCollateralDisabled",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6173,
                                        "src": "26935:31:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                                          "typeString": "function (address,address)"
                                        }
                                      },
                                      "id": 13511,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "26935:44:68",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 13512,
                                    "nodeType": "EmitStatement",
                                    "src": "26930:49:68"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 13521,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 13517,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 13515,
                                    "name": "balanceToBefore",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13444,
                                    "src": "27000:15:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 13516,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "27019:1:68",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "27000:20:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 13520,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 13518,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13440,
                                    "src": "27024:6:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 13519,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "27034:1:68",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "27024:11:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "27000:35:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 13543,
                              "nodeType": "IfStatement",
                              "src": "26996:238:68",
                              "trueBody": {
                                "id": 13542,
                                "nodeType": "Block",
                                "src": "27037:197:68",
                                "statements": [
                                  {
                                    "assignments": [
                                      13525
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 13525,
                                        "mutability": "mutable",
                                        "name": "toConfig",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 13542,
                                        "src": "27047:47:68",
                                        "stateVariable": false,
                                        "storageLocation": "storage",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                          "typeString": "struct DataTypes.UserConfigurationMap"
                                        },
                                        "typeName": {
                                          "contractScope": null,
                                          "id": 13524,
                                          "name": "DataTypes.UserConfigurationMap",
                                          "nodeType": "UserDefinedTypeName",
                                          "referencedDeclaration": 20526,
                                          "src": "27047:30:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                            "typeString": "struct DataTypes.UserConfigurationMap"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 13529,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 13526,
                                        "name": "_usersConfig",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15777,
                                        "src": "27097:12:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserConfigurationMap_$20526_storage_$",
                                          "typeString": "mapping(address => struct DataTypes.UserConfigurationMap storage ref)"
                                        }
                                      },
                                      "id": 13528,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 13527,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13438,
                                        "src": "27110:2:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "27097:16:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage",
                                        "typeString": "struct DataTypes.UserConfigurationMap storage ref"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "27047:66:68"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 13533,
                                          "name": "reserveId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13478,
                                          "src": "27153:9:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "74727565",
                                          "id": 13534,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "bool",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "27164:4:68",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "value": "true"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 13530,
                                          "name": "toConfig",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13525,
                                          "src": "27123:8:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                            "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                                          }
                                        },
                                        "id": 13532,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "setUsingAsCollateral",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 16855,
                                        "src": "27123:29:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UserConfigurationMap_$20526_storage_ptr_$_t_uint256_$_t_bool_$returns$__$bound_to$_t_struct$_UserConfigurationMap_$20526_storage_ptr_$",
                                          "typeString": "function (struct DataTypes.UserConfigurationMap storage pointer,uint256,bool)"
                                        }
                                      },
                                      "id": 13535,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "27123:46:68",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 13536,
                                    "nodeType": "ExpressionStatement",
                                    "src": "27123:46:68"
                                  },
                                  {
                                    "eventCall": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 13538,
                                          "name": "asset",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13434,
                                          "src": "27215:5:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 13539,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13438,
                                          "src": "27222:2:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 13537,
                                        "name": "ReserveUsedAsCollateralEnabled",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6166,
                                        "src": "27184:30:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                                          "typeString": "function (address,address)"
                                        }
                                      },
                                      "id": 13540,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "27184:41:68",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 13541,
                                    "nodeType": "EmitStatement",
                                    "src": "27179:46:68"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13432,
                    "nodeType": "StructuredDocumentation",
                    "src": "25654:531:68",
                    "text": " @dev Validates and finalizes an aToken transfer\n - Only callable by the overlying aToken of the `asset`\n @param asset The address of the underlying asset of the aToken\n @param from The user from which the aTokens are transferred\n @param to The user receiving the aTokens\n @param amount The amount being transferred/withdrawn\n @param balanceFromBefore The aToken balance of the `from` user before the transfer\n @param balanceToBefore The aToken balance of the `to` user before the transfer"
                  },
                  "functionSelector": "d5ed3933",
                  "id": 13547,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 13448,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 13447,
                        "name": "whenNotPaused",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12015,
                        "src": "26369:13:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "26369:13:68"
                    }
                  ],
                  "name": "finalizeTransfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13446,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "26360:8:68"
                  },
                  "parameters": {
                    "id": 13445,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13434,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13547,
                        "src": "26219:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13433,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "26219:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13436,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13547,
                        "src": "26238:12:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13435,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "26238:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13438,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13547,
                        "src": "26256:10:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13437,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "26256:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13440,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13547,
                        "src": "26272:14:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13439,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26272:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13442,
                        "mutability": "mutable",
                        "name": "balanceFromBefore",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13547,
                        "src": "26292:25:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13441,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26292:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13444,
                        "mutability": "mutable",
                        "name": "balanceToBefore",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13547,
                        "src": "26323:23:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13443,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26323:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "26213:137:68"
                  },
                  "returnParameters": {
                    "id": 13449,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "26383:0:68"
                  },
                  "scope": 13934,
                  "src": "26188:1056:68",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6375
                  ],
                  "body": {
                    "id": 13587,
                    "nodeType": "Block",
                    "src": "28114:240:68",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 13567,
                                  "name": "asset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13550,
                                  "src": "28147:5:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13565,
                                  "name": "Address",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3404,
                                  "src": "28128:7:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Address_$3404_$",
                                    "typeString": "type(library Address)"
                                  }
                                },
                                "id": 13566,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isContract",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3369,
                                "src": "28128:18:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view returns (bool)"
                                }
                              },
                              "id": 13568,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "28128:25:68",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13569,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "28155:6:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 13570,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "LP_NOT_CONTRACT",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17221,
                              "src": "28155:22:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 13564,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "28120:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13571,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28120:58:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13572,
                        "nodeType": "ExpressionStatement",
                        "src": "28120:58:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13577,
                              "name": "aTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13552,
                              "src": "28213:13:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13578,
                              "name": "stableDebtAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13554,
                              "src": "28234:17:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13579,
                              "name": "variableDebtAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13556,
                              "src": "28259:19:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13580,
                              "name": "interestRateStrategyAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13558,
                              "src": "28286:27:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 13573,
                                "name": "_reserves",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15773,
                                "src": "28184:9:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                  "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                }
                              },
                              "id": 13575,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 13574,
                                "name": "asset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13550,
                                "src": "28194:5:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "28184:16:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                                "typeString": "struct DataTypes.ReserveData storage ref"
                              }
                            },
                            "id": 13576,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "init",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18316,
                            "src": "28184:21:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_ReserveData_$20520_storage_ptr_$_t_address_$_t_address_$_t_address_$_t_address_$returns$__$bound_to$_t_struct$_ReserveData_$20520_storage_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveData storage pointer,address,address,address,address)"
                            }
                          },
                          "id": 13581,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28184:135:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13582,
                        "nodeType": "ExpressionStatement",
                        "src": "28184:135:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13584,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13550,
                              "src": "28343:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 13583,
                            "name": "_addReserveToList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13933,
                            "src": "28325:17:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 13585,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28325:24:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13586,
                        "nodeType": "ExpressionStatement",
                        "src": "28325:24:68"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13548,
                    "nodeType": "StructuredDocumentation",
                    "src": "27248:641:68",
                    "text": " @dev Initializes a reserve, activating it, assigning an aToken and debt tokens and an\n interest rate strategy\n - Only callable by the LendingPoolConfigurator contract\n @param asset The address of the underlying asset of the reserve\n @param aTokenAddress The address of the aToken that will be assigned to the reserve\n @param stableDebtAddress The address of the StableDebtToken that will be assigned to the reserve\n @param aTokenAddress The address of the VariableDebtToken that will be assigned to the reserve\n @param interestRateStrategyAddress The address of the interest rate strategy contract*"
                  },
                  "functionSelector": "7a708e92",
                  "id": 13588,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 13562,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 13561,
                        "name": "onlyLendingPoolConfigurator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12022,
                        "src": "28086:27:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "28086:27:68"
                    }
                  ],
                  "name": "initReserve",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13560,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "28077:8:68"
                  },
                  "parameters": {
                    "id": 13559,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13550,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13588,
                        "src": "27918:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13549,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27918:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13552,
                        "mutability": "mutable",
                        "name": "aTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13588,
                        "src": "27937:21:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13551,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27937:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13554,
                        "mutability": "mutable",
                        "name": "stableDebtAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13588,
                        "src": "27964:25:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13553,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27964:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13556,
                        "mutability": "mutable",
                        "name": "variableDebtAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13588,
                        "src": "27995:27:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13555,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27995:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13558,
                        "mutability": "mutable",
                        "name": "interestRateStrategyAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13588,
                        "src": "28028:35:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13557,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "28028:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "27912:155:68"
                  },
                  "returnParameters": {
                    "id": 13563,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "28114:0:68"
                  },
                  "scope": 13934,
                  "src": "27892:462:68",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6382
                  ],
                  "body": {
                    "id": 13606,
                    "nodeType": "Block",
                    "src": "28804:77:68",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 13599,
                                "name": "_reserves",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15773,
                                "src": "28810:9:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                  "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                }
                              },
                              "id": 13601,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 13600,
                                "name": "asset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13591,
                                "src": "28820:5:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "28810:16:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                                "typeString": "struct DataTypes.ReserveData storage ref"
                              }
                            },
                            "id": 13602,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "interestRateStrategyAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20517,
                            "src": "28810:44:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 13603,
                            "name": "rateStrategyAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13593,
                            "src": "28857:19:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "28810:66:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 13605,
                        "nodeType": "ExpressionStatement",
                        "src": "28810:66:68"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13589,
                    "nodeType": "StructuredDocumentation",
                    "src": "28358:292:68",
                    "text": " @dev Updates the address of the interest rate strategy contract\n - Only callable by the LendingPoolConfigurator contract\n @param asset The address of the underlying asset of the reserve\n @param rateStrategyAddress The address of the interest rate strategy contract*"
                  },
                  "functionSelector": "1d2118f9",
                  "id": 13607,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 13597,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 13596,
                        "name": "onlyLendingPoolConfigurator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12022,
                        "src": "28774:27:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "28774:27:68"
                    }
                  ],
                  "name": "setReserveInterestRateStrategyAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13595,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "28761:8:68"
                  },
                  "parameters": {
                    "id": 13594,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13591,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13607,
                        "src": "28700:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13590,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "28700:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13593,
                        "mutability": "mutable",
                        "name": "rateStrategyAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13607,
                        "src": "28715:27:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13592,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "28715:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "28699:44:68"
                  },
                  "returnParameters": {
                    "id": 13598,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "28804:0:68"
                  },
                  "scope": 13934,
                  "src": "28653:228:68",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6389
                  ],
                  "body": {
                    "id": 13626,
                    "nodeType": "Block",
                    "src": "29273:62:68",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13624,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 13618,
                                  "name": "_reserves",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15773,
                                  "src": "29279:9:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                    "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                  }
                                },
                                "id": 13620,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 13619,
                                  "name": "asset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13610,
                                  "src": "29289:5:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "29279:16:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                                  "typeString": "struct DataTypes.ReserveData storage ref"
                                }
                              },
                              "id": 13621,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "configuration",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20497,
                              "src": "29279:30:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage",
                                "typeString": "struct DataTypes.ReserveConfigurationMap storage ref"
                              }
                            },
                            "id": 13622,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20522,
                            "src": "29279:35:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 13623,
                            "name": "configuration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13612,
                            "src": "29317:13:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "29279:51:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13625,
                        "nodeType": "ExpressionStatement",
                        "src": "29279:51:68"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13608,
                    "nodeType": "StructuredDocumentation",
                    "src": "28885:261:68",
                    "text": " @dev Sets the configuration bitmap of the reserve as a whole\n - Only callable by the LendingPoolConfigurator contract\n @param asset The address of the underlying asset of the reserve\n @param configuration The new configuration bitmap*"
                  },
                  "functionSelector": "b8d29276",
                  "id": 13627,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 13616,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 13615,
                        "name": "onlyLendingPoolConfigurator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12022,
                        "src": "29243:27:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "29243:27:68"
                    }
                  ],
                  "name": "setConfiguration",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13614,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "29230:8:68"
                  },
                  "parameters": {
                    "id": 13613,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13610,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13627,
                        "src": "29175:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13609,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "29175:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13612,
                        "mutability": "mutable",
                        "name": "configuration",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13627,
                        "src": "29190:21:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13611,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "29190:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "29174:38:68"
                  },
                  "returnParameters": {
                    "id": 13617,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "29273:0:68"
                  },
                  "scope": 13934,
                  "src": "29149:186:68",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6460
                  ],
                  "body": {
                    "id": 13650,
                    "nodeType": "Block",
                    "src": "29598:106:68",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13638,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 13636,
                            "name": "_paused",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15785,
                            "src": "29604:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 13637,
                            "name": "val",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13630,
                            "src": "29614:3:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "29604:13:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13639,
                        "nodeType": "ExpressionStatement",
                        "src": "29604:13:68"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 13640,
                          "name": "_paused",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15785,
                          "src": "29627:7:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 13648,
                          "nodeType": "Block",
                          "src": "29670:30:68",
                          "statements": [
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 13645,
                                  "name": "Unpaused",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6201,
                                  "src": "29683:8:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$__$returns$__$",
                                    "typeString": "function ()"
                                  }
                                },
                                "id": 13646,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "29683:10:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 13647,
                              "nodeType": "EmitStatement",
                              "src": "29678:15:68"
                            }
                          ]
                        },
                        "id": 13649,
                        "nodeType": "IfStatement",
                        "src": "29623:77:68",
                        "trueBody": {
                          "id": 13644,
                          "nodeType": "Block",
                          "src": "29636:28:68",
                          "statements": [
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 13641,
                                  "name": "Paused",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6198,
                                  "src": "29649:6:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$__$returns$__$",
                                    "typeString": "function ()"
                                  }
                                },
                                "id": 13642,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "29649:8:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 13643,
                              "nodeType": "EmitStatement",
                              "src": "29644:13:68"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13628,
                    "nodeType": "StructuredDocumentation",
                    "src": "29339:182:68",
                    "text": " @dev Set the _pause state of a reserve\n - Only callable by the LendingPoolConfigurator contract\n @param val `true` to pause the reserve, `false` to un-pause it"
                  },
                  "functionSelector": "bedb86fb",
                  "id": 13651,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 13634,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 13633,
                        "name": "onlyLendingPoolConfigurator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12022,
                        "src": "29570:27:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "29570:27:68"
                    }
                  ],
                  "name": "setPause",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13632,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "29561:8:68"
                  },
                  "parameters": {
                    "id": 13631,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13630,
                        "mutability": "mutable",
                        "name": "val",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13651,
                        "src": "29542:8:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13629,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "29542:4:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "29541:10:68"
                  },
                  "returnParameters": {
                    "id": 13635,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "29598:0:68"
                  },
                  "scope": 13934,
                  "src": "29524:180:68",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "canonicalName": "LendingPool.ExecuteBorrowParams",
                  "id": 13668,
                  "members": [
                    {
                      "constant": false,
                      "id": 13653,
                      "mutability": "mutable",
                      "name": "asset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13668,
                      "src": "29741:13:68",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 13652,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "29741:7:68",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 13655,
                      "mutability": "mutable",
                      "name": "user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13668,
                      "src": "29760:12:68",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 13654,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "29760:7:68",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 13657,
                      "mutability": "mutable",
                      "name": "onBehalfOf",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13668,
                      "src": "29778:18:68",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 13656,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "29778:7:68",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 13659,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13668,
                      "src": "29802:14:68",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13658,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "29802:7:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 13661,
                      "mutability": "mutable",
                      "name": "interestRateMode",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13668,
                      "src": "29822:24:68",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13660,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "29822:7:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 13663,
                      "mutability": "mutable",
                      "name": "aTokenAddress",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13668,
                      "src": "29852:21:68",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 13662,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "29852:7:68",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 13665,
                      "mutability": "mutable",
                      "name": "referralCode",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13668,
                      "src": "29879:19:68",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 13664,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "29879:6:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 13667,
                      "mutability": "mutable",
                      "name": "releaseUnderlying",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13668,
                      "src": "29904:22:68",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 13666,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "29904:4:68",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "ExecuteBorrowParams",
                  "nodeType": "StructDefinition",
                  "scope": 13934,
                  "src": "29708:223:68",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 13873,
                    "nodeType": "Block",
                    "src": "30001:1998:68",
                    "statements": [
                      {
                        "assignments": [
                          13676
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13676,
                            "mutability": "mutable",
                            "name": "reserve",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 13873,
                            "src": "30007:37:68",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                              "typeString": "struct DataTypes.ReserveData"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 13675,
                              "name": "DataTypes.ReserveData",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20520,
                              "src": "30007:21:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13681,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13677,
                            "name": "_reserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15773,
                            "src": "30047:9:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                              "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                            }
                          },
                          "id": 13680,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13678,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13670,
                              "src": "30057:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                              }
                            },
                            "id": 13679,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "asset",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13653,
                            "src": "30057:10:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "30047:21:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                            "typeString": "struct DataTypes.ReserveData storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "30007:61:68"
                      },
                      {
                        "assignments": [
                          13685
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13685,
                            "mutability": "mutable",
                            "name": "userConfig",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 13873,
                            "src": "30074:49:68",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                              "typeString": "struct DataTypes.UserConfigurationMap"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 13684,
                              "name": "DataTypes.UserConfigurationMap",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20526,
                              "src": "30074:30:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                "typeString": "struct DataTypes.UserConfigurationMap"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13690,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13686,
                            "name": "_usersConfig",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15777,
                            "src": "30126:12:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserConfigurationMap_$20526_storage_$",
                              "typeString": "mapping(address => struct DataTypes.UserConfigurationMap storage ref)"
                            }
                          },
                          "id": 13689,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13687,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13670,
                              "src": "30139:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                              }
                            },
                            "id": 13688,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "onBehalfOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13657,
                            "src": "30139:15:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "30126:29:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage",
                            "typeString": "struct DataTypes.UserConfigurationMap storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "30074:81:68"
                      },
                      {
                        "assignments": [
                          13692
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13692,
                            "mutability": "mutable",
                            "name": "oracle",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 13873,
                            "src": "30162:14:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 13691,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "30162:7:68",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13696,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 13693,
                              "name": "_addressesProvider",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15769,
                              "src": "30179:18:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                                "typeString": "contract ILendingPoolAddressesProvider"
                              }
                            },
                            "id": 13694,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getPriceOracle",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6601,
                            "src": "30179:33:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 13695,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30179:35:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "30162:52:68"
                      },
                      {
                        "assignments": [
                          13698
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13698,
                            "mutability": "mutable",
                            "name": "amountInETH",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 13873,
                            "src": "30221:19:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13697,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "30221:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13718,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 13716,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "hexValue": "3130",
                                "id": 13711,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "30332:2:68",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10_by_1",
                                  "typeString": "int_const 10"
                                },
                                "value": "10"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "**",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13712,
                                      "name": "reserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13676,
                                      "src": "30336:7:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                        "typeString": "struct DataTypes.ReserveData storage pointer"
                                      }
                                    },
                                    "id": 13713,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "configuration",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20497,
                                    "src": "30336:21:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage",
                                      "typeString": "struct DataTypes.ReserveConfigurationMap storage ref"
                                    }
                                  },
                                  "id": 13714,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getDecimals",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 16287,
                                  "src": "30336:33:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$",
                                    "typeString": "function (struct DataTypes.ReserveConfigurationMap storage pointer) view returns (uint256)"
                                  }
                                },
                                "id": 13715,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "30336:35:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "30332:39:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 13707,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13670,
                                    "src": "30306:4:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                      "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                    }
                                  },
                                  "id": 13708,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "amount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 13659,
                                  "src": "30306:11:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 13703,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13670,
                                        "src": "30290:4:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                          "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                        }
                                      },
                                      "id": 13704,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "asset",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 13653,
                                      "src": "30290:10:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 13700,
                                          "name": "oracle",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13692,
                                          "src": "30268:6:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 13699,
                                        "name": "IPriceOracleGetter",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6918,
                                        "src": "30249:18:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IPriceOracleGetter_$6918_$",
                                          "typeString": "type(contract IPriceOracleGetter)"
                                        }
                                      },
                                      "id": 13701,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "30249:26:68",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                                        "typeString": "contract IPriceOracleGetter"
                                      }
                                    },
                                    "id": 13702,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getAssetPrice",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6917,
                                    "src": "30249:40:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address) view external returns (uint256)"
                                    }
                                  },
                                  "id": 13705,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "30249:52:68",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 13706,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4409,
                                "src": "30249:56:68",
                                "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": 13709,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "30249:69:68",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 13710,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "div",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4426,
                            "src": "30249:73:68",
                            "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": 13717,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30249:130:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "30221:158:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13722,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13670,
                                "src": "30424:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                  "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                }
                              },
                              "id": 13723,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "asset",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13653,
                              "src": "30424:10:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13724,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13676,
                              "src": "30442:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13725,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13670,
                                "src": "30457:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                  "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                }
                              },
                              "id": 13726,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "onBehalfOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13657,
                              "src": "30457:15:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13727,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13670,
                                "src": "30480:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                  "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                }
                              },
                              "id": 13728,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "amount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13659,
                              "src": "30480:11:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13729,
                              "name": "amountInETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13698,
                              "src": "30499:11:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13730,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13670,
                                "src": "30518:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                  "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                }
                              },
                              "id": 13731,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "interestRateMode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13661,
                              "src": "30518:21:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13732,
                              "name": "_maxStableRateBorrowSizePercent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15787,
                              "src": "30547:31:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13733,
                              "name": "_reserves",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15773,
                              "src": "30586:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13734,
                              "name": "userConfig",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13685,
                              "src": "30603:10:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13735,
                              "name": "_reservesList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15781,
                              "src": "30621:13:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13736,
                              "name": "_reservesCount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15783,
                              "src": "30642:14:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13737,
                              "name": "oracle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13692,
                              "src": "30664:6:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                              },
                              {
                                "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                              },
                              {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 13719,
                              "name": "ValidationLogic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19773,
                              "src": "30386:15:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ValidationLogic_$19773_$",
                                "typeString": "type(library ValidationLogic)"
                              }
                            },
                            "id": 13721,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "validateBorrow",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 19232,
                            "src": "30386:30:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_delegatecall_view$_t_address_$_t_struct$_ReserveData_$20520_storage_ptr_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$_$_t_struct$_UserConfigurationMap_$20526_storage_ptr_$_t_mapping$_t_uint256_$_t_address_$_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,struct DataTypes.ReserveData storage pointer,address,uint256,uint256,uint256,uint256,mapping(address => struct DataTypes.ReserveData storage ref),struct DataTypes.UserConfigurationMap storage pointer,mapping(uint256 => address),uint256,address) view"
                            }
                          },
                          "id": 13738,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30386:290:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13739,
                        "nodeType": "ExpressionStatement",
                        "src": "30386:290:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 13740,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13676,
                              "src": "30683:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            "id": 13742,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "updateState",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18183,
                            "src": "30683:19:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReserveData_$20520_storage_ptr_$returns$__$bound_to$_t_struct$_ReserveData_$20520_storage_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveData storage pointer)"
                            }
                          },
                          "id": 13743,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30683:21:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13744,
                        "nodeType": "ExpressionStatement",
                        "src": "30683:21:68"
                      },
                      {
                        "assignments": [
                          13746
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13746,
                            "mutability": "mutable",
                            "name": "currentStableRate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 13873,
                            "src": "30711:25:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13745,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "30711:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13748,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 13747,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "30739:1:68",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "30711:29:68"
                      },
                      {
                        "assignments": [
                          13750
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13750,
                            "mutability": "mutable",
                            "name": "isFirstBorrowing",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 13873,
                            "src": "30747:21:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 13749,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "30747:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13752,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 13751,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "30771:5:68",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "30747:29:68"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                            "typeString": "enum DataTypes.InterestRateMode"
                          },
                          "id": 13761,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13755,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13670,
                                  "src": "30813:4:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                    "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                  }
                                },
                                "id": 13756,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "interestRateMode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 13661,
                                "src": "30813:21:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 13753,
                                "name": "DataTypes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20531,
                                "src": "30786:9:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_DataTypes_$20531_$",
                                  "typeString": "type(library DataTypes)"
                                }
                              },
                              "id": 13754,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "InterestRateMode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20530,
                              "src": "30786:26:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_InterestRateMode_$20530_$",
                                "typeString": "type(enum DataTypes.InterestRateMode)"
                              }
                            },
                            "id": 13757,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "30786:49:68",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                              "typeString": "enum DataTypes.InterestRateMode"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13758,
                                "name": "DataTypes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20531,
                                "src": "30839:9:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_DataTypes_$20531_$",
                                  "typeString": "type(library DataTypes)"
                                }
                              },
                              "id": 13759,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "InterestRateMode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20530,
                              "src": "30839:26:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_InterestRateMode_$20530_$",
                                "typeString": "type(enum DataTypes.InterestRateMode)"
                              }
                            },
                            "id": 13760,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "STABLE",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "30839:33:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                              "typeString": "enum DataTypes.InterestRateMode"
                            }
                          },
                          "src": "30786:86:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 13801,
                          "nodeType": "Block",
                          "src": "31127:201:68",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13799,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 13784,
                                  "name": "isFirstBorrowing",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13750,
                                  "src": "31135:16:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 13790,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13670,
                                        "src": "31221:4:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                          "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                        }
                                      },
                                      "id": 13791,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "user",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 13655,
                                      "src": "31221:9:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 13792,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13670,
                                        "src": "31240:4:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                          "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                        }
                                      },
                                      "id": 13793,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "onBehalfOf",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 13657,
                                      "src": "31240:15:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 13794,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13670,
                                        "src": "31265:4:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                          "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                        }
                                      },
                                      "id": 13795,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "amount",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 13659,
                                      "src": "31265:11:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 13796,
                                        "name": "reserve",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13676,
                                        "src": "31286:7:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                          "typeString": "struct DataTypes.ReserveData storage pointer"
                                        }
                                      },
                                      "id": 13797,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "variableBorrowIndex",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20501,
                                      "src": "31286:27:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 13786,
                                            "name": "reserve",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 13676,
                                            "src": "31173:7:68",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                              "typeString": "struct DataTypes.ReserveData storage pointer"
                                            }
                                          },
                                          "id": 13787,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "variableDebtTokenAddress",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 20515,
                                          "src": "31173:32:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 13785,
                                        "name": "IVariableDebtToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7504,
                                        "src": "31154:18:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IVariableDebtToken_$7504_$",
                                          "typeString": "type(contract IVariableDebtToken)"
                                        }
                                      },
                                      "id": 13788,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "31154:52:68",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IVariableDebtToken_$7504",
                                        "typeString": "contract IVariableDebtToken"
                                      }
                                    },
                                    "id": 13789,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mint",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7478,
                                    "src": "31154:57:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,address,uint256,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 13798,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "31154:167:68",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "31135:186:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 13800,
                              "nodeType": "ExpressionStatement",
                              "src": "31135:186:68"
                            }
                          ]
                        },
                        "id": 13802,
                        "nodeType": "IfStatement",
                        "src": "30782:546:68",
                        "trueBody": {
                          "id": 13783,
                          "nodeType": "Block",
                          "src": "30874:247:68",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13765,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 13762,
                                  "name": "currentStableRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13746,
                                  "src": "30882:17:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 13763,
                                    "name": "reserve",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13676,
                                    "src": "30902:7:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                      "typeString": "struct DataTypes.ReserveData storage pointer"
                                    }
                                  },
                                  "id": 13764,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "currentStableBorrowRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20507,
                                  "src": "30902:31:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "30882:51:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13766,
                              "nodeType": "ExpressionStatement",
                              "src": "30882:51:68"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13781,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 13767,
                                  "name": "isFirstBorrowing",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13750,
                                  "src": "30942:16:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 13773,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13670,
                                        "src": "31024:4:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                          "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                        }
                                      },
                                      "id": 13774,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "user",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 13655,
                                      "src": "31024:9:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 13775,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13670,
                                        "src": "31043:4:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                          "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                        }
                                      },
                                      "id": 13776,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "onBehalfOf",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 13657,
                                      "src": "31043:15:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 13777,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13670,
                                        "src": "31068:4:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                          "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                        }
                                      },
                                      "id": 13778,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "amount",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 13659,
                                      "src": "31068:11:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 13779,
                                      "name": "currentStableRate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13746,
                                      "src": "31089:17:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 13769,
                                            "name": "reserve",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 13676,
                                            "src": "30978:7:68",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                              "typeString": "struct DataTypes.ReserveData storage pointer"
                                            }
                                          },
                                          "id": 13770,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "stableDebtTokenAddress",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 20513,
                                          "src": "30978:30:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 13768,
                                        "name": "IStableDebtToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7133,
                                        "src": "30961:16:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IStableDebtToken_$7133_$",
                                          "typeString": "type(contract IStableDebtToken)"
                                        }
                                      },
                                      "id": 13771,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "30961:48:68",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IStableDebtToken_$7133",
                                        "typeString": "contract IStableDebtToken"
                                      }
                                    },
                                    "id": 13772,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mint",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7062,
                                    "src": "30961:53:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,address,uint256,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 13780,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "30961:153:68",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "30942:172:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 13782,
                              "nodeType": "ExpressionStatement",
                              "src": "30942:172:68"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 13803,
                          "name": "isFirstBorrowing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13750,
                          "src": "31338:16:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 13813,
                        "nodeType": "IfStatement",
                        "src": "31334:78:68",
                        "trueBody": {
                          "id": 13812,
                          "nodeType": "Block",
                          "src": "31356:56:68",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13807,
                                      "name": "reserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13676,
                                      "src": "31388:7:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                        "typeString": "struct DataTypes.ReserveData storage pointer"
                                      }
                                    },
                                    "id": 13808,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "id",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20519,
                                    "src": "31388:10:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "74727565",
                                    "id": 13809,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "31400:4:68",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 13804,
                                    "name": "userConfig",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13685,
                                    "src": "31364:10:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                      "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                                    }
                                  },
                                  "id": 13806,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "setBorrowing",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 16801,
                                  "src": "31364:23:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UserConfigurationMap_$20526_storage_ptr_$_t_uint256_$_t_bool_$returns$__$bound_to$_t_struct$_UserConfigurationMap_$20526_storage_ptr_$",
                                    "typeString": "function (struct DataTypes.UserConfigurationMap storage pointer,uint256,bool)"
                                  }
                                },
                                "id": 13810,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "31364:41:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 13811,
                              "nodeType": "ExpressionStatement",
                              "src": "31364:41:68"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13817,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13670,
                                "src": "31453:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                  "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                }
                              },
                              "id": 13818,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "asset",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13653,
                              "src": "31453:10:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13819,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13670,
                                "src": "31471:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                  "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                }
                              },
                              "id": 13820,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "aTokenAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13663,
                              "src": "31471:18:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 13821,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "31497:1:68",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "condition": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13822,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13670,
                                  "src": "31506:4:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                    "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                  }
                                },
                                "id": 13823,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "releaseUnderlying",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 13667,
                                "src": "31506:22:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 13826,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "31545:1:68",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "id": 13827,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "31506:40:68",
                              "trueExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13824,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13670,
                                  "src": "31531:4:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                    "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                  }
                                },
                                "id": 13825,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 13659,
                                "src": "31531:11:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 13814,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13676,
                              "src": "31418:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            "id": 13816,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "updateInterestRates",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18500,
                            "src": "31418:27:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReserveData_$20520_storage_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$bound_to$_t_struct$_ReserveData_$20520_storage_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveData storage pointer,address,address,uint256,uint256)"
                            }
                          },
                          "id": 13828,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31418:134:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13829,
                        "nodeType": "ExpressionStatement",
                        "src": "31418:134:68"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 13830,
                            "name": "vars",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13670,
                            "src": "31563:4:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                              "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                            }
                          },
                          "id": 13831,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "releaseUnderlying",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 13667,
                          "src": "31563:22:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 13844,
                        "nodeType": "IfStatement",
                        "src": "31559:115:68",
                        "trueBody": {
                          "id": 13843,
                          "nodeType": "Block",
                          "src": "31587:87:68",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13837,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13670,
                                      "src": "31644:4:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                        "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                      }
                                    },
                                    "id": 13838,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "user",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 13655,
                                    "src": "31644:9:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13839,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13670,
                                      "src": "31655:4:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                        "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                      }
                                    },
                                    "id": 13840,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 13659,
                                    "src": "31655:11:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 13833,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13670,
                                          "src": "31603:4:68",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                            "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                          }
                                        },
                                        "id": 13834,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "aTokenAddress",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 13663,
                                        "src": "31603:18:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 13832,
                                      "name": "IAToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5667,
                                      "src": "31595:7:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IAToken_$5667_$",
                                        "typeString": "type(contract IAToken)"
                                      }
                                    },
                                    "id": 13835,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "31595:27:68",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IAToken_$5667",
                                      "typeString": "contract IAToken"
                                    }
                                  },
                                  "id": 13836,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "transferUnderlyingTo",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5646,
                                  "src": "31595:48:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (address,uint256) external returns (uint256)"
                                  }
                                },
                                "id": 13841,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "31595:72:68",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13842,
                              "nodeType": "ExpressionStatement",
                              "src": "31595:72:68"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13846,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13670,
                                "src": "31699:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                  "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                }
                              },
                              "id": 13847,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "asset",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13653,
                              "src": "31699:10:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13848,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13670,
                                "src": "31717:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                  "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                }
                              },
                              "id": 13849,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "user",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13655,
                              "src": "31717:9:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13850,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13670,
                                "src": "31734:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                  "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                }
                              },
                              "id": 13851,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "onBehalfOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13657,
                              "src": "31734:15:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13852,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13670,
                                "src": "31757:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                  "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                }
                              },
                              "id": 13853,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "amount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13659,
                              "src": "31757:11:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13854,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13670,
                                "src": "31776:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                  "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                }
                              },
                              "id": 13855,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "interestRateMode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13661,
                              "src": "31776:21:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                  "typeString": "enum DataTypes.InterestRateMode"
                                },
                                "id": 13864,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 13858,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13670,
                                        "src": "31832:4:68",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                          "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                        }
                                      },
                                      "id": 13859,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "interestRateMode",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 13661,
                                      "src": "31832:21:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13856,
                                      "name": "DataTypes",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20531,
                                      "src": "31805:9:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_DataTypes_$20531_$",
                                        "typeString": "type(library DataTypes)"
                                      }
                                    },
                                    "id": 13857,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "InterestRateMode",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20530,
                                    "src": "31805:26:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_InterestRateMode_$20530_$",
                                      "typeString": "type(enum DataTypes.InterestRateMode)"
                                    }
                                  },
                                  "id": 13860,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "31805:49:68",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                    "typeString": "enum DataTypes.InterestRateMode"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13861,
                                      "name": "DataTypes",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20531,
                                      "src": "31858:9:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_DataTypes_$20531_$",
                                        "typeString": "type(library DataTypes)"
                                      }
                                    },
                                    "id": 13862,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "InterestRateMode",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20530,
                                    "src": "31858:26:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_InterestRateMode_$20530_$",
                                      "typeString": "type(enum DataTypes.InterestRateMode)"
                                    }
                                  },
                                  "id": 13863,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "STABLE",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "31858:33:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                    "typeString": "enum DataTypes.InterestRateMode"
                                  }
                                },
                                "src": "31805:86:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13866,
                                  "name": "reserve",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13676,
                                  "src": "31930:7:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                    "typeString": "struct DataTypes.ReserveData storage pointer"
                                  }
                                },
                                "id": 13867,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "currentVariableBorrowRate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20505,
                                "src": "31930:33:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 13868,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "31805:158:68",
                              "trueExpression": {
                                "argumentTypes": null,
                                "id": 13865,
                                "name": "currentStableRate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13746,
                                "src": "31902:17:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13869,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13670,
                                "src": "31971:4:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                                  "typeString": "struct LendingPool.ExecuteBorrowParams memory"
                                }
                              },
                              "id": 13870,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "referralCode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13665,
                              "src": "31971:17:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            ],
                            "id": 13845,
                            "name": "Borrow",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6139,
                            "src": "31685:6:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint16_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256,uint256,uint16)"
                            }
                          },
                          "id": 13871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31685:309:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13872,
                        "nodeType": "EmitStatement",
                        "src": "31680:314:68"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 13874,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_executeBorrow",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 13671,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13670,
                        "mutability": "mutable",
                        "name": "vars",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13874,
                        "src": "29959:31:68",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_memory_ptr",
                          "typeString": "struct LendingPool.ExecuteBorrowParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 13669,
                          "name": "ExecuteBorrowParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 13668,
                          "src": "29959:19:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ExecuteBorrowParams_$13668_storage_ptr",
                            "typeString": "struct LendingPool.ExecuteBorrowParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "29958:33:68"
                  },
                  "returnParameters": {
                    "id": 13672,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "30001:0:68"
                  },
                  "scope": 13934,
                  "src": "29935:2064:68",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 13932,
                    "nodeType": "Block",
                    "src": "32054:400:68",
                    "statements": [
                      {
                        "assignments": [
                          13880
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13880,
                            "mutability": "mutable",
                            "name": "reservesCount",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 13932,
                            "src": "32060:21:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13879,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "32060:7:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13882,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 13881,
                          "name": "_reservesCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15783,
                          "src": "32084:14:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "32060:38:68"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 13886,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 13884,
                                "name": "reservesCount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13880,
                                "src": "32113:13:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 13885,
                                "name": "_maxNumberOfReserves",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15791,
                                "src": "32129:20:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "32113:36:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13887,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "32151:6:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 13888,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "LP_NO_MORE_RESERVES_ALLOWED",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17188,
                              "src": "32151:34:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 13883,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "32105:7:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13889,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "32105:81:68",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13890,
                        "nodeType": "ExpressionStatement",
                        "src": "32105:81:68"
                      },
                      {
                        "assignments": [
                          13892
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13892,
                            "mutability": "mutable",
                            "name": "reserveAlreadyAdded",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 13932,
                            "src": "32193:24:68",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 13891,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "32193:4:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13905,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 13904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 13898,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 13893,
                                  "name": "_reserves",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15773,
                                  "src": "32220:9:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                    "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                  }
                                },
                                "id": 13895,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 13894,
                                  "name": "asset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13876,
                                  "src": "32230:5:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "32220:16:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                                  "typeString": "struct DataTypes.ReserveData storage ref"
                                }
                              },
                              "id": 13896,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "id",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20519,
                              "src": "32220:19:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 13897,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "32243:1:68",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "32220:24:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 13903,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 13899,
                                "name": "_reservesList",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15781,
                                "src": "32248:13:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                  "typeString": "mapping(uint256 => address)"
                                }
                              },
                              "id": 13901,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 13900,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "32262:1:68",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "32248:16:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 13902,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13876,
                              "src": "32268:5:68",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "32248:25:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "32220:53:68",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "32193:80:68"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 13907,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "32284:20:68",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 13906,
                            "name": "reserveAlreadyAdded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13892,
                            "src": "32285:19:68",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 13931,
                        "nodeType": "IfStatement",
                        "src": "32280:170:68",
                        "trueBody": {
                          "id": 13930,
                          "nodeType": "Block",
                          "src": "32306:144:68",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13916,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13908,
                                      "name": "_reserves",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15773,
                                      "src": "32314:9:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                        "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                      }
                                    },
                                    "id": 13910,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 13909,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13876,
                                      "src": "32324:5:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "32314:16:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                                      "typeString": "struct DataTypes.ReserveData storage ref"
                                    }
                                  },
                                  "id": 13911,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "id",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20519,
                                  "src": "32314:19:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 13914,
                                      "name": "reservesCount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13880,
                                      "src": "32342:13:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 13913,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "32336:5:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint8_$",
                                      "typeString": "type(uint8)"
                                    },
                                    "typeName": {
                                      "id": 13912,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "32336:5:68",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 13915,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "32336:20:68",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "src": "32314:42:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "id": 13917,
                              "nodeType": "ExpressionStatement",
                              "src": "32314:42:68"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13922,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13918,
                                    "name": "_reservesList",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15781,
                                    "src": "32364:13:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                      "typeString": "mapping(uint256 => address)"
                                    }
                                  },
                                  "id": 13920,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 13919,
                                    "name": "reservesCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13880,
                                    "src": "32378:13:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "32364:28:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 13921,
                                  "name": "asset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13876,
                                  "src": "32395:5:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "32364:36:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 13923,
                              "nodeType": "ExpressionStatement",
                              "src": "32364:36:68"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13928,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 13924,
                                  "name": "_reservesCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15783,
                                  "src": "32409:14:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 13927,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 13925,
                                    "name": "reservesCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13880,
                                    "src": "32426:13:68",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 13926,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "32442:1:68",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "32426:17:68",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "32409:34:68",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13929,
                              "nodeType": "ExpressionStatement",
                              "src": "32409:34:68"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 13933,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_addReserveToList",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 13877,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13876,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13933,
                        "src": "32030:13:68",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13875,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "32030:7:68",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "32029:15:68"
                  },
                  "returnParameters": {
                    "id": 13878,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "32054:0:68"
                  },
                  "scope": 13934,
                  "src": "32003:451:68",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 13935,
              "src": "2419:30037:68"
            }
          ],
          "src": "37:32420:68"
        },
        "id": 68
      },
      "contracts/protocol/lendingpool/LendingPoolCollateralManager.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/lendingpool/LendingPoolCollateralManager.sol",
          "exportedSymbols": {
            "LendingPoolCollateralManager": [
              14653
            ]
          },
          "id": 14654,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 13936,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:69"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeMath.sol",
              "file": "../../dependencies/openzeppelin/contracts//SafeMath.sol",
              "id": 13938,
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 4497,
              "src": "62:81:69",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 13937,
                    "name": "SafeMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:8:69",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
              "file": "../../dependencies/openzeppelin/contracts//IERC20.sol",
              "id": 13940,
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 4013,
              "src": "144:77:69",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 13939,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "152:6:69",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IAToken.sol",
              "file": "../../interfaces/IAToken.sol",
              "id": 13942,
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 5668,
              "src": "222:53:69",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 13941,
                    "name": "IAToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "230:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IStableDebtToken.sol",
              "file": "../../interfaces/IStableDebtToken.sol",
              "id": 13944,
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 7134,
              "src": "276:71:69",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 13943,
                    "name": "IStableDebtToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "284:16:69",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IVariableDebtToken.sol",
              "file": "../../interfaces/IVariableDebtToken.sol",
              "id": 13946,
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 7505,
              "src": "348:75:69",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 13945,
                    "name": "IVariableDebtToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "356:18:69",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IPriceOracleGetter.sol",
              "file": "../../interfaces/IPriceOracleGetter.sol",
              "id": 13948,
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 6919,
              "src": "424:75:69",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 13947,
                    "name": "IPriceOracleGetter",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "432:18:69",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPoolCollateralManager.sol",
              "file": "../../interfaces/ILendingPoolCollateralManager.sol",
              "id": 13950,
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 6708,
              "src": "500:97:69",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 13949,
                    "name": "ILendingPoolCollateralManager",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "508:29:69",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/aave-upgradeability/VersionedInitializable.sol",
              "file": "../libraries/aave-upgradeability/VersionedInitializable.sol",
              "id": 13952,
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 16020,
              "src": "598:99:69",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 13951,
                    "name": "VersionedInitializable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "606:22:69",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/logic/GenericLogic.sol",
              "file": "../libraries/logic/GenericLogic.sol",
              "id": 13954,
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 17988,
              "src": "698:65:69",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 13953,
                    "name": "GenericLogic",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "706:12:69",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/helpers/Helpers.sol",
              "file": "../libraries/helpers/Helpers.sol",
              "id": 13956,
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 17305,
              "src": "764:57:69",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 13955,
                    "name": "Helpers",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "772:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/math/WadRayMath.sol",
              "file": "../libraries/math/WadRayMath.sol",
              "id": 13958,
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 20494,
              "src": "822:60:69",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 13957,
                    "name": "WadRayMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "830:10:69",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/math/PercentageMath.sol",
              "file": "../libraries/math/PercentageMath.sol",
              "id": 13960,
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 20069,
              "src": "883:68:69",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 13959,
                    "name": "PercentageMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "891:14:69",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeERC20.sol",
              "file": "../../dependencies/openzeppelin/contracts/SafeERC20.sol",
              "id": 13962,
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 4301,
              "src": "952:82:69",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 13961,
                    "name": "SafeERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "960:9:69",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/helpers/Errors.sol",
              "file": "../libraries/helpers/Errors.sol",
              "id": 13964,
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 17240,
              "src": "1035:55:69",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 13963,
                    "name": "Errors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "1043:6:69",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/logic/ValidationLogic.sol",
              "file": "../libraries/logic/ValidationLogic.sol",
              "id": 13966,
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 19774,
              "src": "1091:71:69",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 13965,
                    "name": "ValidationLogic",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "1099:15:69",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/types/DataTypes.sol",
              "file": "../libraries/types/DataTypes.sol",
              "id": 13968,
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 20532,
              "src": "1163:59:69",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 13967,
                    "name": "DataTypes",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "1171:9:69",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/lendingpool/LendingPoolStorage.sol",
              "file": "./LendingPoolStorage.sol",
              "id": 13970,
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 15793,
              "src": "1223:60:69",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 13969,
                    "name": "LendingPoolStorage",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "1231:18:69",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 13972,
                    "name": "ILendingPoolCollateralManager",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6707,
                    "src": "1700:29:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPoolCollateralManager_$6707",
                      "typeString": "contract ILendingPoolCollateralManager"
                    }
                  },
                  "id": 13973,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1700:29:69"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 13974,
                    "name": "VersionedInitializable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16019,
                    "src": "1733:22:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_VersionedInitializable_$16019",
                      "typeString": "contract VersionedInitializable"
                    }
                  },
                  "id": 13975,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1733:22:69"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 13976,
                    "name": "LendingPoolStorage",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 15792,
                    "src": "1759:18:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LendingPoolStorage_$15792",
                      "typeString": "contract LendingPoolStorage"
                    }
                  },
                  "id": 13977,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1759:18:69"
                }
              ],
              "contractDependencies": [
                6707,
                15792,
                16019
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 13971,
                "nodeType": "StructuredDocumentation",
                "src": "1285:371:69",
                "text": " @title LendingPoolCollateralManager contract\n @author Aave\n @dev Implements actions involving management of collateral in the protocol, the main one being the liquidations\n IMPORTANT This contract will run always via DELEGATECALL, through the LendingPool, so the chain of inheritance\n is the same as the LendingPool, to have compatible storage layouts*"
              },
              "fullyImplemented": true,
              "id": 14653,
              "linearizedBaseContracts": [
                14653,
                15792,
                16019,
                6707
              ],
              "name": "LendingPoolCollateralManager",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 13980,
                  "libraryName": {
                    "contractScope": null,
                    "id": 13978,
                    "name": "SafeERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4300,
                    "src": "1788:9:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeERC20_$4300",
                      "typeString": "library SafeERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1782:27:69",
                  "typeName": {
                    "contractScope": null,
                    "id": 13979,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4012,
                    "src": "1802:6:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$4012",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "id": 13983,
                  "libraryName": {
                    "contractScope": null,
                    "id": 13981,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4496,
                    "src": "1818:8:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$4496",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1812:27:69",
                  "typeName": {
                    "id": 13982,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1831:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 13986,
                  "libraryName": {
                    "contractScope": null,
                    "id": 13984,
                    "name": "WadRayMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20493,
                    "src": "1848:10:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_WadRayMath_$20493",
                      "typeString": "library WadRayMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1842:29:69",
                  "typeName": {
                    "id": 13985,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1863:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 13989,
                  "libraryName": {
                    "contractScope": null,
                    "id": 13987,
                    "name": "PercentageMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20068,
                    "src": "1880:14:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_PercentageMath_$20068",
                      "typeString": "library PercentageMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1874:33:69",
                  "typeName": {
                    "id": 13988,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1899:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": true,
                  "id": 13992,
                  "mutability": "constant",
                  "name": "LIQUIDATION_CLOSE_FACTOR_PERCENT",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14653,
                  "src": "1911:65:69",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13990,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1911:7:69",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "35303030",
                    "id": 13991,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1972:4:69",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_5000_by_1",
                      "typeString": "int_const 5000"
                    },
                    "value": "5000"
                  },
                  "visibility": "internal"
                },
                {
                  "canonicalName": "LendingPoolCollateralManager.LiquidationCallLocalVars",
                  "id": 14027,
                  "members": [
                    {
                      "constant": false,
                      "id": 13994,
                      "mutability": "mutable",
                      "name": "userCollateralBalance",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14027,
                      "src": "2019:29:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13993,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2019:7:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 13996,
                      "mutability": "mutable",
                      "name": "userStableDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14027,
                      "src": "2054:22:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13995,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2054:7:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 13998,
                      "mutability": "mutable",
                      "name": "userVariableDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14027,
                      "src": "2082:24:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13997,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2082:7:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 14000,
                      "mutability": "mutable",
                      "name": "maxLiquidatableDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14027,
                      "src": "2112:27:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13999,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2112:7:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 14002,
                      "mutability": "mutable",
                      "name": "actualDebtToLiquidate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14027,
                      "src": "2145:29:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14001,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2145:7:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 14004,
                      "mutability": "mutable",
                      "name": "liquidationRatio",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14027,
                      "src": "2180:24:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14003,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2180:7:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 14006,
                      "mutability": "mutable",
                      "name": "maxAmountCollateralToLiquidate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14027,
                      "src": "2210:38:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14005,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2210:7:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 14008,
                      "mutability": "mutable",
                      "name": "userStableRate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14027,
                      "src": "2254:22:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14007,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2254:7:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 14010,
                      "mutability": "mutable",
                      "name": "maxCollateralToLiquidate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14027,
                      "src": "2282:32:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14009,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2282:7:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 14012,
                      "mutability": "mutable",
                      "name": "debtAmountNeeded",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14027,
                      "src": "2320:24:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14011,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2320:7:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 14014,
                      "mutability": "mutable",
                      "name": "healthFactor",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14027,
                      "src": "2350:20:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14013,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2350:7:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 14016,
                      "mutability": "mutable",
                      "name": "liquidatorPreviousATokenBalance",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14027,
                      "src": "2376:39:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14015,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2376:7:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 14018,
                      "mutability": "mutable",
                      "name": "collateralAtoken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14027,
                      "src": "2421:24:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IAToken_$5667",
                        "typeString": "contract IAToken"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14017,
                        "name": "IAToken",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5667,
                        "src": "2421:7:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAToken_$5667",
                          "typeString": "contract IAToken"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 14020,
                      "mutability": "mutable",
                      "name": "isCollateralEnabled",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14027,
                      "src": "2451:24:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 14019,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2451:4:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 14022,
                      "mutability": "mutable",
                      "name": "borrowRateMode",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14027,
                      "src": "2481:41:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                        "typeString": "enum DataTypes.InterestRateMode"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14021,
                        "name": "DataTypes.InterestRateMode",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 20530,
                        "src": "2481:26:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                          "typeString": "enum DataTypes.InterestRateMode"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 14024,
                      "mutability": "mutable",
                      "name": "errorCode",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14027,
                      "src": "2528:17:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14023,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2528:7:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 14026,
                      "mutability": "mutable",
                      "name": "errorMsg",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14027,
                      "src": "2551:15:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 14025,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2551:6:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "LiquidationCallLocalVars",
                  "nodeType": "StructDefinition",
                  "scope": 14653,
                  "src": "1981:590:69",
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    15999
                  ],
                  "body": {
                    "id": 14036,
                    "nodeType": "Block",
                    "src": "2905:19:69",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 14034,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2918:1:69",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "functionReturnParameters": 14033,
                        "id": 14035,
                        "nodeType": "Return",
                        "src": "2911:8:69"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14028,
                    "nodeType": "StructuredDocumentation",
                    "src": "2575:263:69",
                    "text": " @dev As thIS contract extends the VersionedInitializable contract to match the state\n of the LendingPool contract, the getRevision() function is needed, but the value is not\n important, as the initialize() function will never be called here"
                  },
                  "id": 14037,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRevision",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14030,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2878:8:69"
                  },
                  "parameters": {
                    "id": 14029,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2861:2:69"
                  },
                  "returnParameters": {
                    "id": 14033,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14032,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 14037,
                        "src": "2896:7:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14031,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2896:7:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2895:9:69"
                  },
                  "scope": 14653,
                  "src": "2841:83:69",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    6706
                  ],
                  "body": {
                    "id": 14475,
                    "nodeType": "Block",
                    "src": "3969:5235:69",
                    "statements": [
                      {
                        "assignments": [
                          14059
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14059,
                            "mutability": "mutable",
                            "name": "collateralReserve",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 14475,
                            "src": "3975:47:69",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                              "typeString": "struct DataTypes.ReserveData"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 14058,
                              "name": "DataTypes.ReserveData",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20520,
                              "src": "3975:21:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14063,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 14060,
                            "name": "_reserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15773,
                            "src": "4025:9:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                              "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                            }
                          },
                          "id": 14062,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 14061,
                            "name": "collateralAsset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14040,
                            "src": "4035:15:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4025:26:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                            "typeString": "struct DataTypes.ReserveData storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3975:76:69"
                      },
                      {
                        "assignments": [
                          14067
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14067,
                            "mutability": "mutable",
                            "name": "debtReserve",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 14475,
                            "src": "4057:41:69",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                              "typeString": "struct DataTypes.ReserveData"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 14066,
                              "name": "DataTypes.ReserveData",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20520,
                              "src": "4057:21:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14071,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 14068,
                            "name": "_reserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15773,
                            "src": "4101:9:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                              "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                            }
                          },
                          "id": 14070,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 14069,
                            "name": "debtAsset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14042,
                            "src": "4111:9:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4101:20:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                            "typeString": "struct DataTypes.ReserveData storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4057:64:69"
                      },
                      {
                        "assignments": [
                          14075
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14075,
                            "mutability": "mutable",
                            "name": "userConfig",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 14475,
                            "src": "4127:49:69",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                              "typeString": "struct DataTypes.UserConfigurationMap"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 14074,
                              "name": "DataTypes.UserConfigurationMap",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20526,
                              "src": "4127:30:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                "typeString": "struct DataTypes.UserConfigurationMap"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14079,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 14076,
                            "name": "_usersConfig",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15777,
                            "src": "4179:12:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserConfigurationMap_$20526_storage_$",
                              "typeString": "mapping(address => struct DataTypes.UserConfigurationMap storage ref)"
                            }
                          },
                          "id": 14078,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 14077,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14044,
                            "src": "4192:4:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4179:18:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage",
                            "typeString": "struct DataTypes.UserConfigurationMap storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4127:70:69"
                      },
                      {
                        "assignments": [
                          14081
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14081,
                            "mutability": "mutable",
                            "name": "vars",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 14475,
                            "src": "4204:36:69",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                              "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 14080,
                              "name": "LiquidationCallLocalVars",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 14027,
                              "src": "4204:24:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_storage_ptr",
                                "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14082,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4204:36:69"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14098,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              null,
                              null,
                              null,
                              null,
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14083,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14081,
                                  "src": "4256:4:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                    "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                  }
                                },
                                "id": 14085,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "healthFactor",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14014,
                                "src": "4256:17:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 14086,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "4247:27:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$__$__$__$_t_uint256_$",
                              "typeString": "tuple(,,,,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14089,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14044,
                                "src": "4322:4:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 14090,
                                "name": "_reserves",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15773,
                                "src": "4334:9:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                  "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 14091,
                                "name": "userConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14075,
                                "src": "4351:10:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                  "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 14092,
                                "name": "_reservesList",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15781,
                                "src": "4369:13:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                  "typeString": "mapping(uint256 => address)"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 14093,
                                "name": "_reservesCount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15783,
                                "src": "4390:14:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14094,
                                    "name": "_addressesProvider",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15769,
                                    "src": "4412:18:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                                      "typeString": "contract ILendingPoolAddressesProvider"
                                    }
                                  },
                                  "id": 14095,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getPriceOracle",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6601,
                                  "src": "4412:33:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                    "typeString": "function () view external returns (address)"
                                  }
                                },
                                "id": 14096,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4412:35:69",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                  "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                },
                                {
                                  "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                  "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                                },
                                {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                  "typeString": "mapping(uint256 => address)"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 14087,
                                "name": "GenericLogic",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17987,
                                "src": "4277:12:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_GenericLogic_$17987_$",
                                  "typeString": "type(library GenericLogic)"
                                }
                              },
                              "id": 14088,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "calculateUserAccountData",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17918,
                              "src": "4277:37:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$_$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$_t_mapping$_t_uint256_$_t_address_$_$_t_uint256_$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "function (address,mapping(address => struct DataTypes.ReserveData storage ref),struct DataTypes.UserConfigurationMap memory,mapping(uint256 => address),uint256,address) view returns (uint256,uint256,uint256,uint256,uint256)"
                              }
                            },
                            "id": 14097,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4277:176:69",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "src": "4247:206:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14099,
                        "nodeType": "ExpressionStatement",
                        "src": "4247:206:69"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14111,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14100,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14081,
                                  "src": "4461:4:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                    "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                  }
                                },
                                "id": 14102,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "userStableDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 13996,
                                "src": "4461:19:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14103,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14081,
                                  "src": "4482:4:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                    "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                  }
                                },
                                "id": 14104,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "userVariableDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 13998,
                                "src": "4482:21:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 14105,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "4460:44:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14108,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14044,
                                "src": "4534:4:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 14109,
                                "name": "debtReserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14067,
                                "src": "4540:11:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 14106,
                                "name": "Helpers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17304,
                                "src": "4507:7:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Helpers_$17304_$",
                                  "typeString": "type(library Helpers)"
                                }
                              },
                              "id": 14107,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getUserCurrentDebt",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17275,
                              "src": "4507:26:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_struct$_ReserveData_$20520_storage_ptr_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (address,struct DataTypes.ReserveData storage pointer) view returns (uint256,uint256)"
                              }
                            },
                            "id": 14110,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4507:45:69",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "4460:92:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14112,
                        "nodeType": "ExpressionStatement",
                        "src": "4460:92:69"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14131,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14113,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14081,
                                  "src": "4560:4:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                    "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                  }
                                },
                                "id": 14115,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "errorCode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14024,
                                "src": "4560:14:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14116,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14081,
                                  "src": "4576:4:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                    "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                  }
                                },
                                "id": 14117,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "errorMsg",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14026,
                                "src": "4576:13:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              }
                            ],
                            "id": 14118,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "4559:31:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_string_memory_ptr_$",
                              "typeString": "tuple(uint256,string memory)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14121,
                                "name": "collateralReserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14059,
                                "src": "4640:17:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 14122,
                                "name": "debtReserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14067,
                                "src": "4665:11:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 14123,
                                "name": "userConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14075,
                                "src": "4684:10:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                  "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14124,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14081,
                                  "src": "4702:4:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                    "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                  }
                                },
                                "id": 14125,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "healthFactor",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14014,
                                "src": "4702:17:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14126,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14081,
                                  "src": "4727:4:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                    "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                  }
                                },
                                "id": 14127,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "userStableDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 13996,
                                "src": "4727:19:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14128,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14081,
                                  "src": "4754:4:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                    "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                  }
                                },
                                "id": 14129,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "userVariableDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 13998,
                                "src": "4754:21:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                },
                                {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                },
                                {
                                  "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                  "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 14119,
                                "name": "ValidationLogic",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19773,
                                "src": "4593:15:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ValidationLogic_$19773_$",
                                  "typeString": "type(library ValidationLogic)"
                                }
                              },
                              "id": 14120,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "validateLiquidationCall",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19730,
                              "src": "4593:39:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_ReserveData_$20520_storage_ptr_$_t_struct$_ReserveData_$20520_storage_ptr_$_t_struct$_UserConfigurationMap_$20526_storage_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_string_memory_ptr_$",
                                "typeString": "function (struct DataTypes.ReserveData storage pointer,struct DataTypes.ReserveData storage pointer,struct DataTypes.UserConfigurationMap storage pointer,uint256,uint256,uint256) view returns (uint256,string memory)"
                              }
                            },
                            "id": 14130,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4593:188:69",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_string_memory_ptr_$",
                              "typeString": "tuple(uint256,string memory)"
                            }
                          },
                          "src": "4559:222:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14132,
                        "nodeType": "ExpressionStatement",
                        "src": "4559:222:69"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_CollateralManagerErrors_$17238",
                            "typeString": "enum Errors.CollateralManagerErrors"
                          },
                          "id": 14141,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14135,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14081,
                                  "src": "4823:4:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                    "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                  }
                                },
                                "id": 14136,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "errorCode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14024,
                                "src": "4823:14:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 14133,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "4792:6:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 14134,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "CollateralManagerErrors",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17238,
                              "src": "4792:30:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_CollateralManagerErrors_$17238_$",
                                "typeString": "type(enum Errors.CollateralManagerErrors)"
                              }
                            },
                            "id": 14137,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4792:46:69",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_CollateralManagerErrors_$17238",
                              "typeString": "enum Errors.CollateralManagerErrors"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14138,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "4842:6:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 14139,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "CollateralManagerErrors",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17238,
                              "src": "4842:30:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_CollateralManagerErrors_$17238_$",
                                "typeString": "type(enum Errors.CollateralManagerErrors)"
                              }
                            },
                            "id": 14140,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "NO_ERROR",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4842:39:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_CollateralManagerErrors_$17238",
                              "typeString": "enum Errors.CollateralManagerErrors"
                            }
                          },
                          "src": "4792:89:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 14149,
                        "nodeType": "IfStatement",
                        "src": "4788:148:69",
                        "trueBody": {
                          "id": 14148,
                          "nodeType": "Block",
                          "src": "4883:53:69",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14142,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14081,
                                      "src": "4899:4:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                        "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                      }
                                    },
                                    "id": 14143,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "errorCode",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 14024,
                                    "src": "4899:14:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14144,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14081,
                                      "src": "4915:4:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                        "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                      }
                                    },
                                    "id": 14145,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "errorMsg",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 14026,
                                    "src": "4915:13:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "id": 14146,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "4898:31:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_string_memory_ptr_$",
                                  "typeString": "tuple(uint256,string memory)"
                                }
                              },
                              "functionReturnParameters": 14055,
                              "id": 14147,
                              "nodeType": "Return",
                              "src": "4891:38:69"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14157,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14150,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14081,
                              "src": "4942:4:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                              }
                            },
                            "id": 14152,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "collateralAtoken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14018,
                            "src": "4942:21:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAToken_$5667",
                              "typeString": "contract IAToken"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14154,
                                  "name": "collateralReserve",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14059,
                                  "src": "4974:17:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                    "typeString": "struct DataTypes.ReserveData storage pointer"
                                  }
                                },
                                "id": 14155,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "aTokenAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20511,
                                "src": "4974:31:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 14153,
                              "name": "IAToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5667,
                              "src": "4966:7:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IAToken_$5667_$",
                                "typeString": "type(contract IAToken)"
                              }
                            },
                            "id": 14156,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4966:40:69",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAToken_$5667",
                              "typeString": "contract IAToken"
                            }
                          },
                          "src": "4942:64:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAToken_$5667",
                            "typeString": "contract IAToken"
                          }
                        },
                        "id": 14158,
                        "nodeType": "ExpressionStatement",
                        "src": "4942:64:69"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14167,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14159,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14081,
                              "src": "5013:4:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                              }
                            },
                            "id": 14161,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "userCollateralBalance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13994,
                            "src": "5013:26:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14165,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14044,
                                "src": "5074:4:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14162,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14081,
                                  "src": "5042:4:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                    "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                  }
                                },
                                "id": 14163,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "collateralAtoken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14018,
                                "src": "5042:21:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAToken_$5667",
                                  "typeString": "contract IAToken"
                                }
                              },
                              "id": 14164,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3951,
                              "src": "5042:31:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 14166,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5042:37:69",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5013:66:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14168,
                        "nodeType": "ExpressionStatement",
                        "src": "5013:66:69"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14169,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14081,
                              "src": "5086:4:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                              }
                            },
                            "id": 14171,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "maxLiquidatableDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14000,
                            "src": "5086:24:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14179,
                                "name": "LIQUIDATION_CLOSE_FACTOR_PERCENT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13992,
                                "src": "5178:32:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14175,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14081,
                                      "src": "5137:4:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                        "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                      }
                                    },
                                    "id": 14176,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "userVariableDebt",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 13998,
                                    "src": "5137:21:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14172,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14081,
                                      "src": "5113:4:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                        "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                      }
                                    },
                                    "id": 14173,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "userStableDebt",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 13996,
                                    "src": "5113:19:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 14174,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4329,
                                  "src": "5113:23:69",
                                  "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": 14177,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5113:46:69",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14178,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "percentMul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20016,
                              "src": "5113:57:69",
                              "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": 14180,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5113:103:69",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5086:130:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14182,
                        "nodeType": "ExpressionStatement",
                        "src": "5086:130:69"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14194,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14183,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14081,
                              "src": "5223:4:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                              }
                            },
                            "id": 14185,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "actualDebtToLiquidate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14002,
                            "src": "5223:26:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 14189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 14186,
                                "name": "debtToCover",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14046,
                                "src": "5252:11:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14187,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14081,
                                  "src": "5266:4:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                    "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                  }
                                },
                                "id": 14188,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "maxLiquidatableDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14000,
                                "src": "5266:24:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5252:38:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 14192,
                              "name": "debtToCover",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14046,
                              "src": "5332:11:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 14193,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "5252:91:69",
                            "trueExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14190,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14081,
                                "src": "5299:4:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                  "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                }
                              },
                              "id": 14191,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maxLiquidatableDebt",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 14000,
                              "src": "5299:24:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5223:120:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14195,
                        "nodeType": "ExpressionStatement",
                        "src": "5223:120:69"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14212,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14196,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14081,
                                  "src": "5358:4:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                    "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                  }
                                },
                                "id": 14198,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "maxCollateralToLiquidate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14010,
                                "src": "5358:29:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14199,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14081,
                                  "src": "5395:4:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                    "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                  }
                                },
                                "id": 14200,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "debtAmountNeeded",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14012,
                                "src": "5395:21:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 14201,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "5350:72:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14203,
                                "name": "collateralReserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14059,
                                "src": "5473:17:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 14204,
                                "name": "debtReserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14067,
                                "src": "5498:11:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 14205,
                                "name": "collateralAsset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14040,
                                "src": "5517:15:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 14206,
                                "name": "debtAsset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14042,
                                "src": "5540:9:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14207,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14081,
                                  "src": "5557:4:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                    "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                  }
                                },
                                "id": 14208,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "actualDebtToLiquidate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14002,
                                "src": "5557:26:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14209,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14081,
                                  "src": "5591:4:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                    "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                  }
                                },
                                "id": 14210,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "userCollateralBalance",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 13994,
                                "src": "5591:26:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                },
                                {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 14202,
                              "name": "_calculateAvailableCollateralToLiquidate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14652,
                              "src": "5425:40:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_ReserveData_$20520_storage_ptr_$_t_struct$_ReserveData_$20520_storage_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (struct DataTypes.ReserveData storage pointer,struct DataTypes.ReserveData storage pointer,address,address,uint256,uint256) view returns (uint256,uint256)"
                              }
                            },
                            "id": 14211,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5425:198:69",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "5350:273:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14213,
                        "nodeType": "ExpressionStatement",
                        "src": "5350:273:69"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14218,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14214,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14081,
                              "src": "5820:4:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                              }
                            },
                            "id": 14215,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "debtAmountNeeded",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14012,
                            "src": "5820:21:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14216,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14081,
                              "src": "5844:4:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                              }
                            },
                            "id": 14217,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "actualDebtToLiquidate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14002,
                            "src": "5844:26:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5820:50:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 14227,
                        "nodeType": "IfStatement",
                        "src": "5816:121:69",
                        "trueBody": {
                          "id": 14226,
                          "nodeType": "Block",
                          "src": "5872:65:69",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14224,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14219,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14081,
                                    "src": "5880:4:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                      "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                    }
                                  },
                                  "id": 14221,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "actualDebtToLiquidate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 14002,
                                  "src": "5880:26:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14222,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14081,
                                    "src": "5909:4:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                      "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                    }
                                  },
                                  "id": 14223,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "debtAmountNeeded",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 14012,
                                  "src": "5909:21:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5880:50:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14225,
                              "nodeType": "ExpressionStatement",
                              "src": "5880:50:69"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 14229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "6085:14:69",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 14228,
                            "name": "receiveAToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14048,
                            "src": "6086:13:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 14260,
                        "nodeType": "IfStatement",
                        "src": "6081:381:69",
                        "trueBody": {
                          "id": 14259,
                          "nodeType": "Block",
                          "src": "6101:361:69",
                          "statements": [
                            {
                              "assignments": [
                                14231
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 14231,
                                  "mutability": "mutable",
                                  "name": "currentAvailableCollateral",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 14259,
                                  "src": "6109:34:69",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 14230,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6109:7:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 14242,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14238,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14081,
                                          "src": "6196:4:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                            "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                          }
                                        },
                                        "id": 14239,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "collateralAtoken",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 14018,
                                        "src": "6196:21:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IAToken_$5667",
                                          "typeString": "contract IAToken"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_IAToken_$5667",
                                          "typeString": "contract IAToken"
                                        }
                                      ],
                                      "id": 14237,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6188:7:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 14236,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6188:7:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 14240,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6188:30:69",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 14233,
                                        "name": "collateralAsset",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14040,
                                        "src": "6161:15:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 14232,
                                      "name": "IERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4012,
                                      "src": "6154:6:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                        "typeString": "type(contract IERC20)"
                                      }
                                    },
                                    "id": 14234,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6154:23:69",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$4012",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 14235,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3951,
                                  "src": "6154:33:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 14241,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6154:65:69",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6109:110:69"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14246,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 14243,
                                  "name": "currentAvailableCollateral",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14231,
                                  "src": "6231:26:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14244,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14081,
                                    "src": "6260:4:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                      "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                    }
                                  },
                                  "id": 14245,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maxCollateralToLiquidate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 14010,
                                  "src": "6260:29:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6231:58:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 14258,
                              "nodeType": "IfStatement",
                              "src": "6227:229:69",
                              "trueBody": {
                                "id": 14257,
                                "nodeType": "Block",
                                "src": "6291:165:69",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 14249,
                                                  "name": "Errors",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 17239,
                                                  "src": "6328:6:69",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                                    "typeString": "type(library Errors)"
                                                  }
                                                },
                                                "id": 14250,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "CollateralManagerErrors",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 17238,
                                                "src": "6328:30:69",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_enum$_CollateralManagerErrors_$17238_$",
                                                  "typeString": "type(enum Errors.CollateralManagerErrors)"
                                                }
                                              },
                                              "id": 14251,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberName": "NOT_ENOUGH_LIQUIDITY",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "6328:51:69",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_CollateralManagerErrors_$17238",
                                                "typeString": "enum Errors.CollateralManagerErrors"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_enum$_CollateralManagerErrors_$17238",
                                                "typeString": "enum Errors.CollateralManagerErrors"
                                              }
                                            ],
                                            "id": 14248,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "6320:7:69",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint256_$",
                                              "typeString": "type(uint256)"
                                            },
                                            "typeName": {
                                              "id": 14247,
                                              "name": "uint256",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "6320:7:69",
                                              "typeDescriptions": {
                                                "typeIdentifier": null,
                                                "typeString": null
                                              }
                                            }
                                          },
                                          "id": 14252,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "6320:60:69",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14253,
                                            "name": "Errors",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17239,
                                            "src": "6392:6:69",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                              "typeString": "type(library Errors)"
                                            }
                                          },
                                          "id": 14254,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "LPCM_NOT_ENOUGH_LIQUIDITY_TO_LIQUIDATE",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17131,
                                          "src": "6392:45:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        }
                                      ],
                                      "id": 14255,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "6308:139:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_string_memory_ptr_$",
                                        "typeString": "tuple(uint256,string memory)"
                                      }
                                    },
                                    "functionReturnParameters": 14055,
                                    "id": 14256,
                                    "nodeType": "Return",
                                    "src": "6301:146:69"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 14261,
                              "name": "debtReserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14067,
                              "src": "6468:11:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            "id": 14263,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "updateState",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18183,
                            "src": "6468:23:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReserveData_$20520_storage_ptr_$returns$__$bound_to$_t_struct$_ReserveData_$20520_storage_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveData storage pointer)"
                            }
                          },
                          "id": 14264,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6468:25:69",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14265,
                        "nodeType": "ExpressionStatement",
                        "src": "6468:25:69"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14270,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14266,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14081,
                              "src": "6504:4:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                              }
                            },
                            "id": 14267,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "userVariableDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13998,
                            "src": "6504:21:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14268,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14081,
                              "src": "6529:4:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                              }
                            },
                            "id": 14269,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "actualDebtToLiquidate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14002,
                            "src": "6529:26:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6504:51:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 14316,
                          "nodeType": "Block",
                          "src": "6738:470:69",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14287,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14284,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14081,
                                    "src": "6843:4:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                      "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                    }
                                  },
                                  "id": 14285,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "userVariableDebt",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 13998,
                                  "src": "6843:21:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 14286,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6867:1:69",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "6843:25:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 14301,
                              "nodeType": "IfStatement",
                              "src": "6839:213:69",
                              "trueBody": {
                                "id": 14300,
                                "nodeType": "Block",
                                "src": "6870:182:69",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 14293,
                                          "name": "user",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14044,
                                          "src": "6953:4:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14294,
                                            "name": "vars",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14081,
                                            "src": "6969:4:69",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                              "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                            }
                                          },
                                          "id": 14295,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "userVariableDebt",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 13998,
                                          "src": "6969:21:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14296,
                                            "name": "debtReserve",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14067,
                                            "src": "7002:11:69",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                              "typeString": "struct DataTypes.ReserveData storage pointer"
                                            }
                                          },
                                          "id": 14297,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "variableBorrowIndex",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 20501,
                                          "src": "7002:31:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 14289,
                                                "name": "debtReserve",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14067,
                                                "src": "6899:11:69",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                                }
                                              },
                                              "id": 14290,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "variableDebtTokenAddress",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 20515,
                                              "src": "6899:36:69",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 14288,
                                            "name": "IVariableDebtToken",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7504,
                                            "src": "6880:18:69",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IVariableDebtToken_$7504_$",
                                              "typeString": "type(contract IVariableDebtToken)"
                                            }
                                          },
                                          "id": 14291,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "6880:56:69",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IVariableDebtToken_$7504",
                                            "typeString": "contract IVariableDebtToken"
                                          }
                                        },
                                        "id": 14292,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "burn",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 7497,
                                        "src": "6880:61:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,uint256,uint256) external"
                                        }
                                      },
                                      "id": 14298,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6880:163:69",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 14299,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6880:163:69"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 14307,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14044,
                                    "src": "7126:4:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14311,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14081,
                                          "src": "7171:4:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                            "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                          }
                                        },
                                        "id": 14312,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "userVariableDebt",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 13998,
                                        "src": "7171:21:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14308,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14081,
                                          "src": "7140:4:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                            "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                          }
                                        },
                                        "id": 14309,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "actualDebtToLiquidate",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 14002,
                                        "src": "7140:26:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 14310,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sub",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4346,
                                      "src": "7140:30:69",
                                      "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": 14313,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7140:53:69",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14303,
                                          "name": "debtReserve",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14067,
                                          "src": "7076:11:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                            "typeString": "struct DataTypes.ReserveData storage pointer"
                                          }
                                        },
                                        "id": 14304,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "stableDebtTokenAddress",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 20513,
                                        "src": "7076:34:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 14302,
                                      "name": "IStableDebtToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7133,
                                      "src": "7059:16:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IStableDebtToken_$7133_$",
                                        "typeString": "type(contract IStableDebtToken)"
                                      }
                                    },
                                    "id": 14305,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7059:52:69",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IStableDebtToken_$7133",
                                      "typeString": "contract IStableDebtToken"
                                    }
                                  },
                                  "id": 14306,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "burn",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7070,
                                  "src": "7059:57:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256) external"
                                  }
                                },
                                "id": 14314,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7059:142:69",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 14315,
                              "nodeType": "ExpressionStatement",
                              "src": "7059:142:69"
                            }
                          ]
                        },
                        "id": 14317,
                        "nodeType": "IfStatement",
                        "src": "6500:708:69",
                        "trueBody": {
                          "id": 14283,
                          "nodeType": "Block",
                          "src": "6557:175:69",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 14276,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14044,
                                    "src": "6636:4:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14277,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14081,
                                      "src": "6650:4:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                        "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                      }
                                    },
                                    "id": 14278,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "actualDebtToLiquidate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 14002,
                                    "src": "6650:26:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14279,
                                      "name": "debtReserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14067,
                                      "src": "6686:11:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                        "typeString": "struct DataTypes.ReserveData storage pointer"
                                      }
                                    },
                                    "id": 14280,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "variableBorrowIndex",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20501,
                                    "src": "6686:31:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14272,
                                          "name": "debtReserve",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14067,
                                          "src": "6584:11:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                            "typeString": "struct DataTypes.ReserveData storage pointer"
                                          }
                                        },
                                        "id": 14273,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "variableDebtTokenAddress",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 20515,
                                        "src": "6584:36:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 14271,
                                      "name": "IVariableDebtToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7504,
                                      "src": "6565:18:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IVariableDebtToken_$7504_$",
                                        "typeString": "type(contract IVariableDebtToken)"
                                      }
                                    },
                                    "id": 14274,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6565:56:69",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IVariableDebtToken_$7504",
                                      "typeString": "contract IVariableDebtToken"
                                    }
                                  },
                                  "id": 14275,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "burn",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7497,
                                  "src": "6565:61:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256) external"
                                  }
                                },
                                "id": 14281,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6565:160:69",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 14282,
                              "nodeType": "ExpressionStatement",
                              "src": "6565:160:69"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14321,
                              "name": "debtAsset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14042,
                              "src": "7253:9:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14322,
                                "name": "debtReserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14067,
                                "src": "7270:11:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                }
                              },
                              "id": 14323,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "aTokenAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20511,
                              "src": "7270:25:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14324,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14081,
                                "src": "7303:4:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                  "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                }
                              },
                              "id": 14325,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "actualDebtToLiquidate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 14002,
                              "src": "7303:26:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 14326,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7337:1:69",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 14318,
                              "name": "debtReserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14067,
                              "src": "7214:11:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            "id": 14320,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "updateInterestRates",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18500,
                            "src": "7214:31:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReserveData_$20520_storage_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$bound_to$_t_struct$_ReserveData_$20520_storage_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveData storage pointer,address,address,uint256,uint256)"
                            }
                          },
                          "id": 14327,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7214:130:69",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14328,
                        "nodeType": "ExpressionStatement",
                        "src": "7214:130:69"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 14329,
                          "name": "receiveAToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14048,
                          "src": "7355:13:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 14418,
                          "nodeType": "Block",
                          "src": "7886:460:69",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14385,
                                    "name": "collateralReserve",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14059,
                                    "src": "7894:17:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                      "typeString": "struct DataTypes.ReserveData storage pointer"
                                    }
                                  },
                                  "id": 14387,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "updateState",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18183,
                                  "src": "7894:29:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReserveData_$20520_storage_ptr_$returns$__$bound_to$_t_struct$_ReserveData_$20520_storage_ptr_$",
                                    "typeString": "function (struct DataTypes.ReserveData storage pointer)"
                                  }
                                },
                                "id": 14388,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7894:31:69",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 14389,
                              "nodeType": "ExpressionStatement",
                              "src": "7894:31:69"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 14393,
                                    "name": "collateralAsset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14040,
                                    "src": "7980:15:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14396,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14081,
                                          "src": "8013:4:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                            "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                          }
                                        },
                                        "id": 14397,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "collateralAtoken",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 14018,
                                        "src": "8013:21:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IAToken_$5667",
                                          "typeString": "contract IAToken"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_IAToken_$5667",
                                          "typeString": "contract IAToken"
                                        }
                                      ],
                                      "id": 14395,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8005:7:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 14394,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8005:7:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 14398,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8005:30:69",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 14399,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8045:1:69",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14400,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14081,
                                      "src": "8056:4:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                        "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                      }
                                    },
                                    "id": 14401,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "maxCollateralToLiquidate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 14010,
                                    "src": "8056:29:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14390,
                                    "name": "collateralReserve",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14059,
                                    "src": "7933:17:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                      "typeString": "struct DataTypes.ReserveData storage pointer"
                                    }
                                  },
                                  "id": 14392,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "updateInterestRates",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18500,
                                  "src": "7933:37:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReserveData_$20520_storage_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$bound_to$_t_struct$_ReserveData_$20520_storage_ptr_$",
                                    "typeString": "function (struct DataTypes.ReserveData storage pointer,address,address,uint256,uint256)"
                                  }
                                },
                                "id": 14402,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7933:160:69",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 14403,
                              "nodeType": "ExpressionStatement",
                              "src": "7933:160:69"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 14409,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14044,
                                    "src": "8226:4:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14410,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "8240:3:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 14411,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "8240:10:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14412,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14081,
                                      "src": "8260:4:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                        "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                      }
                                    },
                                    "id": 14413,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "maxCollateralToLiquidate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 14010,
                                    "src": "8260:29:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14414,
                                      "name": "collateralReserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14059,
                                      "src": "8299:17:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                        "typeString": "struct DataTypes.ReserveData storage pointer"
                                      }
                                    },
                                    "id": 14415,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "liquidityIndex",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20499,
                                    "src": "8299:32:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14404,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14081,
                                      "src": "8190:4:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                        "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                      }
                                    },
                                    "id": 14407,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "collateralAtoken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 14018,
                                    "src": "8190:21:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IAToken_$5667",
                                      "typeString": "contract IAToken"
                                    }
                                  },
                                  "id": 14408,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "burn",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5618,
                                  "src": "8190:26:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256) external"
                                  }
                                },
                                "id": 14416,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8190:149:69",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 14417,
                              "nodeType": "ExpressionStatement",
                              "src": "8190:149:69"
                            }
                          ]
                        },
                        "id": 14419,
                        "nodeType": "IfStatement",
                        "src": "7351:995:69",
                        "trueBody": {
                          "id": 14384,
                          "nodeType": "Block",
                          "src": "7370:510:69",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14341,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14330,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14081,
                                    "src": "7378:4:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                      "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                    }
                                  },
                                  "id": 14332,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "liquidatorPreviousATokenBalance",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 14016,
                                  "src": "7378:36:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 14338,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "7457:3:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 14339,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "7457:10:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14334,
                                            "name": "vars",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14081,
                                            "src": "7424:4:69",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                              "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                            }
                                          },
                                          "id": 14335,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "collateralAtoken",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 14018,
                                          "src": "7424:21:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IAToken_$5667",
                                            "typeString": "contract IAToken"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_IAToken_$5667",
                                            "typeString": "contract IAToken"
                                          }
                                        ],
                                        "id": 14333,
                                        "name": "IERC20",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4012,
                                        "src": "7417:6:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                          "typeString": "type(contract IERC20)"
                                        }
                                      },
                                      "id": 14336,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7417:29:69",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$4012",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 14337,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "balanceOf",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3951,
                                    "src": "7417:39:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address) view external returns (uint256)"
                                    }
                                  },
                                  "id": 14340,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7417:51:69",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7378:90:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14342,
                              "nodeType": "ExpressionStatement",
                              "src": "7378:90:69"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 14348,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14044,
                                    "src": "7520:4:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14349,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "7526:3:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 14350,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "7526:10:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14351,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14081,
                                      "src": "7538:4:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                        "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                      }
                                    },
                                    "id": 14352,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "maxCollateralToLiquidate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 14010,
                                    "src": "7538:29:69",
                                    "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"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14343,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14081,
                                      "src": "7476:4:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                        "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                      }
                                    },
                                    "id": 14346,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "collateralAtoken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 14018,
                                    "src": "7476:21:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IAToken_$5667",
                                      "typeString": "contract IAToken"
                                    }
                                  },
                                  "id": 14347,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "transferOnLiquidation",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5636,
                                  "src": "7476:43:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256) external"
                                  }
                                },
                                "id": 14353,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7476:92:69",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 14354,
                              "nodeType": "ExpressionStatement",
                              "src": "7476:92:69"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14358,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14355,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14081,
                                    "src": "7581:4:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                      "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                    }
                                  },
                                  "id": 14356,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "liquidatorPreviousATokenBalance",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 14016,
                                  "src": "7581:36:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 14357,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7621:1:69",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7581:41:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 14383,
                              "nodeType": "IfStatement",
                              "src": "7577:297:69",
                              "trueBody": {
                                "id": 14382,
                                "nodeType": "Block",
                                "src": "7624:250:69",
                                "statements": [
                                  {
                                    "assignments": [
                                      14362
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 14362,
                                        "mutability": "mutable",
                                        "name": "liquidatorConfig",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 14382,
                                        "src": "7634:55:69",
                                        "stateVariable": false,
                                        "storageLocation": "storage",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                          "typeString": "struct DataTypes.UserConfigurationMap"
                                        },
                                        "typeName": {
                                          "contractScope": null,
                                          "id": 14361,
                                          "name": "DataTypes.UserConfigurationMap",
                                          "nodeType": "UserDefinedTypeName",
                                          "referencedDeclaration": 20526,
                                          "src": "7634:30:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                            "typeString": "struct DataTypes.UserConfigurationMap"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 14367,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 14363,
                                        "name": "_usersConfig",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15777,
                                        "src": "7692:12:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserConfigurationMap_$20526_storage_$",
                                          "typeString": "mapping(address => struct DataTypes.UserConfigurationMap storage ref)"
                                        }
                                      },
                                      "id": 14366,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14364,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -15,
                                          "src": "7705:3:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 14365,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "7705:10:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "7692:24:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage",
                                        "typeString": "struct DataTypes.UserConfigurationMap storage ref"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7634:82:69"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14371,
                                            "name": "collateralReserve",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14059,
                                            "src": "7764:17:69",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                              "typeString": "struct DataTypes.ReserveData storage pointer"
                                            }
                                          },
                                          "id": 14372,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "id",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 20519,
                                          "src": "7764:20:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "74727565",
                                          "id": 14373,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "bool",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7786:4:69",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "value": "true"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          },
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14368,
                                          "name": "liquidatorConfig",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14362,
                                          "src": "7726:16:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                            "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                                          }
                                        },
                                        "id": 14370,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "setUsingAsCollateral",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 16855,
                                        "src": "7726:37:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UserConfigurationMap_$20526_storage_ptr_$_t_uint256_$_t_bool_$returns$__$bound_to$_t_struct$_UserConfigurationMap_$20526_storage_ptr_$",
                                          "typeString": "function (struct DataTypes.UserConfigurationMap storage pointer,uint256,bool)"
                                        }
                                      },
                                      "id": 14374,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7726:65:69",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 14375,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7726:65:69"
                                  },
                                  {
                                    "eventCall": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 14377,
                                          "name": "collateralAsset",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14040,
                                          "src": "7837:15:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14378,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "7854:3:69",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 14379,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "7854:10:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        ],
                                        "id": 14376,
                                        "name": "ReserveUsedAsCollateralEnabled",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6688,
                                        "src": "7806:30:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                                          "typeString": "function (address,address)"
                                        }
                                      },
                                      "id": 14380,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7806:59:69",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 14381,
                                    "nodeType": "EmitStatement",
                                    "src": "7801:64:69"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14420,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14081,
                              "src": "8495:4:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                              }
                            },
                            "id": 14421,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "maxCollateralToLiquidate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14010,
                            "src": "8495:29:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14422,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14081,
                              "src": "8528:4:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                              }
                            },
                            "id": 14423,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "userCollateralBalance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13994,
                            "src": "8528:26:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8495:59:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 14439,
                        "nodeType": "IfStatement",
                        "src": "8491:207:69",
                        "trueBody": {
                          "id": 14438,
                          "nodeType": "Block",
                          "src": "8556:142:69",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14428,
                                      "name": "collateralReserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14059,
                                      "src": "8596:17:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                        "typeString": "struct DataTypes.ReserveData storage pointer"
                                      }
                                    },
                                    "id": 14429,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "id",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20519,
                                    "src": "8596:20:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "66616c7365",
                                    "id": 14430,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8618:5:69",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "false"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14425,
                                    "name": "userConfig",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14075,
                                    "src": "8564:10:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                      "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                                    }
                                  },
                                  "id": 14427,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "setUsingAsCollateral",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 16855,
                                  "src": "8564:31:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UserConfigurationMap_$20526_storage_ptr_$_t_uint256_$_t_bool_$returns$__$bound_to$_t_struct$_UserConfigurationMap_$20526_storage_ptr_$",
                                    "typeString": "function (struct DataTypes.UserConfigurationMap storage pointer,uint256,bool)"
                                  }
                                },
                                "id": 14431,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8564:60:69",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 14432,
                              "nodeType": "ExpressionStatement",
                              "src": "8564:60:69"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 14434,
                                    "name": "collateralAsset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14040,
                                    "src": "8669:15:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 14435,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14044,
                                    "src": "8686:4:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 14433,
                                  "name": "ReserveUsedAsCollateralDisabled",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6681,
                                  "src": "8637:31:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                                    "typeString": "function (address,address)"
                                  }
                                },
                                "id": 14436,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8637:54:69",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 14437,
                              "nodeType": "EmitStatement",
                              "src": "8632:59:69"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14444,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "8834:3:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 14445,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8834:10:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14446,
                                "name": "debtReserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14067,
                                "src": "8852:11:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                }
                              },
                              "id": 14447,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "aTokenAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20511,
                              "src": "8852:25:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14448,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14081,
                                "src": "8885:4:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                  "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                }
                              },
                              "id": 14449,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "actualDebtToLiquidate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 14002,
                              "src": "8885:26:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 14441,
                                  "name": "debtAsset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14042,
                                  "src": "8799:9:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 14440,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "8792:6:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 14442,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8792:17:69",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 14443,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4205,
                            "src": "8792:34:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                              "typeString": "function (contract IERC20,address,address,uint256)"
                            }
                          },
                          "id": 14450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8792:125:69",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14451,
                        "nodeType": "ExpressionStatement",
                        "src": "8792:125:69"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14453,
                              "name": "collateralAsset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14040,
                              "src": "8952:15:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14454,
                              "name": "debtAsset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14042,
                              "src": "8975:9:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14455,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14044,
                              "src": "8992:4:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14456,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14081,
                                "src": "9004:4:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                  "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                }
                              },
                              "id": 14457,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "actualDebtToLiquidate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 14002,
                              "src": "9004:26:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14458,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14081,
                                "src": "9038:4:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidationCallLocalVars_$14027_memory_ptr",
                                  "typeString": "struct LendingPoolCollateralManager.LiquidationCallLocalVars memory"
                                }
                              },
                              "id": 14459,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maxCollateralToLiquidate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 14010,
                              "src": "9038:29:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14460,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "9075:3:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 14461,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9075:10:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14462,
                              "name": "receiveAToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14048,
                              "src": "9093:13:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 14452,
                            "name": "LiquidationCall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6674,
                            "src": "8929:15:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256,address,bool)"
                            }
                          },
                          "id": 14463,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8929:183:69",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14464,
                        "nodeType": "EmitStatement",
                        "src": "8924:188:69"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14467,
                                      "name": "Errors",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17239,
                                      "src": "9135:6:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                        "typeString": "type(library Errors)"
                                      }
                                    },
                                    "id": 14468,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "CollateralManagerErrors",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17238,
                                    "src": "9135:30:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_CollateralManagerErrors_$17238_$",
                                      "typeString": "type(enum Errors.CollateralManagerErrors)"
                                    }
                                  },
                                  "id": 14469,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "NO_ERROR",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "9135:39:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_CollateralManagerErrors_$17238",
                                    "typeString": "enum Errors.CollateralManagerErrors"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_CollateralManagerErrors_$17238",
                                    "typeString": "enum Errors.CollateralManagerErrors"
                                  }
                                ],
                                "id": 14466,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9127:7:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 14465,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9127:7:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 14470,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9127:48:69",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14471,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "9177:6:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 14472,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "LPCM_NO_ERRORS",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17134,
                              "src": "9177:21:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "id": 14473,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "9126:73:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_string_memory_ptr_$",
                            "typeString": "tuple(uint256,string memory)"
                          }
                        },
                        "functionReturnParameters": 14055,
                        "id": 14474,
                        "nodeType": "Return",
                        "src": "9119:80:69"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14038,
                    "nodeType": "StructuredDocumentation",
                    "src": "2928:839:69",
                    "text": " @dev Function to liquidate a position if its Health Factor drops below 1\n - The caller (liquidator) covers `debtToCover` amount of debt of the user getting liquidated, and receives\n   a proportionally amount of the `collateralAsset` plus a bonus to cover market risk\n @param collateralAsset The address of the underlying asset used as collateral, to receive as result of the liquidation\n @param debtAsset The address of the underlying borrowed asset to be repaid with the liquidation\n @param user The address of the borrower getting liquidated\n @param debtToCover The debt amount of borrowed `asset` the liquidator wants to cover\n @param receiveAToken `true` if the liquidators wants to receive the collateral aTokens, `false` if he wants\n to receive the underlying collateral asset directly*"
                  },
                  "functionSelector": "00a718a9",
                  "id": 14476,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "liquidationCall",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14050,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3927:8:69"
                  },
                  "parameters": {
                    "id": 14049,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14040,
                        "mutability": "mutable",
                        "name": "collateralAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 14476,
                        "src": "3800:23:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14039,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3800:7:69",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14042,
                        "mutability": "mutable",
                        "name": "debtAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 14476,
                        "src": "3829:17:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14041,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3829:7:69",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14044,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 14476,
                        "src": "3852:12:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14043,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3852:7:69",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14046,
                        "mutability": "mutable",
                        "name": "debtToCover",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 14476,
                        "src": "3870:19:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14045,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3870:7:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14048,
                        "mutability": "mutable",
                        "name": "receiveAToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 14476,
                        "src": "3895:18:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 14047,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3895:4:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3794:123:69"
                  },
                  "returnParameters": {
                    "id": 14055,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14052,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 14476,
                        "src": "3945:7:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14051,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3945:7:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14054,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 14476,
                        "src": "3954:13:69",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 14053,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3954:6:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3944:24:69"
                  },
                  "scope": 14653,
                  "src": "3770:5434:69",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "canonicalName": "LendingPoolCollateralManager.AvailableCollateralToLiquidateLocalVars",
                  "id": 14491,
                  "members": [
                    {
                      "constant": false,
                      "id": 14478,
                      "mutability": "mutable",
                      "name": "userCompoundedBorrowBalance",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14491,
                      "src": "9261:35:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14477,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9261:7:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 14480,
                      "mutability": "mutable",
                      "name": "liquidationBonus",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14491,
                      "src": "9302:24:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14479,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9302:7:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 14482,
                      "mutability": "mutable",
                      "name": "collateralPrice",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14491,
                      "src": "9332:23:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14481,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9332:7:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 14484,
                      "mutability": "mutable",
                      "name": "debtAssetPrice",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14491,
                      "src": "9361:22:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14483,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9361:7:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 14486,
                      "mutability": "mutable",
                      "name": "maxAmountCollateralToLiquidate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14491,
                      "src": "9389:38:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14485,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9389:7:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 14488,
                      "mutability": "mutable",
                      "name": "debtAssetDecimals",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14491,
                      "src": "9433:25:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14487,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9433:7:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 14490,
                      "mutability": "mutable",
                      "name": "collateralDecimals",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14491,
                      "src": "9464:26:69",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14489,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9464:7:69",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "AvailableCollateralToLiquidateLocalVars",
                  "nodeType": "StructDefinition",
                  "scope": 14653,
                  "src": "9208:287:69",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14651,
                    "nodeType": "Block",
                    "src": "10882:1447:69",
                    "statements": [
                      {
                        "assignments": [
                          14512
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14512,
                            "mutability": "mutable",
                            "name": "collateralAmount",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 14651,
                            "src": "10888:24:69",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14511,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10888:7:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14514,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 14513,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10915:1:69",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10888:28:69"
                      },
                      {
                        "assignments": [
                          14516
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14516,
                            "mutability": "mutable",
                            "name": "debtAmountNeeded",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 14651,
                            "src": "10922:24:69",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14515,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10922:7:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14518,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 14517,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10949:1:69",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10922:28:69"
                      },
                      {
                        "assignments": [
                          14520
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14520,
                            "mutability": "mutable",
                            "name": "oracle",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 14651,
                            "src": "10956:25:69",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                              "typeString": "contract IPriceOracleGetter"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 14519,
                              "name": "IPriceOracleGetter",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 6918,
                              "src": "10956:18:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                                "typeString": "contract IPriceOracleGetter"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14526,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14522,
                                  "name": "_addressesProvider",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15769,
                                  "src": "11003:18:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                                    "typeString": "contract ILendingPoolAddressesProvider"
                                  }
                                },
                                "id": 14523,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getPriceOracle",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6601,
                                "src": "11003:33:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              "id": 14524,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11003:35:69",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 14521,
                            "name": "IPriceOracleGetter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6918,
                            "src": "10984:18:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IPriceOracleGetter_$6918_$",
                              "typeString": "type(contract IPriceOracleGetter)"
                            }
                          },
                          "id": 14525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10984:55:69",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                            "typeString": "contract IPriceOracleGetter"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10956:83:69"
                      },
                      {
                        "assignments": [
                          14528
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14528,
                            "mutability": "mutable",
                            "name": "vars",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 14651,
                            "src": "11046:51:69",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AvailableCollateralToLiquidateLocalVars_$14491_memory_ptr",
                              "typeString": "struct LendingPoolCollateralManager.AvailableCollateralToLiquidateLocalVars"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 14527,
                              "name": "AvailableCollateralToLiquidateLocalVars",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 14491,
                              "src": "11046:39:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AvailableCollateralToLiquidateLocalVars_$14491_storage_ptr",
                                "typeString": "struct LendingPoolCollateralManager.AvailableCollateralToLiquidateLocalVars"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14529,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11046:51:69"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14537,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14530,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14528,
                              "src": "11104:4:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AvailableCollateralToLiquidateLocalVars_$14491_memory_ptr",
                                "typeString": "struct LendingPoolCollateralManager.AvailableCollateralToLiquidateLocalVars memory"
                              }
                            },
                            "id": 14532,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "collateralPrice",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14482,
                            "src": "11104:20:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14535,
                                "name": "collateralAsset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14498,
                                "src": "11148:15:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 14533,
                                "name": "oracle",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14520,
                                "src": "11127:6:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                                  "typeString": "contract IPriceOracleGetter"
                                }
                              },
                              "id": 14534,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getAssetPrice",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6917,
                              "src": "11127:20:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 14536,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11127:37:69",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11104:60:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14538,
                        "nodeType": "ExpressionStatement",
                        "src": "11104:60:69"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14546,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14539,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14528,
                              "src": "11170:4:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AvailableCollateralToLiquidateLocalVars_$14491_memory_ptr",
                                "typeString": "struct LendingPoolCollateralManager.AvailableCollateralToLiquidateLocalVars memory"
                              }
                            },
                            "id": 14541,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "debtAssetPrice",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14484,
                            "src": "11170:19:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14544,
                                "name": "debtAsset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14500,
                                "src": "11213:9:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 14542,
                                "name": "oracle",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14520,
                                "src": "11192:6:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                                  "typeString": "contract IPriceOracleGetter"
                                }
                              },
                              "id": 14543,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getAssetPrice",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6917,
                              "src": "11192:20:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 14545,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11192:31:69",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11170:53:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14547,
                        "nodeType": "ExpressionStatement",
                        "src": "11170:53:69"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14558,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              null,
                              null,
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14548,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14528,
                                  "src": "11235:4:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_AvailableCollateralToLiquidateLocalVars_$14491_memory_ptr",
                                    "typeString": "struct LendingPoolCollateralManager.AvailableCollateralToLiquidateLocalVars memory"
                                  }
                                },
                                "id": 14550,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "liquidationBonus",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14480,
                                "src": "11235:21:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14551,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14528,
                                  "src": "11258:4:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_AvailableCollateralToLiquidateLocalVars_$14491_memory_ptr",
                                    "typeString": "struct LendingPoolCollateralManager.AvailableCollateralToLiquidateLocalVars memory"
                                  }
                                },
                                "id": 14552,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "collateralDecimals",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14490,
                                "src": "11258:23:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              null
                            ],
                            "id": 14553,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "11230:54:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$__$_t_uint256_$_t_uint256_$__$",
                              "typeString": "tuple(,,uint256,uint256,)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14554,
                                  "name": "collateralReserve",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14494,
                                  "src": "11287:17:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                    "typeString": "struct DataTypes.ReserveData storage pointer"
                                  }
                                },
                                "id": 14555,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "configuration",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20497,
                                "src": "11287:38:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage",
                                  "typeString": "struct DataTypes.ReserveConfigurationMap storage ref"
                                }
                              },
                              "id": 14556,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getParams",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16635,
                              "src": "11287:55:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$bound_to$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$",
                                "typeString": "function (struct DataTypes.ReserveConfigurationMap storage pointer) view returns (uint256,uint256,uint256,uint256,uint256)"
                              }
                            },
                            "id": 14557,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11287:57:69",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "src": "11230:114:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14559,
                        "nodeType": "ExpressionStatement",
                        "src": "11230:114:69"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14560,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14528,
                              "src": "11350:4:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AvailableCollateralToLiquidateLocalVars_$14491_memory_ptr",
                                "typeString": "struct LendingPoolCollateralManager.AvailableCollateralToLiquidateLocalVars memory"
                              }
                            },
                            "id": 14562,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "debtAssetDecimals",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14488,
                            "src": "11350:22:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14563,
                                  "name": "debtReserve",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14496,
                                  "src": "11375:11:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                    "typeString": "struct DataTypes.ReserveData storage pointer"
                                  }
                                },
                                "id": 14564,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "configuration",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20497,
                                "src": "11375:25:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage",
                                  "typeString": "struct DataTypes.ReserveConfigurationMap storage ref"
                                }
                              },
                              "id": 14565,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getDecimals",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16287,
                              "src": "11375:37:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$",
                                "typeString": "function (struct DataTypes.ReserveConfigurationMap storage pointer) view returns (uint256)"
                              }
                            },
                            "id": 14566,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11375:39:69",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11350:64:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14568,
                        "nodeType": "ExpressionStatement",
                        "src": "11350:64:69"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14597,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14569,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14528,
                              "src": "11564:4:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AvailableCollateralToLiquidateLocalVars_$14491_memory_ptr",
                                "typeString": "struct LendingPoolCollateralManager.AvailableCollateralToLiquidateLocalVars memory"
                              }
                            },
                            "id": 14571,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "maxAmountCollateralToLiquidate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14486,
                            "src": "11564:35:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 14594,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "3130",
                                      "id": 14591,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "11770:2:69",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_10_by_1",
                                        "typeString": "int_const 10"
                                      },
                                      "value": "10"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "**",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 14592,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14528,
                                        "src": "11774:4:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AvailableCollateralToLiquidateLocalVars_$14491_memory_ptr",
                                          "typeString": "struct LendingPoolCollateralManager.AvailableCollateralToLiquidateLocalVars memory"
                                        }
                                      },
                                      "id": 14593,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "debtAssetDecimals",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 14488,
                                      "src": "11774:22:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "11770:26:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14588,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14528,
                                      "src": "11745:4:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AvailableCollateralToLiquidateLocalVars_$14491_memory_ptr",
                                        "typeString": "struct LendingPoolCollateralManager.AvailableCollateralToLiquidateLocalVars memory"
                                      }
                                    },
                                    "id": 14589,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "collateralPrice",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 14482,
                                    "src": "11745:20:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 14590,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4409,
                                  "src": "11745:24:69",
                                  "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": 14595,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11745:52:69",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14584,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14528,
                                      "src": "11711:4:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AvailableCollateralToLiquidateLocalVars_$14491_memory_ptr",
                                        "typeString": "struct LendingPoolCollateralManager.AvailableCollateralToLiquidateLocalVars memory"
                                      }
                                    },
                                    "id": 14585,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "liquidationBonus",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 14480,
                                    "src": "11711:21:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 14581,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "3130",
                                          "id": 14578,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "11664:2:69",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_10_by_1",
                                            "typeString": "int_const 10"
                                          },
                                          "value": "10"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "**",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14579,
                                            "name": "vars",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14528,
                                            "src": "11668:4:69",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_AvailableCollateralToLiquidateLocalVars_$14491_memory_ptr",
                                              "typeString": "struct LendingPoolCollateralManager.AvailableCollateralToLiquidateLocalVars memory"
                                            }
                                          },
                                          "id": 14580,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "collateralDecimals",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 14490,
                                          "src": "11668:23:69",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "11664:27:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 14575,
                                            "name": "debtToCover",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14502,
                                            "src": "11640:11:69",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 14572,
                                              "name": "vars",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14528,
                                              "src": "11602:4:69",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_AvailableCollateralToLiquidateLocalVars_$14491_memory_ptr",
                                                "typeString": "struct LendingPoolCollateralManager.AvailableCollateralToLiquidateLocalVars memory"
                                              }
                                            },
                                            "id": 14573,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "debtAssetPrice",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 14484,
                                            "src": "11602:26:69",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 14574,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4409,
                                          "src": "11602:37:69",
                                          "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": 14576,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11602:50:69",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 14577,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4409,
                                      "src": "11602:61:69",
                                      "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": 14582,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11602:90:69",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 14583,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "percentMul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20016,
                                  "src": "11602:108:69",
                                  "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": 14586,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11602:131:69",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14587,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4426,
                              "src": "11602:142:69",
                              "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": 14596,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11602:196:69",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11564:234:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14598,
                        "nodeType": "ExpressionStatement",
                        "src": "11564:234:69"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14602,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14599,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14528,
                              "src": "11809:4:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AvailableCollateralToLiquidateLocalVars_$14491_memory_ptr",
                                "typeString": "struct LendingPoolCollateralManager.AvailableCollateralToLiquidateLocalVars memory"
                              }
                            },
                            "id": 14600,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "maxAmountCollateralToLiquidate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14486,
                            "src": "11809:35:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 14601,
                            "name": "userCollateralBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14504,
                            "src": "11847:21:69",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11809:59:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 14645,
                          "nodeType": "Block",
                          "src": "12169:107:69",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14639,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 14636,
                                  "name": "collateralAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14512,
                                  "src": "12177:16:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14637,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14528,
                                    "src": "12196:4:69",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AvailableCollateralToLiquidateLocalVars_$14491_memory_ptr",
                                      "typeString": "struct LendingPoolCollateralManager.AvailableCollateralToLiquidateLocalVars memory"
                                    }
                                  },
                                  "id": 14638,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maxAmountCollateralToLiquidate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 14486,
                                  "src": "12196:35:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12177:54:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14640,
                              "nodeType": "ExpressionStatement",
                              "src": "12177:54:69"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14643,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 14641,
                                  "name": "debtAmountNeeded",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14516,
                                  "src": "12239:16:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 14642,
                                  "name": "debtToCover",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14502,
                                  "src": "12258:11:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12239:30:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14644,
                              "nodeType": "ExpressionStatement",
                              "src": "12239:30:69"
                            }
                          ]
                        },
                        "id": 14646,
                        "nodeType": "IfStatement",
                        "src": "11805:471:69",
                        "trueBody": {
                          "id": 14635,
                          "nodeType": "Block",
                          "src": "11870:293:69",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14605,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 14603,
                                  "name": "collateralAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14512,
                                  "src": "11878:16:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 14604,
                                  "name": "userCollateralBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14504,
                                  "src": "11897:21:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11878:40:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14606,
                              "nodeType": "ExpressionStatement",
                              "src": "11878:40:69"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14633,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 14607,
                                  "name": "debtAmountNeeded",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14516,
                                  "src": "11926:16:69",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 14630,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14528,
                                        "src": "12134:4:69",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AvailableCollateralToLiquidateLocalVars_$14491_memory_ptr",
                                          "typeString": "struct LendingPoolCollateralManager.AvailableCollateralToLiquidateLocalVars memory"
                                        }
                                      },
                                      "id": 14631,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "liquidationBonus",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 14480,
                                      "src": "12134:21:69",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 14626,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "3130",
                                                "id": 14623,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "12084:2:69",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_10_by_1",
                                                  "typeString": "int_const 10"
                                                },
                                                "value": "10"
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "**",
                                              "rightExpression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 14624,
                                                  "name": "vars",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 14528,
                                                  "src": "12088:4:69",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_AvailableCollateralToLiquidateLocalVars_$14491_memory_ptr",
                                                    "typeString": "struct LendingPoolCollateralManager.AvailableCollateralToLiquidateLocalVars memory"
                                                  }
                                                },
                                                "id": 14625,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "collateralDecimals",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 14490,
                                                "src": "12088:23:69",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "12084:27:69",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 14620,
                                                "name": "vars",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14528,
                                                "src": "12060:4:69",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_AvailableCollateralToLiquidateLocalVars_$14491_memory_ptr",
                                                  "typeString": "struct LendingPoolCollateralManager.AvailableCollateralToLiquidateLocalVars memory"
                                                }
                                              },
                                              "id": 14621,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "debtAssetPrice",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 14484,
                                              "src": "12060:19:69",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 14622,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mul",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4409,
                                            "src": "12060:23:69",
                                            "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": 14627,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "12060:52:69",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 14617,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "3130",
                                                "id": 14614,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "12019:2:69",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_10_by_1",
                                                  "typeString": "int_const 10"
                                                },
                                                "value": "10"
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "**",
                                              "rightExpression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 14615,
                                                  "name": "vars",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 14528,
                                                  "src": "12023:4:69",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_AvailableCollateralToLiquidateLocalVars_$14491_memory_ptr",
                                                    "typeString": "struct LendingPoolCollateralManager.AvailableCollateralToLiquidateLocalVars memory"
                                                  }
                                                },
                                                "id": 14616,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "debtAssetDecimals",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 14488,
                                                "src": "12023:22:69",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "12019:26:69",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 14611,
                                                  "name": "collateralAmount",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 14512,
                                                  "src": "11988:16:69",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 14608,
                                                    "name": "vars",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 14528,
                                                    "src": "11945:4:69",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_AvailableCollateralToLiquidateLocalVars_$14491_memory_ptr",
                                                      "typeString": "struct LendingPoolCollateralManager.AvailableCollateralToLiquidateLocalVars memory"
                                                    }
                                                  },
                                                  "id": 14609,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "collateralPrice",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 14482,
                                                  "src": "11945:29:69",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 14610,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "mul",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 4409,
                                                "src": "11945:42:69",
                                                "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": 14612,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "11945:60:69",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 14613,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mul",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4409,
                                            "src": "11945:73:69",
                                            "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": 14618,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "11945:101:69",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 14619,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "div",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4426,
                                        "src": "11945:114:69",
                                        "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": 14628,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "11945:168:69",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 14629,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "percentDiv",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20067,
                                    "src": "11945:188:69",
                                    "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": 14632,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11945:211:69",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11926:230:69",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14634,
                              "nodeType": "ExpressionStatement",
                              "src": "11926:230:69"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 14647,
                              "name": "collateralAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14512,
                              "src": "12289:16:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14648,
                              "name": "debtAmountNeeded",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14516,
                              "src": "12307:16:69",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 14649,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "12288:36:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 14510,
                        "id": 14650,
                        "nodeType": "Return",
                        "src": "12281:43:69"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14492,
                    "nodeType": "StructuredDocumentation",
                    "src": "9499:1073:69",
                    "text": " @dev Calculates how much of a specific collateral can be liquidated, given\n a certain amount of debt asset.\n - This function needs to be called after all the checks to validate the liquidation have been performed,\n   otherwise it might fail.\n @param collateralReserve The data of the collateral reserve\n @param debtReserve The data of the debt reserve\n @param collateralAsset The address of the underlying asset used as collateral, to receive as result of the liquidation\n @param debtAsset The address of the underlying borrowed asset to be repaid with the liquidation\n @param debtToCover The debt amount of borrowed `asset` the liquidator wants to cover\n @param userCollateralBalance The collateral balance for the specific `collateralAsset` of the user being liquidated\n @return collateralAmount: The maximum amount that is possible to liquidate given all the liquidation constraints\n                           (user balance, close factor)\n         debtAmountNeeded: The amount to repay with the liquidation*"
                  },
                  "id": 14652,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_calculateAvailableCollateralToLiquidate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 14505,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14494,
                        "mutability": "mutable",
                        "name": "collateralReserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 14652,
                        "src": "10630:47:69",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                          "typeString": "struct DataTypes.ReserveData"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 14493,
                          "name": "DataTypes.ReserveData",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20520,
                          "src": "10630:21:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                            "typeString": "struct DataTypes.ReserveData"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14496,
                        "mutability": "mutable",
                        "name": "debtReserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 14652,
                        "src": "10683:41:69",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                          "typeString": "struct DataTypes.ReserveData"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 14495,
                          "name": "DataTypes.ReserveData",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20520,
                          "src": "10683:21:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                            "typeString": "struct DataTypes.ReserveData"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14498,
                        "mutability": "mutable",
                        "name": "collateralAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 14652,
                        "src": "10730:23:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14497,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10730:7:69",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14500,
                        "mutability": "mutable",
                        "name": "debtAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 14652,
                        "src": "10759:17:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14499,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10759:7:69",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14502,
                        "mutability": "mutable",
                        "name": "debtToCover",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 14652,
                        "src": "10782:19:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14501,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10782:7:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14504,
                        "mutability": "mutable",
                        "name": "userCollateralBalance",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 14652,
                        "src": "10807:29:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14503,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10807:7:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10624:216:69"
                  },
                  "returnParameters": {
                    "id": 14510,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14507,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 14652,
                        "src": "10864:7:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14506,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10864:7:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14509,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 14652,
                        "src": "10873:7:69",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14508,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10873:7:69",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10863:18:69"
                  },
                  "scope": 14653,
                  "src": "10575:1754:69",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 14654,
              "src": "1657:10674:69"
            }
          ],
          "src": "37:12295:69"
        },
        "id": 69
      },
      "contracts/protocol/lendingpool/LendingPoolConfigurator.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/lendingpool/LendingPoolConfigurator.sol",
          "exportedSymbols": {
            "LendingPoolConfigurator": [
              15746
            ]
          },
          "id": 15747,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 14655,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:70"
            },
            {
              "id": 14656,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "61:33:70"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeMath.sol",
              "file": "../../dependencies/openzeppelin/contracts/SafeMath.sol",
              "id": 14658,
              "nodeType": "ImportDirective",
              "scope": 15747,
              "sourceUnit": 4497,
              "src": "96:80:70",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 14657,
                    "name": "SafeMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "104:8:70",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/aave-upgradeability/VersionedInitializable.sol",
              "file": "../libraries/aave-upgradeability/VersionedInitializable.sol",
              "id": 14660,
              "nodeType": "ImportDirective",
              "scope": 15747,
              "sourceUnit": 16020,
              "src": "177:99:70",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 14659,
                    "name": "VersionedInitializable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "185:22:70",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/aave-upgradeability/InitializableImmutableAdminUpgradeabilityProxy.sol",
              "file": "../libraries/aave-upgradeability/InitializableImmutableAdminUpgradeabilityProxy.sol",
              "id": 14662,
              "nodeType": "ImportDirective",
              "scope": 15747,
              "sourceUnit": 15939,
              "src": "277:151:70",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 14661,
                    "name": "InitializableImmutableAdminUpgradeabilityProxy",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "288:46:70",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/configuration/ReserveConfiguration.sol",
              "file": "../libraries/configuration/ReserveConfiguration.sol",
              "id": 14664,
              "nodeType": "ImportDirective",
              "scope": 15747,
              "sourceUnit": 16742,
              "src": "429:89:70",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 14663,
                    "name": "ReserveConfiguration",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "437:20:70",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPoolAddressesProvider.sol",
              "file": "../../interfaces/ILendingPoolAddressesProvider.sol",
              "id": 14666,
              "nodeType": "ImportDirective",
              "scope": 15747,
              "sourceUnit": 6618,
              "src": "519:97:70",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 14665,
                    "name": "ILendingPoolAddressesProvider",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "527:29:70",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPool.sol",
              "file": "../../interfaces/ILendingPool.sol",
              "id": 14668,
              "nodeType": "ImportDirective",
              "scope": 15747,
              "sourceUnit": 6467,
              "src": "617:63:70",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 14667,
                    "name": "ILendingPool",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "625:12:70",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20Detailed.sol",
              "file": "../../dependencies/openzeppelin/contracts/IERC20Detailed.sol",
              "id": 14670,
              "nodeType": "ImportDirective",
              "scope": 15747,
              "sourceUnit": 4035,
              "src": "681:92:70",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 14669,
                    "name": "IERC20Detailed",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "689:14:70",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/helpers/Errors.sol",
              "file": "../libraries/helpers/Errors.sol",
              "id": 14672,
              "nodeType": "ImportDirective",
              "scope": 15747,
              "sourceUnit": 17240,
              "src": "774:55:70",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 14671,
                    "name": "Errors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "782:6:70",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/math/PercentageMath.sol",
              "file": "../libraries/math/PercentageMath.sol",
              "id": 14674,
              "nodeType": "ImportDirective",
              "scope": 15747,
              "sourceUnit": 20069,
              "src": "830:68:70",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 14673,
                    "name": "PercentageMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "838:14:70",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/types/DataTypes.sol",
              "file": "../libraries/types/DataTypes.sol",
              "id": 14676,
              "nodeType": "ImportDirective",
              "scope": 15747,
              "sourceUnit": 20532,
              "src": "899:59:70",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 14675,
                    "name": "DataTypes",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "907:9:70",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IInitializableDebtToken.sol",
              "file": "../../interfaces/IInitializableDebtToken.sol",
              "id": 14678,
              "nodeType": "ImportDirective",
              "scope": 15747,
              "sourceUnit": 6059,
              "src": "959:85:70",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 14677,
                    "name": "IInitializableDebtToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "967:23:70",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IInitializableAToken.sol",
              "file": "../../interfaces/IInitializableAToken.sol",
              "id": 14680,
              "nodeType": "ImportDirective",
              "scope": 15747,
              "sourceUnit": 6016,
              "src": "1045:79:70",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 14679,
                    "name": "IInitializableAToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "1053:20:70",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IAaveIncentivesController.sol",
              "file": "../../interfaces/IAaveIncentivesController.sol",
              "id": 14682,
              "nodeType": "ImportDirective",
              "scope": 15747,
              "sourceUnit": 5823,
              "src": "1125:89:70",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 14681,
                    "name": "IAaveIncentivesController",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "1133:25:70",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPoolConfigurator.sol",
              "file": "../../interfaces/ILendingPoolConfigurator.sol",
              "id": 14684,
              "nodeType": "ImportDirective",
              "scope": 15747,
              "sourceUnit": 6887,
              "src": "1215:87:70",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 14683,
                    "name": "ILendingPoolConfigurator",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "1223:24:70",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 14686,
                    "name": "VersionedInitializable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16019,
                    "src": "1476:22:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_VersionedInitializable_$16019",
                      "typeString": "contract VersionedInitializable"
                    }
                  },
                  "id": 14687,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1476:22:70"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 14688,
                    "name": "ILendingPoolConfigurator",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6886,
                    "src": "1500:24:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPoolConfigurator_$6886",
                      "typeString": "contract ILendingPoolConfigurator"
                    }
                  },
                  "id": 14689,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1500:24:70"
                }
              ],
              "contractDependencies": [
                6886,
                15938,
                16019
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 14685,
                "nodeType": "StructuredDocumentation",
                "src": "1304:134:70",
                "text": " @title LendingPoolConfigurator contract\n @author Aave\n @dev Implements the configuration methods for the Aave protocol*"
              },
              "fullyImplemented": true,
              "id": 15746,
              "linearizedBaseContracts": [
                15746,
                6886,
                16019
              ],
              "name": "LendingPoolConfigurator",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 14692,
                  "libraryName": {
                    "contractScope": null,
                    "id": 14690,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4496,
                    "src": "1535:8:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$4496",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1529:27:70",
                  "typeName": {
                    "id": 14691,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1548:7:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 14695,
                  "libraryName": {
                    "contractScope": null,
                    "id": 14693,
                    "name": "PercentageMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20068,
                    "src": "1565:14:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_PercentageMath_$20068",
                      "typeString": "library PercentageMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1559:33:70",
                  "typeName": {
                    "id": 14694,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1584:7:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 14698,
                  "libraryName": {
                    "contractScope": null,
                    "id": 14696,
                    "name": "ReserveConfiguration",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16741,
                    "src": "1601:20:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ReserveConfiguration_$16741",
                      "typeString": "library ReserveConfiguration"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1595:65:70",
                  "typeName": {
                    "contractScope": null,
                    "id": 14697,
                    "name": "DataTypes.ReserveConfigurationMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20523,
                    "src": "1626:33:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                      "typeString": "struct DataTypes.ReserveConfigurationMap"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 14700,
                  "mutability": "mutable",
                  "name": "addressesProvider",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 15746,
                  "src": "1664:56:70",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                    "typeString": "contract ILendingPoolAddressesProvider"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14699,
                    "name": "ILendingPoolAddressesProvider",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6617,
                    "src": "1664:29:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                      "typeString": "contract ILendingPoolAddressesProvider"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14702,
                  "mutability": "mutable",
                  "name": "pool",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 15746,
                  "src": "1724:26:70",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                    "typeString": "contract ILendingPool"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14701,
                    "name": "ILendingPool",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6466,
                    "src": "1724:12:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                      "typeString": "contract ILendingPool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14716,
                    "nodeType": "Block",
                    "src": "1778:103:70",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 14710,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14705,
                                    "name": "addressesProvider",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14700,
                                    "src": "1792:17:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                                      "typeString": "contract ILendingPoolAddressesProvider"
                                    }
                                  },
                                  "id": 14706,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getPoolAdmin",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6581,
                                  "src": "1792:30:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                    "typeString": "function () view external returns (address)"
                                  }
                                },
                                "id": 14707,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1792:32:70",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14708,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "1828:3:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 14709,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1828:10:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1792:46:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14711,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "1840:6:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 14712,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "CALLER_NOT_POOL_ADMIN",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16990,
                              "src": "1840:28:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 14704,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1784:7:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 14713,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1784:85:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14714,
                        "nodeType": "ExpressionStatement",
                        "src": "1784:85:70"
                      },
                      {
                        "id": 14715,
                        "nodeType": "PlaceholderStatement",
                        "src": "1875:1:70"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 14717,
                  "name": "onlyPoolAdmin",
                  "nodeType": "ModifierDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 14703,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1778:0:70"
                  },
                  "src": "1755:126:70",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14731,
                    "nodeType": "Block",
                    "src": "1913:135:70",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 14725,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14720,
                                    "name": "addressesProvider",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14700,
                                    "src": "1934:17:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                                      "typeString": "contract ILendingPoolAddressesProvider"
                                    }
                                  },
                                  "id": 14721,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getEmergencyAdmin",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6591,
                                  "src": "1934:35:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                    "typeString": "function () view external returns (address)"
                                  }
                                },
                                "id": 14722,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1934:37:70",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14723,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "1975:3:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 14724,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1975:10:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1934:51:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14726,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "1993:6:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 14727,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "LPC_CALLER_NOT_EMERGENCY_ADMIN",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17116,
                              "src": "1993:37:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 14719,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1919:7:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 14728,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1919:117:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14729,
                        "nodeType": "ExpressionStatement",
                        "src": "1919:117:70"
                      },
                      {
                        "id": 14730,
                        "nodeType": "PlaceholderStatement",
                        "src": "2042:1:70"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 14732,
                  "name": "onlyEmergencyAdmin",
                  "nodeType": "ModifierDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 14718,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1913:0:70"
                  },
                  "src": "1885:163:70",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 14735,
                  "mutability": "constant",
                  "name": "CONFIGURATOR_REVISION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 15746,
                  "src": "2052:53:70",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14733,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2052:7:70",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307831",
                    "id": 14734,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2102:3:70",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1_by_1",
                      "typeString": "int_const 1"
                    },
                    "value": "0x1"
                  },
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    15999
                  ],
                  "body": {
                    "id": 14743,
                    "nodeType": "Block",
                    "src": "2174:39:70",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14741,
                          "name": "CONFIGURATOR_REVISION",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14735,
                          "src": "2187:21:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 14740,
                        "id": 14742,
                        "nodeType": "Return",
                        "src": "2180:28:70"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 14744,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRevision",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14737,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2147:8:70"
                  },
                  "parameters": {
                    "id": 14736,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2130:2:70"
                  },
                  "returnParameters": {
                    "id": 14740,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14739,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 14744,
                        "src": "2165:7:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14738,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2165:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2164:9:70"
                  },
                  "scope": 15746,
                  "src": "2110:103:70",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14763,
                    "nodeType": "Block",
                    "src": "2296:100:70",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14753,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 14751,
                            "name": "addressesProvider",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14700,
                            "src": "2302:17:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                              "typeString": "contract ILendingPoolAddressesProvider"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 14752,
                            "name": "provider",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14746,
                            "src": "2322:8:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                              "typeString": "contract ILendingPoolAddressesProvider"
                            }
                          },
                          "src": "2302:28:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                            "typeString": "contract ILendingPoolAddressesProvider"
                          }
                        },
                        "id": 14754,
                        "nodeType": "ExpressionStatement",
                        "src": "2302:28:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14761,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 14755,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14702,
                            "src": "2336:4:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPool_$6466",
                              "typeString": "contract ILendingPool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14757,
                                    "name": "addressesProvider",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14700,
                                    "src": "2356:17:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                                      "typeString": "contract ILendingPoolAddressesProvider"
                                    }
                                  },
                                  "id": 14758,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getLendingPool",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6551,
                                  "src": "2356:32:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                    "typeString": "function () view external returns (address)"
                                  }
                                },
                                "id": 14759,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2356:34:70",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 14756,
                              "name": "ILendingPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6466,
                              "src": "2343:12:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ILendingPool_$6466_$",
                                "typeString": "type(contract ILendingPool)"
                              }
                            },
                            "id": 14760,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2343:48:70",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPool_$6466",
                              "typeString": "contract ILendingPool"
                            }
                          },
                          "src": "2336:55:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "id": 14762,
                        "nodeType": "ExpressionStatement",
                        "src": "2336:55:70"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "c4d66de8",
                  "id": 14764,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 14749,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 14748,
                        "name": "initializer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15993,
                        "src": "2284:11:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2284:11:70"
                    }
                  ],
                  "name": "initialize",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 14747,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14746,
                        "mutability": "mutable",
                        "name": "provider",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 14764,
                        "src": "2237:38:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                          "typeString": "contract ILendingPoolAddressesProvider"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 14745,
                          "name": "ILendingPoolAddressesProvider",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6617,
                          "src": "2237:29:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                            "typeString": "contract ILendingPoolAddressesProvider"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2236:40:70"
                  },
                  "returnParameters": {
                    "id": 14750,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2296:0:70"
                  },
                  "scope": 15746,
                  "src": "2217:179:70",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14797,
                    "nodeType": "Block",
                    "src": "2537:138:70",
                    "statements": [
                      {
                        "assignments": [
                          14774
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14774,
                            "mutability": "mutable",
                            "name": "cachedPool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 14797,
                            "src": "2543:23:70",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPool_$6466",
                              "typeString": "contract ILendingPool"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 14773,
                              "name": "ILendingPool",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 6466,
                              "src": "2543:12:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14776,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 14775,
                          "name": "pool",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14702,
                          "src": "2569:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2543:30:70"
                      },
                      {
                        "body": {
                          "id": 14795,
                          "nodeType": "Block",
                          "src": "2622:49:70",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 14789,
                                    "name": "cachedPool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14774,
                                    "src": "2643:10:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                      "typeString": "contract ILendingPool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 14790,
                                      "name": "input",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14768,
                                      "src": "2655:5:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_InitReserveInput_$6743_calldata_ptr_$dyn_calldata_ptr",
                                        "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata[] calldata"
                                      }
                                    },
                                    "id": 14792,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 14791,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14778,
                                      "src": "2661:1:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2655:8:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                      "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                      "typeString": "contract ILendingPool"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                      "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                    }
                                  ],
                                  "id": 14788,
                                  "name": "_initReserve",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14952,
                                  "src": "2630:12:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ILendingPool_$6466_$_t_struct$_InitReserveInput_$6743_calldata_ptr_$returns$__$",
                                    "typeString": "function (contract ILendingPool,struct ILendingPoolConfigurator.InitReserveInput calldata)"
                                  }
                                },
                                "id": 14793,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2630:34:70",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 14794,
                              "nodeType": "ExpressionStatement",
                              "src": "2630:34:70"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14784,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 14781,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14778,
                            "src": "2599:1:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14782,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14768,
                              "src": "2603:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_InitReserveInput_$6743_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata[] calldata"
                              }
                            },
                            "id": 14783,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2603:12:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2599:16:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 14796,
                        "initializationExpression": {
                          "assignments": [
                            14778
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 14778,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 14796,
                              "src": "2584:9:70",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 14777,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2584:7:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 14780,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 14779,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2596:1:70",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2584:13:70"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 14786,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "2617:3:70",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 14785,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14778,
                              "src": "2617:1:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 14787,
                          "nodeType": "ExpressionStatement",
                          "src": "2617:3:70"
                        },
                        "nodeType": "ForStatement",
                        "src": "2579:92:70"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14765,
                    "nodeType": "StructuredDocumentation",
                    "src": "2400:50:70",
                    "text": " @dev Initializes reserves in batch*"
                  },
                  "functionSelector": "cef84c51",
                  "id": 14798,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 14771,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 14770,
                        "name": "onlyPoolAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14717,
                        "src": "2523:13:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2523:13:70"
                    }
                  ],
                  "name": "batchInitReserve",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 14769,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14768,
                        "mutability": "mutable",
                        "name": "input",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 14798,
                        "src": "2479:33:70",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_InitReserveInput_$6743_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct ILendingPoolConfigurator.InitReserveInput[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 14766,
                            "name": "InitReserveInput",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 6743,
                            "src": "2479:16:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_InitReserveInput_$6743_storage_ptr",
                              "typeString": "struct ILendingPoolConfigurator.InitReserveInput"
                            }
                          },
                          "id": 14767,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2479:18:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_InitReserveInput_$6743_storage_$dyn_storage_ptr",
                            "typeString": "struct ILendingPoolConfigurator.InitReserveInput[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2478:35:70"
                  },
                  "returnParameters": {
                    "id": 14772,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2537:0:70"
                  },
                  "scope": 15746,
                  "src": "2453:222:70",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 14951,
                    "nodeType": "Block",
                    "src": "2762:2115:70",
                    "statements": [
                      {
                        "assignments": [
                          14806
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14806,
                            "mutability": "mutable",
                            "name": "aTokenProxyAddress",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 14951,
                            "src": "2768:26:70",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 14805,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2768:7:70",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14834,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14808,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14802,
                                "src": "2832:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                }
                              },
                              "id": 14809,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "aTokenImpl",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6712,
                              "src": "2832:16:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14812,
                                      "name": "IInitializableAToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6015,
                                      "src": "2892:20:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IInitializableAToken_$6015_$",
                                        "typeString": "type(contract IInitializableAToken)"
                                      }
                                    },
                                    "id": 14813,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "initialize",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6014,
                                    "src": "2892:31:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_declaration_nonpayable$_t_contract$_ILendingPool_$6466_$_t_address_$_t_address_$_t_contract$_IAaveIncentivesController_$5822_$_t_uint8_$_t_string_calldata_ptr_$_t_string_calldata_ptr_$_t_bytes_calldata_ptr_$returns$__$",
                                      "typeString": "function IInitializableAToken.initialize(contract ILendingPool,address,address,contract IAaveIncentivesController,uint8,string calldata,string calldata,bytes calldata)"
                                    }
                                  },
                                  "id": 14814,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2892:40:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 14815,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14800,
                                  "src": "2944:4:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14816,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14802,
                                    "src": "2960:5:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                      "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                    }
                                  },
                                  "id": 14817,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "treasury",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6724,
                                  "src": "2960:14:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14818,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14802,
                                    "src": "2986:5:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                      "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                    }
                                  },
                                  "id": 14819,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "underlyingAsset",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6722,
                                  "src": "2986:21:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 14821,
                                        "name": "input",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14802,
                                        "src": "3045:5:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                          "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                        }
                                      },
                                      "id": 14822,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "incentivesController",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6726,
                                      "src": "3045:26:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 14820,
                                    "name": "IAaveIncentivesController",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5822,
                                    "src": "3019:25:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IAaveIncentivesController_$5822_$",
                                      "typeString": "type(contract IAaveIncentivesController)"
                                    }
                                  },
                                  "id": 14823,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3019:53:70",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                    "typeString": "contract IAaveIncentivesController"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14824,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14802,
                                    "src": "3084:5:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                      "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                    }
                                  },
                                  "id": 14825,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "underlyingAssetDecimals",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6718,
                                  "src": "3084:29:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14826,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14802,
                                    "src": "3125:5:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                      "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                    }
                                  },
                                  "id": 14827,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "aTokenName",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6730,
                                  "src": "3125:16:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14828,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14802,
                                    "src": "3153:5:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                      "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                    }
                                  },
                                  "id": 14829,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "aTokenSymbol",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6732,
                                  "src": "3153:18:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14830,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14802,
                                    "src": "3183:5:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                      "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                    }
                                  },
                                  "id": 14831,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "params",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6742,
                                  "src": "3183:12:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                    "typeString": "contract IAaveIncentivesController"
                                  },
                                  {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14810,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "2858:3:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 14811,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2858:22:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 14832,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2858:347:70",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 14807,
                            "name": "_initTokenWithProxy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15681,
                            "src": "2803:19:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$",
                              "typeString": "function (address,bytes memory) returns (address)"
                            }
                          },
                          "id": 14833,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2803:410:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2768:445:70"
                      },
                      {
                        "assignments": [
                          14836
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14836,
                            "mutability": "mutable",
                            "name": "stableDebtTokenProxyAddress",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 14951,
                            "src": "3220:35:70",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 14835,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3220:7:70",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14862,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14838,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14802,
                                "src": "3293:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                }
                              },
                              "id": 14839,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "stableDebtTokenImpl",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6714,
                              "src": "3293:25:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14842,
                                      "name": "IInitializableDebtToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6058,
                                      "src": "3362:23:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IInitializableDebtToken_$6058_$",
                                        "typeString": "type(contract IInitializableDebtToken)"
                                      }
                                    },
                                    "id": 14843,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "initialize",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6057,
                                    "src": "3362:34:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_declaration_nonpayable$_t_contract$_ILendingPool_$6466_$_t_address_$_t_contract$_IAaveIncentivesController_$5822_$_t_uint8_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_bytes_calldata_ptr_$returns$__$",
                                      "typeString": "function IInitializableDebtToken.initialize(contract ILendingPool,address,contract IAaveIncentivesController,uint8,string memory,string memory,bytes calldata)"
                                    }
                                  },
                                  "id": 14844,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "3362:43:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 14845,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14800,
                                  "src": "3417:4:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14846,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14802,
                                    "src": "3433:5:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                      "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                    }
                                  },
                                  "id": 14847,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "underlyingAsset",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6722,
                                  "src": "3433:21:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 14849,
                                        "name": "input",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14802,
                                        "src": "3492:5:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                          "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                        }
                                      },
                                      "id": 14850,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "incentivesController",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6726,
                                      "src": "3492:26:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 14848,
                                    "name": "IAaveIncentivesController",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5822,
                                    "src": "3466:25:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IAaveIncentivesController_$5822_$",
                                      "typeString": "type(contract IAaveIncentivesController)"
                                    }
                                  },
                                  "id": 14851,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3466:53:70",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                    "typeString": "contract IAaveIncentivesController"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14852,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14802,
                                    "src": "3531:5:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                      "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                    }
                                  },
                                  "id": 14853,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "underlyingAssetDecimals",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6718,
                                  "src": "3531:29:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14854,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14802,
                                    "src": "3572:5:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                      "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                    }
                                  },
                                  "id": 14855,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "stableDebtTokenName",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6738,
                                  "src": "3572:25:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14856,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14802,
                                    "src": "3609:5:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                      "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                    }
                                  },
                                  "id": 14857,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "stableDebtTokenSymbol",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6740,
                                  "src": "3609:27:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14858,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14802,
                                    "src": "3648:5:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                      "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                    }
                                  },
                                  "id": 14859,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "params",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6742,
                                  "src": "3648:12:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                    "typeString": "contract IAaveIncentivesController"
                                  },
                                  {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14840,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3328:3:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 14841,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3328:22:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 14860,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3328:342:70",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 14837,
                            "name": "_initTokenWithProxy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15681,
                            "src": "3264:19:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$",
                              "typeString": "function (address,bytes memory) returns (address)"
                            }
                          },
                          "id": 14861,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3264:414:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3220:458:70"
                      },
                      {
                        "assignments": [
                          14864
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14864,
                            "mutability": "mutable",
                            "name": "variableDebtTokenProxyAddress",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 14951,
                            "src": "3685:37:70",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 14863,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3685:7:70",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14890,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14866,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14802,
                                "src": "3760:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                }
                              },
                              "id": 14867,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "variableDebtTokenImpl",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6716,
                              "src": "3760:27:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14870,
                                      "name": "IInitializableDebtToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6058,
                                      "src": "3831:23:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IInitializableDebtToken_$6058_$",
                                        "typeString": "type(contract IInitializableDebtToken)"
                                      }
                                    },
                                    "id": 14871,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "initialize",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6057,
                                    "src": "3831:34:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_declaration_nonpayable$_t_contract$_ILendingPool_$6466_$_t_address_$_t_contract$_IAaveIncentivesController_$5822_$_t_uint8_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_bytes_calldata_ptr_$returns$__$",
                                      "typeString": "function IInitializableDebtToken.initialize(contract ILendingPool,address,contract IAaveIncentivesController,uint8,string memory,string memory,bytes calldata)"
                                    }
                                  },
                                  "id": 14872,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "3831:43:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 14873,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14800,
                                  "src": "3886:4:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14874,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14802,
                                    "src": "3902:5:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                      "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                    }
                                  },
                                  "id": 14875,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "underlyingAsset",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6722,
                                  "src": "3902:21:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 14877,
                                        "name": "input",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14802,
                                        "src": "3961:5:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                          "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                        }
                                      },
                                      "id": 14878,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "incentivesController",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6726,
                                      "src": "3961:26:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 14876,
                                    "name": "IAaveIncentivesController",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5822,
                                    "src": "3935:25:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IAaveIncentivesController_$5822_$",
                                      "typeString": "type(contract IAaveIncentivesController)"
                                    }
                                  },
                                  "id": 14879,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3935:53:70",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                    "typeString": "contract IAaveIncentivesController"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14880,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14802,
                                    "src": "4000:5:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                      "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                    }
                                  },
                                  "id": 14881,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "underlyingAssetDecimals",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6718,
                                  "src": "4000:29:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14882,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14802,
                                    "src": "4041:5:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                      "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                    }
                                  },
                                  "id": 14883,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "variableDebtTokenName",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6734,
                                  "src": "4041:27:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14884,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14802,
                                    "src": "4080:5:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                      "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                    }
                                  },
                                  "id": 14885,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "variableDebtTokenSymbol",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6736,
                                  "src": "4080:29:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14886,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14802,
                                    "src": "4121:5:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                      "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                    }
                                  },
                                  "id": 14887,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "params",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6742,
                                  "src": "4121:12:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                    "typeString": "contract IAaveIncentivesController"
                                  },
                                  {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_string_calldata_ptr",
                                    "typeString": "string calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14868,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3797:3:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 14869,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3797:22:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 14888,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3797:346:70",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 14865,
                            "name": "_initTokenWithProxy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15681,
                            "src": "3731:19:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$",
                              "typeString": "function (address,bytes memory) returns (address)"
                            }
                          },
                          "id": 14889,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3731:420:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3685:466:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14894,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14802,
                                "src": "4182:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                }
                              },
                              "id": 14895,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "underlyingAsset",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6722,
                              "src": "4182:21:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14896,
                              "name": "aTokenProxyAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14806,
                              "src": "4211:18:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14897,
                              "name": "stableDebtTokenProxyAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14836,
                              "src": "4237:27:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14898,
                              "name": "variableDebtTokenProxyAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14864,
                              "src": "4272:29:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14899,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14802,
                                "src": "4309:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                }
                              },
                              "id": 14900,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "interestRateStrategyAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6720,
                              "src": "4309:33:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 14891,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14800,
                              "src": "4158:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 14893,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "initReserve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6375,
                            "src": "4158:16:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address,address,address,address) external"
                            }
                          },
                          "id": 14901,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4158:190:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14902,
                        "nodeType": "ExpressionStatement",
                        "src": "4158:190:70"
                      },
                      {
                        "assignments": [
                          14906
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14906,
                            "mutability": "mutable",
                            "name": "currentConfig",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 14951,
                            "src": "4355:54:70",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                              "typeString": "struct DataTypes.ReserveConfigurationMap"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 14905,
                              "name": "DataTypes.ReserveConfigurationMap",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20523,
                              "src": "4355:33:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14912,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14909,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14802,
                                "src": "4440:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                }
                              },
                              "id": 14910,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "underlyingAsset",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6722,
                              "src": "4440:21:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 14907,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14800,
                              "src": "4418:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 14908,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getConfiguration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6397,
                            "src": "4418:21:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (address) view external returns (struct DataTypes.ReserveConfigurationMap memory)"
                            }
                          },
                          "id": 14911,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4418:44:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4355:107:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14916,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14802,
                                "src": "4495:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                }
                              },
                              "id": 14917,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "underlyingAssetDecimals",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6718,
                              "src": "4495:29:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 14913,
                              "name": "currentConfig",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14906,
                              "src": "4469:13:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 14915,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setDecimals",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16269,
                            "src": "4469:25:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveConfigurationMap memory,uint256) pure"
                            }
                          },
                          "id": 14918,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4469:56:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14919,
                        "nodeType": "ExpressionStatement",
                        "src": "4469:56:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 14923,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4556:4:70",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 14920,
                              "name": "currentConfig",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14906,
                              "src": "4532:13:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 14922,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setActive",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16317,
                            "src": "4532:23:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$_t_bool_$returns$__$bound_to$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveConfigurationMap memory,bool) pure"
                            }
                          },
                          "id": 14924,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4532:29:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14925,
                        "nodeType": "ExpressionStatement",
                        "src": "4532:29:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 14929,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4591:5:70",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 14926,
                              "name": "currentConfig",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14906,
                              "src": "4567:13:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 14928,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setFrozen",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16365,
                            "src": "4567:23:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$_t_bool_$returns$__$bound_to$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveConfigurationMap memory,bool) pure"
                            }
                          },
                          "id": 14930,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4567:30:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14931,
                        "nodeType": "ExpressionStatement",
                        "src": "4567:30:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14935,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14802,
                                "src": "4626:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                }
                              },
                              "id": 14936,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "underlyingAsset",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6722,
                              "src": "4626:21:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14937,
                                "name": "currentConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14906,
                                "src": "4649:13:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                }
                              },
                              "id": 14938,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20522,
                              "src": "4649:18:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 14932,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14800,
                              "src": "4604:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 14934,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setConfiguration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6389,
                            "src": "4604:21:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 14939,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4604:64:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14940,
                        "nodeType": "ExpressionStatement",
                        "src": "4604:64:70"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14942,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14802,
                                "src": "4706:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                }
                              },
                              "id": 14943,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "underlyingAsset",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6722,
                              "src": "4706:21:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14944,
                              "name": "aTokenProxyAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14806,
                              "src": "4735:18:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14945,
                              "name": "stableDebtTokenProxyAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14836,
                              "src": "4761:27:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14946,
                              "name": "variableDebtTokenProxyAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14864,
                              "src": "4796:29:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14947,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14802,
                                "src": "4833:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.InitReserveInput calldata"
                                }
                              },
                              "id": 14948,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "interestRateStrategyAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6720,
                              "src": "4833:33:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 14941,
                            "name": "ReserveInitialized",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6784,
                            "src": "4680:18:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address,address,address,address)"
                            }
                          },
                          "id": 14949,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4680:192:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14950,
                        "nodeType": "EmitStatement",
                        "src": "4675:197:70"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 14952,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_initReserve",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 14803,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14800,
                        "mutability": "mutable",
                        "name": "pool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 14952,
                        "src": "2701:17:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPool_$6466",
                          "typeString": "contract ILendingPool"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 14799,
                          "name": "ILendingPool",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6466,
                          "src": "2701:12:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14802,
                        "mutability": "mutable",
                        "name": "input",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 14952,
                        "src": "2720:31:70",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_InitReserveInput_$6743_calldata_ptr",
                          "typeString": "struct ILendingPoolConfigurator.InitReserveInput"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 14801,
                          "name": "InitReserveInput",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6743,
                          "src": "2720:16:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_InitReserveInput_$6743_storage_ptr",
                            "typeString": "struct ILendingPoolConfigurator.InitReserveInput"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2700:52:70"
                  },
                  "returnParameters": {
                    "id": 14804,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2762:0:70"
                  },
                  "scope": 15746,
                  "src": "2679:2198:70",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 15024,
                    "nodeType": "Block",
                    "src": "5033:728:70",
                    "statements": [
                      {
                        "assignments": [
                          14961
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14961,
                            "mutability": "mutable",
                            "name": "cachedPool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15024,
                            "src": "5039:23:70",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPool_$6466",
                              "typeString": "contract ILendingPool"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 14960,
                              "name": "ILendingPool",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 6466,
                              "src": "5039:12:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14963,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 14962,
                          "name": "pool",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14702,
                          "src": "5065:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5039:30:70"
                      },
                      {
                        "assignments": [
                          14967
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14967,
                            "mutability": "mutable",
                            "name": "reserveData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15024,
                            "src": "5076:40:70",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                              "typeString": "struct DataTypes.ReserveData"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 14966,
                              "name": "DataTypes.ReserveData",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20520,
                              "src": "5076:21:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14973,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14970,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14955,
                                "src": "5145:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateATokenInput_$6758_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateATokenInput calldata"
                                }
                              },
                              "id": 14971,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "asset",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6745,
                              "src": "5145:11:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 14968,
                              "name": "cachedPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14961,
                              "src": "5119:10:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 14969,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getReserveData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6429,
                            "src": "5119:25:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveData_$20520_memory_ptr_$",
                              "typeString": "function (address) view external returns (struct DataTypes.ReserveData memory)"
                            }
                          },
                          "id": 14972,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5119:38:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                            "typeString": "struct DataTypes.ReserveData memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5076:81:70"
                      },
                      {
                        "assignments": [
                          null,
                          null,
                          null,
                          14975,
                          null
                        ],
                        "declarations": [
                          null,
                          null,
                          null,
                          {
                            "constant": false,
                            "id": 14975,
                            "mutability": "mutable",
                            "name": "decimals",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15024,
                            "src": "5171:16:70",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14974,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5171:7:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 14983,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14978,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14955,
                                    "src": "5221:5:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UpdateATokenInput_$6758_calldata_ptr",
                                      "typeString": "struct ILendingPoolConfigurator.UpdateATokenInput calldata"
                                    }
                                  },
                                  "id": 14979,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "asset",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6745,
                                  "src": "5221:11:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14976,
                                  "name": "cachedPool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14961,
                                  "src": "5193:10:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                },
                                "id": 14977,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getConfiguration",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6397,
                                "src": "5193:27:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                                  "typeString": "function (address) view external returns (struct DataTypes.ReserveConfigurationMap memory)"
                                }
                              },
                              "id": 14980,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5193:40:70",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 14981,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getParamsMemory",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16691,
                            "src": "5193:56:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$bound_to$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveConfigurationMap memory) pure returns (uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "id": 14982,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5193:58:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5164:87:70"
                      },
                      {
                        "assignments": [
                          14985
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14985,
                            "mutability": "mutable",
                            "name": "encodedCall",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15024,
                            "src": "5258:24:70",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 14984,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "5258:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15006,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14988,
                                  "name": "IInitializableAToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6015,
                                  "src": "5317:20:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IInitializableAToken_$6015_$",
                                    "typeString": "type(contract IInitializableAToken)"
                                  }
                                },
                                "id": 14989,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "initialize",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6014,
                                "src": "5317:31:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_declaration_nonpayable$_t_contract$_ILendingPool_$6466_$_t_address_$_t_address_$_t_contract$_IAaveIncentivesController_$5822_$_t_uint8_$_t_string_calldata_ptr_$_t_string_calldata_ptr_$_t_bytes_calldata_ptr_$returns$__$",
                                  "typeString": "function IInitializableAToken.initialize(contract ILendingPool,address,address,contract IAaveIncentivesController,uint8,string calldata,string calldata,bytes calldata)"
                                }
                              },
                              "id": 14990,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5317:40:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14991,
                              "name": "cachedPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14961,
                              "src": "5367:10:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14992,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14955,
                                "src": "5387:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateATokenInput_$6758_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateATokenInput calldata"
                                }
                              },
                              "id": 14993,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "treasury",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6747,
                              "src": "5387:14:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14994,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14955,
                                "src": "5411:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateATokenInput_$6758_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateATokenInput calldata"
                                }
                              },
                              "id": 14995,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "asset",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6745,
                              "src": "5411:11:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14996,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14955,
                                "src": "5432:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateATokenInput_$6758_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateATokenInput calldata"
                                }
                              },
                              "id": 14997,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "incentivesController",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6749,
                              "src": "5432:26:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14998,
                              "name": "decimals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14975,
                              "src": "5468:8:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14999,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14955,
                                "src": "5486:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateATokenInput_$6758_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateATokenInput calldata"
                                }
                              },
                              "id": 15000,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "name",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6751,
                              "src": "5486:10:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15001,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14955,
                                "src": "5506:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateATokenInput_$6758_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateATokenInput calldata"
                                }
                              },
                              "id": 15002,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "symbol",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6753,
                              "src": "5506:12:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15003,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14955,
                                "src": "5528:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateATokenInput_$6758_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateATokenInput calldata"
                                }
                              },
                              "id": 15004,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "params",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6757,
                              "src": "5528:12:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              },
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 14986,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "5285:3:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 14987,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodeWithSelector",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5285:22:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes4) pure returns (bytes memory)"
                            }
                          },
                          "id": 15005,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5285:263:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5258:290:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15008,
                                "name": "reserveData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14967,
                                "src": "5590:11:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveData memory"
                                }
                              },
                              "id": 15009,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "aTokenAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20511,
                              "src": "5590:25:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15010,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14955,
                                "src": "5623:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateATokenInput_$6758_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateATokenInput calldata"
                                }
                              },
                              "id": 15011,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "implementation",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6755,
                              "src": "5623:20:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15012,
                              "name": "encodedCall",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14985,
                              "src": "5651:11:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 15007,
                            "name": "_upgradeTokenImplementation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15707,
                            "src": "5555:27:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,bytes memory)"
                            }
                          },
                          "id": 15013,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5555:113:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15014,
                        "nodeType": "ExpressionStatement",
                        "src": "5555:113:70"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15016,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14955,
                                "src": "5695:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateATokenInput_$6758_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateATokenInput calldata"
                                }
                              },
                              "id": 15017,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "asset",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6745,
                              "src": "5695:11:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15018,
                                "name": "reserveData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14967,
                                "src": "5708:11:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveData memory"
                                }
                              },
                              "id": 15019,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "aTokenAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20511,
                              "src": "5708:25:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15020,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14955,
                                "src": "5735:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateATokenInput_$6758_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateATokenInput calldata"
                                }
                              },
                              "id": 15021,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "implementation",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6755,
                              "src": "5735:20:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 15015,
                            "name": "ATokenUpgraded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6867,
                            "src": "5680:14:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address,address)"
                            }
                          },
                          "id": 15022,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5680:76:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15023,
                        "nodeType": "EmitStatement",
                        "src": "5675:81:70"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14953,
                    "nodeType": "StructuredDocumentation",
                    "src": "4881:70:70",
                    "text": " @dev Updates the aToken implementation for the reserve*"
                  },
                  "functionSelector": "bb01c37c",
                  "id": 15025,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 14958,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 14957,
                        "name": "onlyPoolAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14717,
                        "src": "5019:13:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5019:13:70"
                    }
                  ],
                  "name": "updateAToken",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 14956,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14955,
                        "mutability": "mutable",
                        "name": "input",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15025,
                        "src": "4976:32:70",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UpdateATokenInput_$6758_calldata_ptr",
                          "typeString": "struct ILendingPoolConfigurator.UpdateATokenInput"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 14954,
                          "name": "UpdateATokenInput",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6758,
                          "src": "4976:17:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UpdateATokenInput_$6758_storage_ptr",
                            "typeString": "struct ILendingPoolConfigurator.UpdateATokenInput"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4975:34:70"
                  },
                  "returnParameters": {
                    "id": 14959,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5033:0:70"
                  },
                  "scope": 15746,
                  "src": "4954:807:70",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15095,
                    "nodeType": "Block",
                    "src": "5940:763:70",
                    "statements": [
                      {
                        "assignments": [
                          15034
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15034,
                            "mutability": "mutable",
                            "name": "cachedPool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15095,
                            "src": "5946:23:70",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPool_$6466",
                              "typeString": "contract ILendingPool"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 15033,
                              "name": "ILendingPool",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 6466,
                              "src": "5946:12:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15036,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 15035,
                          "name": "pool",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14702,
                          "src": "5972:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5946:30:70"
                      },
                      {
                        "assignments": [
                          15040
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15040,
                            "mutability": "mutable",
                            "name": "reserveData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15095,
                            "src": "5983:40:70",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                              "typeString": "struct DataTypes.ReserveData"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 15039,
                              "name": "DataTypes.ReserveData",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20520,
                              "src": "5983:21:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15046,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15043,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15028,
                                "src": "6052:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateDebtTokenInput_$6771_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateDebtTokenInput calldata"
                                }
                              },
                              "id": 15044,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "asset",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6760,
                              "src": "6052:11:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15041,
                              "name": "cachedPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15034,
                              "src": "6026:10:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 15042,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getReserveData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6429,
                            "src": "6026:25:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveData_$20520_memory_ptr_$",
                              "typeString": "function (address) view external returns (struct DataTypes.ReserveData memory)"
                            }
                          },
                          "id": 15045,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6026:38:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                            "typeString": "struct DataTypes.ReserveData memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5983:81:70"
                      },
                      {
                        "assignments": [
                          null,
                          null,
                          null,
                          15048,
                          null
                        ],
                        "declarations": [
                          null,
                          null,
                          null,
                          {
                            "constant": false,
                            "id": 15048,
                            "mutability": "mutable",
                            "name": "decimals",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15095,
                            "src": "6083:16:70",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 15047,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6083:7:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 15056,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 15051,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15028,
                                    "src": "6133:5:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UpdateDebtTokenInput_$6771_calldata_ptr",
                                      "typeString": "struct ILendingPoolConfigurator.UpdateDebtTokenInput calldata"
                                    }
                                  },
                                  "id": 15052,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "asset",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6760,
                                  "src": "6133:11:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 15049,
                                  "name": "cachedPool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15034,
                                  "src": "6105:10:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                },
                                "id": 15050,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getConfiguration",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6397,
                                "src": "6105:27:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                                  "typeString": "function (address) view external returns (struct DataTypes.ReserveConfigurationMap memory)"
                                }
                              },
                              "id": 15053,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6105:40:70",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 15054,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getParamsMemory",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16691,
                            "src": "6105:56:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$bound_to$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveConfigurationMap memory) pure returns (uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "id": 15055,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6105:58:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6076:87:70"
                      },
                      {
                        "assignments": [
                          15058
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15058,
                            "mutability": "mutable",
                            "name": "encodedCall",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15095,
                            "src": "6170:24:70",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 15057,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "6170:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15077,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 15061,
                                  "name": "IInitializableDebtToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6058,
                                  "src": "6229:23:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IInitializableDebtToken_$6058_$",
                                    "typeString": "type(contract IInitializableDebtToken)"
                                  }
                                },
                                "id": 15062,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "initialize",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6057,
                                "src": "6229:34:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_declaration_nonpayable$_t_contract$_ILendingPool_$6466_$_t_address_$_t_contract$_IAaveIncentivesController_$5822_$_t_uint8_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_bytes_calldata_ptr_$returns$__$",
                                  "typeString": "function IInitializableDebtToken.initialize(contract ILendingPool,address,contract IAaveIncentivesController,uint8,string memory,string memory,bytes calldata)"
                                }
                              },
                              "id": 15063,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6229:43:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15064,
                              "name": "cachedPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15034,
                              "src": "6282:10:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15065,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15028,
                                "src": "6302:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateDebtTokenInput_$6771_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateDebtTokenInput calldata"
                                }
                              },
                              "id": 15066,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "asset",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6760,
                              "src": "6302:11:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15067,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15028,
                                "src": "6323:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateDebtTokenInput_$6771_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateDebtTokenInput calldata"
                                }
                              },
                              "id": 15068,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "incentivesController",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6762,
                              "src": "6323:26:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15069,
                              "name": "decimals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15048,
                              "src": "6359:8:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15070,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15028,
                                "src": "6377:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateDebtTokenInput_$6771_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateDebtTokenInput calldata"
                                }
                              },
                              "id": 15071,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "name",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6764,
                              "src": "6377:10:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15072,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15028,
                                "src": "6397:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateDebtTokenInput_$6771_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateDebtTokenInput calldata"
                                }
                              },
                              "id": 15073,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "symbol",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6766,
                              "src": "6397:12:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15074,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15028,
                                "src": "6419:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateDebtTokenInput_$6771_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateDebtTokenInput calldata"
                                }
                              },
                              "id": 15075,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "params",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6770,
                              "src": "6419:12:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              },
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15059,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "6197:3:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 15060,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodeWithSelector",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6197:22:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes4) pure returns (bytes memory)"
                            }
                          },
                          "id": 15076,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6197:242:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6170:269:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15079,
                                "name": "reserveData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15040,
                                "src": "6481:11:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveData memory"
                                }
                              },
                              "id": 15080,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "stableDebtTokenAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20513,
                              "src": "6481:34:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15081,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15028,
                                "src": "6523:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateDebtTokenInput_$6771_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateDebtTokenInput calldata"
                                }
                              },
                              "id": 15082,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "implementation",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6768,
                              "src": "6523:20:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15083,
                              "name": "encodedCall",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15058,
                              "src": "6551:11:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 15078,
                            "name": "_upgradeTokenImplementation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15707,
                            "src": "6446:27:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,bytes memory)"
                            }
                          },
                          "id": 15084,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6446:122:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15085,
                        "nodeType": "ExpressionStatement",
                        "src": "6446:122:70"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15087,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15028,
                                "src": "6611:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateDebtTokenInput_$6771_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateDebtTokenInput calldata"
                                }
                              },
                              "id": 15088,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "asset",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6760,
                              "src": "6611:11:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15089,
                                "name": "reserveData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15040,
                                "src": "6630:11:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveData memory"
                                }
                              },
                              "id": 15090,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "stableDebtTokenAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20513,
                              "src": "6630:34:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15091,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15028,
                                "src": "6672:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateDebtTokenInput_$6771_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateDebtTokenInput calldata"
                                }
                              },
                              "id": 15092,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "implementation",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6768,
                              "src": "6672:20:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 15086,
                            "name": "StableDebtTokenUpgraded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6876,
                            "src": "6580:23:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address,address)"
                            }
                          },
                          "id": 15093,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6580:118:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15094,
                        "nodeType": "EmitStatement",
                        "src": "6575:123:70"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15026,
                    "nodeType": "StructuredDocumentation",
                    "src": "5765:81:70",
                    "text": " @dev Updates the stable debt token implementation for the reserve*"
                  },
                  "functionSelector": "7626cde3",
                  "id": 15096,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 15031,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 15030,
                        "name": "onlyPoolAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14717,
                        "src": "5926:13:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5926:13:70"
                    }
                  ],
                  "name": "updateStableDebtToken",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 15029,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15028,
                        "mutability": "mutable",
                        "name": "input",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15096,
                        "src": "5880:35:70",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UpdateDebtTokenInput_$6771_calldata_ptr",
                          "typeString": "struct ILendingPoolConfigurator.UpdateDebtTokenInput"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 15027,
                          "name": "UpdateDebtTokenInput",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6771,
                          "src": "5880:20:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UpdateDebtTokenInput_$6771_storage_ptr",
                            "typeString": "struct ILendingPoolConfigurator.UpdateDebtTokenInput"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5879:37:70"
                  },
                  "returnParameters": {
                    "id": 15032,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5940:0:70"
                  },
                  "scope": 15746,
                  "src": "5849:854:70",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15166,
                    "nodeType": "Block",
                    "src": "6894:764:70",
                    "statements": [
                      {
                        "assignments": [
                          15105
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15105,
                            "mutability": "mutable",
                            "name": "cachedPool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15166,
                            "src": "6900:23:70",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPool_$6466",
                              "typeString": "contract ILendingPool"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 15104,
                              "name": "ILendingPool",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 6466,
                              "src": "6900:12:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15107,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 15106,
                          "name": "pool",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14702,
                          "src": "6926:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6900:30:70"
                      },
                      {
                        "assignments": [
                          15111
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15111,
                            "mutability": "mutable",
                            "name": "reserveData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15166,
                            "src": "6937:40:70",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                              "typeString": "struct DataTypes.ReserveData"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 15110,
                              "name": "DataTypes.ReserveData",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20520,
                              "src": "6937:21:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15117,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15114,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15099,
                                "src": "7006:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateDebtTokenInput_$6771_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateDebtTokenInput calldata"
                                }
                              },
                              "id": 15115,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "asset",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6760,
                              "src": "7006:11:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15112,
                              "name": "cachedPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15105,
                              "src": "6980:10:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 15113,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getReserveData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6429,
                            "src": "6980:25:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveData_$20520_memory_ptr_$",
                              "typeString": "function (address) view external returns (struct DataTypes.ReserveData memory)"
                            }
                          },
                          "id": 15116,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6980:38:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                            "typeString": "struct DataTypes.ReserveData memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6937:81:70"
                      },
                      {
                        "assignments": [
                          null,
                          null,
                          null,
                          15119,
                          null
                        ],
                        "declarations": [
                          null,
                          null,
                          null,
                          {
                            "constant": false,
                            "id": 15119,
                            "mutability": "mutable",
                            "name": "decimals",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15166,
                            "src": "7032:16:70",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 15118,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7032:7:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 15127,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 15122,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15099,
                                    "src": "7082:5:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UpdateDebtTokenInput_$6771_calldata_ptr",
                                      "typeString": "struct ILendingPoolConfigurator.UpdateDebtTokenInput calldata"
                                    }
                                  },
                                  "id": 15123,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "asset",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6760,
                                  "src": "7082:11:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 15120,
                                  "name": "cachedPool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15105,
                                  "src": "7054:10:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                },
                                "id": 15121,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getConfiguration",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6397,
                                "src": "7054:27:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                                  "typeString": "function (address) view external returns (struct DataTypes.ReserveConfigurationMap memory)"
                                }
                              },
                              "id": 15124,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7054:40:70",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 15125,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getParamsMemory",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16691,
                            "src": "7054:56:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$bound_to$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveConfigurationMap memory) pure returns (uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "id": 15126,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7054:58:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7025:87:70"
                      },
                      {
                        "assignments": [
                          15129
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15129,
                            "mutability": "mutable",
                            "name": "encodedCall",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15166,
                            "src": "7119:24:70",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 15128,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "7119:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15148,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 15132,
                                  "name": "IInitializableDebtToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6058,
                                  "src": "7178:23:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IInitializableDebtToken_$6058_$",
                                    "typeString": "type(contract IInitializableDebtToken)"
                                  }
                                },
                                "id": 15133,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "initialize",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6057,
                                "src": "7178:34:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_declaration_nonpayable$_t_contract$_ILendingPool_$6466_$_t_address_$_t_contract$_IAaveIncentivesController_$5822_$_t_uint8_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_bytes_calldata_ptr_$returns$__$",
                                  "typeString": "function IInitializableDebtToken.initialize(contract ILendingPool,address,contract IAaveIncentivesController,uint8,string memory,string memory,bytes calldata)"
                                }
                              },
                              "id": 15134,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7178:43:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15135,
                              "name": "cachedPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15105,
                              "src": "7231:10:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15136,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15099,
                                "src": "7251:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateDebtTokenInput_$6771_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateDebtTokenInput calldata"
                                }
                              },
                              "id": 15137,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "asset",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6760,
                              "src": "7251:11:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15138,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15099,
                                "src": "7272:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateDebtTokenInput_$6771_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateDebtTokenInput calldata"
                                }
                              },
                              "id": 15139,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "incentivesController",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6762,
                              "src": "7272:26:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15140,
                              "name": "decimals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15119,
                              "src": "7308:8:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15141,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15099,
                                "src": "7326:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateDebtTokenInput_$6771_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateDebtTokenInput calldata"
                                }
                              },
                              "id": 15142,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "name",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6764,
                              "src": "7326:10:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15143,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15099,
                                "src": "7346:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateDebtTokenInput_$6771_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateDebtTokenInput calldata"
                                }
                              },
                              "id": 15144,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "symbol",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6766,
                              "src": "7346:12:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15145,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15099,
                                "src": "7368:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateDebtTokenInput_$6771_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateDebtTokenInput calldata"
                                }
                              },
                              "id": 15146,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "params",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6770,
                              "src": "7368:12:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              },
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15130,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "7146:3:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 15131,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodeWithSelector",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7146:22:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes4) pure returns (bytes memory)"
                            }
                          },
                          "id": 15147,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7146:242:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7119:269:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15150,
                                "name": "reserveData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15111,
                                "src": "7430:11:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveData memory"
                                }
                              },
                              "id": 15151,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "variableDebtTokenAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20515,
                              "src": "7430:36:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15152,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15099,
                                "src": "7474:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateDebtTokenInput_$6771_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateDebtTokenInput calldata"
                                }
                              },
                              "id": 15153,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "implementation",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6768,
                              "src": "7474:20:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15154,
                              "name": "encodedCall",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15129,
                              "src": "7502:11:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 15149,
                            "name": "_upgradeTokenImplementation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15707,
                            "src": "7395:27:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,bytes memory)"
                            }
                          },
                          "id": 15155,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7395:124:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15156,
                        "nodeType": "ExpressionStatement",
                        "src": "7395:124:70"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15158,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15099,
                                "src": "7564:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateDebtTokenInput_$6771_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateDebtTokenInput calldata"
                                }
                              },
                              "id": 15159,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "asset",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6760,
                              "src": "7564:11:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15160,
                                "name": "reserveData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15111,
                                "src": "7583:11:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveData memory"
                                }
                              },
                              "id": 15161,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "variableDebtTokenAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20515,
                              "src": "7583:36:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15162,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15099,
                                "src": "7627:5:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateDebtTokenInput_$6771_calldata_ptr",
                                  "typeString": "struct ILendingPoolConfigurator.UpdateDebtTokenInput calldata"
                                }
                              },
                              "id": 15163,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "implementation",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6768,
                              "src": "7627:20:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 15157,
                            "name": "VariableDebtTokenUpgraded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6885,
                            "src": "7531:25:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address,address)"
                            }
                          },
                          "id": 15164,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7531:122:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15165,
                        "nodeType": "EmitStatement",
                        "src": "7526:127:70"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15097,
                    "nodeType": "StructuredDocumentation",
                    "src": "6707:81:70",
                    "text": " @dev Updates the variable debt token implementation for the asset*"
                  },
                  "functionSelector": "ad4e6432",
                  "id": 15167,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 15102,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 15101,
                        "name": "onlyPoolAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14717,
                        "src": "6878:13:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6878:13:70"
                    }
                  ],
                  "name": "updateVariableDebtToken",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 15100,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15099,
                        "mutability": "mutable",
                        "name": "input",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15167,
                        "src": "6824:35:70",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UpdateDebtTokenInput_$6771_calldata_ptr",
                          "typeString": "struct ILendingPoolConfigurator.UpdateDebtTokenInput"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 15098,
                          "name": "UpdateDebtTokenInput",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6771,
                          "src": "6824:20:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UpdateDebtTokenInput_$6771_storage_ptr",
                            "typeString": "struct ILendingPoolConfigurator.UpdateDebtTokenInput"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6823:37:70"
                  },
                  "returnParameters": {
                    "id": 15103,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6894:0:70"
                  },
                  "scope": 15746,
                  "src": "6791:867:70",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15211,
                    "nodeType": "Block",
                    "src": "8007:340:70",
                    "statements": [
                      {
                        "assignments": [
                          15180
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15180,
                            "mutability": "mutable",
                            "name": "currentConfig",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15211,
                            "src": "8013:54:70",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                              "typeString": "struct DataTypes.ReserveConfigurationMap"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 15179,
                              "name": "DataTypes.ReserveConfigurationMap",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20523,
                              "src": "8013:33:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15185,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15183,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15170,
                              "src": "8092:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15181,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14702,
                              "src": "8070:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 15182,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getConfiguration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6397,
                            "src": "8070:21:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (address) view external returns (struct DataTypes.ReserveConfigurationMap memory)"
                            }
                          },
                          "id": 15184,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8070:28:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8013:85:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 15189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8139:4:70",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15186,
                              "name": "currentConfig",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15180,
                              "src": "8105:13:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 15188,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setBorrowingEnabled",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16413,
                            "src": "8105:33:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$_t_bool_$returns$__$bound_to$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveConfigurationMap memory,bool) pure"
                            }
                          },
                          "id": 15190,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8105:39:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15191,
                        "nodeType": "ExpressionStatement",
                        "src": "8105:39:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15195,
                              "name": "stableBorrowRateEnabled",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15172,
                              "src": "8194:23:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15192,
                              "name": "currentConfig",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15180,
                              "src": "8150:13:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 15194,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setStableRateBorrowingEnabled",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16461,
                            "src": "8150:43:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$_t_bool_$returns$__$bound_to$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveConfigurationMap memory,bool) pure"
                            }
                          },
                          "id": 15196,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8150:68:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15197,
                        "nodeType": "ExpressionStatement",
                        "src": "8150:68:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15201,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15170,
                              "src": "8247:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15202,
                                "name": "currentConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15180,
                                "src": "8254:13:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                }
                              },
                              "id": 15203,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20522,
                              "src": "8254:18:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15198,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14702,
                              "src": "8225:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 15200,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setConfiguration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6389,
                            "src": "8225:21:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 15204,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8225:48:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15205,
                        "nodeType": "ExpressionStatement",
                        "src": "8225:48:70"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15207,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15170,
                              "src": "8311:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15208,
                              "name": "stableBorrowRateEnabled",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15172,
                              "src": "8318:23:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 15206,
                            "name": "BorrowingEnabledOnReserve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6791,
                            "src": "8285:25:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,bool)"
                            }
                          },
                          "id": 15209,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8285:57:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15210,
                        "nodeType": "EmitStatement",
                        "src": "8280:62:70"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15168,
                    "nodeType": "StructuredDocumentation",
                    "src": "7662:230:70",
                    "text": " @dev Enables borrowing on a reserve\n @param asset The address of the underlying asset of the reserve\n @param stableBorrowRateEnabled True if stable borrow rate needs to be enabled by default on this reserve*"
                  },
                  "functionSelector": "eede87c1",
                  "id": 15212,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 15175,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 15174,
                        "name": "onlyPoolAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14717,
                        "src": "7991:13:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "7991:13:70"
                    }
                  ],
                  "name": "enableBorrowingOnReserve",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 15173,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15170,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15212,
                        "src": "7929:13:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15169,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7929:7:70",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15172,
                        "mutability": "mutable",
                        "name": "stableBorrowRateEnabled",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15212,
                        "src": "7944:28:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 15171,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7944:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7928:45:70"
                  },
                  "returnParameters": {
                    "id": 15176,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8007:0:70"
                  },
                  "scope": 15746,
                  "src": "7895:452:70",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15247,
                    "nodeType": "Block",
                    "src": "8548:242:70",
                    "statements": [
                      {
                        "assignments": [
                          15223
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15223,
                            "mutability": "mutable",
                            "name": "currentConfig",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15247,
                            "src": "8554:54:70",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                              "typeString": "struct DataTypes.ReserveConfigurationMap"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 15222,
                              "name": "DataTypes.ReserveConfigurationMap",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20523,
                              "src": "8554:33:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15228,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15226,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15215,
                              "src": "8633:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15224,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14702,
                              "src": "8611:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 15225,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getConfiguration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6397,
                            "src": "8611:21:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (address) view external returns (struct DataTypes.ReserveConfigurationMap memory)"
                            }
                          },
                          "id": 15227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8611:28:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8554:85:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 15232,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8680:5:70",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15229,
                              "name": "currentConfig",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15223,
                              "src": "8646:13:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 15231,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setBorrowingEnabled",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16413,
                            "src": "8646:33:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$_t_bool_$returns$__$bound_to$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveConfigurationMap memory,bool) pure"
                            }
                          },
                          "id": 15233,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8646:40:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15234,
                        "nodeType": "ExpressionStatement",
                        "src": "8646:40:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15238,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15215,
                              "src": "8715:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15239,
                                "name": "currentConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15223,
                                "src": "8722:13:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                }
                              },
                              "id": 15240,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20522,
                              "src": "8722:18:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15235,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14702,
                              "src": "8693:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 15237,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setConfiguration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6389,
                            "src": "8693:21:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 15241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8693:48:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15242,
                        "nodeType": "ExpressionStatement",
                        "src": "8693:48:70"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15244,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15215,
                              "src": "8779:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 15243,
                            "name": "BorrowingDisabledOnReserve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6796,
                            "src": "8752:26:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 15245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8752:33:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15246,
                        "nodeType": "EmitStatement",
                        "src": "8747:38:70"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15213,
                    "nodeType": "StructuredDocumentation",
                    "src": "8351:121:70",
                    "text": " @dev Disables borrowing on a reserve\n @param asset The address of the underlying asset of the reserve*"
                  },
                  "functionSelector": "a8dc0f45",
                  "id": 15248,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 15218,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 15217,
                        "name": "onlyPoolAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14717,
                        "src": "8534:13:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8534:13:70"
                    }
                  ],
                  "name": "disableBorrowingOnReserve",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 15216,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15215,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15248,
                        "src": "8510:13:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15214,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8510:7:70",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8509:15:70"
                  },
                  "returnParameters": {
                    "id": 15219,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8548:0:70"
                  },
                  "scope": 15746,
                  "src": "8475:315:70",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15351,
                    "nodeType": "Block",
                    "src": "9614:1621:70",
                    "statements": [
                      {
                        "assignments": [
                          15265
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15265,
                            "mutability": "mutable",
                            "name": "currentConfig",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15351,
                            "src": "9620:54:70",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                              "typeString": "struct DataTypes.ReserveConfigurationMap"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 15264,
                              "name": "DataTypes.ReserveConfigurationMap",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20523,
                              "src": "9620:33:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15270,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15268,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15251,
                              "src": "9699:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15266,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14702,
                              "src": "9677:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 15267,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getConfiguration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6397,
                            "src": "9677:21:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (address) view external returns (struct DataTypes.ReserveConfigurationMap memory)"
                            }
                          },
                          "id": 15269,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9677:28:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9620:85:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 15274,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 15272,
                                "name": "ltv",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15253,
                                "src": "9909:3:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 15273,
                                "name": "liquidationThreshold",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15255,
                                "src": "9916:20:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9909:27:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15275,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "9938:6:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 15276,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "LPC_INVALID_CONFIGURATION",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17113,
                              "src": "9938:32:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 15271,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9901:7:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 15277,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9901:70:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15278,
                        "nodeType": "ExpressionStatement",
                        "src": "9901:70:70"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 15281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 15279,
                            "name": "liquidationThreshold",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15255,
                            "src": "9982:20:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 15280,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10006:1:70",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "9982:25:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 15316,
                          "nodeType": "Block",
                          "src": "10645:283:70",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 15307,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 15305,
                                      "name": "liquidationBonus",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15257,
                                      "src": "10661:16:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 15306,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "10681:1:70",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "10661:21:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 15308,
                                      "name": "Errors",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17239,
                                      "src": "10684:6:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                        "typeString": "type(library Errors)"
                                      }
                                    },
                                    "id": 15309,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "LPC_INVALID_CONFIGURATION",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17113,
                                    "src": "10684:32:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 15304,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "10653:7:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 15310,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10653:64:70",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 15311,
                              "nodeType": "ExpressionStatement",
                              "src": "10653:64:70"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 15313,
                                    "name": "asset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15251,
                                    "src": "10915:5:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 15312,
                                  "name": "_checkNoLiquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15745,
                                  "src": "10897:17:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                                    "typeString": "function (address) view"
                                  }
                                },
                                "id": 15314,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10897:24:70",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 15315,
                              "nodeType": "ExpressionStatement",
                              "src": "10897:24:70"
                            }
                          ]
                        },
                        "id": 15317,
                        "nodeType": "IfStatement",
                        "src": "9978:950:70",
                        "trueBody": {
                          "id": 15303,
                          "nodeType": "Block",
                          "src": "10009:630:70",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 15286,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 15283,
                                      "name": "liquidationBonus",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15257,
                                      "src": "10182:16:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 15284,
                                        "name": "PercentageMath",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20068,
                                        "src": "10201:14:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_PercentageMath_$20068_$",
                                          "typeString": "type(library PercentageMath)"
                                        }
                                      },
                                      "id": 15285,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "PERCENTAGE_FACTOR",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 19963,
                                      "src": "10201:32:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "10182:51:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 15287,
                                      "name": "Errors",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17239,
                                      "src": "10243:6:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                        "typeString": "type(library Errors)"
                                      }
                                    },
                                    "id": 15288,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "LPC_INVALID_CONFIGURATION",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17113,
                                    "src": "10243:32:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 15282,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "10165:7:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 15289,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10165:118:70",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 15290,
                              "nodeType": "ExpressionStatement",
                              "src": "10165:118:70"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 15298,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 15294,
                                          "name": "liquidationBonus",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15257,
                                          "src": "10529:16:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 15292,
                                          "name": "liquidationThreshold",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15255,
                                          "src": "10497:20:70",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 15293,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "percentMul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 20016,
                                        "src": "10497:31:70",
                                        "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": 15295,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10497:49:70",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 15296,
                                        "name": "PercentageMath",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20068,
                                        "src": "10550:14:70",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_PercentageMath_$20068_$",
                                          "typeString": "type(library PercentageMath)"
                                        }
                                      },
                                      "id": 15297,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "PERCENTAGE_FACTOR",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 19963,
                                      "src": "10550:32:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "10497:85:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 15299,
                                      "name": "Errors",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17239,
                                      "src": "10592:6:70",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                        "typeString": "type(library Errors)"
                                      }
                                    },
                                    "id": 15300,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "LPC_INVALID_CONFIGURATION",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17113,
                                    "src": "10592:32:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 15291,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "10480:7:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 15301,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10480:152:70",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 15302,
                              "nodeType": "ExpressionStatement",
                              "src": "10480:152:70"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15321,
                              "name": "ltv",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15253,
                              "src": "10955:3:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15318,
                              "name": "currentConfig",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15265,
                              "src": "10934:13:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 15320,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setLtv",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16122,
                            "src": "10934:20:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveConfigurationMap memory,uint256) pure"
                            }
                          },
                          "id": 15322,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10934:25:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15323,
                        "nodeType": "ExpressionStatement",
                        "src": "10934:25:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15327,
                              "name": "liquidationThreshold",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15255,
                              "src": "11003:20:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15324,
                              "name": "currentConfig",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15265,
                              "src": "10965:13:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 15326,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setLiquidationThreshold",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16169,
                            "src": "10965:37:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveConfigurationMap memory,uint256) pure"
                            }
                          },
                          "id": 15328,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10965:59:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15329,
                        "nodeType": "ExpressionStatement",
                        "src": "10965:59:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15333,
                              "name": "liquidationBonus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15257,
                              "src": "11064:16:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15330,
                              "name": "currentConfig",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15265,
                              "src": "11030:13:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 15332,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setLiquidationBonus",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16219,
                            "src": "11030:33:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveConfigurationMap memory,uint256) pure"
                            }
                          },
                          "id": 15334,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11030:51:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15335,
                        "nodeType": "ExpressionStatement",
                        "src": "11030:51:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15339,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15251,
                              "src": "11110:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15340,
                                "name": "currentConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15265,
                                "src": "11117:13:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                }
                              },
                              "id": 15341,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20522,
                              "src": "11117:18:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15336,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14702,
                              "src": "11088:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 15338,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setConfiguration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6389,
                            "src": "11088:21:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 15342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11088:48:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15343,
                        "nodeType": "ExpressionStatement",
                        "src": "11088:48:70"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15345,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15251,
                              "src": "11179:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15346,
                              "name": "ltv",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15253,
                              "src": "11186:3:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15347,
                              "name": "liquidationThreshold",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15255,
                              "src": "11191:20:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15348,
                              "name": "liquidationBonus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15257,
                              "src": "11213:16:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 15344,
                            "name": "CollateralConfigurationChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6807,
                            "src": "11148:30:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,uint256)"
                            }
                          },
                          "id": 15349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11148:82:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15350,
                        "nodeType": "EmitStatement",
                        "src": "11143:87:70"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15249,
                    "nodeType": "StructuredDocumentation",
                    "src": "8794:652:70",
                    "text": " @dev Configures the reserve collateralization parameters\n all the values are expressed in percentages with two decimals of precision. A valid value is 10000, which means 100.00%\n @param asset The address of the underlying asset of the reserve\n @param ltv The loan to value of the asset when used as collateral\n @param liquidationThreshold The threshold at which loans using this asset as collateral will be considered undercollateralized\n @param liquidationBonus The bonus liquidators receive to liquidate this asset. The values is always above 100%. A value of 105%\n means the liquidator will receive a 5% bonus*"
                  },
                  "functionSelector": "7c4e560b",
                  "id": 15352,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 15260,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 15259,
                        "name": "onlyPoolAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14717,
                        "src": "9600:13:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "9600:13:70"
                    }
                  ],
                  "name": "configureReserveAsCollateral",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 15258,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15251,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15352,
                        "src": "9492:13:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15250,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9492:7:70",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15253,
                        "mutability": "mutable",
                        "name": "ltv",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15352,
                        "src": "9511:11:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15252,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9511:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15255,
                        "mutability": "mutable",
                        "name": "liquidationThreshold",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15352,
                        "src": "9528:28:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15254,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9528:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15257,
                        "mutability": "mutable",
                        "name": "liquidationBonus",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15352,
                        "src": "9562:24:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15256,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9562:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9486:104:70"
                  },
                  "returnParameters": {
                    "id": 15261,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9614:0:70"
                  },
                  "scope": 15746,
                  "src": "9449:1786:70",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15387,
                    "nodeType": "Block",
                    "src": "11444:252:70",
                    "statements": [
                      {
                        "assignments": [
                          15363
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15363,
                            "mutability": "mutable",
                            "name": "currentConfig",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15387,
                            "src": "11450:54:70",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                              "typeString": "struct DataTypes.ReserveConfigurationMap"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 15362,
                              "name": "DataTypes.ReserveConfigurationMap",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20523,
                              "src": "11450:33:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15368,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15366,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15355,
                              "src": "11529:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15364,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14702,
                              "src": "11507:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 15365,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getConfiguration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6397,
                            "src": "11507:21:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (address) view external returns (struct DataTypes.ReserveConfigurationMap memory)"
                            }
                          },
                          "id": 15367,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11507:28:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11450:85:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 15372,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11586:4:70",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15369,
                              "name": "currentConfig",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15363,
                              "src": "11542:13:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 15371,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setStableRateBorrowingEnabled",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16461,
                            "src": "11542:43:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$_t_bool_$returns$__$bound_to$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveConfigurationMap memory,bool) pure"
                            }
                          },
                          "id": 15373,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11542:49:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15374,
                        "nodeType": "ExpressionStatement",
                        "src": "11542:49:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15378,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15355,
                              "src": "11620:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15379,
                                "name": "currentConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15363,
                                "src": "11627:13:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                }
                              },
                              "id": 15380,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20522,
                              "src": "11627:18:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15375,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14702,
                              "src": "11598:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 15377,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setConfiguration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6389,
                            "src": "11598:21:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 15381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11598:48:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15382,
                        "nodeType": "ExpressionStatement",
                        "src": "11598:48:70"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15384,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15355,
                              "src": "11685:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 15383,
                            "name": "StableRateEnabledOnReserve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6812,
                            "src": "11658:26:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 15385,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11658:33:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15386,
                        "nodeType": "EmitStatement",
                        "src": "11653:38:70"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15353,
                    "nodeType": "StructuredDocumentation",
                    "src": "11239:131:70",
                    "text": " @dev Enable stable rate borrowing on a reserve\n @param asset The address of the underlying asset of the reserve*"
                  },
                  "functionSelector": "bf344183",
                  "id": 15388,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 15358,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 15357,
                        "name": "onlyPoolAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14717,
                        "src": "11430:13:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "11430:13:70"
                    }
                  ],
                  "name": "enableReserveStableRate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 15356,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15355,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15388,
                        "src": "11406:13:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15354,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11406:7:70",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11405:15:70"
                  },
                  "returnParameters": {
                    "id": 15359,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11444:0:70"
                  },
                  "scope": 15746,
                  "src": "11373:323:70",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15423,
                    "nodeType": "Block",
                    "src": "11907:254:70",
                    "statements": [
                      {
                        "assignments": [
                          15399
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15399,
                            "mutability": "mutable",
                            "name": "currentConfig",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15423,
                            "src": "11913:54:70",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                              "typeString": "struct DataTypes.ReserveConfigurationMap"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 15398,
                              "name": "DataTypes.ReserveConfigurationMap",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20523,
                              "src": "11913:33:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15404,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15402,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15391,
                              "src": "11992:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15400,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14702,
                              "src": "11970:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 15401,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getConfiguration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6397,
                            "src": "11970:21:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (address) view external returns (struct DataTypes.ReserveConfigurationMap memory)"
                            }
                          },
                          "id": 15403,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11970:28:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11913:85:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 15408,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12049:5:70",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15405,
                              "name": "currentConfig",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15399,
                              "src": "12005:13:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 15407,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setStableRateBorrowingEnabled",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16461,
                            "src": "12005:43:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$_t_bool_$returns$__$bound_to$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveConfigurationMap memory,bool) pure"
                            }
                          },
                          "id": 15409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12005:50:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15410,
                        "nodeType": "ExpressionStatement",
                        "src": "12005:50:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15414,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15391,
                              "src": "12084:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15415,
                                "name": "currentConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15399,
                                "src": "12091:13:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                }
                              },
                              "id": 15416,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20522,
                              "src": "12091:18:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15411,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14702,
                              "src": "12062:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 15413,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setConfiguration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6389,
                            "src": "12062:21:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 15417,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12062:48:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15418,
                        "nodeType": "ExpressionStatement",
                        "src": "12062:48:70"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15420,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15391,
                              "src": "12150:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 15419,
                            "name": "StableRateDisabledOnReserve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6817,
                            "src": "12122:27:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 15421,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12122:34:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15422,
                        "nodeType": "EmitStatement",
                        "src": "12117:39:70"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15389,
                    "nodeType": "StructuredDocumentation",
                    "src": "11700:132:70",
                    "text": " @dev Disable stable rate borrowing on a reserve\n @param asset The address of the underlying asset of the reserve*"
                  },
                  "functionSelector": "f53a2515",
                  "id": 15424,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 15394,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 15393,
                        "name": "onlyPoolAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14717,
                        "src": "11893:13:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "11893:13:70"
                    }
                  ],
                  "name": "disableReserveStableRate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 15392,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15391,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15424,
                        "src": "11869:13:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15390,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11869:7:70",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11868:15:70"
                  },
                  "returnParameters": {
                    "id": 15395,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11907:0:70"
                  },
                  "scope": 15746,
                  "src": "11835:326:70",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15459,
                    "nodeType": "Block",
                    "src": "12340:222:70",
                    "statements": [
                      {
                        "assignments": [
                          15435
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15435,
                            "mutability": "mutable",
                            "name": "currentConfig",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15459,
                            "src": "12346:54:70",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                              "typeString": "struct DataTypes.ReserveConfigurationMap"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 15434,
                              "name": "DataTypes.ReserveConfigurationMap",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20523,
                              "src": "12346:33:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15440,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15438,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15427,
                              "src": "12425:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15436,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14702,
                              "src": "12403:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 15437,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getConfiguration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6397,
                            "src": "12403:21:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (address) view external returns (struct DataTypes.ReserveConfigurationMap memory)"
                            }
                          },
                          "id": 15439,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12403:28:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12346:85:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 15444,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12462:4:70",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15441,
                              "name": "currentConfig",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15435,
                              "src": "12438:13:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 15443,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setActive",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16317,
                            "src": "12438:23:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$_t_bool_$returns$__$bound_to$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveConfigurationMap memory,bool) pure"
                            }
                          },
                          "id": 15445,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12438:29:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15446,
                        "nodeType": "ExpressionStatement",
                        "src": "12438:29:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15450,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15427,
                              "src": "12496:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15451,
                                "name": "currentConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15435,
                                "src": "12503:13:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                }
                              },
                              "id": 15452,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20522,
                              "src": "12503:18:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15447,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14702,
                              "src": "12474:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 15449,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setConfiguration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6389,
                            "src": "12474:21:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 15453,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12474:48:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15454,
                        "nodeType": "ExpressionStatement",
                        "src": "12474:48:70"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15456,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15427,
                              "src": "12551:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 15455,
                            "name": "ReserveActivated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6822,
                            "src": "12534:16:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 15457,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12534:23:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15458,
                        "nodeType": "EmitStatement",
                        "src": "12529:28:70"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15425,
                    "nodeType": "StructuredDocumentation",
                    "src": "12165:109:70",
                    "text": " @dev Activates a reserve\n @param asset The address of the underlying asset of the reserve*"
                  },
                  "functionSelector": "b75d6f34",
                  "id": 15460,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 15430,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 15429,
                        "name": "onlyPoolAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14717,
                        "src": "12326:13:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "12326:13:70"
                    }
                  ],
                  "name": "activateReserve",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 15428,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15427,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15460,
                        "src": "12302:13:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15426,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12302:7:70",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12301:15:70"
                  },
                  "returnParameters": {
                    "id": 15431,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12340:0:70"
                  },
                  "scope": 15746,
                  "src": "12277:285:70",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15499,
                    "nodeType": "Block",
                    "src": "12745:256:70",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15469,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15463,
                              "src": "12769:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 15468,
                            "name": "_checkNoLiquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15745,
                            "src": "12751:17:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 15470,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12751:24:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15471,
                        "nodeType": "ExpressionStatement",
                        "src": "12751:24:70"
                      },
                      {
                        "assignments": [
                          15475
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15475,
                            "mutability": "mutable",
                            "name": "currentConfig",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15499,
                            "src": "12782:54:70",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                              "typeString": "struct DataTypes.ReserveConfigurationMap"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 15474,
                              "name": "DataTypes.ReserveConfigurationMap",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20523,
                              "src": "12782:33:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15480,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15478,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15463,
                              "src": "12861:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15476,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14702,
                              "src": "12839:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 15477,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getConfiguration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6397,
                            "src": "12839:21:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (address) view external returns (struct DataTypes.ReserveConfigurationMap memory)"
                            }
                          },
                          "id": 15479,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12839:28:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12782:85:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 15484,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12898:5:70",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15481,
                              "name": "currentConfig",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15475,
                              "src": "12874:13:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 15483,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setActive",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16317,
                            "src": "12874:23:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$_t_bool_$returns$__$bound_to$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveConfigurationMap memory,bool) pure"
                            }
                          },
                          "id": 15485,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12874:30:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15486,
                        "nodeType": "ExpressionStatement",
                        "src": "12874:30:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15490,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15463,
                              "src": "12933:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15491,
                                "name": "currentConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15475,
                                "src": "12940:13:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                }
                              },
                              "id": 15492,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20522,
                              "src": "12940:18:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15487,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14702,
                              "src": "12911:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 15489,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setConfiguration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6389,
                            "src": "12911:21:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 15493,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12911:48:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15494,
                        "nodeType": "ExpressionStatement",
                        "src": "12911:48:70"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15496,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15463,
                              "src": "12990:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 15495,
                            "name": "ReserveDeactivated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6827,
                            "src": "12971:18:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 15497,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12971:25:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15498,
                        "nodeType": "EmitStatement",
                        "src": "12966:30:70"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15461,
                    "nodeType": "StructuredDocumentation",
                    "src": "12566:111:70",
                    "text": " @dev Deactivates a reserve\n @param asset The address of the underlying asset of the reserve*"
                  },
                  "functionSelector": "3e72a454",
                  "id": 15500,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 15466,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 15465,
                        "name": "onlyPoolAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14717,
                        "src": "12731:13:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "12731:13:70"
                    }
                  ],
                  "name": "deactivateReserve",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 15464,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15463,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15500,
                        "src": "12707:13:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15462,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12707:7:70",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12706:15:70"
                  },
                  "returnParameters": {
                    "id": 15467,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12745:0:70"
                  },
                  "scope": 15746,
                  "src": "12680:321:70",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15535,
                    "nodeType": "Block",
                    "src": "13320:219:70",
                    "statements": [
                      {
                        "assignments": [
                          15511
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15511,
                            "mutability": "mutable",
                            "name": "currentConfig",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15535,
                            "src": "13326:54:70",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                              "typeString": "struct DataTypes.ReserveConfigurationMap"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 15510,
                              "name": "DataTypes.ReserveConfigurationMap",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20523,
                              "src": "13326:33:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15516,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15514,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15503,
                              "src": "13405:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15512,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14702,
                              "src": "13383:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 15513,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getConfiguration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6397,
                            "src": "13383:21:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (address) view external returns (struct DataTypes.ReserveConfigurationMap memory)"
                            }
                          },
                          "id": 15515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13383:28:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13326:85:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 15520,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13442:4:70",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15517,
                              "name": "currentConfig",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15511,
                              "src": "13418:13:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 15519,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setFrozen",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16365,
                            "src": "13418:23:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$_t_bool_$returns$__$bound_to$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveConfigurationMap memory,bool) pure"
                            }
                          },
                          "id": 15521,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13418:29:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15522,
                        "nodeType": "ExpressionStatement",
                        "src": "13418:29:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15526,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15503,
                              "src": "13476:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15527,
                                "name": "currentConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15511,
                                "src": "13483:13:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                }
                              },
                              "id": 15528,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20522,
                              "src": "13483:18:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15523,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14702,
                              "src": "13454:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 15525,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setConfiguration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6389,
                            "src": "13454:21:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 15529,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13454:48:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15530,
                        "nodeType": "ExpressionStatement",
                        "src": "13454:48:70"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15532,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15503,
                              "src": "13528:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 15531,
                            "name": "ReserveFrozen",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6832,
                            "src": "13514:13:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 15533,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13514:20:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15534,
                        "nodeType": "EmitStatement",
                        "src": "13509:25:70"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15501,
                    "nodeType": "StructuredDocumentation",
                    "src": "13005:251:70",
                    "text": " @dev Freezes a reserve. A frozen reserve doesn't allow any new deposit, borrow or rate swap\n  but allows repayments, liquidations, rate rebalances and withdrawals\n @param asset The address of the underlying asset of the reserve*"
                  },
                  "functionSelector": "7aca76eb",
                  "id": 15536,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 15506,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 15505,
                        "name": "onlyPoolAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14717,
                        "src": "13306:13:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "13306:13:70"
                    }
                  ],
                  "name": "freezeReserve",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 15504,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15503,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15536,
                        "src": "13282:13:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15502,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13282:7:70",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13281:15:70"
                  },
                  "returnParameters": {
                    "id": 15507,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13320:0:70"
                  },
                  "scope": 15746,
                  "src": "13259:280:70",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15571,
                    "nodeType": "Block",
                    "src": "13718:222:70",
                    "statements": [
                      {
                        "assignments": [
                          15547
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15547,
                            "mutability": "mutable",
                            "name": "currentConfig",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15571,
                            "src": "13724:54:70",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                              "typeString": "struct DataTypes.ReserveConfigurationMap"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 15546,
                              "name": "DataTypes.ReserveConfigurationMap",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20523,
                              "src": "13724:33:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15552,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15550,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15539,
                              "src": "13803:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15548,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14702,
                              "src": "13781:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 15549,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getConfiguration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6397,
                            "src": "13781:21:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (address) view external returns (struct DataTypes.ReserveConfigurationMap memory)"
                            }
                          },
                          "id": 15551,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13781:28:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13724:85:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 15556,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13840:5:70",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15553,
                              "name": "currentConfig",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15547,
                              "src": "13816:13:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 15555,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setFrozen",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16365,
                            "src": "13816:23:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$_t_bool_$returns$__$bound_to$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveConfigurationMap memory,bool) pure"
                            }
                          },
                          "id": 15557,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13816:30:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15558,
                        "nodeType": "ExpressionStatement",
                        "src": "13816:30:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15562,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15539,
                              "src": "13875:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15563,
                                "name": "currentConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15547,
                                "src": "13882:13:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                }
                              },
                              "id": 15564,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20522,
                              "src": "13882:18:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15559,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14702,
                              "src": "13853:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 15561,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setConfiguration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6389,
                            "src": "13853:21:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 15565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13853:48:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15566,
                        "nodeType": "ExpressionStatement",
                        "src": "13853:48:70"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15568,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15539,
                              "src": "13929:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 15567,
                            "name": "ReserveUnfrozen",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6837,
                            "src": "13913:15:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 15569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13913:22:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15570,
                        "nodeType": "EmitStatement",
                        "src": "13908:27:70"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15537,
                    "nodeType": "StructuredDocumentation",
                    "src": "13543:109:70",
                    "text": " @dev Unfreezes a reserve\n @param asset The address of the underlying asset of the reserve*"
                  },
                  "functionSelector": "ef1f9373",
                  "id": 15572,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 15542,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 15541,
                        "name": "onlyPoolAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14717,
                        "src": "13704:13:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "13704:13:70"
                    }
                  ],
                  "name": "unfreezeReserve",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 15540,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15539,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15572,
                        "src": "13680:13:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15538,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13680:7:70",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13679:15:70"
                  },
                  "returnParameters": {
                    "id": 15543,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13718:0:70"
                  },
                  "scope": 15746,
                  "src": "13655:285:70",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15610,
                    "nodeType": "Block",
                    "src": "14227:257:70",
                    "statements": [
                      {
                        "assignments": [
                          15585
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15585,
                            "mutability": "mutable",
                            "name": "currentConfig",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15610,
                            "src": "14233:54:70",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                              "typeString": "struct DataTypes.ReserveConfigurationMap"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 15584,
                              "name": "DataTypes.ReserveConfigurationMap",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20523,
                              "src": "14233:33:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15590,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15588,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15575,
                              "src": "14312:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15586,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14702,
                              "src": "14290:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 15587,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getConfiguration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6397,
                            "src": "14290:21:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (address) view external returns (struct DataTypes.ReserveConfigurationMap memory)"
                            }
                          },
                          "id": 15589,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14290:28:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14233:85:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15594,
                              "name": "reserveFactor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15577,
                              "src": "14356:13:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15591,
                              "name": "currentConfig",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15585,
                              "src": "14325:13:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 15593,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setReserveFactor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16511,
                            "src": "14325:30:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_ReserveConfigurationMap_$20523_memory_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveConfigurationMap memory,uint256) pure"
                            }
                          },
                          "id": 15595,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14325:45:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15596,
                        "nodeType": "ExpressionStatement",
                        "src": "14325:45:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15600,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15575,
                              "src": "14399:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15601,
                                "name": "currentConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15585,
                                "src": "14406:13:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                }
                              },
                              "id": 15602,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20522,
                              "src": "14406:18:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15597,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14702,
                              "src": "14377:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 15599,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setConfiguration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6389,
                            "src": "14377:21:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 15603,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14377:48:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15604,
                        "nodeType": "ExpressionStatement",
                        "src": "14377:48:70"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15606,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15575,
                              "src": "14458:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15607,
                              "name": "reserveFactor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15577,
                              "src": "14465:13:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 15605,
                            "name": "ReserveFactorChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6844,
                            "src": "14437:20:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 15608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14437:42:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15609,
                        "nodeType": "EmitStatement",
                        "src": "14432:47:70"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15573,
                    "nodeType": "StructuredDocumentation",
                    "src": "13944:193:70",
                    "text": " @dev Updates the reserve factor of a reserve\n @param asset The address of the underlying asset of the reserve\n @param reserveFactor The new reserve factor of the reserve*"
                  },
                  "functionSelector": "4b4e6753",
                  "id": 15611,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 15580,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 15579,
                        "name": "onlyPoolAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14717,
                        "src": "14213:13:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "14213:13:70"
                    }
                  ],
                  "name": "setReserveFactor",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 15578,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15575,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15611,
                        "src": "14166:13:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15574,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14166:7:70",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15577,
                        "mutability": "mutable",
                        "name": "reserveFactor",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15611,
                        "src": "14181:21:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15576,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14181:7:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14165:38:70"
                  },
                  "returnParameters": {
                    "id": 15581,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14227:0:70"
                  },
                  "scope": 15746,
                  "src": "14140:344:70",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15633,
                    "nodeType": "Block",
                    "src": "14831:154:70",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15624,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15614,
                              "src": "14880:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15625,
                              "name": "rateStrategyAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15616,
                              "src": "14887:19:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15621,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14702,
                              "src": "14837:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 15623,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setReserveInterestRateStrategyAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6382,
                            "src": "14837:42:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address) external"
                            }
                          },
                          "id": 15626,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14837:70:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15627,
                        "nodeType": "ExpressionStatement",
                        "src": "14837:70:70"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15629,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15614,
                              "src": "14953:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15630,
                              "name": "rateStrategyAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15616,
                              "src": "14960:19:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 15628,
                            "name": "ReserveInterestRateStrategyChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6858,
                            "src": "14918:34:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 15631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14918:62:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15632,
                        "nodeType": "EmitStatement",
                        "src": "14913:67:70"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15612,
                    "nodeType": "StructuredDocumentation",
                    "src": "14488:216:70",
                    "text": " @dev Sets the interest rate strategy of a reserve\n @param asset The address of the underlying asset of the reserve\n @param rateStrategyAddress The new address of the interest strategy contract*"
                  },
                  "functionSelector": "1d2118f9",
                  "id": 15634,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 15619,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 15618,
                        "name": "onlyPoolAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14717,
                        "src": "14815:13:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "14815:13:70"
                    }
                  ],
                  "name": "setReserveInterestRateStrategyAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 15617,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15614,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15634,
                        "src": "14754:13:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15613,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14754:7:70",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15616,
                        "mutability": "mutable",
                        "name": "rateStrategyAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15634,
                        "src": "14769:27:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15615,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14769:7:70",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14753:44:70"
                  },
                  "returnParameters": {
                    "id": 15620,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14831:0:70"
                  },
                  "scope": 15746,
                  "src": "14707:278:70",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15648,
                    "nodeType": "Block",
                    "src": "15220:29:70",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15645,
                              "name": "val",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15637,
                              "src": "15240:3:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15642,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14702,
                              "src": "15226:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 15644,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setPause",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6460,
                            "src": "15226:13:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bool_$returns$__$",
                              "typeString": "function (bool) external"
                            }
                          },
                          "id": 15646,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15226:18:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15647,
                        "nodeType": "ExpressionStatement",
                        "src": "15226:18:70"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15635,
                    "nodeType": "StructuredDocumentation",
                    "src": "14989:168:70",
                    "text": " @dev pauses or unpauses all the actions of the protocol, including aToken transfers\n @param val true if protocol needs to be paused, false otherwise*"
                  },
                  "functionSelector": "7641f3d9",
                  "id": 15649,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 15640,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 15639,
                        "name": "onlyEmergencyAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14732,
                        "src": "15201:18:70",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "15201:18:70"
                    }
                  ],
                  "name": "setPoolPause",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 15638,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15637,
                        "mutability": "mutable",
                        "name": "val",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15649,
                        "src": "15182:8:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 15636,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "15182:4:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15181:10:70"
                  },
                  "returnParameters": {
                    "id": 15641,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15220:0:70"
                  },
                  "scope": 15746,
                  "src": "15160:89:70",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15680,
                    "nodeType": "Block",
                    "src": "15368:216:70",
                    "statements": [
                      {
                        "assignments": [
                          15659
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15659,
                            "mutability": "mutable",
                            "name": "proxy",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15680,
                            "src": "15374:52:70",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938",
                              "typeString": "contract InitializableImmutableAdminUpgradeabilityProxy"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 15658,
                              "name": "InitializableImmutableAdminUpgradeabilityProxy",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 15938,
                              "src": "15374:46:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938",
                                "typeString": "contract InitializableImmutableAdminUpgradeabilityProxy"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15667,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 15664,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "15494:4:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_LendingPoolConfigurator_$15746",
                                    "typeString": "contract LendingPoolConfigurator"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_LendingPoolConfigurator_$15746",
                                    "typeString": "contract LendingPoolConfigurator"
                                  }
                                ],
                                "id": 15663,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "15486:7:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 15662,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "15486:7:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 15665,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15486:13:70",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 15661,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "15435:50:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938_$",
                              "typeString": "function (address) returns (contract InitializableImmutableAdminUpgradeabilityProxy)"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 15660,
                              "name": "InitializableImmutableAdminUpgradeabilityProxy",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 15938,
                              "src": "15439:46:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938",
                                "typeString": "contract InitializableImmutableAdminUpgradeabilityProxy"
                              }
                            }
                          },
                          "id": 15666,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15435:65:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938",
                            "typeString": "contract InitializableImmutableAdminUpgradeabilityProxy"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15374:126:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15671,
                              "name": "implementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15651,
                              "src": "15524:14:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15672,
                              "name": "initParams",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15653,
                              "src": "15540:10:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15668,
                              "name": "proxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15659,
                              "src": "15507:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938",
                                "typeString": "contract InitializableImmutableAdminUpgradeabilityProxy"
                              }
                            },
                            "id": 15670,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "initialize",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4921,
                            "src": "15507:16:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,bytes memory) payable external"
                            }
                          },
                          "id": 15673,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15507:44:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15674,
                        "nodeType": "ExpressionStatement",
                        "src": "15507:44:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15677,
                              "name": "proxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15659,
                              "src": "15573:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938",
                                "typeString": "contract InitializableImmutableAdminUpgradeabilityProxy"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938",
                                "typeString": "contract InitializableImmutableAdminUpgradeabilityProxy"
                              }
                            ],
                            "id": 15676,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "15565:7:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 15675,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "15565:7:70",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 15678,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15565:14:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 15657,
                        "id": 15679,
                        "nodeType": "Return",
                        "src": "15558:21:70"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 15681,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_initTokenWithProxy",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 15654,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15651,
                        "mutability": "mutable",
                        "name": "implementation",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15681,
                        "src": "15282:22:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15650,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15282:7:70",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15653,
                        "mutability": "mutable",
                        "name": "initParams",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15681,
                        "src": "15306:23:70",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 15652,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "15306:5:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15281:49:70"
                  },
                  "returnParameters": {
                    "id": 15657,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15656,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15681,
                        "src": "15357:7:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15655,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15357:7:70",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15356:9:70"
                  },
                  "scope": 15746,
                  "src": "15253:331:70",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 15706,
                    "nodeType": "Block",
                    "src": "15721:198:70",
                    "statements": [
                      {
                        "assignments": [
                          15691
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15691,
                            "mutability": "mutable",
                            "name": "proxy",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15706,
                            "src": "15727:52:70",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938",
                              "typeString": "contract InitializableImmutableAdminUpgradeabilityProxy"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 15690,
                              "name": "InitializableImmutableAdminUpgradeabilityProxy",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 15938,
                              "src": "15727:46:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938",
                                "typeString": "contract InitializableImmutableAdminUpgradeabilityProxy"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15698,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 15695,
                                  "name": "proxyAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15683,
                                  "src": "15843:12:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 15694,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "15835:8:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_payable_$",
                                  "typeString": "type(address payable)"
                                },
                                "typeName": {
                                  "id": 15693,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "15835:8:70",
                                  "stateMutability": "payable",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 15696,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15835:21:70",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 15692,
                            "name": "InitializableImmutableAdminUpgradeabilityProxy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15938,
                            "src": "15788:46:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938_$",
                              "typeString": "type(contract InitializableImmutableAdminUpgradeabilityProxy)"
                            }
                          },
                          "id": 15697,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15788:69:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938",
                            "typeString": "contract InitializableImmutableAdminUpgradeabilityProxy"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15727:130:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15702,
                              "name": "implementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15685,
                              "src": "15887:14:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15703,
                              "name": "initParams",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15687,
                              "src": "15903:10:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15699,
                              "name": "proxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15691,
                              "src": "15864:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_InitializableImmutableAdminUpgradeabilityProxy_$15938",
                                "typeString": "contract InitializableImmutableAdminUpgradeabilityProxy"
                              }
                            },
                            "id": 15701,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "upgradeToAndCall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15886,
                            "src": "15864:22:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,bytes memory) payable external"
                            }
                          },
                          "id": 15704,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15864:50:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15705,
                        "nodeType": "ExpressionStatement",
                        "src": "15864:50:70"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 15707,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_upgradeTokenImplementation",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 15688,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15683,
                        "mutability": "mutable",
                        "name": "proxyAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15707,
                        "src": "15630:20:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15682,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15630:7:70",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15685,
                        "mutability": "mutable",
                        "name": "implementation",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15707,
                        "src": "15656:22:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15684,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15656:7:70",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15687,
                        "mutability": "mutable",
                        "name": "initParams",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15707,
                        "src": "15684:23:70",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 15686,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "15684:5:70",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15624:87:70"
                  },
                  "returnParameters": {
                    "id": 15689,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15721:0:70"
                  },
                  "scope": 15746,
                  "src": "15588:331:70",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 15744,
                    "nodeType": "Block",
                    "src": "15979:308:70",
                    "statements": [
                      {
                        "assignments": [
                          15715
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15715,
                            "mutability": "mutable",
                            "name": "reserveData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15744,
                            "src": "15985:40:70",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                              "typeString": "struct DataTypes.ReserveData"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 15714,
                              "name": "DataTypes.ReserveData",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 20520,
                              "src": "15985:21:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15720,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15718,
                              "name": "asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15709,
                              "src": "16048:5:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15716,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14702,
                              "src": "16028:4:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 15717,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getReserveData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6429,
                            "src": "16028:19:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_ReserveData_$20520_memory_ptr_$",
                              "typeString": "function (address) view external returns (struct DataTypes.ReserveData memory)"
                            }
                          },
                          "id": 15719,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16028:26:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                            "typeString": "struct DataTypes.ReserveData memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15985:69:70"
                      },
                      {
                        "assignments": [
                          15722
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15722,
                            "mutability": "mutable",
                            "name": "availableLiquidity",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15744,
                            "src": "16061:26:70",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 15721,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16061:7:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15730,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15727,
                                "name": "reserveData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15715,
                                "src": "16122:11:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                  "typeString": "struct DataTypes.ReserveData memory"
                                }
                              },
                              "id": 15728,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "aTokenAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20511,
                              "src": "16122:25:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 15724,
                                  "name": "asset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15709,
                                  "src": "16105:5:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 15723,
                                "name": "IERC20Detailed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4034,
                                "src": "16090:14:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20Detailed_$4034_$",
                                  "typeString": "type(contract IERC20Detailed)"
                                }
                              },
                              "id": 15725,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16090:21:70",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Detailed_$4034",
                                "typeString": "contract IERC20Detailed"
                              }
                            },
                            "id": 15726,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3951,
                            "src": "16090:31:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 15729,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16090:58:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16061:87:70"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 15739,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 15734,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 15732,
                                  "name": "availableLiquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15722,
                                  "src": "16170:18:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 15733,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16192:1:70",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "16170:23:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                "id": 15738,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 15735,
                                    "name": "reserveData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15715,
                                    "src": "16197:11:70",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                      "typeString": "struct DataTypes.ReserveData memory"
                                    }
                                  },
                                  "id": 15736,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "currentLiquidityRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20503,
                                  "src": "16197:32:70",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 15737,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16233:1:70",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "16197:37:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "16170:64:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 15740,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "16242:6:70",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 15741,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "LPC_RESERVE_LIQUIDITY_NOT_0",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17092,
                              "src": "16242:34:70",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 15731,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "16155:7:70",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 15742,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16155:127:70",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15743,
                        "nodeType": "ExpressionStatement",
                        "src": "16155:127:70"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 15745,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_checkNoLiquidity",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 15710,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15709,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15745,
                        "src": "15950:13:70",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15708,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15950:7:70",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15949:15:70"
                  },
                  "returnParameters": {
                    "id": 15711,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15979:0:70"
                  },
                  "scope": 15746,
                  "src": "15923:364:70",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 15747,
              "src": "1440:14849:70"
            }
          ],
          "src": "37:16253:70"
        },
        "id": 70
      },
      "contracts/protocol/lendingpool/LendingPoolStorage.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/lendingpool/LendingPoolStorage.sol",
          "exportedSymbols": {
            "LendingPoolStorage": [
              15792
            ]
          },
          "id": 15793,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 15748,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:71"
            },
            {
              "absolutePath": "contracts/protocol/libraries/configuration/UserConfiguration.sol",
              "file": "../libraries/configuration/UserConfiguration.sol",
              "id": 15750,
              "nodeType": "ImportDirective",
              "scope": 15793,
              "sourceUnit": 16985,
              "src": "62:83:71",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 15749,
                    "name": "UserConfiguration",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:17:71",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/configuration/ReserveConfiguration.sol",
              "file": "../libraries/configuration/ReserveConfiguration.sol",
              "id": 15752,
              "nodeType": "ImportDirective",
              "scope": 15793,
              "sourceUnit": 16742,
              "src": "146:89:71",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 15751,
                    "name": "ReserveConfiguration",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "154:20:71",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/logic/ReserveLogic.sol",
              "file": "../libraries/logic/ReserveLogic.sol",
              "id": 15754,
              "nodeType": "ImportDirective",
              "scope": 15793,
              "sourceUnit": 18796,
              "src": "236:65:71",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 15753,
                    "name": "ReserveLogic",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "244:12:71",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPoolAddressesProvider.sol",
              "file": "../../interfaces/ILendingPoolAddressesProvider.sol",
              "id": 15756,
              "nodeType": "ImportDirective",
              "scope": 15793,
              "sourceUnit": 6618,
              "src": "302:97:71",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 15755,
                    "name": "ILendingPoolAddressesProvider",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "310:29:71",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/types/DataTypes.sol",
              "file": "../libraries/types/DataTypes.sol",
              "id": 15758,
              "nodeType": "ImportDirective",
              "scope": 15793,
              "sourceUnit": 20532,
              "src": "400:59:71",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 15757,
                    "name": "DataTypes",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "408:9:71",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 15792,
              "linearizedBaseContracts": [
                15792
              ],
              "name": "LendingPoolStorage",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 15761,
                  "libraryName": {
                    "contractScope": null,
                    "id": 15759,
                    "name": "ReserveLogic",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 18795,
                    "src": "499:12:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ReserveLogic_$18795",
                      "typeString": "library ReserveLogic"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "493:45:71",
                  "typeName": {
                    "contractScope": null,
                    "id": 15760,
                    "name": "DataTypes.ReserveData",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20520,
                    "src": "516:21:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                      "typeString": "struct DataTypes.ReserveData"
                    }
                  }
                },
                {
                  "id": 15764,
                  "libraryName": {
                    "contractScope": null,
                    "id": 15762,
                    "name": "ReserveConfiguration",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16741,
                    "src": "547:20:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ReserveConfiguration_$16741",
                      "typeString": "library ReserveConfiguration"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "541:65:71",
                  "typeName": {
                    "contractScope": null,
                    "id": 15763,
                    "name": "DataTypes.ReserveConfigurationMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20523,
                    "src": "572:33:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                      "typeString": "struct DataTypes.ReserveConfigurationMap"
                    }
                  }
                },
                {
                  "id": 15767,
                  "libraryName": {
                    "contractScope": null,
                    "id": 15765,
                    "name": "UserConfiguration",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16984,
                    "src": "615:17:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UserConfiguration_$16984",
                      "typeString": "library UserConfiguration"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "609:59:71",
                  "typeName": {
                    "contractScope": null,
                    "id": 15766,
                    "name": "DataTypes.UserConfigurationMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20526,
                    "src": "637:30:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                      "typeString": "struct DataTypes.UserConfigurationMap"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 15769,
                  "mutability": "mutable",
                  "name": "_addressesProvider",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 15792,
                  "src": "672:57:71",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                    "typeString": "contract ILendingPoolAddressesProvider"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 15768,
                    "name": "ILendingPoolAddressesProvider",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6617,
                    "src": "672:29:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                      "typeString": "contract ILendingPoolAddressesProvider"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15773,
                  "mutability": "mutable",
                  "name": "_reserves",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 15792,
                  "src": "734:60:71",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                    "typeString": "mapping(address => struct DataTypes.ReserveData)"
                  },
                  "typeName": {
                    "id": 15772,
                    "keyType": {
                      "id": 15770,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "742:7:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "734:41:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                      "typeString": "mapping(address => struct DataTypes.ReserveData)"
                    },
                    "valueType": {
                      "contractScope": null,
                      "id": 15771,
                      "name": "DataTypes.ReserveData",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 20520,
                      "src": "753:21:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                        "typeString": "struct DataTypes.ReserveData"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15777,
                  "mutability": "mutable",
                  "name": "_usersConfig",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 15792,
                  "src": "798:72:71",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserConfigurationMap_$20526_storage_$",
                    "typeString": "mapping(address => struct DataTypes.UserConfigurationMap)"
                  },
                  "typeName": {
                    "id": 15776,
                    "keyType": {
                      "id": 15774,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "806:7:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "798:50:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserConfigurationMap_$20526_storage_$",
                      "typeString": "mapping(address => struct DataTypes.UserConfigurationMap)"
                    },
                    "valueType": {
                      "contractScope": null,
                      "id": 15775,
                      "name": "DataTypes.UserConfigurationMap",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 20526,
                      "src": "817:30:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                        "typeString": "struct DataTypes.UserConfigurationMap"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15781,
                  "mutability": "mutable",
                  "name": "_reservesList",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 15792,
                  "src": "964:50:71",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                    "typeString": "mapping(uint256 => address)"
                  },
                  "typeName": {
                    "id": 15780,
                    "keyType": {
                      "id": 15778,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "972:7:71",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "964:27:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                      "typeString": "mapping(uint256 => address)"
                    },
                    "valueType": {
                      "id": 15779,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "983:7:71",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15783,
                  "mutability": "mutable",
                  "name": "_reservesCount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 15792,
                  "src": "1019:31:71",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15782,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1019:7:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15785,
                  "mutability": "mutable",
                  "name": "_paused",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 15792,
                  "src": "1055:21:71",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15784,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1055:4:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15787,
                  "mutability": "mutable",
                  "name": "_maxStableRateBorrowSizePercent",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 15792,
                  "src": "1081:48:71",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15786,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1081:7:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15789,
                  "mutability": "mutable",
                  "name": "_flashLoanPremiumTotal",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 15792,
                  "src": "1134:39:71",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15788,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1134:7:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15791,
                  "mutability": "mutable",
                  "name": "_maxNumberOfReserves",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 15792,
                  "src": "1178:37:71",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15790,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1178:7:71",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "scope": 15793,
              "src": "461:757:71"
            }
          ],
          "src": "37:1182:71"
        },
        "id": 71
      },
      "contracts/protocol/libraries/aave-upgradeability/BaseImmutableAdminUpgradeabilityProxy.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/libraries/aave-upgradeability/BaseImmutableAdminUpgradeabilityProxy.sol",
          "exportedSymbols": {
            "BaseImmutableAdminUpgradeabilityProxy": [
              15906
            ]
          },
          "id": 15907,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 15794,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:72"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/upgradeability/BaseUpgradeabilityProxy.sol",
              "file": "../../../dependencies/openzeppelin/upgradeability/BaseUpgradeabilityProxy.sol",
              "id": 15795,
              "nodeType": "ImportDirective",
              "scope": 15907,
              "sourceUnit": 4789,
              "src": "62:87:72",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 15797,
                    "name": "BaseUpgradeabilityProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4788,
                    "src": "731:23:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BaseUpgradeabilityProxy_$4788",
                      "typeString": "contract BaseUpgradeabilityProxy"
                    }
                  },
                  "id": 15798,
                  "nodeType": "InheritanceSpecifier",
                  "src": "731:23:72"
                }
              ],
              "contractDependencies": [
                4788,
                4966
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 15796,
                "nodeType": "StructuredDocumentation",
                "src": "151:529:72",
                "text": " @title BaseImmutableAdminUpgradeabilityProxy\n @author Aave, inspired by the OpenZeppelin upgradeability proxy pattern\n @dev This contract combines an upgradeability proxy with an authorization\n mechanism for administrative tasks. The admin role is stored in an immutable, which\n helps saving transactions costs\n All external functions in this contract must be guarded by the\n `ifAdmin` modifier. See ethereum/solidity#3864 for a Solidity\n feature proposal that would enable this to be done automatically."
              },
              "fullyImplemented": true,
              "id": 15906,
              "linearizedBaseContracts": [
                15906,
                4788,
                4966
              ],
              "name": "BaseImmutableAdminUpgradeabilityProxy",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 15800,
                  "mutability": "immutable",
                  "name": "ADMIN",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 15906,
                  "src": "759:23:72",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15799,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "759:7:72",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 15809,
                    "nodeType": "Block",
                    "src": "821:24:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 15807,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 15805,
                            "name": "ADMIN",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15800,
                            "src": "827:5:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 15806,
                            "name": "admin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15802,
                            "src": "835:5:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "827:13:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 15808,
                        "nodeType": "ExpressionStatement",
                        "src": "827:13:72"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 15810,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 15803,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15802,
                        "mutability": "mutable",
                        "name": "admin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15810,
                        "src": "799:13:72",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15801,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "799:7:72",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "798:15:72"
                  },
                  "returnParameters": {
                    "id": 15804,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "821:0:72"
                  },
                  "scope": 15906,
                  "src": "787:58:72",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 15823,
                    "nodeType": "Block",
                    "src": "868:83:72",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 15815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 15812,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "878:3:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 15813,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "878:10:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 15814,
                            "name": "ADMIN",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15800,
                            "src": "892:5:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "878:19:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 15821,
                          "nodeType": "Block",
                          "src": "921:26:72",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 15818,
                                  "name": "_fallback",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4965,
                                  "src": "929:9:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                    "typeString": "function ()"
                                  }
                                },
                                "id": 15819,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "929:11:72",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 15820,
                              "nodeType": "ExpressionStatement",
                              "src": "929:11:72"
                            }
                          ]
                        },
                        "id": 15822,
                        "nodeType": "IfStatement",
                        "src": "874:73:72",
                        "trueBody": {
                          "id": 15817,
                          "nodeType": "Block",
                          "src": "899:16:72",
                          "statements": [
                            {
                              "id": 15816,
                              "nodeType": "PlaceholderStatement",
                              "src": "907:1:72"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 15824,
                  "name": "ifAdmin",
                  "nodeType": "ModifierDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 15811,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "865:2:72"
                  },
                  "src": "849:102:72",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 15834,
                    "nodeType": "Block",
                    "src": "1064:23:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 15832,
                          "name": "ADMIN",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15800,
                          "src": "1077:5:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 15831,
                        "id": 15833,
                        "nodeType": "Return",
                        "src": "1070:12:72"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15825,
                    "nodeType": "StructuredDocumentation",
                    "src": "955:54:72",
                    "text": " @return The address of the proxy admin."
                  },
                  "functionSelector": "f851a440",
                  "id": 15835,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 15828,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 15827,
                        "name": "ifAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15824,
                        "src": "1038:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1038:7:72"
                    }
                  ],
                  "name": "admin",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 15826,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1026:2:72"
                  },
                  "returnParameters": {
                    "id": 15831,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15830,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15835,
                        "src": "1055:7:72",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15829,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1055:7:72",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1054:9:72"
                  },
                  "scope": 15906,
                  "src": "1012:75:72",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15846,
                    "nodeType": "Block",
                    "src": "1212:35:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 15843,
                            "name": "_implementation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4752
                            ],
                            "referencedDeclaration": 4752,
                            "src": "1225:15:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 15844,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1225:17:72",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 15842,
                        "id": 15845,
                        "nodeType": "Return",
                        "src": "1218:24:72"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15836,
                    "nodeType": "StructuredDocumentation",
                    "src": "1091:57:72",
                    "text": " @return The address of the implementation."
                  },
                  "functionSelector": "5c60da1b",
                  "id": 15847,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 15839,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 15838,
                        "name": "ifAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15824,
                        "src": "1186:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1186:7:72"
                    }
                  ],
                  "name": "implementation",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 15837,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1174:2:72"
                  },
                  "returnParameters": {
                    "id": 15842,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15841,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15847,
                        "src": "1203:7:72",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15840,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1203:7:72",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1202:9:72"
                  },
                  "scope": 15906,
                  "src": "1151:96:72",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15859,
                    "nodeType": "Block",
                    "src": "1494:40:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15856,
                              "name": "newImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15850,
                              "src": "1511:17:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 15855,
                            "name": "_upgradeTo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4767,
                            "src": "1500:10:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 15857,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1500:29:72",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15858,
                        "nodeType": "ExpressionStatement",
                        "src": "1500:29:72"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15848,
                    "nodeType": "StructuredDocumentation",
                    "src": "1251:177:72",
                    "text": " @dev Upgrade the backing implementation of the proxy.\n Only the admin can call this function.\n @param newImplementation Address of the new implementation."
                  },
                  "functionSelector": "3659cfe6",
                  "id": 15860,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 15853,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 15852,
                        "name": "ifAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15824,
                        "src": "1486:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1486:7:72"
                    }
                  ],
                  "name": "upgradeTo",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 15851,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15850,
                        "mutability": "mutable",
                        "name": "newImplementation",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15860,
                        "src": "1450:25:72",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15849,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1450:7:72",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1449:27:72"
                  },
                  "returnParameters": {
                    "id": 15854,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1494:0:72"
                  },
                  "scope": 15906,
                  "src": "1431:103:72",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15885,
                    "nodeType": "Block",
                    "src": "2164:123:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15871,
                              "name": "newImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15863,
                              "src": "2181:17:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 15870,
                            "name": "_upgradeTo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4767,
                            "src": "2170:10:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 15872,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2170:29:72",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15873,
                        "nodeType": "ExpressionStatement",
                        "src": "2170:29:72"
                      },
                      {
                        "assignments": [
                          15875,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15875,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15885,
                            "src": "2206:12:72",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 15874,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2206:4:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 15880,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15878,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15865,
                              "src": "2255:4:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15876,
                              "name": "newImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15863,
                              "src": "2224:17:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 15877,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "delegatecall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2224:30:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) returns (bool,bytes memory)"
                            }
                          },
                          "id": 15879,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2224:36:72",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2205:55:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15882,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15875,
                              "src": "2274:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 15881,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2266:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 15883,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2266:16:72",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15884,
                        "nodeType": "ExpressionStatement",
                        "src": "2266:16:72"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15861,
                    "nodeType": "StructuredDocumentation",
                    "src": "1538:510:72",
                    "text": " @dev Upgrade the backing implementation of the proxy and call a function\n on the new implementation.\n This is useful to initialize the proxied contract.\n @param newImplementation Address of the new implementation.\n @param data Data to send as msg.data in the low level call.\n It should include the signature and the parameters of the function to be called, as described in\n https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding."
                  },
                  "functionSelector": "4f1ef286",
                  "id": 15886,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 15868,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 15867,
                        "name": "ifAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15824,
                        "src": "2154:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2154:7:72"
                    }
                  ],
                  "name": "upgradeToAndCall",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 15866,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15863,
                        "mutability": "mutable",
                        "name": "newImplementation",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15886,
                        "src": "2077:25:72",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15862,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2077:7:72",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15865,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15886,
                        "src": "2104:19:72",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 15864,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2104:5:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2076:48:72"
                  },
                  "returnParameters": {
                    "id": 15869,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2164:0:72"
                  },
                  "scope": 15906,
                  "src": "2051:236:72",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    4952
                  ],
                  "body": {
                    "id": 15904,
                    "nodeType": "Block",
                    "src": "2413:120:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 15895,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 15892,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "2427:3:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 15893,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2427:10:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 15894,
                                "name": "ADMIN",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15800,
                                "src": "2441:5:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2427:19:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e",
                              "id": 15896,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2448:52:72",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_08b466bde770d6d309a22d90ec051a62ad397be6218a53e741989877ec297fc9",
                                "typeString": "literal_string \"Cannot call fallback function from the proxy admin\""
                              },
                              "value": "Cannot call fallback function from the proxy admin"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_08b466bde770d6d309a22d90ec051a62ad397be6218a53e741989877ec297fc9",
                                "typeString": "literal_string \"Cannot call fallback function from the proxy admin\""
                              }
                            ],
                            "id": 15891,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2419:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 15897,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2419:82:72",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15898,
                        "nodeType": "ExpressionStatement",
                        "src": "2419:82:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15899,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "2507:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_BaseImmutableAdminUpgradeabilityProxy_$15906",
                                "typeString": "contract super BaseImmutableAdminUpgradeabilityProxy"
                              }
                            },
                            "id": 15901,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_willFallback",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4952,
                            "src": "2507:19:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 15902,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2507:21:72",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15903,
                        "nodeType": "ExpressionStatement",
                        "src": "2507:21:72"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15887,
                    "nodeType": "StructuredDocumentation",
                    "src": "2291:68:72",
                    "text": " @dev Only fall back when the sender is not the admin."
                  },
                  "id": 15905,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_willFallback",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 15889,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2404:8:72"
                  },
                  "parameters": {
                    "id": 15888,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2384:2:72"
                  },
                  "returnParameters": {
                    "id": 15890,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2413:0:72"
                  },
                  "scope": 15906,
                  "src": "2362:171:72",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 15907,
              "src": "681:1854:72"
            }
          ],
          "src": "37:2499:72"
        },
        "id": 72
      },
      "contracts/protocol/libraries/aave-upgradeability/InitializableImmutableAdminUpgradeabilityProxy.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/libraries/aave-upgradeability/InitializableImmutableAdminUpgradeabilityProxy.sol",
          "exportedSymbols": {
            "InitializableImmutableAdminUpgradeabilityProxy": [
              15938
            ]
          },
          "id": 15939,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 15908,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:73"
            },
            {
              "absolutePath": "contracts/protocol/libraries/aave-upgradeability/BaseImmutableAdminUpgradeabilityProxy.sol",
              "file": "./BaseImmutableAdminUpgradeabilityProxy.sol",
              "id": 15909,
              "nodeType": "ImportDirective",
              "scope": 15939,
              "sourceUnit": 15907,
              "src": "62:53:73",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/upgradeability/InitializableUpgradeabilityProxy.sol",
              "file": "../../../dependencies/openzeppelin/upgradeability/InitializableUpgradeabilityProxy.sol",
              "id": 15910,
              "nodeType": "ImportDirective",
              "scope": 15939,
              "sourceUnit": 4923,
              "src": "116:96:73",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 15912,
                    "name": "BaseImmutableAdminUpgradeabilityProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 15906,
                    "src": "405:37:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BaseImmutableAdminUpgradeabilityProxy_$15906",
                      "typeString": "contract BaseImmutableAdminUpgradeabilityProxy"
                    }
                  },
                  "id": 15913,
                  "nodeType": "InheritanceSpecifier",
                  "src": "405:37:73"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 15914,
                    "name": "InitializableUpgradeabilityProxy",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4922,
                    "src": "446:32:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_InitializableUpgradeabilityProxy_$4922",
                      "typeString": "contract InitializableUpgradeabilityProxy"
                    }
                  },
                  "id": 15915,
                  "nodeType": "InheritanceSpecifier",
                  "src": "446:32:73"
                }
              ],
              "contractDependencies": [
                4788,
                4922,
                4966,
                15906
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 15911,
                "nodeType": "StructuredDocumentation",
                "src": "214:129:73",
                "text": " @title InitializableAdminUpgradeabilityProxy\n @dev Extends BaseAdminUpgradeabilityProxy with an initializer function"
              },
              "fullyImplemented": true,
              "id": 15938,
              "linearizedBaseContracts": [
                15938,
                4922,
                15906,
                4788,
                4966
              ],
              "name": "InitializableImmutableAdminUpgradeabilityProxy",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 15923,
                    "nodeType": "Block",
                    "src": "562:2:73",
                    "statements": []
                  },
                  "documentation": null,
                  "id": 15924,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 15920,
                          "name": "admin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15917,
                          "src": "555:5:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 15921,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 15919,
                        "name": "BaseImmutableAdminUpgradeabilityProxy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15906,
                        "src": "517:37:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_BaseImmutableAdminUpgradeabilityProxy_$15906_$",
                          "typeString": "type(contract BaseImmutableAdminUpgradeabilityProxy)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "517:44:73"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 15918,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15917,
                        "mutability": "mutable",
                        "name": "admin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15924,
                        "src": "495:13:73",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15916,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "495:7:73",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "494:15:73"
                  },
                  "returnParameters": {
                    "id": 15922,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "562:0:73"
                  },
                  "scope": 15938,
                  "src": "483:81:73",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4952,
                    15905
                  ],
                  "body": {
                    "id": 15936,
                    "nodeType": "Block",
                    "src": "728:64:73",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 15931,
                              "name": "BaseImmutableAdminUpgradeabilityProxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15906,
                              "src": "734:37:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_BaseImmutableAdminUpgradeabilityProxy_$15906_$",
                                "typeString": "type(contract BaseImmutableAdminUpgradeabilityProxy)"
                              }
                            },
                            "id": 15933,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_willFallback",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15905,
                            "src": "734:51:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 15934,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "734:53:73",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15935,
                        "nodeType": "ExpressionStatement",
                        "src": "734:53:73"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15925,
                    "nodeType": "StructuredDocumentation",
                    "src": "568:68:73",
                    "text": " @dev Only fall back when the sender is not the admin."
                  },
                  "id": 15937,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_willFallback",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 15929,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "contractScope": null,
                        "id": 15927,
                        "name": "BaseImmutableAdminUpgradeabilityProxy",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 15906,
                        "src": "682:37:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BaseImmutableAdminUpgradeabilityProxy_$15906",
                          "typeString": "contract BaseImmutableAdminUpgradeabilityProxy"
                        }
                      },
                      {
                        "contractScope": null,
                        "id": 15928,
                        "name": "Proxy",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4966,
                        "src": "721:5:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Proxy_$4966",
                          "typeString": "contract Proxy"
                        }
                      }
                    ],
                    "src": "673:54:73"
                  },
                  "parameters": {
                    "id": 15926,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "661:2:73"
                  },
                  "returnParameters": {
                    "id": 15930,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "728:0:73"
                  },
                  "scope": 15938,
                  "src": "639:153:73",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 15939,
              "src": "344:450:73"
            }
          ],
          "src": "37:758:73"
        },
        "id": 73
      },
      "contracts/protocol/libraries/aave-upgradeability/VersionedInitializable.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/libraries/aave-upgradeability/VersionedInitializable.sol",
          "exportedSymbols": {
            "VersionedInitializable": [
              16019
            ]
          },
          "id": 16020,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 15940,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:74"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 15941,
                "nodeType": "StructuredDocumentation",
                "src": "62:704:74",
                "text": " @title VersionedInitializable\n @dev Helper contract to implement initializer functions. To use it, replace\n the constructor with a function that has the `initializer` modifier.\n WARNING: Unlike constructors, initializer functions must be manually\n invoked. This applies both to deploying an Initializable contract, as well\n as extending an Initializable contract via inheritance.\n WARNING: When used with inheritance, manual care must be taken to not invoke\n a parent initializer twice, or ensure that all initializers are idempotent,\n because this is not dealt with automatically as with constructors.\n @author Aave, inspired by the OpenZeppelin Initializable contract"
              },
              "fullyImplemented": false,
              "id": 16019,
              "linearizedBaseContracts": [
                16019
              ],
              "name": "VersionedInitializable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "documentation": {
                    "id": 15942,
                    "nodeType": "StructuredDocumentation",
                    "src": "812:69:74",
                    "text": " @dev Indicates that the contract has been initialized."
                  },
                  "id": 15945,
                  "mutability": "mutable",
                  "name": "lastInitializedRevision",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 16019,
                  "src": "884:43:74",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15943,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "884:7:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 15944,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "926:1:74",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 15946,
                    "nodeType": "StructuredDocumentation",
                    "src": "932:87:74",
                    "text": " @dev Indicates that the contract is in the process of being initialized."
                  },
                  "id": 15948,
                  "mutability": "mutable",
                  "name": "initializing",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 16019,
                  "src": "1022:25:74",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15947,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1022:4:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 15992,
                    "nodeType": "Block",
                    "src": "1156:407:74",
                    "statements": [
                      {
                        "assignments": [
                          15952
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15952,
                            "mutability": "mutable",
                            "name": "revision",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15992,
                            "src": "1162:16:74",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 15951,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1162:7:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15955,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 15953,
                            "name": "getRevision",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15999,
                            "src": "1181:11:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                              "typeString": "function () pure returns (uint256)"
                            }
                          },
                          "id": 15954,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1181:13:74",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1162:32:74"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 15964,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 15960,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 15957,
                                  "name": "initializing",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15948,
                                  "src": "1215:12:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 15958,
                                    "name": "isConstructor",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16014,
                                    "src": "1231:13:74",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                      "typeString": "function () view returns (bool)"
                                    }
                                  },
                                  "id": 15959,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1231:15:74",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "1215:31:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 15963,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 15961,
                                  "name": "revision",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15952,
                                  "src": "1250:8:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 15962,
                                  "name": "lastInitializedRevision",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15945,
                                  "src": "1261:23:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1250:34:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1215:69:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564",
                              "id": 15965,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1292:48:74",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9fbba6c4dcac9134893b633b9564f36435b3f927c1d5fa152c5c14b20cecb1a4",
                                "typeString": "literal_string \"Contract instance has already been initialized\""
                              },
                              "value": "Contract instance has already been initialized"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9fbba6c4dcac9134893b633b9564f36435b3f927c1d5fa152c5c14b20cecb1a4",
                                "typeString": "literal_string \"Contract instance has already been initialized\""
                              }
                            ],
                            "id": 15956,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1200:7:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 15966,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1200:146:74",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15967,
                        "nodeType": "ExpressionStatement",
                        "src": "1200:146:74"
                      },
                      {
                        "assignments": [
                          15969
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15969,
                            "mutability": "mutable",
                            "name": "isTopLevelCall",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 15992,
                            "src": "1353:19:74",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 15968,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1353:4:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 15972,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 15971,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "1375:13:74",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 15970,
                            "name": "initializing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15948,
                            "src": "1376:12:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1353:35:74"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 15973,
                          "name": "isTopLevelCall",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15969,
                          "src": "1398:14:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 15983,
                        "nodeType": "IfStatement",
                        "src": "1394:96:74",
                        "trueBody": {
                          "id": 15982,
                          "nodeType": "Block",
                          "src": "1414:76:74",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 15976,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 15974,
                                  "name": "initializing",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15948,
                                  "src": "1422:12:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 15975,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1437:4:74",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "1422:19:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 15977,
                              "nodeType": "ExpressionStatement",
                              "src": "1422:19:74"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 15980,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 15978,
                                  "name": "lastInitializedRevision",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15945,
                                  "src": "1449:23:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 15979,
                                  "name": "revision",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15952,
                                  "src": "1475:8:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1449:34:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 15981,
                              "nodeType": "ExpressionStatement",
                              "src": "1449:34:74"
                            }
                          ]
                        }
                      },
                      {
                        "id": 15984,
                        "nodeType": "PlaceholderStatement",
                        "src": "1496:1:74"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 15985,
                          "name": "isTopLevelCall",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15969,
                          "src": "1508:14:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 15991,
                        "nodeType": "IfStatement",
                        "src": "1504:55:74",
                        "trueBody": {
                          "id": 15990,
                          "nodeType": "Block",
                          "src": "1524:35:74",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 15988,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 15986,
                                  "name": "initializing",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15948,
                                  "src": "1532:12:74",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "66616c7365",
                                  "id": 15987,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1547:5:74",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                "src": "1532:20:74",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 15989,
                              "nodeType": "ExpressionStatement",
                              "src": "1532:20:74"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15949,
                    "nodeType": "StructuredDocumentation",
                    "src": "1052:78:74",
                    "text": " @dev Modifier to use in the initializer function of a contract."
                  },
                  "id": 15993,
                  "name": "initializer",
                  "nodeType": "ModifierDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 15950,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1153:2:74"
                  },
                  "src": "1133:430:74",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 15994,
                    "nodeType": "StructuredDocumentation",
                    "src": "1567:127:74",
                    "text": " @dev returns the revision number of the contract\n Needs to be defined in the inherited class as a constant.*"
                  },
                  "id": 15999,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRevision",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 15995,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1717:2:74"
                  },
                  "returnParameters": {
                    "id": 15998,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15997,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 15999,
                        "src": "1751:7:74",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15996,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1751:7:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1750:9:74"
                  },
                  "scope": 16019,
                  "src": "1697:63:74",
                  "stateMutability": "pure",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16013,
                    "nodeType": "Block",
                    "src": "1911:457:74",
                    "statements": [
                      {
                        "assignments": [
                          16006
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16006,
                            "mutability": "mutable",
                            "name": "cs",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 16013,
                            "src": "2246:10:74",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16005,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2246:7:74",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16007,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2246:10:74"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "2302:42:74",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2310:28:74",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "address",
                                      "nodeType": "YulIdentifier",
                                      "src": "2328:7:74"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2328:9:74"
                                  }
                                ],
                                "functionName": {
                                  "name": "extcodesize",
                                  "nodeType": "YulIdentifier",
                                  "src": "2316:11:74"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2316:22:74"
                              },
                              "variableNames": [
                                {
                                  "name": "cs",
                                  "nodeType": "YulIdentifier",
                                  "src": "2310:2:74"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 16006,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2310:2:74",
                            "valueSize": 1
                          }
                        ],
                        "id": 16008,
                        "nodeType": "InlineAssembly",
                        "src": "2293:51:74"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16011,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 16009,
                            "name": "cs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16006,
                            "src": "2356:2:74",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 16010,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2362:1:74",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2356:7:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 16004,
                        "id": 16012,
                        "nodeType": "Return",
                        "src": "2349:14:74"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16000,
                    "nodeType": "StructuredDocumentation",
                    "src": "1764:91:74",
                    "text": " @dev Returns true if and only if the function is running in the constructor*"
                  },
                  "id": 16014,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isConstructor",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16001,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1880:2:74"
                  },
                  "returnParameters": {
                    "id": 16004,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16003,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16014,
                        "src": "1905:4:74",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16002,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1905:4:74",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1904:6:74"
                  },
                  "scope": 16019,
                  "src": "1858:510:74",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 16018,
                  "mutability": "mutable",
                  "name": "______gap",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 16019,
                  "src": "2443:29:74",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$50_storage",
                    "typeString": "uint256[50]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 16015,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2443:7:74",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 16017,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "3530",
                      "id": 16016,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2451:2:74",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_50_by_1",
                        "typeString": "int_const 50"
                      },
                      "value": "50"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "2443:11:74",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$50_storage_ptr",
                      "typeString": "uint256[50]"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                }
              ],
              "scope": 16020,
              "src": "767:1708:74"
            }
          ],
          "src": "37:2439:74"
        },
        "id": 74
      },
      "contracts/protocol/libraries/configuration/ReserveConfiguration.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/libraries/configuration/ReserveConfiguration.sol",
          "exportedSymbols": {
            "ReserveConfiguration": [
              16741
            ]
          },
          "id": 16742,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 16021,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:75"
            },
            {
              "absolutePath": "contracts/protocol/libraries/helpers/Errors.sol",
              "file": "../helpers/Errors.sol",
              "id": 16023,
              "nodeType": "ImportDirective",
              "scope": 16742,
              "sourceUnit": 17240,
              "src": "62:45:75",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 16022,
                    "name": "Errors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:6:75",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/types/DataTypes.sol",
              "file": "../types/DataTypes.sol",
              "id": 16025,
              "nodeType": "ImportDirective",
              "scope": 16742,
              "sourceUnit": 20532,
              "src": "108:49:75",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 16024,
                    "name": "DataTypes",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "116:9:75",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 16026,
                "nodeType": "StructuredDocumentation",
                "src": "159:137:75",
                "text": " @title ReserveConfiguration library\n @author Aave\n @notice Implements the bitmap logic to handle the reserve configuration"
              },
              "fullyImplemented": true,
              "id": 16741,
              "linearizedBaseContracts": [
                16741
              ],
              "name": "ReserveConfiguration",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 16029,
                  "mutability": "constant",
                  "name": "LTV_MASK",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 16741,
                  "src": "330:112:75",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16027,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "330:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464630303030",
                    "id": 16028,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "376:66:75",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129574400_by_1",
                      "typeString": "int_const 1157...(70 digits omitted)...4400"
                    },
                    "value": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 16032,
                  "mutability": "constant",
                  "name": "LIQUIDATION_THRESHOLD_MASK",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 16741,
                  "src": "465:112:75",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16030,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "465:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646463030303046464646",
                    "id": 16031,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "511:66:75",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007908834738175_by_1",
                      "typeString": "int_const 1157...(70 digits omitted)...8175"
                    },
                    "value": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 16035,
                  "mutability": "constant",
                  "name": "LIQUIDATION_BONUS_MASK",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 16741,
                  "src": "600:112:75",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16033,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "600:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646303030304646464646464646",
                    "id": 16034,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "646:66:75",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457583726442447896575_by_1",
                      "typeString": "int_const 1157...(70 digits omitted)...6575"
                    },
                    "value": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 16038,
                  "mutability": "constant",
                  "name": "DECIMALS_MASK",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 16741,
                  "src": "735:112:75",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16036,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "735:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646463030464646464646464646464646",
                    "id": 16037,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "781:66:75",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457512231794068422655_by_1",
                      "typeString": "int_const 1157...(70 digits omitted)...2655"
                    },
                    "value": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 16041,
                  "mutability": "constant",
                  "name": "ACTIVE_MASK",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 16741,
                  "src": "870:112:75",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16039,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "870:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646454646464646464646464646464646",
                    "id": 16040,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "916:66:75",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457511950319091711999_by_1",
                      "typeString": "int_const 1157...(70 digits omitted)...1999"
                    },
                    "value": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFF"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 16044,
                  "mutability": "constant",
                  "name": "FROZEN_MASK",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 16741,
                  "src": "1005:112:75",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16042,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1005:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646444646464646464646464646464646",
                    "id": 16043,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1051:66:75",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457439892725053784063_by_1",
                      "typeString": "int_const 1157...(70 digits omitted)...4063"
                    },
                    "value": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFFF"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 16047,
                  "mutability": "constant",
                  "name": "BORROWING_MASK",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 16741,
                  "src": "1140:112:75",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16045,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1140:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646424646464646464646464646464646",
                    "id": 16046,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1186:66:75",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457295777536977928191_by_1",
                      "typeString": "int_const 1157...(70 digits omitted)...8191"
                    },
                    "value": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFFFFFFFFFFF"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 16050,
                  "mutability": "constant",
                  "name": "STABLE_BORROWING_MASK",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 16741,
                  "src": "1275:112:75",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16048,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1275:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646374646464646464646464646464646",
                    "id": 16049,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1321:66:75",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457007547160826216447_by_1",
                      "typeString": "int_const 1157...(70 digits omitted)...6447"
                    },
                    "value": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFFFFF"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 16053,
                  "mutability": "constant",
                  "name": "RESERVE_FACTOR_MASK",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 16741,
                  "src": "1410:112:75",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16051,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1410:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646463030303046464646464646464646464646464646",
                    "id": 16052,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1456:66:75",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640562830550211137357664485375_by_1",
                      "typeString": "int_const 1157...(70 digits omitted)...5375"
                    },
                    "value": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 16054,
                    "nodeType": "StructuredDocumentation",
                    "src": "1546:83:75",
                    "text": "@dev For the LTV, the start bit is 0 (up to 15), hence no bitshifting is needed"
                  },
                  "id": 16057,
                  "mutability": "constant",
                  "name": "LIQUIDATION_THRESHOLD_START_BIT_POSITION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 16741,
                  "src": "1632:62:75",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16055,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1632:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3136",
                    "id": 16056,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1692:2:75",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_16_by_1",
                      "typeString": "int_const 16"
                    },
                    "value": "16"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 16060,
                  "mutability": "constant",
                  "name": "LIQUIDATION_BONUS_START_BIT_POSITION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 16741,
                  "src": "1698:58:75",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16058,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1698:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3332",
                    "id": 16059,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1754:2:75",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_32_by_1",
                      "typeString": "int_const 32"
                    },
                    "value": "32"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 16063,
                  "mutability": "constant",
                  "name": "RESERVE_DECIMALS_START_BIT_POSITION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 16741,
                  "src": "1760:57:75",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16061,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1760:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3438",
                    "id": 16062,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1815:2:75",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_48_by_1",
                      "typeString": "int_const 48"
                    },
                    "value": "48"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 16066,
                  "mutability": "constant",
                  "name": "IS_ACTIVE_START_BIT_POSITION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 16741,
                  "src": "1821:50:75",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16064,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1821:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3536",
                    "id": 16065,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1869:2:75",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_56_by_1",
                      "typeString": "int_const 56"
                    },
                    "value": "56"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 16069,
                  "mutability": "constant",
                  "name": "IS_FROZEN_START_BIT_POSITION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 16741,
                  "src": "1875:50:75",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16067,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1875:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3537",
                    "id": 16068,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1923:2:75",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_57_by_1",
                      "typeString": "int_const 57"
                    },
                    "value": "57"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 16072,
                  "mutability": "constant",
                  "name": "BORROWING_ENABLED_START_BIT_POSITION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 16741,
                  "src": "1929:58:75",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16070,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1929:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3538",
                    "id": 16071,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1985:2:75",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_58_by_1",
                      "typeString": "int_const 58"
                    },
                    "value": "58"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 16075,
                  "mutability": "constant",
                  "name": "STABLE_BORROWING_ENABLED_START_BIT_POSITION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 16741,
                  "src": "1991:65:75",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16073,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1991:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3539",
                    "id": 16074,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2054:2:75",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_59_by_1",
                      "typeString": "int_const 59"
                    },
                    "value": "59"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 16078,
                  "mutability": "constant",
                  "name": "RESERVE_FACTOR_START_BIT_POSITION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 16741,
                  "src": "2060:55:75",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16076,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2060:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3634",
                    "id": 16077,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2113:2:75",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_64_by_1",
                      "typeString": "int_const 64"
                    },
                    "value": "64"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 16081,
                  "mutability": "constant",
                  "name": "MAX_VALID_LTV",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 16741,
                  "src": "2120:38:75",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16079,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2120:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3635353335",
                    "id": 16080,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2153:5:75",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_65535_by_1",
                      "typeString": "int_const 65535"
                    },
                    "value": "65535"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 16084,
                  "mutability": "constant",
                  "name": "MAX_VALID_LIQUIDATION_THRESHOLD",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 16741,
                  "src": "2162:56:75",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16082,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2162:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3635353335",
                    "id": 16083,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2213:5:75",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_65535_by_1",
                      "typeString": "int_const 65535"
                    },
                    "value": "65535"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 16087,
                  "mutability": "constant",
                  "name": "MAX_VALID_LIQUIDATION_BONUS",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 16741,
                  "src": "2222:52:75",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16085,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2222:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3635353335",
                    "id": 16086,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2269:5:75",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_65535_by_1",
                      "typeString": "int_const 65535"
                    },
                    "value": "65535"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 16090,
                  "mutability": "constant",
                  "name": "MAX_VALID_DECIMALS",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 16741,
                  "src": "2278:41:75",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16088,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2278:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "323535",
                    "id": 16089,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2316:3:75",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_255_by_1",
                      "typeString": "int_const 255"
                    },
                    "value": "255"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 16093,
                  "mutability": "constant",
                  "name": "MAX_VALID_RESERVE_FACTOR",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 16741,
                  "src": "2323:49:75",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16091,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2323:7:75",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3635353335",
                    "id": 16092,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2367:5:75",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_65535_by_1",
                      "typeString": "int_const 65535"
                    },
                    "value": "65535"
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16121,
                    "nodeType": "Block",
                    "src": "2599:110:75",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16104,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 16102,
                                "name": "ltv",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16098,
                                "src": "2613:3:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 16103,
                                "name": "MAX_VALID_LTV",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16081,
                                "src": "2620:13:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2613:20:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 16105,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "2635:6:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 16106,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "RC_INVALID_LTV",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17194,
                              "src": "2635:21:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 16101,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2605:7:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16107,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2605:52:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16108,
                        "nodeType": "ExpressionStatement",
                        "src": "2605:52:75"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16119,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 16109,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16096,
                              "src": "2664:4:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 16111,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20522,
                            "src": "2664:9:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 16118,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16115,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 16112,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16096,
                                      "src": "2677:4:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                        "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                      }
                                    },
                                    "id": 16113,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "data",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20522,
                                    "src": "2677:9:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 16114,
                                    "name": "LTV_MASK",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16029,
                                    "src": "2689:8:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "2677:20:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 16116,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "2676:22:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "|",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 16117,
                              "name": "ltv",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16098,
                              "src": "2701:3:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2676:28:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2664:40:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16120,
                        "nodeType": "ExpressionStatement",
                        "src": "2664:40:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16094,
                    "nodeType": "StructuredDocumentation",
                    "src": "2377:129:75",
                    "text": " @dev Sets the Loan to Value of the reserve\n @param self The reserve configuration\n @param ltv the new ltv*"
                  },
                  "id": 16122,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setLtv",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16099,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16096,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16122,
                        "src": "2525:45:75",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                          "typeString": "struct DataTypes.ReserveConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16095,
                          "name": "DataTypes.ReserveConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20523,
                          "src": "2525:33:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16098,
                        "mutability": "mutable",
                        "name": "ltv",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16122,
                        "src": "2572:11:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16097,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2572:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2524:60:75"
                  },
                  "returnParameters": {
                    "id": 16100,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2599:0:75"
                  },
                  "scope": 16741,
                  "src": "2509:200:75",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16136,
                    "nodeType": "Block",
                    "src": "2944:39:75",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16134,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 16130,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16125,
                              "src": "2957:4:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap storage pointer"
                              }
                            },
                            "id": 16131,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20522,
                            "src": "2957:9:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 16133,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "~",
                            "prefix": true,
                            "src": "2969:9:75",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 16132,
                              "name": "LTV_MASK",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16029,
                              "src": "2970:8:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2957:21:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 16129,
                        "id": 16135,
                        "nodeType": "Return",
                        "src": "2950:28:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16123,
                    "nodeType": "StructuredDocumentation",
                    "src": "2713:132:75",
                    "text": " @dev Gets the Loan to Value of the reserve\n @param self The reserve configuration\n @return The loan to value*"
                  },
                  "id": 16137,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLtv",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16126,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16125,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16137,
                        "src": "2864:46:75",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                          "typeString": "struct DataTypes.ReserveConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16124,
                          "name": "DataTypes.ReserveConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20523,
                          "src": "2864:33:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2863:48:75"
                  },
                  "returnParameters": {
                    "id": 16129,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16128,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16137,
                        "src": "2935:7:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16127,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2935:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2934:9:75"
                  },
                  "scope": 16741,
                  "src": "2848:135:75",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16168,
                    "nodeType": "Block",
                    "src": "3274:226:75",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16148,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 16146,
                                "name": "threshold",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16142,
                                "src": "3288:9:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 16147,
                                "name": "MAX_VALID_LIQUIDATION_THRESHOLD",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16084,
                                "src": "3301:31:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3288:44:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 16149,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "3334:6:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 16150,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "RC_INVALID_LIQ_THRESHOLD",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17197,
                              "src": "3334:31:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 16145,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3280:7:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16151,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3280:86:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16152,
                        "nodeType": "ExpressionStatement",
                        "src": "3280:86:75"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 16153,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16140,
                              "src": "3373:4:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 16155,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20522,
                            "src": "3373:9:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 16165,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16159,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 16156,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16140,
                                      "src": "3392:4:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                        "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                      }
                                    },
                                    "id": 16157,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "data",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20522,
                                    "src": "3392:9:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 16158,
                                    "name": "LIQUIDATION_THRESHOLD_MASK",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16032,
                                    "src": "3404:26:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "3392:38:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 16160,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3391:40:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "|",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16163,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 16161,
                                    "name": "threshold",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16142,
                                    "src": "3441:9:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 16162,
                                    "name": "LIQUIDATION_THRESHOLD_START_BIT_POSITION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16057,
                                    "src": "3454:40:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "3441:53:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 16164,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3440:55:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3391:104:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3373:122:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16167,
                        "nodeType": "ExpressionStatement",
                        "src": "3373:122:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16138,
                    "nodeType": "StructuredDocumentation",
                    "src": "2987:161:75",
                    "text": " @dev Sets the liquidation threshold of the reserve\n @param self The reserve configuration\n @param threshold The new liquidation threshold*"
                  },
                  "id": 16169,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setLiquidationThreshold",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16143,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16140,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16169,
                        "src": "3184:45:75",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                          "typeString": "struct DataTypes.ReserveConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16139,
                          "name": "DataTypes.ReserveConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20523,
                          "src": "3184:33:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16142,
                        "mutability": "mutable",
                        "name": "threshold",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16169,
                        "src": "3231:17:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16141,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3231:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3183:66:75"
                  },
                  "returnParameters": {
                    "id": 16144,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3274:0:75"
                  },
                  "scope": 16741,
                  "src": "3151:349:75",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16186,
                    "nodeType": "Block",
                    "src": "3782:103:75",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16184,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 16181,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 16177,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16172,
                                    "src": "3796:4:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                                      "typeString": "struct DataTypes.ReserveConfigurationMap storage pointer"
                                    }
                                  },
                                  "id": 16178,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "data",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20522,
                                  "src": "3796:9:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 16180,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "~",
                                  "prefix": true,
                                  "src": "3808:27:75",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 16179,
                                    "name": "LIQUIDATION_THRESHOLD_MASK",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16032,
                                    "src": "3809:26:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3796:39:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 16182,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "3795:41:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 16183,
                            "name": "LIQUIDATION_THRESHOLD_START_BIT_POSITION",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16057,
                            "src": "3840:40:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3795:85:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 16176,
                        "id": 16185,
                        "nodeType": "Return",
                        "src": "3788:92:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16170,
                    "nodeType": "StructuredDocumentation",
                    "src": "3504:148:75",
                    "text": " @dev Gets the liquidation threshold of the reserve\n @param self The reserve configuration\n @return The liquidation threshold*"
                  },
                  "id": 16187,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLiquidationThreshold",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16173,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16172,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16187,
                        "src": "3688:46:75",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                          "typeString": "struct DataTypes.ReserveConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16171,
                          "name": "DataTypes.ReserveConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20523,
                          "src": "3688:33:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3687:48:75"
                  },
                  "returnParameters": {
                    "id": 16176,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16175,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16187,
                        "src": "3771:7:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16174,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3771:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3770:9:75"
                  },
                  "scope": 16741,
                  "src": "3655:230:75",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16218,
                    "nodeType": "Block",
                    "src": "4156:202:75",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16198,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 16196,
                                "name": "bonus",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16192,
                                "src": "4170:5:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 16197,
                                "name": "MAX_VALID_LIQUIDATION_BONUS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16087,
                                "src": "4179:27:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4170:36:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 16199,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "4208:6:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 16200,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "RC_INVALID_LIQ_BONUS",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17200,
                              "src": "4208:27:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 16195,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4162:7:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4162:74:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16202,
                        "nodeType": "ExpressionStatement",
                        "src": "4162:74:75"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 16203,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16190,
                              "src": "4243:4:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 16205,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20522,
                            "src": "4243:9:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 16215,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16209,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 16206,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16190,
                                      "src": "4262:4:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                        "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                      }
                                    },
                                    "id": 16207,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "data",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20522,
                                    "src": "4262:9:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 16208,
                                    "name": "LIQUIDATION_BONUS_MASK",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16035,
                                    "src": "4274:22:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4262:34:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 16210,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "4261:36:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "|",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16213,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 16211,
                                    "name": "bonus",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16192,
                                    "src": "4307:5:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 16212,
                                    "name": "LIQUIDATION_BONUS_START_BIT_POSITION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16060,
                                    "src": "4316:36:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4307:45:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 16214,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "4306:47:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4261:92:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4243:110:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16217,
                        "nodeType": "ExpressionStatement",
                        "src": "4243:110:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16188,
                    "nodeType": "StructuredDocumentation",
                    "src": "3889:149:75",
                    "text": " @dev Sets the liquidation bonus of the reserve\n @param self The reserve configuration\n @param bonus The new liquidation bonus*"
                  },
                  "id": 16219,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setLiquidationBonus",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16193,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16190,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16219,
                        "src": "4070:45:75",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                          "typeString": "struct DataTypes.ReserveConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16189,
                          "name": "DataTypes.ReserveConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20523,
                          "src": "4070:33:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16192,
                        "mutability": "mutable",
                        "name": "bonus",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16219,
                        "src": "4117:13:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16191,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4117:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4069:62:75"
                  },
                  "returnParameters": {
                    "id": 16194,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4156:0:75"
                  },
                  "scope": 16741,
                  "src": "4041:317:75",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16236,
                    "nodeType": "Block",
                    "src": "4628:95:75",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16234,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 16231,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 16227,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16222,
                                    "src": "4642:4:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                                      "typeString": "struct DataTypes.ReserveConfigurationMap storage pointer"
                                    }
                                  },
                                  "id": 16228,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "data",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20522,
                                  "src": "4642:9:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 16230,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "~",
                                  "prefix": true,
                                  "src": "4654:23:75",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 16229,
                                    "name": "LIQUIDATION_BONUS_MASK",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16035,
                                    "src": "4655:22:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4642:35:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 16232,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "4641:37:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 16233,
                            "name": "LIQUIDATION_BONUS_START_BIT_POSITION",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16060,
                            "src": "4682:36:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4641:77:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 16226,
                        "id": 16235,
                        "nodeType": "Return",
                        "src": "4634:84:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16220,
                    "nodeType": "StructuredDocumentation",
                    "src": "4362:140:75",
                    "text": " @dev Gets the liquidation bonus of the reserve\n @param self The reserve configuration\n @return The liquidation bonus*"
                  },
                  "id": 16237,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLiquidationBonus",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16223,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16222,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16237,
                        "src": "4534:46:75",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                          "typeString": "struct DataTypes.ReserveConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16221,
                          "name": "DataTypes.ReserveConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20523,
                          "src": "4534:33:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4533:48:75"
                  },
                  "returnParameters": {
                    "id": 16226,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16225,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16237,
                        "src": "4617:7:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16224,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4617:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4616:9:75"
                  },
                  "scope": 16741,
                  "src": "4505:218:75",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16268,
                    "nodeType": "Block",
                    "src": "4994:176:75",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16248,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 16246,
                                "name": "decimals",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16242,
                                "src": "5008:8:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 16247,
                                "name": "MAX_VALID_DECIMALS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16090,
                                "src": "5020:18:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5008:30:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 16249,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "5040:6:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 16250,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "RC_INVALID_DECIMALS",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17203,
                              "src": "5040:26:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 16245,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5000:7:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5000:67:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16252,
                        "nodeType": "ExpressionStatement",
                        "src": "5000:67:75"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16266,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 16253,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16240,
                              "src": "5074:4:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 16255,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20522,
                            "src": "5074:9:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 16265,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16259,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 16256,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16240,
                                      "src": "5087:4:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                        "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                      }
                                    },
                                    "id": 16257,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "data",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20522,
                                    "src": "5087:9:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 16258,
                                    "name": "DECIMALS_MASK",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16038,
                                    "src": "5099:13:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5087:25:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 16260,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "5086:27:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "|",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16263,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 16261,
                                    "name": "decimals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16242,
                                    "src": "5117:8:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 16262,
                                    "name": "RESERVE_DECIMALS_START_BIT_POSITION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16063,
                                    "src": "5129:35:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5117:47:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 16264,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "5116:49:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5086:79:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5074:91:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16267,
                        "nodeType": "ExpressionStatement",
                        "src": "5074:91:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16238,
                    "nodeType": "StructuredDocumentation",
                    "src": "4727:154:75",
                    "text": " @dev Sets the decimals of the underlying asset of the reserve\n @param self The reserve configuration\n @param decimals The decimals*"
                  },
                  "id": 16269,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setDecimals",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16243,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16240,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16269,
                        "src": "4905:45:75",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                          "typeString": "struct DataTypes.ReserveConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16239,
                          "name": "DataTypes.ReserveConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20523,
                          "src": "4905:33:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16242,
                        "mutability": "mutable",
                        "name": "decimals",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16269,
                        "src": "4952:16:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16241,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4952:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4904:65:75"
                  },
                  "returnParameters": {
                    "id": 16244,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4994:0:75"
                  },
                  "scope": 16741,
                  "src": "4884:286:75",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16286,
                    "nodeType": "Block",
                    "src": "5451:85:75",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16284,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 16281,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 16277,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16272,
                                    "src": "5465:4:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                                      "typeString": "struct DataTypes.ReserveConfigurationMap storage pointer"
                                    }
                                  },
                                  "id": 16278,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "data",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20522,
                                  "src": "5465:9:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 16280,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "~",
                                  "prefix": true,
                                  "src": "5477:14:75",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 16279,
                                    "name": "DECIMALS_MASK",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16038,
                                    "src": "5478:13:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5465:26:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 16282,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5464:28:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 16283,
                            "name": "RESERVE_DECIMALS_START_BIT_POSITION",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16063,
                            "src": "5496:35:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5464:67:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 16276,
                        "id": 16285,
                        "nodeType": "Return",
                        "src": "5457:74:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16270,
                    "nodeType": "StructuredDocumentation",
                    "src": "5174:159:75",
                    "text": " @dev Gets the decimals of the underlying asset of the reserve\n @param self The reserve configuration\n @return The decimals of the asset*"
                  },
                  "id": 16287,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getDecimals",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16273,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16272,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16287,
                        "src": "5357:46:75",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                          "typeString": "struct DataTypes.ReserveConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16271,
                          "name": "DataTypes.ReserveConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20523,
                          "src": "5357:33:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5356:48:75"
                  },
                  "returnParameters": {
                    "id": 16276,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16275,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16287,
                        "src": "5440:7:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16274,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5440:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5439:9:75"
                  },
                  "scope": 16741,
                  "src": "5336:200:75",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16316,
                    "nodeType": "Block",
                    "src": "5772:120:75",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16314,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 16295,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16290,
                              "src": "5778:4:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 16297,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20522,
                            "src": "5778:9:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 16313,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16301,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 16298,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16290,
                                      "src": "5797:4:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                        "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                      }
                                    },
                                    "id": 16299,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "data",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20522,
                                    "src": "5797:9:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 16300,
                                    "name": "ACTIVE_MASK",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16041,
                                    "src": "5809:11:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5797:23:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 16302,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "5796:25:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "|",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16311,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "condition": {
                                          "argumentTypes": null,
                                          "id": 16305,
                                          "name": "active",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16292,
                                          "src": "5839:6:75",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 16307,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "5852:1:75",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "id": 16308,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "Conditional",
                                        "src": "5839:14:75",
                                        "trueExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 16306,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "5848:1:75",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      ],
                                      "id": 16304,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5831:7:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 16303,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5831:7:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 16309,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5831:23:75",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 16310,
                                    "name": "IS_ACTIVE_START_BIT_POSITION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16066,
                                    "src": "5858:28:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5831:55:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 16312,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "5830:57:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5796:91:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5778:109:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16315,
                        "nodeType": "ExpressionStatement",
                        "src": "5778:109:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16288,
                    "nodeType": "StructuredDocumentation",
                    "src": "5540:136:75",
                    "text": " @dev Sets the active state of the reserve\n @param self The reserve configuration\n @param active The active state*"
                  },
                  "id": 16317,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setActive",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16293,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16290,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16317,
                        "src": "5698:45:75",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                          "typeString": "struct DataTypes.ReserveConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16289,
                          "name": "DataTypes.ReserveConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20523,
                          "src": "5698:33:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16292,
                        "mutability": "mutable",
                        "name": "active",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16317,
                        "src": "5745:11:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16291,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5745:4:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5697:60:75"
                  },
                  "returnParameters": {
                    "id": 16294,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5772:0:75"
                  },
                  "scope": 16741,
                  "src": "5679:213:75",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16334,
                    "nodeType": "Block",
                    "src": "6125:49:75",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16332,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 16329,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 16325,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16320,
                                    "src": "6139:4:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                                      "typeString": "struct DataTypes.ReserveConfigurationMap storage pointer"
                                    }
                                  },
                                  "id": 16326,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "data",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20522,
                                  "src": "6139:9:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 16328,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "~",
                                  "prefix": true,
                                  "src": "6151:12:75",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 16327,
                                    "name": "ACTIVE_MASK",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16041,
                                    "src": "6152:11:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6139:24:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 16330,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "6138:26:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 16331,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6168:1:75",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6138:31:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 16324,
                        "id": 16333,
                        "nodeType": "Return",
                        "src": "6131:38:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16318,
                    "nodeType": "StructuredDocumentation",
                    "src": "5896:130:75",
                    "text": " @dev Gets the active state of the reserve\n @param self The reserve configuration\n @return The active state*"
                  },
                  "id": 16335,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getActive",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16321,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16320,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16335,
                        "src": "6048:46:75",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                          "typeString": "struct DataTypes.ReserveConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16319,
                          "name": "DataTypes.ReserveConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20523,
                          "src": "6048:33:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6047:48:75"
                  },
                  "returnParameters": {
                    "id": 16324,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16323,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16335,
                        "src": "6119:4:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16322,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6119:4:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6118:6:75"
                  },
                  "scope": 16741,
                  "src": "6029:145:75",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16364,
                    "nodeType": "Block",
                    "src": "6410:120:75",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16362,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 16343,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16338,
                              "src": "6416:4:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 16345,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20522,
                            "src": "6416:9:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 16361,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16349,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 16346,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16338,
                                      "src": "6435:4:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                        "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                      }
                                    },
                                    "id": 16347,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "data",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20522,
                                    "src": "6435:9:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 16348,
                                    "name": "FROZEN_MASK",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16044,
                                    "src": "6447:11:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6435:23:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 16350,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "6434:25:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "|",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16359,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "condition": {
                                          "argumentTypes": null,
                                          "id": 16353,
                                          "name": "frozen",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16340,
                                          "src": "6477:6:75",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 16355,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "6490:1:75",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "id": 16356,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "Conditional",
                                        "src": "6477:14:75",
                                        "trueExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 16354,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "6486:1:75",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      ],
                                      "id": 16352,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6469:7:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 16351,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6469:7:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 16357,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6469:23:75",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 16358,
                                    "name": "IS_FROZEN_START_BIT_POSITION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16069,
                                    "src": "6496:28:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6469:55:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 16360,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "6468:57:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "6434:91:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6416:109:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16363,
                        "nodeType": "ExpressionStatement",
                        "src": "6416:109:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16336,
                    "nodeType": "StructuredDocumentation",
                    "src": "6178:136:75",
                    "text": " @dev Sets the frozen state of the reserve\n @param self The reserve configuration\n @param frozen The frozen state*"
                  },
                  "id": 16365,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setFrozen",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16341,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16338,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16365,
                        "src": "6336:45:75",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                          "typeString": "struct DataTypes.ReserveConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16337,
                          "name": "DataTypes.ReserveConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20523,
                          "src": "6336:33:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16340,
                        "mutability": "mutable",
                        "name": "frozen",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16365,
                        "src": "6383:11:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16339,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6383:4:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6335:60:75"
                  },
                  "returnParameters": {
                    "id": 16342,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6410:0:75"
                  },
                  "scope": 16741,
                  "src": "6317:213:75",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16382,
                    "nodeType": "Block",
                    "src": "6763:49:75",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16380,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 16377,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 16373,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16368,
                                    "src": "6777:4:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                                      "typeString": "struct DataTypes.ReserveConfigurationMap storage pointer"
                                    }
                                  },
                                  "id": 16374,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "data",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20522,
                                  "src": "6777:9:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 16376,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "~",
                                  "prefix": true,
                                  "src": "6789:12:75",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 16375,
                                    "name": "FROZEN_MASK",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16044,
                                    "src": "6790:11:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6777:24:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 16378,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "6776:26:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 16379,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6806:1:75",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6776:31:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 16372,
                        "id": 16381,
                        "nodeType": "Return",
                        "src": "6769:38:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16366,
                    "nodeType": "StructuredDocumentation",
                    "src": "6534:130:75",
                    "text": " @dev Gets the frozen state of the reserve\n @param self The reserve configuration\n @return The frozen state*"
                  },
                  "id": 16383,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getFrozen",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16369,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16368,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16383,
                        "src": "6686:46:75",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                          "typeString": "struct DataTypes.ReserveConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16367,
                          "name": "DataTypes.ReserveConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20523,
                          "src": "6686:33:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6685:48:75"
                  },
                  "returnParameters": {
                    "id": 16372,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16371,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16383,
                        "src": "6757:4:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16370,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6757:4:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6756:6:75"
                  },
                  "scope": 16741,
                  "src": "6667:145:75",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16412,
                    "nodeType": "Block",
                    "src": "7120:132:75",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16410,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 16391,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16386,
                              "src": "7126:4:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 16393,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20522,
                            "src": "7126:9:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 16409,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16397,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 16394,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16386,
                                      "src": "7145:4:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                        "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                      }
                                    },
                                    "id": 16395,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "data",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20522,
                                    "src": "7145:9:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 16396,
                                    "name": "BORROWING_MASK",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16047,
                                    "src": "7157:14:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7145:26:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 16398,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "7144:28:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "|",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16407,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "condition": {
                                          "argumentTypes": null,
                                          "id": 16401,
                                          "name": "enabled",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16388,
                                          "src": "7190:7:75",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 16403,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7204:1:75",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "id": 16404,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "Conditional",
                                        "src": "7190:15:75",
                                        "trueExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 16402,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7200:1:75",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      ],
                                      "id": 16400,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7182:7:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 16399,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7182:7:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 16405,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7182:24:75",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 16406,
                                    "name": "BORROWING_ENABLED_START_BIT_POSITION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16072,
                                    "src": "7210:36:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7182:64:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 16408,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "7181:66:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "7144:103:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7126:121:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16411,
                        "nodeType": "ExpressionStatement",
                        "src": "7126:121:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16384,
                    "nodeType": "StructuredDocumentation",
                    "src": "6816:187:75",
                    "text": " @dev Enables or disables borrowing on the reserve\n @param self The reserve configuration\n @param enabled True if the borrowing needs to be enabled, false otherwise*"
                  },
                  "id": 16413,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setBorrowingEnabled",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16389,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16386,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16413,
                        "src": "7035:45:75",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                          "typeString": "struct DataTypes.ReserveConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16385,
                          "name": "DataTypes.ReserveConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20523,
                          "src": "7035:33:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16388,
                        "mutability": "mutable",
                        "name": "enabled",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16413,
                        "src": "7082:12:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16387,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7082:4:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7034:61:75"
                  },
                  "returnParameters": {
                    "id": 16390,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7120:0:75"
                  },
                  "scope": 16741,
                  "src": "7006:246:75",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16430,
                    "nodeType": "Block",
                    "src": "7515:52:75",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16428,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 16425,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 16421,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16416,
                                    "src": "7529:4:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                                      "typeString": "struct DataTypes.ReserveConfigurationMap storage pointer"
                                    }
                                  },
                                  "id": 16422,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "data",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20522,
                                  "src": "7529:9:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 16424,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "~",
                                  "prefix": true,
                                  "src": "7541:15:75",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 16423,
                                    "name": "BORROWING_MASK",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16047,
                                    "src": "7542:14:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7529:27:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 16426,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7528:29:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 16427,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7561:1:75",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7528:34:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 16420,
                        "id": 16429,
                        "nodeType": "Return",
                        "src": "7521:41:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16414,
                    "nodeType": "StructuredDocumentation",
                    "src": "7256:136:75",
                    "text": " @dev Gets the borrowing state of the reserve\n @param self The reserve configuration\n @return The borrowing state*"
                  },
                  "id": 16431,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getBorrowingEnabled",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16417,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16416,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16431,
                        "src": "7424:46:75",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                          "typeString": "struct DataTypes.ReserveConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16415,
                          "name": "DataTypes.ReserveConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20523,
                          "src": "7424:33:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7423:48:75"
                  },
                  "returnParameters": {
                    "id": 16420,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16419,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16431,
                        "src": "7507:4:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16418,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7507:4:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7506:6:75"
                  },
                  "scope": 16741,
                  "src": "7395:172:75",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16460,
                    "nodeType": "Block",
                    "src": "7911:146:75",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16458,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 16439,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16434,
                              "src": "7917:4:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 16441,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20522,
                            "src": "7917:9:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 16457,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16445,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 16442,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16434,
                                      "src": "7936:4:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                        "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                      }
                                    },
                                    "id": 16443,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "data",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20522,
                                    "src": "7936:9:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 16444,
                                    "name": "STABLE_BORROWING_MASK",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16050,
                                    "src": "7948:21:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7936:33:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 16446,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "7935:35:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "|",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16455,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "condition": {
                                          "argumentTypes": null,
                                          "id": 16449,
                                          "name": "enabled",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16436,
                                          "src": "7988:7:75",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 16451,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8002:1:75",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "id": 16452,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "Conditional",
                                        "src": "7988:15:75",
                                        "trueExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 16450,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7998:1:75",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      ],
                                      "id": 16448,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7980:7:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 16447,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7980:7:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 16453,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7980:24:75",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 16454,
                                    "name": "STABLE_BORROWING_ENABLED_START_BIT_POSITION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16075,
                                    "src": "8008:43:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7980:71:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 16456,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "7979:73:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "7935:117:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7917:135:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16459,
                        "nodeType": "ExpressionStatement",
                        "src": "7917:135:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16432,
                    "nodeType": "StructuredDocumentation",
                    "src": "7571:211:75",
                    "text": " @dev Enables or disables stable rate borrowing on the reserve\n @param self The reserve configuration\n @param enabled True if the stable rate borrowing needs to be enabled, false otherwise*"
                  },
                  "id": 16461,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setStableRateBorrowingEnabled",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16437,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16434,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16461,
                        "src": "7829:45:75",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                          "typeString": "struct DataTypes.ReserveConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16433,
                          "name": "DataTypes.ReserveConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20523,
                          "src": "7829:33:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16436,
                        "mutability": "mutable",
                        "name": "enabled",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16461,
                        "src": "7880:12:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16435,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7880:4:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7823:73:75"
                  },
                  "returnParameters": {
                    "id": 16438,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7911:0:75"
                  },
                  "scope": 16741,
                  "src": "7785:272:75",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16478,
                    "nodeType": "Block",
                    "src": "8354:59:75",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 16473,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 16469,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16464,
                                    "src": "8368:4:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                                      "typeString": "struct DataTypes.ReserveConfigurationMap storage pointer"
                                    }
                                  },
                                  "id": 16470,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "data",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20522,
                                  "src": "8368:9:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 16472,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "~",
                                  "prefix": true,
                                  "src": "8380:22:75",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 16471,
                                    "name": "STABLE_BORROWING_MASK",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16050,
                                    "src": "8381:21:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8368:34:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 16474,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "8367:36:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 16475,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8407:1:75",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8367:41:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 16468,
                        "id": 16477,
                        "nodeType": "Return",
                        "src": "8360:48:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16462,
                    "nodeType": "StructuredDocumentation",
                    "src": "8061:160:75",
                    "text": " @dev Gets the stable rate borrowing state of the reserve\n @param self The reserve configuration\n @return The stable rate borrowing state*"
                  },
                  "id": 16479,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getStableRateBorrowingEnabled",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16465,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16464,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16479,
                        "src": "8263:46:75",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                          "typeString": "struct DataTypes.ReserveConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16463,
                          "name": "DataTypes.ReserveConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20523,
                          "src": "8263:33:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8262:48:75"
                  },
                  "returnParameters": {
                    "id": 16468,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16467,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16479,
                        "src": "8346:4:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16466,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8346:4:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8345:6:75"
                  },
                  "scope": 16741,
                  "src": "8224:189:75",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16510,
                    "nodeType": "Block",
                    "src": "8687:214:75",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16490,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 16488,
                                "name": "reserveFactor",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16484,
                                "src": "8701:13:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 16489,
                                "name": "MAX_VALID_RESERVE_FACTOR",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16093,
                                "src": "8718:24:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8701:41:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 16491,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "8744:6:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 16492,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "RC_INVALID_RESERVE_FACTOR",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17206,
                              "src": "8744:32:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 16487,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8693:7:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16493,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8693:84:75",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16494,
                        "nodeType": "ExpressionStatement",
                        "src": "8693:84:75"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16508,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 16495,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16482,
                              "src": "8784:4:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                              }
                            },
                            "id": 16497,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20522,
                            "src": "8784:9:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 16507,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16501,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 16498,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16482,
                                      "src": "8803:4:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                        "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                      }
                                    },
                                    "id": 16499,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "data",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20522,
                                    "src": "8803:9:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 16500,
                                    "name": "RESERVE_FACTOR_MASK",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16053,
                                    "src": "8815:19:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "8803:31:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 16502,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "8802:33:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "|",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16505,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 16503,
                                    "name": "reserveFactor",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16484,
                                    "src": "8845:13:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 16504,
                                    "name": "RESERVE_FACTOR_START_BIT_POSITION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16078,
                                    "src": "8862:33:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "8845:50:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 16506,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "8844:52:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8802:94:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8784:112:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16509,
                        "nodeType": "ExpressionStatement",
                        "src": "8784:112:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16480,
                    "nodeType": "StructuredDocumentation",
                    "src": "8417:147:75",
                    "text": " @dev Sets the reserve factor of the reserve\n @param self The reserve configuration\n @param reserveFactor The reserve factor*"
                  },
                  "id": 16511,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setReserveFactor",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16485,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16482,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16511,
                        "src": "8593:45:75",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                          "typeString": "struct DataTypes.ReserveConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16481,
                          "name": "DataTypes.ReserveConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20523,
                          "src": "8593:33:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16484,
                        "mutability": "mutable",
                        "name": "reserveFactor",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16511,
                        "src": "8640:21:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16483,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8640:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8592:70:75"
                  },
                  "returnParameters": {
                    "id": 16486,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8687:0:75"
                  },
                  "scope": 16741,
                  "src": "8567:334:75",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16528,
                    "nodeType": "Block",
                    "src": "9162:89:75",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16526,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 16523,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 16519,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16514,
                                    "src": "9176:4:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                                      "typeString": "struct DataTypes.ReserveConfigurationMap storage pointer"
                                    }
                                  },
                                  "id": 16520,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "data",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20522,
                                  "src": "9176:9:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 16522,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "~",
                                  "prefix": true,
                                  "src": "9188:20:75",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 16521,
                                    "name": "RESERVE_FACTOR_MASK",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16053,
                                    "src": "9189:19:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9176:32:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 16524,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "9175:34:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 16525,
                            "name": "RESERVE_FACTOR_START_BIT_POSITION",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16078,
                            "src": "9213:33:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9175:71:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 16518,
                        "id": 16527,
                        "nodeType": "Return",
                        "src": "9168:78:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16512,
                    "nodeType": "StructuredDocumentation",
                    "src": "8905:134:75",
                    "text": " @dev Gets the reserve factor of the reserve\n @param self The reserve configuration\n @return The reserve factor*"
                  },
                  "id": 16529,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReserveFactor",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16515,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16514,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16529,
                        "src": "9068:46:75",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                          "typeString": "struct DataTypes.ReserveConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16513,
                          "name": "DataTypes.ReserveConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20523,
                          "src": "9068:33:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9067:48:75"
                  },
                  "returnParameters": {
                    "id": 16518,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16517,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16529,
                        "src": "9151:7:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16516,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9151:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9150:9:75"
                  },
                  "scope": 16741,
                  "src": "9042:209:75",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16578,
                    "nodeType": "Block",
                    "src": "9627:229:75",
                    "statements": [
                      {
                        "assignments": [
                          16544
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16544,
                            "mutability": "mutable",
                            "name": "dataLocal",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 16578,
                            "src": "9633:17:75",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16543,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9633:7:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16547,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 16545,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16532,
                            "src": "9653:4:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                              "typeString": "struct DataTypes.ReserveConfigurationMap storage pointer"
                            }
                          },
                          "id": 16546,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 20522,
                          "src": "9653:9:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9633:29:75"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16554,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 16551,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 16548,
                                      "name": "dataLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16544,
                                      "src": "9685:9:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 16550,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "~",
                                      "prefix": true,
                                      "src": "9697:12:75",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 16549,
                                        "name": "ACTIVE_MASK",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16041,
                                        "src": "9698:11:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9685:24:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 16552,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "9684:26:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 16553,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9714:1:75",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "9684:31:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16561,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 16558,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 16555,
                                      "name": "dataLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16544,
                                      "src": "9724:9:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 16557,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "~",
                                      "prefix": true,
                                      "src": "9736:12:75",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 16556,
                                        "name": "FROZEN_MASK",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16044,
                                        "src": "9737:11:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9724:24:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 16559,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "9723:26:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 16560,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9753:1:75",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "9723:31:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16568,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 16565,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 16562,
                                      "name": "dataLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16544,
                                      "src": "9763:9:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 16564,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "~",
                                      "prefix": true,
                                      "src": "9775:15:75",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 16563,
                                        "name": "BORROWING_MASK",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16047,
                                        "src": "9776:14:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9763:27:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 16566,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "9762:29:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 16567,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9795:1:75",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "9762:34:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16575,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 16572,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 16569,
                                      "name": "dataLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16544,
                                      "src": "9805:9:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 16571,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "~",
                                      "prefix": true,
                                      "src": "9817:22:75",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 16570,
                                        "name": "STABLE_BORROWING_MASK",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16050,
                                        "src": "9818:21:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9805:34:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 16573,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "9804:36:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 16574,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9844:1:75",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "9804:41:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 16576,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "9676:175:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bool_$_t_bool_$_t_bool_$",
                            "typeString": "tuple(bool,bool,bool,bool)"
                          }
                        },
                        "functionReturnParameters": 16542,
                        "id": 16577,
                        "nodeType": "Return",
                        "src": "9669:182:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16530,
                    "nodeType": "StructuredDocumentation",
                    "src": "9255:212:75",
                    "text": " @dev Gets the configuration flags of the reserve\n @param self The reserve configuration\n @return The state flags representing active, frozen, borrowing enabled, stableRateBorrowing enabled*"
                  },
                  "id": 16579,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getFlags",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16533,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16532,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16579,
                        "src": "9488:46:75",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                          "typeString": "struct DataTypes.ReserveConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16531,
                          "name": "DataTypes.ReserveConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20523,
                          "src": "9488:33:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9487:48:75"
                  },
                  "returnParameters": {
                    "id": 16542,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16535,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16579,
                        "src": "9578:4:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16534,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9578:4:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16537,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16579,
                        "src": "9590:4:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16536,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9590:4:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16539,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16579,
                        "src": "9602:4:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16538,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9602:4:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16541,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16579,
                        "src": "9614:4:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16540,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9614:4:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9570:54:75"
                  },
                  "scope": 16741,
                  "src": "9470:386:75",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16634,
                    "nodeType": "Block",
                    "src": "10270:421:75",
                    "statements": [
                      {
                        "assignments": [
                          16596
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16596,
                            "mutability": "mutable",
                            "name": "dataLocal",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 16634,
                            "src": "10276:17:75",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16595,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10276:7:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 16599,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 16597,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16582,
                            "src": "10296:4:75",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                              "typeString": "struct DataTypes.ReserveConfigurationMap storage pointer"
                            }
                          },
                          "id": 16598,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 20522,
                          "src": "10296:9:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10276:29:75"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16603,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 16600,
                                "name": "dataLocal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16596,
                                "src": "10327:9:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 16602,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "~",
                                "prefix": true,
                                "src": "10339:9:75",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 16601,
                                  "name": "LTV_MASK",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16029,
                                  "src": "10340:8:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10327:21:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16610,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 16607,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 16604,
                                      "name": "dataLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16596,
                                      "src": "10357:9:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 16606,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "~",
                                      "prefix": true,
                                      "src": "10369:27:75",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 16605,
                                        "name": "LIQUIDATION_THRESHOLD_MASK",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16032,
                                        "src": "10370:26:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "10357:39:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 16608,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "10356:41:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">>",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 16609,
                                "name": "LIQUIDATION_THRESHOLD_START_BIT_POSITION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16057,
                                "src": "10401:40:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10356:85:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16617,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 16614,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 16611,
                                      "name": "dataLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16596,
                                      "src": "10450:9:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 16613,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "~",
                                      "prefix": true,
                                      "src": "10462:23:75",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 16612,
                                        "name": "LIQUIDATION_BONUS_MASK",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16035,
                                        "src": "10463:22:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "10450:35:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 16615,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "10449:37:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">>",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 16616,
                                "name": "LIQUIDATION_BONUS_START_BIT_POSITION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16060,
                                "src": "10490:36:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10449:77:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 16621,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 16618,
                                      "name": "dataLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16596,
                                      "src": "10535:9:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 16620,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "~",
                                      "prefix": true,
                                      "src": "10547:14:75",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 16619,
                                        "name": "DECIMALS_MASK",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16038,
                                        "src": "10548:13:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "10535:26:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 16622,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "10534:28:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">>",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 16623,
                                "name": "RESERVE_DECIMALS_START_BIT_POSITION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16063,
                                "src": "10566:35:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10534:67:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16631,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 16628,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 16625,
                                      "name": "dataLocal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16596,
                                      "src": "10610:9:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 16627,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "~",
                                      "prefix": true,
                                      "src": "10622:20:75",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 16626,
                                        "name": "RESERVE_FACTOR_MASK",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16053,
                                        "src": "10623:19:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "10610:32:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 16629,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "10609:34:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">>",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 16630,
                                "name": "RESERVE_FACTOR_START_BIT_POSITION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16078,
                                "src": "10647:33:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10609:71:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 16632,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "10319:367:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256,uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 16594,
                        "id": 16633,
                        "nodeType": "Return",
                        "src": "10312:374:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16580,
                    "nodeType": "StructuredDocumentation",
                    "src": "9860:222:75",
                    "text": " @dev Gets the configuration paramters of the reserve\n @param self The reserve configuration\n @return The state params representing ltv, liquidation threshold, liquidation bonus, the reserve decimals*"
                  },
                  "id": 16635,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getParams",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16583,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16582,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16635,
                        "src": "10104:46:75",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                          "typeString": "struct DataTypes.ReserveConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16581,
                          "name": "DataTypes.ReserveConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20523,
                          "src": "10104:33:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10103:48:75"
                  },
                  "returnParameters": {
                    "id": 16594,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16585,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16635,
                        "src": "10194:7:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16584,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10194:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16587,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16635,
                        "src": "10209:7:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16586,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10209:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16589,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16635,
                        "src": "10224:7:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16588,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10224:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16591,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16635,
                        "src": "10239:7:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16590,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10239:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16593,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16635,
                        "src": "10254:7:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16592,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10254:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10186:81:75"
                  },
                  "scope": 16741,
                  "src": "10085:606:75",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16690,
                    "nodeType": "Block",
                    "src": "11131:385:75",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16655,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 16651,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16638,
                                  "src": "11152:4:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                    "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                  }
                                },
                                "id": 16652,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "data",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20522,
                                "src": "11152:9:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 16654,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "~",
                                "prefix": true,
                                "src": "11164:9:75",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 16653,
                                  "name": "LTV_MASK",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16029,
                                  "src": "11165:8:75",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11152:21:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16663,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 16660,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 16656,
                                        "name": "self",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16638,
                                        "src": "11182:4:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                          "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                        }
                                      },
                                      "id": 16657,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "data",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20522,
                                      "src": "11182:9:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 16659,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "~",
                                      "prefix": true,
                                      "src": "11194:27:75",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 16658,
                                        "name": "LIQUIDATION_THRESHOLD_MASK",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16032,
                                        "src": "11195:26:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "11182:39:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 16661,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "11181:41:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">>",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 16662,
                                "name": "LIQUIDATION_THRESHOLD_START_BIT_POSITION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16057,
                                "src": "11226:40:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11181:85:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16671,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 16668,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 16664,
                                        "name": "self",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16638,
                                        "src": "11275:4:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                          "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                        }
                                      },
                                      "id": 16665,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "data",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20522,
                                      "src": "11275:9:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 16667,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "~",
                                      "prefix": true,
                                      "src": "11287:23:75",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 16666,
                                        "name": "LIQUIDATION_BONUS_MASK",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16035,
                                        "src": "11288:22:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "11275:35:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 16669,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "11274:37:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">>",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 16670,
                                "name": "LIQUIDATION_BONUS_START_BIT_POSITION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16060,
                                "src": "11315:36:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11274:77:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16679,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 16676,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 16672,
                                        "name": "self",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16638,
                                        "src": "11360:4:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                          "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                        }
                                      },
                                      "id": 16673,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "data",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20522,
                                      "src": "11360:9:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 16675,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "~",
                                      "prefix": true,
                                      "src": "11372:14:75",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 16674,
                                        "name": "DECIMALS_MASK",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16038,
                                        "src": "11373:13:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "11360:26:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 16677,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "11359:28:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">>",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 16678,
                                "name": "RESERVE_DECIMALS_START_BIT_POSITION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16063,
                                "src": "11391:35:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11359:67:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16687,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 16684,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 16680,
                                        "name": "self",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16638,
                                        "src": "11435:4:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                          "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                        }
                                      },
                                      "id": 16681,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "data",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20522,
                                      "src": "11435:9:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 16683,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "~",
                                      "prefix": true,
                                      "src": "11447:20:75",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 16682,
                                        "name": "RESERVE_FACTOR_MASK",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16053,
                                        "src": "11448:19:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "11435:32:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 16685,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "11434:34:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">>",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 16686,
                                "name": "RESERVE_FACTOR_START_BIT_POSITION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16078,
                                "src": "11472:33:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11434:71:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 16688,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "11144:367:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256,uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 16650,
                        "id": 16689,
                        "nodeType": "Return",
                        "src": "11137:374:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16636,
                    "nodeType": "StructuredDocumentation",
                    "src": "10695:243:75",
                    "text": " @dev Gets the configuration paramters of the reserve from a memory object\n @param self The reserve configuration\n @return The state params representing ltv, liquidation threshold, liquidation bonus, the reserve decimals*"
                  },
                  "id": 16691,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getParamsMemory",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16639,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16638,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16691,
                        "src": "10966:45:75",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                          "typeString": "struct DataTypes.ReserveConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16637,
                          "name": "DataTypes.ReserveConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20523,
                          "src": "10966:33:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10965:47:75"
                  },
                  "returnParameters": {
                    "id": 16650,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16641,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16691,
                        "src": "11055:7:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16640,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11055:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16643,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16691,
                        "src": "11070:7:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16642,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11070:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16645,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16691,
                        "src": "11085:7:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16644,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11085:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16647,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16691,
                        "src": "11100:7:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16646,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11100:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16649,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16691,
                        "src": "11115:7:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16648,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11115:7:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11047:81:75"
                  },
                  "scope": 16741,
                  "src": "10941:575:75",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16739,
                    "nodeType": "Block",
                    "src": "11918:193:75",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16712,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 16709,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 16705,
                                        "name": "self",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16694,
                                        "src": "11940:4:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                          "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                        }
                                      },
                                      "id": 16706,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "data",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20522,
                                      "src": "11940:9:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 16708,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "~",
                                      "prefix": true,
                                      "src": "11952:12:75",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 16707,
                                        "name": "ACTIVE_MASK",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16041,
                                        "src": "11953:11:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "11940:24:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 16710,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "11939:26:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 16711,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11969:1:75",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "11939:31:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16720,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 16717,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 16713,
                                        "name": "self",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16694,
                                        "src": "11979:4:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                          "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                        }
                                      },
                                      "id": 16714,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "data",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20522,
                                      "src": "11979:9:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 16716,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "~",
                                      "prefix": true,
                                      "src": "11991:12:75",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 16715,
                                        "name": "FROZEN_MASK",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16044,
                                        "src": "11992:11:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "11979:24:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 16718,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "11978:26:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 16719,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12008:1:75",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "11978:31:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16728,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 16725,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 16721,
                                        "name": "self",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16694,
                                        "src": "12018:4:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                          "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                        }
                                      },
                                      "id": 16722,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "data",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20522,
                                      "src": "12018:9:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 16724,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "~",
                                      "prefix": true,
                                      "src": "12030:15:75",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 16723,
                                        "name": "BORROWING_MASK",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16047,
                                        "src": "12031:14:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "12018:27:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 16726,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "12017:29:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 16727,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12050:1:75",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "12017:34:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16736,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 16733,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 16729,
                                        "name": "self",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16694,
                                        "src": "12060:4:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                                          "typeString": "struct DataTypes.ReserveConfigurationMap memory"
                                        }
                                      },
                                      "id": 16730,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "data",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20522,
                                      "src": "12060:9:75",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 16732,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "~",
                                      "prefix": true,
                                      "src": "12072:22:75",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 16731,
                                        "name": "STABLE_BORROWING_MASK",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16050,
                                        "src": "12073:21:75",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "12060:34:75",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 16734,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "12059:36:75",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 16735,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12099:1:75",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "12059:41:75",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 16737,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "11931:175:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bool_$_t_bool_$_t_bool_$",
                            "typeString": "tuple(bool,bool,bool,bool)"
                          }
                        },
                        "functionReturnParameters": 16704,
                        "id": 16738,
                        "nodeType": "Return",
                        "src": "11924:182:75"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16692,
                    "nodeType": "StructuredDocumentation",
                    "src": "11520:233:75",
                    "text": " @dev Gets the configuration flags of the reserve from a memory object\n @param self The reserve configuration\n @return The state flags representing active, frozen, borrowing enabled, stableRateBorrowing enabled*"
                  },
                  "id": 16740,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getFlagsMemory",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16695,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16694,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16740,
                        "src": "11780:45:75",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_memory_ptr",
                          "typeString": "struct DataTypes.ReserveConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16693,
                          "name": "DataTypes.ReserveConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20523,
                          "src": "11780:33:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                            "typeString": "struct DataTypes.ReserveConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11779:47:75"
                  },
                  "returnParameters": {
                    "id": 16704,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16697,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16740,
                        "src": "11869:4:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16696,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "11869:4:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16699,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16740,
                        "src": "11881:4:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16698,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "11881:4:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16701,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16740,
                        "src": "11893:4:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16700,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "11893:4:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16703,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16740,
                        "src": "11905:4:75",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16702,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "11905:4:75",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11861:54:75"
                  },
                  "scope": 16741,
                  "src": "11756:355:75",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 16742,
              "src": "297:11816:75"
            }
          ],
          "src": "37:12077:75"
        },
        "id": 75
      },
      "contracts/protocol/libraries/configuration/UserConfiguration.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/libraries/configuration/UserConfiguration.sol",
          "exportedSymbols": {
            "UserConfiguration": [
              16984
            ]
          },
          "id": 16985,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 16743,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:76"
            },
            {
              "absolutePath": "contracts/protocol/libraries/helpers/Errors.sol",
              "file": "../helpers/Errors.sol",
              "id": 16745,
              "nodeType": "ImportDirective",
              "scope": 16985,
              "sourceUnit": 17240,
              "src": "62:45:76",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 16744,
                    "name": "Errors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:6:76",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/types/DataTypes.sol",
              "file": "../types/DataTypes.sol",
              "id": 16747,
              "nodeType": "ImportDirective",
              "scope": 16985,
              "sourceUnit": 20532,
              "src": "108:49:76",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 16746,
                    "name": "DataTypes",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "116:9:76",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 16748,
                "nodeType": "StructuredDocumentation",
                "src": "159:131:76",
                "text": " @title UserConfiguration library\n @author Aave\n @notice Implements the bitmap logic to handle the user configuration"
              },
              "fullyImplemented": true,
              "id": 16984,
              "linearizedBaseContracts": [
                16984
              ],
              "name": "UserConfiguration",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 16751,
                  "mutability": "constant",
                  "name": "BORROWING_MASK",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 16984,
                  "src": "321:113:76",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16749,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "321:7:76",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307835353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535",
                    "id": 16750,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "368:66:76",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_38597363079105398474523661669562635951089994888546854679819194669304376546645_by_1",
                      "typeString": "int_const 3859...(69 digits omitted)...6645"
                    },
                    "value": "0x5555555555555555555555555555555555555555555555555555555555555555"
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16800,
                    "nodeType": "Block",
                    "src": "848:186:76",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16764,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 16762,
                                "name": "reserveIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16756,
                                "src": "862:12:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "313238",
                                "id": 16763,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "877:3:76",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_128_by_1",
                                  "typeString": "int_const 128"
                                },
                                "value": "128"
                              },
                              "src": "862:18:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 16765,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "882:6:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 16766,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "UL_INVALID_INDEX",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17218,
                              "src": "882:23:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 16761,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "854:7:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16767,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "854:52:76",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16768,
                        "nodeType": "ExpressionStatement",
                        "src": "854:52:76"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16798,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 16769,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16754,
                              "src": "912:4:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                              }
                            },
                            "id": 16771,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20525,
                            "src": "912:9:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 16797,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16782,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 16772,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16754,
                                      "src": "931:4:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                        "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                                      }
                                    },
                                    "id": 16773,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "data",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20525,
                                    "src": "931:9:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 16781,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "~",
                                    "prefix": true,
                                    "src": "943:26:76",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 16779,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 16774,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "945:1:76",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<<",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "components": [
                                              {
                                                "argumentTypes": null,
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 16777,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "argumentTypes": null,
                                                  "id": 16775,
                                                  "name": "reserveIndex",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 16756,
                                                  "src": "951:12:76",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "*",
                                                "rightExpression": {
                                                  "argumentTypes": null,
                                                  "hexValue": "32",
                                                  "id": 16776,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "966:1:76",
                                                  "subdenomination": null,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_2_by_1",
                                                    "typeString": "int_const 2"
                                                  },
                                                  "value": "2"
                                                },
                                                "src": "951:16:76",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 16778,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "950:18:76",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "945:23:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 16780,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "944:25:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "931:38:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 16783,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "930:40:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "|",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16795,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "condition": {
                                          "argumentTypes": null,
                                          "id": 16786,
                                          "name": "borrowing",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16758,
                                          "src": "988:9:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 16788,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1004:1:76",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "id": 16789,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "Conditional",
                                        "src": "988:17:76",
                                        "trueExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 16787,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1000:1:76",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      ],
                                      "id": 16785,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "980:7:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 16784,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "980:7:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 16790,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "980:26:76",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 16793,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 16791,
                                          "name": "reserveIndex",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16756,
                                          "src": "1011:12:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "32",
                                          "id": 16792,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1026:1:76",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "src": "1011:16:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 16794,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "1010:18:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "980:48:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 16796,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "979:50:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "930:99:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "912:117:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16799,
                        "nodeType": "ExpressionStatement",
                        "src": "912:117:76"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16752,
                    "nodeType": "StructuredDocumentation",
                    "src": "439:276:76",
                    "text": " @dev Sets if the user is borrowing the reserve identified by reserveIndex\n @param self The configuration object\n @param reserveIndex The index of the reserve in the bitmap\n @param borrowing True if the user is borrowing the reserve, false otherwise*"
                  },
                  "id": 16801,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setBorrowing",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16759,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16754,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16801,
                        "src": "745:43:76",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                          "typeString": "struct DataTypes.UserConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16753,
                          "name": "DataTypes.UserConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20526,
                          "src": "745:30:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                            "typeString": "struct DataTypes.UserConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16756,
                        "mutability": "mutable",
                        "name": "reserveIndex",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16801,
                        "src": "794:20:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16755,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "794:7:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16758,
                        "mutability": "mutable",
                        "name": "borrowing",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16801,
                        "src": "820:14:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16757,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "820:4:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "739:99:76"
                  },
                  "returnParameters": {
                    "id": 16760,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "848:0:76"
                  },
                  "scope": 16984,
                  "src": "718:316:76",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16854,
                    "nodeType": "Block",
                    "src": "1490:202:76",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16814,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 16812,
                                "name": "reserveIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16806,
                                "src": "1504:12:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "313238",
                                "id": 16813,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1519:3:76",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_128_by_1",
                                  "typeString": "int_const 128"
                                },
                                "value": "128"
                              },
                              "src": "1504:18:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 16815,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "1524:6:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 16816,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "UL_INVALID_INDEX",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17218,
                              "src": "1524:23:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 16811,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1496:7:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16817,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1496:52:76",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16818,
                        "nodeType": "ExpressionStatement",
                        "src": "1496:52:76"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 16852,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 16819,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16804,
                              "src": "1554:4:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                              }
                            },
                            "id": 16821,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20525,
                            "src": "1554:9:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 16851,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16834,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 16822,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16804,
                                      "src": "1573:4:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                        "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                                      }
                                    },
                                    "id": 16823,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "data",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20525,
                                    "src": "1573:9:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 16833,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "~",
                                    "prefix": true,
                                    "src": "1585:30:76",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 16831,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 16824,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1587:1:76",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<<",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "components": [
                                              {
                                                "argumentTypes": null,
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 16829,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "argumentTypes": null,
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "id": 16827,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "argumentTypes": null,
                                                    "id": 16825,
                                                    "name": "reserveIndex",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 16806,
                                                    "src": "1593:12:76",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "*",
                                                  "rightExpression": {
                                                    "argumentTypes": null,
                                                    "hexValue": "32",
                                                    "id": 16826,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "1608:1:76",
                                                    "subdenomination": null,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_2_by_1",
                                                      "typeString": "int_const 2"
                                                    },
                                                    "value": "2"
                                                  },
                                                  "src": "1593:16:76",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "+",
                                                "rightExpression": {
                                                  "argumentTypes": null,
                                                  "hexValue": "31",
                                                  "id": 16828,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "1612:1:76",
                                                  "subdenomination": null,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_1_by_1",
                                                    "typeString": "int_const 1"
                                                  },
                                                  "value": "1"
                                                },
                                                "src": "1593:20:76",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 16830,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "1592:22:76",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "1587:27:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 16832,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "1586:29:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1573:42:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 16835,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "1572:44:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "|",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16849,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "condition": {
                                          "argumentTypes": null,
                                          "id": 16838,
                                          "name": "usingAsCollateral",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16808,
                                          "src": "1634:17:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 16840,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1658:1:76",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "id": 16841,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "Conditional",
                                        "src": "1634:25:76",
                                        "trueExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 16839,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1654:1:76",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      ],
                                      "id": 16837,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1626:7:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 16836,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1626:7:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 16842,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1626:34:76",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 16847,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 16845,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 16843,
                                            "name": "reserveIndex",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 16806,
                                            "src": "1665:12:76",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "*",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "32",
                                            "id": 16844,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1680:1:76",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_2_by_1",
                                              "typeString": "int_const 2"
                                            },
                                            "value": "2"
                                          },
                                          "src": "1665:16:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 16846,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1684:1:76",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "src": "1665:20:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 16848,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "1664:22:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1626:60:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 16850,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "1625:62:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1572:115:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1554:133:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16853,
                        "nodeType": "ExpressionStatement",
                        "src": "1554:133:76"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16802,
                    "nodeType": "StructuredDocumentation",
                    "src": "1038:303:76",
                    "text": " @dev Sets if the user is using as collateral the reserve identified by reserveIndex\n @param self The configuration object\n @param reserveIndex The index of the reserve in the bitmap\n @param usingAsCollateral True if the user is usin the reserve as collateral, false otherwise*"
                  },
                  "id": 16855,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setUsingAsCollateral",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16809,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16804,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16855,
                        "src": "1379:43:76",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                          "typeString": "struct DataTypes.UserConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16803,
                          "name": "DataTypes.UserConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20526,
                          "src": "1379:30:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                            "typeString": "struct DataTypes.UserConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16806,
                        "mutability": "mutable",
                        "name": "reserveIndex",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16855,
                        "src": "1428:20:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16805,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1428:7:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16808,
                        "mutability": "mutable",
                        "name": "usingAsCollateral",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16855,
                        "src": "1454:22:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16807,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1454:4:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1373:107:76"
                  },
                  "returnParameters": {
                    "id": 16810,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1490:0:76"
                  },
                  "scope": 16984,
                  "src": "1344:348:76",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16886,
                    "nodeType": "Block",
                    "src": "2160:118:76",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16868,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 16866,
                                "name": "reserveIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16860,
                                "src": "2174:12:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "313238",
                                "id": 16867,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2189:3:76",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_128_by_1",
                                  "typeString": "int_const 128"
                                },
                                "value": "128"
                              },
                              "src": "2174:18:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 16869,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "2194:6:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 16870,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "UL_INVALID_INDEX",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17218,
                              "src": "2194:23:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 16865,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2166:7:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2166:52:76",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16872,
                        "nodeType": "ExpressionStatement",
                        "src": "2166:52:76"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16884,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 16882,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16879,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 16873,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16858,
                                      "src": "2232:4:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_memory_ptr",
                                        "typeString": "struct DataTypes.UserConfigurationMap memory"
                                      }
                                    },
                                    "id": 16874,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "data",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20525,
                                    "src": "2232:9:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 16877,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 16875,
                                          "name": "reserveIndex",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16860,
                                          "src": "2246:12:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "32",
                                          "id": 16876,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2261:1:76",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "src": "2246:16:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 16878,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "2245:18:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "2232:31:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 16880,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "2231:33:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "33",
                              "id": 16881,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2267:1:76",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_3_by_1",
                                "typeString": "int_const 3"
                              },
                              "value": "3"
                            },
                            "src": "2231:37:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 16883,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2272:1:76",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2231:42:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 16864,
                        "id": 16885,
                        "nodeType": "Return",
                        "src": "2224:49:76"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16856,
                    "nodeType": "StructuredDocumentation",
                    "src": "1696:314:76",
                    "text": " @dev Used to validate if a user has been using the reserve for borrowing or as collateral\n @param self The configuration object\n @param reserveIndex The index of the reserve in the bitmap\n @return True if the user has been using a reserve for borrowing or as collateral, false otherwise*"
                  },
                  "id": 16887,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isUsingAsCollateralOrBorrowing",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16861,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16858,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16887,
                        "src": "2058:42:76",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_memory_ptr",
                          "typeString": "struct DataTypes.UserConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16857,
                          "name": "DataTypes.UserConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20526,
                          "src": "2058:30:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                            "typeString": "struct DataTypes.UserConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16860,
                        "mutability": "mutable",
                        "name": "reserveIndex",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16887,
                        "src": "2106:20:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16859,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2106:7:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2052:78:76"
                  },
                  "returnParameters": {
                    "id": 16864,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16863,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16887,
                        "src": "2154:4:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16862,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2154:4:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2153:6:76"
                  },
                  "scope": 16984,
                  "src": "2013:265:76",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16918,
                    "nodeType": "Block",
                    "src": "2695:118:76",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16900,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 16898,
                                "name": "reserveIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16892,
                                "src": "2709:12:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "313238",
                                "id": 16899,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2724:3:76",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_128_by_1",
                                  "typeString": "int_const 128"
                                },
                                "value": "128"
                              },
                              "src": "2709:18:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 16901,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "2729:6:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 16902,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "UL_INVALID_INDEX",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17218,
                              "src": "2729:23:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 16897,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2701:7:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16903,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2701:52:76",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16904,
                        "nodeType": "ExpressionStatement",
                        "src": "2701:52:76"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16916,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 16914,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16911,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 16905,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16890,
                                      "src": "2767:4:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_memory_ptr",
                                        "typeString": "struct DataTypes.UserConfigurationMap memory"
                                      }
                                    },
                                    "id": 16906,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "data",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20525,
                                    "src": "2767:9:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 16909,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 16907,
                                          "name": "reserveIndex",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16892,
                                          "src": "2781:12:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "32",
                                          "id": 16908,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2796:1:76",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "src": "2781:16:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 16910,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "2780:18:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "2767:31:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 16912,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "2766:33:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 16913,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2802:1:76",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "2766:37:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 16915,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2807:1:76",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2766:42:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 16896,
                        "id": 16917,
                        "nodeType": "Return",
                        "src": "2759:49:76"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16888,
                    "nodeType": "StructuredDocumentation",
                    "src": "2282:280:76",
                    "text": " @dev Used to validate if a user has been using the reserve for borrowing\n @param self The configuration object\n @param reserveIndex The index of the reserve in the bitmap\n @return True if the user has been using a reserve for borrowing, false otherwise*"
                  },
                  "id": 16919,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isBorrowing",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16893,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16890,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16919,
                        "src": "2586:42:76",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_memory_ptr",
                          "typeString": "struct DataTypes.UserConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16889,
                          "name": "DataTypes.UserConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20526,
                          "src": "2586:30:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                            "typeString": "struct DataTypes.UserConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16892,
                        "mutability": "mutable",
                        "name": "reserveIndex",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16919,
                        "src": "2630:20:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16891,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2630:7:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2585:66:76"
                  },
                  "returnParameters": {
                    "id": 16896,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16895,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16919,
                        "src": "2687:4:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16894,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2687:4:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2686:6:76"
                  },
                  "scope": 16984,
                  "src": "2565:248:76",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16952,
                    "nodeType": "Block",
                    "src": "3238:122:76",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16932,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 16930,
                                "name": "reserveIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16924,
                                "src": "3252:12:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "313238",
                                "id": 16931,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3267:3:76",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_128_by_1",
                                  "typeString": "int_const 128"
                                },
                                "value": "128"
                              },
                              "src": "3252:18:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 16933,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "3272:6:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 16934,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "UL_INVALID_INDEX",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17218,
                              "src": "3272:23:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 16929,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3244:7:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16935,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3244:52:76",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16936,
                        "nodeType": "ExpressionStatement",
                        "src": "3244:52:76"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16950,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 16948,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16945,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 16937,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16922,
                                      "src": "3310:4:76",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_memory_ptr",
                                        "typeString": "struct DataTypes.UserConfigurationMap memory"
                                      }
                                    },
                                    "id": 16938,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "data",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20525,
                                    "src": "3310:9:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 16943,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 16941,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 16939,
                                            "name": "reserveIndex",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 16924,
                                            "src": "3324:12:76",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "*",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "32",
                                            "id": 16940,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3339:1:76",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_2_by_1",
                                              "typeString": "int_const 2"
                                            },
                                            "value": "2"
                                          },
                                          "src": "3324:16:76",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 16942,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3343:1:76",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "src": "3324:20:76",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 16944,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "3323:22:76",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "3310:35:76",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 16946,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3309:37:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 16947,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3349:1:76",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "3309:41:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 16949,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3354:1:76",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3309:46:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 16928,
                        "id": 16951,
                        "nodeType": "Return",
                        "src": "3302:53:76"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16920,
                    "nodeType": "StructuredDocumentation",
                    "src": "2817:280:76",
                    "text": " @dev Used to validate if a user has been using the reserve as collateral\n @param self The configuration object\n @param reserveIndex The index of the reserve in the bitmap\n @return True if the user has been using a reserve as collateral, false otherwise*"
                  },
                  "id": 16953,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isUsingAsCollateral",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16925,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16922,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16953,
                        "src": "3129:42:76",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_memory_ptr",
                          "typeString": "struct DataTypes.UserConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16921,
                          "name": "DataTypes.UserConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20526,
                          "src": "3129:30:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                            "typeString": "struct DataTypes.UserConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16924,
                        "mutability": "mutable",
                        "name": "reserveIndex",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16953,
                        "src": "3173:20:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16923,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3173:7:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3128:66:76"
                  },
                  "returnParameters": {
                    "id": 16928,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16927,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16953,
                        "src": "3230:4:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16926,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3230:4:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3229:6:76"
                  },
                  "scope": 16984,
                  "src": "3100:260:76",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16968,
                    "nodeType": "Block",
                    "src": "3667:49:76",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16966,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 16964,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 16961,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16956,
                                "src": "3680:4:76",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_memory_ptr",
                                  "typeString": "struct DataTypes.UserConfigurationMap memory"
                                }
                              },
                              "id": 16962,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20525,
                              "src": "3680:9:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 16963,
                              "name": "BORROWING_MASK",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16751,
                              "src": "3692:14:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3680:26:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 16965,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3710:1:76",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3680:31:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 16960,
                        "id": 16967,
                        "nodeType": "Return",
                        "src": "3673:38:76"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16954,
                    "nodeType": "StructuredDocumentation",
                    "src": "3364:203:76",
                    "text": " @dev Used to validate if a user has been borrowing from any reserve\n @param self The configuration object\n @return True if the user has been borrowing any reserve, false otherwise*"
                  },
                  "id": 16969,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isBorrowingAny",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16957,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16956,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16969,
                        "src": "3594:42:76",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_memory_ptr",
                          "typeString": "struct DataTypes.UserConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16955,
                          "name": "DataTypes.UserConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20526,
                          "src": "3594:30:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                            "typeString": "struct DataTypes.UserConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3593:44:76"
                  },
                  "returnParameters": {
                    "id": 16960,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16959,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16969,
                        "src": "3661:4:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16958,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3661:4:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3660:6:76"
                  },
                  "scope": 16984,
                  "src": "3570:146:76",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16982,
                    "nodeType": "Block",
                    "src": "4011:32:76",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 16977,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16972,
                              "src": "4024:4:76",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_memory_ptr",
                                "typeString": "struct DataTypes.UserConfigurationMap memory"
                              }
                            },
                            "id": 16978,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20525,
                            "src": "4024:9:76",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 16979,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4037:1:76",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4024:14:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 16976,
                        "id": 16981,
                        "nodeType": "Return",
                        "src": "4017:21:76"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16970,
                    "nodeType": "StructuredDocumentation",
                    "src": "3720:198:76",
                    "text": " @dev Used to validate if a user has not been using any reserve\n @param self The configuration object\n @return True if the user has been borrowing any reserve, false otherwise*"
                  },
                  "id": 16983,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isEmpty",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 16973,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16972,
                        "mutability": "mutable",
                        "name": "self",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16983,
                        "src": "3938:42:76",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_memory_ptr",
                          "typeString": "struct DataTypes.UserConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 16971,
                          "name": "DataTypes.UserConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20526,
                          "src": "3938:30:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                            "typeString": "struct DataTypes.UserConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3937:44:76"
                  },
                  "returnParameters": {
                    "id": 16976,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16975,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16983,
                        "src": "4005:4:76",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16974,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4005:4:76",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4004:6:76"
                  },
                  "scope": 16984,
                  "src": "3921:122:76",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 16985,
              "src": "291:3754:76"
            }
          ],
          "src": "37:4009:76"
        },
        "id": 76
      },
      "contracts/protocol/libraries/helpers/Errors.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/libraries/helpers/Errors.sol",
          "exportedSymbols": {
            "Errors": [
              17239
            ]
          },
          "id": 17240,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 16986,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:77"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 16987,
                "nodeType": "StructuredDocumentation",
                "src": "62:597:77",
                "text": " @title Errors library\n @author Aave\n @notice Defines the error messages emitted by the different contracts of the Aave protocol\n @dev Error messages prefix glossary:\n  - VL = ValidationLogic\n  - MATH = Math libraries\n  - CT = Common errors between tokens (AToken, VariableDebtToken and StableDebtToken)\n  - AT = AToken\n  - SDT = StableDebtToken\n  - VDT = VariableDebtToken\n  - LP = LendingPool\n  - LPAPR = LendingPoolAddressesProviderRegistry\n  - LPC = LendingPoolConfiguration\n  - RL = ReserveLogic\n  - LPCM = LendingPoolCollateralManager\n  - P = Pausable"
              },
              "fullyImplemented": true,
              "id": 17239,
              "linearizedBaseContracts": [
                17239
              ],
              "name": "Errors",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "functionSelector": "ac753236",
                  "id": 16990,
                  "mutability": "constant",
                  "name": "CALLER_NOT_POOL_ADMIN",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "697:51:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16988,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "697:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3333",
                    "id": 16989,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "744:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_ed93c67e1a9b7f09d3b44ee593360f0073603a8e45415e2c3c69afc994a1103d",
                      "typeString": "literal_string \"33\""
                    },
                    "value": "33"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "e2c16d69",
                  "id": 16993,
                  "mutability": "constant",
                  "name": "BORROW_ALLOWANCE_NOT_ENOUGH",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "791:57:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16991,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "791:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3539",
                    "id": 16992,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "844:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_dec29173c70f4e70086d64e09cb72b415f3d6a1843817cff62483903f0e12f62",
                      "typeString": "literal_string \"59\""
                    },
                    "value": "59"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "871938a8",
                  "id": 16996,
                  "mutability": "constant",
                  "name": "VL_INVALID_AMOUNT",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "937:46:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16994,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "937:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "31",
                    "id": 16995,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "980:3:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                      "typeString": "literal_string \"1\""
                    },
                    "value": "1"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "7865a627",
                  "id": 16999,
                  "mutability": "constant",
                  "name": "VL_NO_ACTIVE_RESERVE",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "1022:49:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16997,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1022:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "32",
                    "id": 16998,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1068:3:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_ad7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a5",
                      "typeString": "literal_string \"2\""
                    },
                    "value": "2"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "d7510e0c",
                  "id": 17002,
                  "mutability": "constant",
                  "name": "VL_RESERVE_FROZEN",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "1114:46:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17000,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1114:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "33",
                    "id": 17001,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1157:3:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de",
                      "typeString": "literal_string \"3\""
                    },
                    "value": "3"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "179476c5",
                  "id": 17005,
                  "mutability": "constant",
                  "name": "VL_CURRENT_AVAILABLE_LIQUIDITY_NOT_ENOUGH",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "1226:70:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17003,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1226:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "34",
                    "id": 17004,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1293:3:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_13600b294191fc92924bb3ce4b969c1e7e2bab8f4c93c3fc6d0a51733df3c060",
                      "typeString": "literal_string \"4\""
                    },
                    "value": "4"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "a8440241",
                  "id": 17008,
                  "mutability": "constant",
                  "name": "VL_NOT_ENOUGH_AVAILABLE_USER_BALANCE",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "1341:65:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17006,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1341:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "35",
                    "id": 17007,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1403:3:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_ceebf77a833b30520287ddd9478ff51abbdffa30aa90a8d655dba0e8a79ce0c1",
                      "typeString": "literal_string \"5\""
                    },
                    "value": "5"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "f3d9cc11",
                  "id": 17011,
                  "mutability": "constant",
                  "name": "VL_TRANSFER_NOT_ALLOWED",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "1468:52:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17009,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1468:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "36",
                    "id": 17010,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1517:3:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_e455bf8ea6e7463a1046a0b52804526e119b4bf5136279614e0b1e8e296a4e2d",
                      "typeString": "literal_string \"6\""
                    },
                    "value": "6"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "36565ab1",
                  "id": 17014,
                  "mutability": "constant",
                  "name": "VL_BORROWING_NOT_ENABLED",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "1557:53:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17012,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1557:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "37",
                    "id": 17013,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1607:3:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_52f1a9b320cab38e5da8a8f97989383aab0a49165fc91c737310e4f7e9821021",
                      "typeString": "literal_string \"7\""
                    },
                    "value": "7"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "3b5d25aa",
                  "id": 17017,
                  "mutability": "constant",
                  "name": "VL_INVALID_INTEREST_RATE_MODE_SELECTED",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "1644:67:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17015,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1644:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "38",
                    "id": 17016,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1708:3:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_e4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10",
                      "typeString": "literal_string \"8\""
                    },
                    "value": "8"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "708b8dd3",
                  "id": 17020,
                  "mutability": "constant",
                  "name": "VL_COLLATERAL_BALANCE_IS_0",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "1756:55:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17018,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1756:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "39",
                    "id": 17019,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1808:3:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_d2f8f61201b2b11a78d6e866abc9c3db2ae8631fa656bfe5cb53668255367afb",
                      "typeString": "literal_string \"9\""
                    },
                    "value": "9"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "1ec68b1d",
                  "id": 17023,
                  "mutability": "constant",
                  "name": "VL_HEALTH_FACTOR_LOWER_THAN_LIQUIDATION_THRESHOLD",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "1848:79:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17021,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1848:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3130",
                    "id": 17022,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1923:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_1a192fabce13988b84994d4296e6cdc418d55e2f1d7f942188d4040b94fc57ac",
                      "typeString": "literal_string \"10\""
                    },
                    "value": "10"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "2ace698a",
                  "id": 17026,
                  "mutability": "constant",
                  "name": "VL_COLLATERAL_CANNOT_COVER_NEW_BORROW",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "1991:67:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17024,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1991:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3131",
                    "id": 17025,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2054:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_7880aec93413f117ef14bd4e6d130875ab2c7d7d55a064fac3c2f7bd51516380",
                      "typeString": "literal_string \"11\""
                    },
                    "value": "11"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "4927c63a",
                  "id": 17029,
                  "mutability": "constant",
                  "name": "VL_STABLE_BORROWING_NOT_ENABLED",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "2120:61:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17027,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2120:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3132",
                    "id": 17028,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2177:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_7f8b6b088b6d74c2852fc86c796dca07b44eed6fb3daf5e6b59f7c364db14528",
                      "typeString": "literal_string \"12\""
                    },
                    "value": "12"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "a39ed4ff",
                  "id": 17032,
                  "mutability": "constant",
                  "name": "VL_COLLATERAL_SAME_AS_BORROWING_CURRENCY",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "2217:70:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17030,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2217:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3133",
                    "id": 17031,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2283:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_789bcdf275fa270780a52ae3b79bb1ce0fda7e0aaad87b57b74bb99ac290714a",
                      "typeString": "literal_string \"13\""
                    },
                    "value": "13"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "3aa786a8",
                  "id": 17035,
                  "mutability": "constant",
                  "name": "VL_AMOUNT_BIGGER_THAN_MAX_LOAN_SIZE_STABLE",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "2358:72:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17033,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2358:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3134",
                    "id": 17034,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2426:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_5c4c6aa067b6f8e6cb38e6ab843832a94d1712d661a04d73c517d6a1931a9e5d",
                      "typeString": "literal_string \"14\""
                    },
                    "value": "14"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "91a9fb18",
                  "id": 17038,
                  "mutability": "constant",
                  "name": "VL_NO_DEBT_OF_SELECTED_TYPE",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "2513:57:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17036,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2513:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3135",
                    "id": 17037,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2566:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_1d3be50b2bb17407dd170f1d5da128d1def30c6b1598d6a629e79b4775265526",
                      "typeString": "literal_string \"15\""
                    },
                    "value": "15"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "daf23547",
                  "id": 17041,
                  "mutability": "constant",
                  "name": "VL_NO_EXPLICIT_AMOUNT_TO_REPAY_ON_BEHALF",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "2687:70:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17039,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2687:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3136",
                    "id": 17040,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2753:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_277ab82e5a4641341820a4a2933a62c1de997e42e92548657ae21b3728d580fe",
                      "typeString": "literal_string \"16\""
                    },
                    "value": "16"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "6422b257",
                  "id": 17044,
                  "mutability": "constant",
                  "name": "VL_NO_STABLE_RATE_LOAN_IN_RESERVE",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "2834:63:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17042,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2834:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3137",
                    "id": 17043,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2893:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_8e8fab5f003314da8d1873ea7720e8d9f47650136d916064d1edb8a11d682624",
                      "typeString": "literal_string \"17\""
                    },
                    "value": "17"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "6ab5e615",
                  "id": 17047,
                  "mutability": "constant",
                  "name": "VL_NO_VARIABLE_RATE_LOAN_IN_RESERVE",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "2972:65:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17045,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2972:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3138",
                    "id": 17046,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3033:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_8fef2229291b68be841adf029e58b87f39ba144b2d3b0af1760243d0a9bc6a1c",
                      "typeString": "literal_string \"18\""
                    },
                    "value": "18"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "35a9d21d",
                  "id": 17050,
                  "mutability": "constant",
                  "name": "VL_UNDERLYING_BALANCE_NOT_GREATER_THAN_0",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "3114:70:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17048,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3114:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3139",
                    "id": 17049,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3180:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_939eb54753ed0cc7e2272bfb34cbe098308c93936ed54d79078f76ade0b2e789",
                      "typeString": "literal_string \"19\""
                    },
                    "value": "19"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "e29425dc",
                  "id": 17053,
                  "mutability": "constant",
                  "name": "VL_DEPOSIT_ALREADY_IN_USE",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "3243:55:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17051,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3243:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3230",
                    "id": 17052,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3294:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_731dc163f73d31d8c68f9917ce4ff967753939f70432973c04fd2c2a48148607",
                      "typeString": "literal_string \"20\""
                    },
                    "value": "20"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "44dc4f70",
                  "id": 17056,
                  "mutability": "constant",
                  "name": "LP_NOT_ENOUGH_STABLE_BORROW_BALANCE",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "3356:65:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17054,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3356:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3231",
                    "id": 17055,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3417:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_f4c2b5de886427473655d4c904c743576dc2d53249b7535d96c06cc97ae7216b",
                      "typeString": "literal_string \"21\""
                    },
                    "value": "21"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "b89652cd",
                  "id": 17059,
                  "mutability": "constant",
                  "name": "LP_INTEREST_RATE_REBALANCE_CONDITIONS_NOT_MET",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "3487:75:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17057,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3487:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3232",
                    "id": 17058,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3558:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_d4d1a59767271eefdc7830a772b9732a11d503531d972ab8c981a6b1c0e666e5",
                      "typeString": "literal_string \"22\""
                    },
                    "value": "22"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "4a529f91",
                  "id": 17062,
                  "mutability": "constant",
                  "name": "LP_LIQUIDATION_CALL_FAILED",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "3619:56:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17060,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3619:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3233",
                    "id": 17061,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3671:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_1572b593c53d839d80004aa4b8c51211864104f06ace9e22be9c4365b50655ea",
                      "typeString": "literal_string \"23\""
                    },
                    "value": "23"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "22a6f08e",
                  "id": 17065,
                  "mutability": "constant",
                  "name": "LP_NOT_ENOUGH_LIQUIDITY_TO_BORROW",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "3708:63:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17063,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3708:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3234",
                    "id": 17064,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3767:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_6585423cb6456b1d4957f6454d2f004f0c4f58d53a00082412d5c2ef4b1b31fd",
                      "typeString": "literal_string \"24\""
                    },
                    "value": "24"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "390f34ba",
                  "id": 17068,
                  "mutability": "constant",
                  "name": "LP_REQUESTED_AMOUNT_TOO_SMALL",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "3830:59:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17066,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3830:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3235",
                    "id": 17067,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3885:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_81e080ffc23e8b8d44dd829bc823229e92b893eb1d8f624419d3f5682eb97fc3",
                      "typeString": "literal_string \"25\""
                    },
                    "value": "25"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "0b8fd588",
                  "id": 17071,
                  "mutability": "constant",
                  "name": "LP_INCONSISTENT_PROTOCOL_ACTUAL_BALANCE",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "3949:69:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17069,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3949:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3236",
                    "id": 17070,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4014:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_9cce9eb03c9f29c6481fca9f0f942b15bef0bbbc47fda0ddb44df157019835d9",
                      "typeString": "literal_string \"26\""
                    },
                    "value": "26"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "b36a2cf3",
                  "id": 17074,
                  "mutability": "constant",
                  "name": "LP_CALLER_NOT_LENDING_POOL_CONFIGURATOR",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "4078:69:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17072,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4078:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3237",
                    "id": 17073,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4143:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_58a280f74f57bf051c40f060139dc747e015be52f68c57e2c4ab2e4bd4146f43",
                      "typeString": "literal_string \"27\""
                    },
                    "value": "27"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "2b34c349",
                  "id": 17077,
                  "mutability": "constant",
                  "name": "LP_INCONSISTENT_FLASHLOAN_PARAMS",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "4220:62:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17075,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4220:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3238",
                    "id": 17076,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4278:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_9560168699514dcd528543d614e81b4f36adf182dc624d2f1eb91df8addd987e",
                      "typeString": "literal_string \"28\""
                    },
                    "value": "28"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "6ba4271f",
                  "id": 17080,
                  "mutability": "constant",
                  "name": "CT_CALLER_MUST_BE_LENDING_POOL",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "4286:60:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17078,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4286:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3239",
                    "id": 17079,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4342:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_7749cc8014201da2069c21d93ba99c584b6f62d393fde534ed47eac227e31561",
                      "typeString": "literal_string \"29\""
                    },
                    "value": "29"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "06f355ad",
                  "id": 17083,
                  "mutability": "constant",
                  "name": "CT_CANNOT_GIVE_ALLOWANCE_TO_HIMSELF",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "4406:65:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17081,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4406:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3330",
                    "id": 17082,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4467:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_bbf5a24880b10a5f9f601c4058e4771ddea17e7d765ceb3c903814e1c0d621e0",
                      "typeString": "literal_string \"30\""
                    },
                    "value": "30"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "a2fbc8ad",
                  "id": 17086,
                  "mutability": "constant",
                  "name": "CT_TRANSFER_AMOUNT_NOT_GT_0",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "4518:57:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17084,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4518:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3331",
                    "id": 17085,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4571:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_933c48a61c3bad621ebc5d57117f9e773fefae4468bceaf9d3198a3bf7c1d678",
                      "typeString": "literal_string \"31\""
                    },
                    "value": "31"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "fe75fd26",
                  "id": 17089,
                  "mutability": "constant",
                  "name": "RL_RESERVE_ALREADY_INITIALIZED",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "4633:60:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17087,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4633:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3332",
                    "id": 17088,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4689:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_8b953cbb84328003779eb1ef176ef07f7dd0ae3d4a8e408de53d15a36466c86e",
                      "typeString": "literal_string \"32\""
                    },
                    "value": "32"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "65344799",
                  "id": 17092,
                  "mutability": "constant",
                  "name": "LPC_RESERVE_LIQUIDITY_NOT_0",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "4739:57:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17090,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4739:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3334",
                    "id": 17091,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4792:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_77c32b454bb61eb9df9e3848d0ded3e59753acda90ae58befe564733aec82e4c",
                      "typeString": "literal_string \"34\""
                    },
                    "value": "34"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "f0473259",
                  "id": 17095,
                  "mutability": "constant",
                  "name": "LPC_INVALID_ATOKEN_POOL_ADDRESS",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "4848:61:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17093,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4848:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3335",
                    "id": 17094,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4905:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_5ca7b081b8c6c57b0469c340dba43ec8d33c0b898c69e55c4f74ff7ed9ac71ea",
                      "typeString": "literal_string \"35\""
                    },
                    "value": "35"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "e0d7dfd7",
                  "id": 17098,
                  "mutability": "constant",
                  "name": "LPC_INVALID_STABLE_DEBT_TOKEN_POOL_ADDRESS",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "4961:72:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17096,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4961:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3336",
                    "id": 17097,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5029:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_3b4066bd7b7960752225af105d3beafb5c47a26c5aae7e6798a437b7c0bb33e6",
                      "typeString": "literal_string \"36\""
                    },
                    "value": "36"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "c09e2618",
                  "id": 17101,
                  "mutability": "constant",
                  "name": "LPC_INVALID_VARIABLE_DEBT_TOKEN_POOL_ADDRESS",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "5085:74:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17099,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5085:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3337",
                    "id": 17100,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5155:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_5bc0457d8881b800fd1bc0d6df907345b3bf287e43a5790ded3d08dbacf9c03a",
                      "typeString": "literal_string \"37\""
                    },
                    "value": "37"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "41b40ba5",
                  "id": 17104,
                  "mutability": "constant",
                  "name": "LPC_INVALID_STABLE_DEBT_TOKEN_UNDERLYING_ADDRESS",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "5211:78:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17102,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5211:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3338",
                    "id": 17103,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5285:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_d67d834462ca31eaef1f30157e31659f60355143b7441e6fc7d9eae1fa79f3f8",
                      "typeString": "literal_string \"38\""
                    },
                    "value": "38"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "3872b0ad",
                  "id": 17107,
                  "mutability": "constant",
                  "name": "LPC_INVALID_VARIABLE_DEBT_TOKEN_UNDERLYING_ADDRESS",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "5341:80:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17105,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5341:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3339",
                    "id": 17106,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5417:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_318a541463286d7584b45438601196fbc1a55628e303a0613eb6d46e60640c95",
                      "typeString": "literal_string \"39\""
                    },
                    "value": "39"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "5a9786d4",
                  "id": 17110,
                  "mutability": "constant",
                  "name": "LPC_INVALID_ADDRESSES_PROVIDER_ID",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "5473:63:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17108,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5473:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3430",
                    "id": 17109,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5532:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_880de8116b3dfac28e9ff528a9fef1d1e0a51449c1addce011ffec1f302992b6",
                      "typeString": "literal_string \"40\""
                    },
                    "value": "40"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "47d25300",
                  "id": 17113,
                  "mutability": "constant",
                  "name": "LPC_INVALID_CONFIGURATION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "5588:55:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17111,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5588:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3735",
                    "id": 17112,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5639:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_6dbb33232cde86c8a04f90a8bed9fc1c5ef520188a14538d96eb100d69bc2a94",
                      "typeString": "literal_string \"75\""
                    },
                    "value": "75"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "d3e370ee",
                  "id": 17116,
                  "mutability": "constant",
                  "name": "LPC_CALLER_NOT_EMERGENCY_ADMIN",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "5692:60:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17114,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5692:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3736",
                    "id": 17115,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5748:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_f1ae7da53f98170be52cc9330214a82f7ba06ee306297b4e1fb86fb21c611aa6",
                      "typeString": "literal_string \"76\""
                    },
                    "value": "76"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "d6f681b6",
                  "id": 17119,
                  "mutability": "constant",
                  "name": "LPAPR_PROVIDER_NOT_REGISTERED",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "5800:59:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17117,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5800:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3431",
                    "id": 17118,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5855:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_6bcaf047ba4c8ac400fca43393035242dd1aabda2d6068a0c51242b97224de8d",
                      "typeString": "literal_string \"41\""
                    },
                    "value": "41"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "fb681def",
                  "id": 17122,
                  "mutability": "constant",
                  "name": "LPCM_HEALTH_FACTOR_NOT_BELOW_THRESHOLD",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "5895:68:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17120,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5895:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3432",
                    "id": 17121,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5959:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_ccb1f717aa77602faf03a594761a36956b1c4cf44c6b336d1db57da799b331b8",
                      "typeString": "literal_string \"42\""
                    },
                    "value": "42"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "407374a4",
                  "id": 17125,
                  "mutability": "constant",
                  "name": "LPCM_COLLATERAL_CANNOT_BE_LIQUIDATED",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "6013:66:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17123,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6013:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3433",
                    "id": 17124,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6075:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_4dfb3440902001bce9b7ebf7be7d95fe9e2056bd5ce309ceb83b32f4e00e21ed",
                      "typeString": "literal_string \"43\""
                    },
                    "value": "43"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "71a629da",
                  "id": 17128,
                  "mutability": "constant",
                  "name": "LPCM_SPECIFIED_CURRENCY_NOT_BORROWED_BY_USER",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "6131:74:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17126,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6131:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3434",
                    "id": 17127,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6201:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_2e9b7c94e032d8b3b8b30bd825717a5ac74958b53e7c37a892a4fd7dc56e4975",
                      "typeString": "literal_string \"44\""
                    },
                    "value": "44"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "cc5fc44c",
                  "id": 17131,
                  "mutability": "constant",
                  "name": "LPCM_NOT_ENOUGH_LIQUIDITY_TO_LIQUIDATE",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "6257:68:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17129,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6257:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3435",
                    "id": 17130,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6321:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_cc1431a2586c1e11fb75c87e5ee58e4204126a9fdde07075c91770f50276cbb0",
                      "typeString": "literal_string \"45\""
                    },
                    "value": "45"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "1ea7c604",
                  "id": 17134,
                  "mutability": "constant",
                  "name": "LPCM_NO_ERRORS",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "6386:44:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17132,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6386:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3436",
                    "id": 17133,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6426:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_c47ece0ffae697632ce145a7086cbcf260f7fa60876ff2606761ea2b7581ee76",
                      "typeString": "literal_string \"46\""
                    },
                    "value": "46"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "e7bf91b3",
                  "id": 17137,
                  "mutability": "constant",
                  "name": "LP_INVALID_FLASHLOAN_MODE",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "6449:55:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17135,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6449:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3437",
                    "id": 17136,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6500:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_eb09910a03c892999c305d4a86a46fa82693119d981eef22c8d043b31f9e8a31",
                      "typeString": "literal_string \"47\""
                    },
                    "value": "47"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "029d2344",
                  "id": 17140,
                  "mutability": "constant",
                  "name": "MATH_MULTIPLICATION_OVERFLOW",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "6542:58:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17138,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6542:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3438",
                    "id": 17139,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6596:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_6304e47846f882085b0f4b1a184252ae95ffe5e2a02daf39c014f492dcb1441c",
                      "typeString": "literal_string \"48\""
                    },
                    "value": "48"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "0f5ee482",
                  "id": 17143,
                  "mutability": "constant",
                  "name": "MATH_ADDITION_OVERFLOW",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "6604:52:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17141,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6604:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3439",
                    "id": 17142,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6652:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_59c0d2b7af0a8e6d3d8e710a078764bd67b7223777026c424cdb4f599824bb79",
                      "typeString": "literal_string \"49\""
                    },
                    "value": "49"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "4349e3d8",
                  "id": 17146,
                  "mutability": "constant",
                  "name": "MATH_DIVISION_BY_ZERO",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "6660:51:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17144,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6660:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3530",
                    "id": 17145,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6707:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_215d56ac8bbcf4ec574772ebea743ba30ac9d1c5e1b1ff899e5de1045f5df803",
                      "typeString": "literal_string \"50\""
                    },
                    "value": "50"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "4fe4f1ab",
                  "id": 17149,
                  "mutability": "constant",
                  "name": "RL_LIQUIDITY_INDEX_OVERFLOW",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "6715:57:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17147,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6715:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3531",
                    "id": 17148,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6768:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_f928ede1c39c5595ff22fe845412ee05a93eeaa584f8ef0c46b5eeb14cb99ec8",
                      "typeString": "literal_string \"51\""
                    },
                    "value": "51"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "44942004",
                  "id": 17152,
                  "mutability": "constant",
                  "name": "RL_VARIABLE_BORROW_INDEX_OVERFLOW",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "6814:63:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17150,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6814:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3532",
                    "id": 17151,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6873:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_cd41b8bf8f20f7ad95d96d948a315af225b219053fc98a80aee13063b692b681",
                      "typeString": "literal_string \"52\""
                    },
                    "value": "52"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "f11c6720",
                  "id": 17155,
                  "mutability": "constant",
                  "name": "RL_LIQUIDITY_RATE_OVERFLOW",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "6925:56:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17153,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6925:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3533",
                    "id": 17154,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6977:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_bbd48b257be1b8216d144ef9be5734f8d11697959c9e0f7768bec89db74a63a3",
                      "typeString": "literal_string \"53\""
                    },
                    "value": "53"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "2ea347b0",
                  "id": 17158,
                  "mutability": "constant",
                  "name": "RL_VARIABLE_BORROW_RATE_OVERFLOW",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "7022:62:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17156,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7022:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3534",
                    "id": 17157,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7080:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_006b3e710f3089a74ecb6b0f5948e5ff07a3db6ba4da475d2be17624ba96b95b",
                      "typeString": "literal_string \"54\""
                    },
                    "value": "54"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "6d422aa1",
                  "id": 17161,
                  "mutability": "constant",
                  "name": "RL_STABLE_BORROW_RATE_OVERFLOW",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "7131:60:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17159,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7131:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3535",
                    "id": 17160,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7187:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_6590fa52fa76f967656340b874bc9ca09733c2fddea9886210ebcbbceee04b35",
                      "typeString": "literal_string \"55\""
                    },
                    "value": "55"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "1291a38b",
                  "id": 17164,
                  "mutability": "constant",
                  "name": "CT_INVALID_MINT_AMOUNT",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "7236:52:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17162,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7236:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3536",
                    "id": 17163,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7284:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_32da71dbd53bc029835bc5ecdd3e688035cc92bb61b1811d1685e67ba974e19f",
                      "typeString": "literal_string \"56\""
                    },
                    "value": "56"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "e6632748",
                  "id": 17167,
                  "mutability": "constant",
                  "name": "LP_FAILED_REPAY_WITH_COLLATERAL",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "7317:61:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17165,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7317:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3537",
                    "id": 17166,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7374:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_e921da22f871c25c63f06c1365385cbb26397f64f79055cdbab32187a9377d16",
                      "typeString": "literal_string \"57\""
                    },
                    "value": "57"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "2b9c57f6",
                  "id": 17170,
                  "mutability": "constant",
                  "name": "CT_INVALID_BURN_AMOUNT",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "7382:52:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17168,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7382:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3538",
                    "id": 17169,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7430:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_59d26ca75eb04b47ab1bca5d789d02e4d0cf9ff8cb49c9041caeeeab4eccafbf",
                      "typeString": "literal_string \"58\""
                    },
                    "value": "58"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "55bab12c",
                  "id": 17173,
                  "mutability": "constant",
                  "name": "LP_FAILED_COLLATERAL_SWAP",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "7463:55:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17171,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7463:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3630",
                    "id": 17172,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7514:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_7446b42d7fe1689ec32fc1ca65129d9f21f1979742315d34500a6886f6986bea",
                      "typeString": "literal_string \"60\""
                    },
                    "value": "60"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "c2d628df",
                  "id": 17176,
                  "mutability": "constant",
                  "name": "LP_INVALID_EQUAL_ASSETS_TO_SWAP",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "7522:61:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17174,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7522:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3631",
                    "id": 17175,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7579:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_5ae62207e7adee0b793bf869601474e77943fa4d9e3e0420f34d788e59bc19bd",
                      "typeString": "literal_string \"61\""
                    },
                    "value": "61"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "f902735d",
                  "id": 17179,
                  "mutability": "constant",
                  "name": "LP_REENTRANCY_NOT_ALLOWED",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "7587:55:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17177,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7587:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3632",
                    "id": 17178,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7638:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_d9670a00d025e59e1bd58d53874bea4ab34fea782716e2c168e89a3c8452d3bb",
                      "typeString": "literal_string \"62\""
                    },
                    "value": "62"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "eca85d3a",
                  "id": 17182,
                  "mutability": "constant",
                  "name": "LP_CALLER_MUST_BE_AN_ATOKEN",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "7646:57:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17180,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7646:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3633",
                    "id": 17181,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7699:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_4569971f3d79dc8da7f8a6820be6cb8dc4a52bb0df6599b2aae7182111b63cd5",
                      "typeString": "literal_string \"63\""
                    },
                    "value": "63"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "d57bb964",
                  "id": 17185,
                  "mutability": "constant",
                  "name": "LP_IS_PAUSED",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "7707:42:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17183,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7707:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3634",
                    "id": 17184,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7745:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_646d998f946f968f0675fd4e3cb527e1222094ea0d9cc1fd615146a8fe29802e",
                      "typeString": "literal_string \"64\""
                    },
                    "value": "64"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "76f19030",
                  "id": 17188,
                  "mutability": "constant",
                  "name": "LP_NO_MORE_RESERVES_ALLOWED",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "7773:57:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17186,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7773:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3635",
                    "id": 17187,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7826:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_606503ebd6bdca7290248af82fd5a09ca0489398da9f242244210336ae6ece9f",
                      "typeString": "literal_string \"65\""
                    },
                    "value": "65"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "d44e8e88",
                  "id": 17191,
                  "mutability": "constant",
                  "name": "LP_INVALID_FLASH_LOAN_EXECUTOR_RETURN",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "7834:67:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17189,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7834:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3636",
                    "id": 17190,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7897:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_35bb2e240092263378f77ea1e9c278099a33b604c4c4e26d13ea227e8bb74470",
                      "typeString": "literal_string \"66\""
                    },
                    "value": "66"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "614cf6a1",
                  "id": 17194,
                  "mutability": "constant",
                  "name": "RC_INVALID_LTV",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "7905:44:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17192,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7905:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3637",
                    "id": 17193,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7945:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_eafa31dc210956fc0884ec5660eba9405197797219cbbda41b6aaf7118c651d8",
                      "typeString": "literal_string \"67\""
                    },
                    "value": "67"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "bd013f5b",
                  "id": 17197,
                  "mutability": "constant",
                  "name": "RC_INVALID_LIQ_THRESHOLD",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "7953:54:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17195,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7953:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3638",
                    "id": 17196,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "8003:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_cc143a676b82d5e07b2c9d57717b403ab3c58caa273a42cdb95b15980141a86c",
                      "typeString": "literal_string \"68\""
                    },
                    "value": "68"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "5e869ff1",
                  "id": 17200,
                  "mutability": "constant",
                  "name": "RC_INVALID_LIQ_BONUS",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "8011:50:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17198,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8011:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3639",
                    "id": 17199,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "8057:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_db37925934a3d3177db64e11f5e0156ceb8a756fee58ded16e549afa607ddb1d",
                      "typeString": "literal_string \"69\""
                    },
                    "value": "69"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "3f5d6ec8",
                  "id": 17203,
                  "mutability": "constant",
                  "name": "RC_INVALID_DECIMALS",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "8065:49:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17201,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8065:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3730",
                    "id": 17202,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "8110:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_cdbc23227c72e0a3f4683bdbccfcbed38047ca1a70d48b78c210dc5393029019",
                      "typeString": "literal_string \"70\""
                    },
                    "value": "70"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "9be4f03a",
                  "id": 17206,
                  "mutability": "constant",
                  "name": "RC_INVALID_RESERVE_FACTOR",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "8118:55:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17204,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8118:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3731",
                    "id": 17205,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "8169:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_2cc0d3dcb20652cd8f106aee76b6a7391771a130885634c0eb2bbe3cde796691",
                      "typeString": "literal_string \"71\""
                    },
                    "value": "71"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "333e8ea8",
                  "id": 17209,
                  "mutability": "constant",
                  "name": "LPAPR_INVALID_ADDRESSES_PROVIDER_ID",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "8177:65:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17207,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8177:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3732",
                    "id": 17208,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "8238:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_8fd0324b6a5df169e0aa0c7938ef0034d0e971a998f91b36eba211882d3617b1",
                      "typeString": "literal_string \"72\""
                    },
                    "value": "72"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "d7b079aa",
                  "id": 17212,
                  "mutability": "constant",
                  "name": "VL_INCONSISTENT_FLASHLOAN_PARAMS",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "8246:62:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17210,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8246:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3733",
                    "id": 17211,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "8304:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_b2219b801710730437d0358146c829b62297a059eceaa0b40b27aea2daecf595",
                      "typeString": "literal_string \"73\""
                    },
                    "value": "73"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "b72e40c7",
                  "id": 17215,
                  "mutability": "constant",
                  "name": "LP_INCONSISTENT_PARAMS_LENGTH",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "8312:59:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17213,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8312:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3734",
                    "id": 17214,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "8367:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_57014f1e5f1d53e43fa40624186159531d6372d1ab8f40ec7882845ca66de31d",
                      "typeString": "literal_string \"74\""
                    },
                    "value": "74"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "02454ad3",
                  "id": 17218,
                  "mutability": "constant",
                  "name": "UL_INVALID_INDEX",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "8375:46:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17216,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8375:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3737",
                    "id": 17217,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "8417:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_7fe86492ed9171487feeb17b76d71244c5fb104d897816bb03a924e5871f3fa3",
                      "typeString": "literal_string \"77\""
                    },
                    "value": "77"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "637a5a12",
                  "id": 17221,
                  "mutability": "constant",
                  "name": "LP_NOT_CONTRACT",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "8425:45:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17219,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8425:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3738",
                    "id": 17220,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "8466:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_63867b8d5e748cf93e24f7b381d92337d037805bfc271d6d67e0e86772662677",
                      "typeString": "literal_string \"78\""
                    },
                    "value": "78"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "cdad445a",
                  "id": 17224,
                  "mutability": "constant",
                  "name": "SDT_STABLE_DEBT_OVERFLOW",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "8474:54:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17222,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8474:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3739",
                    "id": 17223,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "8524:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_2bf418e3ea3cce1b306c1bbf566df40bf3703cc73b456ccd399088d784bc76ee",
                      "typeString": "literal_string \"79\""
                    },
                    "value": "79"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "1befa78d",
                  "id": 17227,
                  "mutability": "constant",
                  "name": "SDT_BURN_EXCEEDS_BALANCE",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17239,
                  "src": "8532:54:77",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17225,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8532:6:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3830",
                    "id": 17226,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "8582:4:77",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_742ccb3c5ad7b0e2030ad7fa03711e32b9f4236452343c6e16a6cf67d464d149",
                      "typeString": "literal_string \"80\""
                    },
                    "value": "80"
                  },
                  "visibility": "public"
                },
                {
                  "canonicalName": "Errors.CollateralManagerErrors",
                  "id": 17238,
                  "members": [
                    {
                      "id": 17228,
                      "name": "NO_ERROR",
                      "nodeType": "EnumValue",
                      "src": "8626:8:77"
                    },
                    {
                      "id": 17229,
                      "name": "NO_COLLATERAL_AVAILABLE",
                      "nodeType": "EnumValue",
                      "src": "8640:23:77"
                    },
                    {
                      "id": 17230,
                      "name": "COLLATERAL_CANNOT_BE_LIQUIDATED",
                      "nodeType": "EnumValue",
                      "src": "8669:31:77"
                    },
                    {
                      "id": 17231,
                      "name": "CURRRENCY_NOT_BORROWED",
                      "nodeType": "EnumValue",
                      "src": "8706:22:77"
                    },
                    {
                      "id": 17232,
                      "name": "HEALTH_FACTOR_ABOVE_THRESHOLD",
                      "nodeType": "EnumValue",
                      "src": "8734:29:77"
                    },
                    {
                      "id": 17233,
                      "name": "NOT_ENOUGH_LIQUIDITY",
                      "nodeType": "EnumValue",
                      "src": "8769:20:77"
                    },
                    {
                      "id": 17234,
                      "name": "NO_ACTIVE_RESERVE",
                      "nodeType": "EnumValue",
                      "src": "8795:17:77"
                    },
                    {
                      "id": 17235,
                      "name": "HEALTH_FACTOR_LOWER_THAN_LIQUIDATION_THRESHOLD",
                      "nodeType": "EnumValue",
                      "src": "8818:46:77"
                    },
                    {
                      "id": 17236,
                      "name": "INVALID_EQUAL_ASSETS_TO_SWAP",
                      "nodeType": "EnumValue",
                      "src": "8870:28:77"
                    },
                    {
                      "id": 17237,
                      "name": "FROZEN_RESERVE",
                      "nodeType": "EnumValue",
                      "src": "8904:14:77"
                    }
                  ],
                  "name": "CollateralManagerErrors",
                  "nodeType": "EnumDefinition",
                  "src": "8591:331:77"
                }
              ],
              "scope": 17240,
              "src": "660:8264:77"
            }
          ],
          "src": "37:8888:77"
        },
        "id": 77
      },
      "contracts/protocol/libraries/helpers/Helpers.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/libraries/helpers/Helpers.sol",
          "exportedSymbols": {
            "Helpers": [
              17304
            ]
          },
          "id": 17305,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 17241,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:78"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
              "file": "../../../dependencies/openzeppelin/contracts/IERC20.sol",
              "id": 17243,
              "nodeType": "ImportDirective",
              "scope": 17305,
              "sourceUnit": 4013,
              "src": "62:79:78",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 17242,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:6:78",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/types/DataTypes.sol",
              "file": "../types/DataTypes.sol",
              "id": 17245,
              "nodeType": "ImportDirective",
              "scope": 17305,
              "sourceUnit": 20532,
              "src": "142:49:78",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 17244,
                    "name": "DataTypes",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "150:9:78",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 17246,
                "nodeType": "StructuredDocumentation",
                "src": "193:49:78",
                "text": " @title Helpers library\n @author Aave"
              },
              "fullyImplemented": true,
              "id": 17304,
              "linearizedBaseContracts": [
                17304
              ],
              "name": "Helpers",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 17274,
                    "nodeType": "Block",
                    "src": "609:150:78",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 17263,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17249,
                                  "src": "679:4:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 17259,
                                        "name": "reserve",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17251,
                                        "src": "637:7:78",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                          "typeString": "struct DataTypes.ReserveData storage pointer"
                                        }
                                      },
                                      "id": 17260,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "stableDebtTokenAddress",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20513,
                                      "src": "637:30:78",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 17258,
                                    "name": "IERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4012,
                                    "src": "630:6:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                      "typeString": "type(contract IERC20)"
                                    }
                                  },
                                  "id": 17261,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "630:38:78",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$4012",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 17262,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3951,
                                "src": "630:48:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 17264,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "630:54:78",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 17270,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17249,
                                  "src": "743:4:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 17266,
                                        "name": "reserve",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17251,
                                        "src": "699:7:78",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                          "typeString": "struct DataTypes.ReserveData storage pointer"
                                        }
                                      },
                                      "id": 17267,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "variableDebtTokenAddress",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20515,
                                      "src": "699:32:78",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 17265,
                                    "name": "IERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4012,
                                    "src": "692:6:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                      "typeString": "type(contract IERC20)"
                                    }
                                  },
                                  "id": 17268,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "692:40:78",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$4012",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 17269,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3951,
                                "src": "692:50:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 17271,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "692:56:78",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 17272,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "622:132:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 17257,
                        "id": 17273,
                        "nodeType": "Return",
                        "src": "615:139:78"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 17247,
                    "nodeType": "StructuredDocumentation",
                    "src": "263:207:78",
                    "text": " @dev Fetches the user current stable and variable debt balances\n @param user The user address\n @param reserve The reserve data object\n @return The stable and variable debt balance*"
                  },
                  "id": 17275,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUserCurrentDebt",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 17252,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17249,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17275,
                        "src": "501:12:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17248,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "501:7:78",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17251,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17275,
                        "src": "515:37:78",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                          "typeString": "struct DataTypes.ReserveData"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 17250,
                          "name": "DataTypes.ReserveData",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20520,
                          "src": "515:21:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                            "typeString": "struct DataTypes.ReserveData"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "500:53:78"
                  },
                  "returnParameters": {
                    "id": 17257,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17254,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17275,
                        "src": "589:7:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17253,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "589:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17256,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17275,
                        "src": "598:7:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17255,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "598:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "588:18:78"
                  },
                  "scope": 17304,
                  "src": "473:286:78",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 17302,
                    "nodeType": "Block",
                    "src": "904:150:78",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 17291,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17277,
                                  "src": "974:4:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 17287,
                                        "name": "reserve",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17279,
                                        "src": "932:7:78",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                          "typeString": "struct DataTypes.ReserveData memory"
                                        }
                                      },
                                      "id": 17288,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "stableDebtTokenAddress",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20513,
                                      "src": "932:30:78",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 17286,
                                    "name": "IERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4012,
                                    "src": "925:6:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                      "typeString": "type(contract IERC20)"
                                    }
                                  },
                                  "id": 17289,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "925:38:78",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$4012",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 17290,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3951,
                                "src": "925:48:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 17292,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "925:54:78",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 17298,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17277,
                                  "src": "1038:4:78",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 17294,
                                        "name": "reserve",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17279,
                                        "src": "994:7:78",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                                          "typeString": "struct DataTypes.ReserveData memory"
                                        }
                                      },
                                      "id": 17295,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "variableDebtTokenAddress",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20515,
                                      "src": "994:32:78",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 17293,
                                    "name": "IERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4012,
                                    "src": "987:6:78",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                      "typeString": "type(contract IERC20)"
                                    }
                                  },
                                  "id": 17296,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "987:40:78",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$4012",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 17297,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3951,
                                "src": "987:50:78",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 17299,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "987:56:78",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 17300,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "917:132:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 17285,
                        "id": 17301,
                        "nodeType": "Return",
                        "src": "910:139:78"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 17303,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUserCurrentDebtMemory",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 17280,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17277,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17303,
                        "src": "797:12:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17276,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "797:7:78",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17279,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17303,
                        "src": "811:36:78",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveData_$20520_memory_ptr",
                          "typeString": "struct DataTypes.ReserveData"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 17278,
                          "name": "DataTypes.ReserveData",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20520,
                          "src": "811:21:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                            "typeString": "struct DataTypes.ReserveData"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "796:52:78"
                  },
                  "returnParameters": {
                    "id": 17285,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17282,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17303,
                        "src": "884:7:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17281,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "884:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17284,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17303,
                        "src": "893:7:78",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17283,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "893:7:78",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "883:18:78"
                  },
                  "scope": 17304,
                  "src": "763:291:78",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 17305,
              "src": "243:813:78"
            }
          ],
          "src": "37:1020:78"
        },
        "id": 78
      },
      "contracts/protocol/libraries/helpers/StaticATokenErrors.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/libraries/helpers/StaticATokenErrors.sol",
          "exportedSymbols": {
            "StaticATokenErrors": [
              17328
            ]
          },
          "id": 17329,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 17306,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:79"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": null,
              "fullyImplemented": true,
              "id": 17328,
              "linearizedBaseContracts": [
                17328
              ],
              "name": "StaticATokenErrors",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "functionSelector": "9d2d2731",
                  "id": 17309,
                  "mutability": "constant",
                  "name": "INVALID_OWNER",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17328,
                  "src": "93:42:79",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17307,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "93:6:79",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "31",
                    "id": 17308,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "132:3:79",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                      "typeString": "literal_string \"1\""
                    },
                    "value": "1"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "c08a1146",
                  "id": 17312,
                  "mutability": "constant",
                  "name": "INVALID_EXPIRATION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17328,
                  "src": "139:47:79",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17310,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "139:6:79",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "32",
                    "id": 17311,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "183:3:79",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_ad7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a5",
                      "typeString": "literal_string \"2\""
                    },
                    "value": "2"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "a3402a38",
                  "id": 17315,
                  "mutability": "constant",
                  "name": "INVALID_SIGNATURE",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17328,
                  "src": "190:46:79",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17313,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "190:6:79",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "33",
                    "id": 17314,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "233:3:79",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de",
                      "typeString": "literal_string \"3\""
                    },
                    "value": "3"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "10325cb3",
                  "id": 17318,
                  "mutability": "constant",
                  "name": "INVALID_DEPOSITOR",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17328,
                  "src": "240:46:79",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17316,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "240:6:79",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "34",
                    "id": 17317,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "283:3:79",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_13600b294191fc92924bb3ce4b969c1e7e2bab8f4c93c3fc6d0a51733df3c060",
                      "typeString": "literal_string \"4\""
                    },
                    "value": "4"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "521005a6",
                  "id": 17321,
                  "mutability": "constant",
                  "name": "INVALID_RECIPIENT",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17328,
                  "src": "290:46:79",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17319,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "290:6:79",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "35",
                    "id": 17320,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "333:3:79",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_ceebf77a833b30520287ddd9478ff51abbdffa30aa90a8d655dba0e8a79ce0c1",
                      "typeString": "literal_string \"5\""
                    },
                    "value": "5"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "18ce1485",
                  "id": 17324,
                  "mutability": "constant",
                  "name": "INVALID_CLAIMER",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17328,
                  "src": "340:44:79",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17322,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "340:6:79",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "36",
                    "id": 17323,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "381:3:79",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_e455bf8ea6e7463a1046a0b52804526e119b4bf5136279614e0b1e8e296a4e2d",
                      "typeString": "literal_string \"6\""
                    },
                    "value": "6"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "f7436612",
                  "id": 17327,
                  "mutability": "constant",
                  "name": "ONLY_ONE_AMOUNT_FORMAT_ALLOWED",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17328,
                  "src": "388:59:79",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17325,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "388:6:79",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "37",
                    "id": 17326,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "444:3:79",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_52f1a9b320cab38e5da8a8f97989383aab0a49165fc91c737310e4f7e9821021",
                      "typeString": "literal_string \"7\""
                    },
                    "value": "7"
                  },
                  "visibility": "public"
                }
              ],
              "scope": 17329,
              "src": "62:388:79"
            }
          ],
          "src": "37:414:79"
        },
        "id": 79
      },
      "contracts/protocol/libraries/logic/GenericLogic.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/libraries/logic/GenericLogic.sol",
          "exportedSymbols": {
            "GenericLogic": [
              17987
            ]
          },
          "id": 17988,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 17330,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:80"
            },
            {
              "id": 17331,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "61:33:80"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeMath.sol",
              "file": "../../../dependencies/openzeppelin/contracts/SafeMath.sol",
              "id": 17333,
              "nodeType": "ImportDirective",
              "scope": 17988,
              "sourceUnit": 4497,
              "src": "96:83:80",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 17332,
                    "name": "SafeMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "104:8:80",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
              "file": "../../../dependencies/openzeppelin/contracts/IERC20.sol",
              "id": 17335,
              "nodeType": "ImportDirective",
              "scope": 17988,
              "sourceUnit": 4013,
              "src": "180:79:80",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 17334,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "188:6:80",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/logic/ReserveLogic.sol",
              "file": "./ReserveLogic.sol",
              "id": 17337,
              "nodeType": "ImportDirective",
              "scope": 17988,
              "sourceUnit": 18796,
              "src": "260:48:80",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 17336,
                    "name": "ReserveLogic",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "268:12:80",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/configuration/ReserveConfiguration.sol",
              "file": "../configuration/ReserveConfiguration.sol",
              "id": 17339,
              "nodeType": "ImportDirective",
              "scope": 17988,
              "sourceUnit": 16742,
              "src": "309:79:80",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 17338,
                    "name": "ReserveConfiguration",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "317:20:80",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/configuration/UserConfiguration.sol",
              "file": "../configuration/UserConfiguration.sol",
              "id": 17341,
              "nodeType": "ImportDirective",
              "scope": 17988,
              "sourceUnit": 16985,
              "src": "389:73:80",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 17340,
                    "name": "UserConfiguration",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "397:17:80",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/math/WadRayMath.sol",
              "file": "../math/WadRayMath.sol",
              "id": 17343,
              "nodeType": "ImportDirective",
              "scope": 17988,
              "sourceUnit": 20494,
              "src": "463:50:80",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 17342,
                    "name": "WadRayMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "471:10:80",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/math/PercentageMath.sol",
              "file": "../math/PercentageMath.sol",
              "id": 17345,
              "nodeType": "ImportDirective",
              "scope": 17988,
              "sourceUnit": 20069,
              "src": "514:58:80",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 17344,
                    "name": "PercentageMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "522:14:80",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IPriceOracleGetter.sol",
              "file": "../../../interfaces/IPriceOracleGetter.sol",
              "id": 17347,
              "nodeType": "ImportDirective",
              "scope": 17988,
              "sourceUnit": 6919,
              "src": "573:78:80",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 17346,
                    "name": "IPriceOracleGetter",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "581:18:80",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/types/DataTypes.sol",
              "file": "../types/DataTypes.sol",
              "id": 17349,
              "nodeType": "ImportDirective",
              "scope": 17988,
              "sourceUnit": 20532,
              "src": "652:49:80",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 17348,
                    "name": "DataTypes",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "660:9:80",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 17350,
                "nodeType": "StructuredDocumentation",
                "src": "703:142:80",
                "text": " @title GenericLogic library\n @author Aave\n @title Implements protocol-level logic to calculate and validate the state of a user"
              },
              "fullyImplemented": true,
              "id": 17987,
              "linearizedBaseContracts": [
                17987
              ],
              "name": "GenericLogic",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 17353,
                  "libraryName": {
                    "contractScope": null,
                    "id": 17351,
                    "name": "ReserveLogic",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 18795,
                    "src": "877:12:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ReserveLogic_$18795",
                      "typeString": "library ReserveLogic"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "871:45:80",
                  "typeName": {
                    "contractScope": null,
                    "id": 17352,
                    "name": "DataTypes.ReserveData",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20520,
                    "src": "894:21:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                      "typeString": "struct DataTypes.ReserveData"
                    }
                  }
                },
                {
                  "id": 17356,
                  "libraryName": {
                    "contractScope": null,
                    "id": 17354,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4496,
                    "src": "925:8:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$4496",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "919:27:80",
                  "typeName": {
                    "id": 17355,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "938:7:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 17359,
                  "libraryName": {
                    "contractScope": null,
                    "id": 17357,
                    "name": "WadRayMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20493,
                    "src": "955:10:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_WadRayMath_$20493",
                      "typeString": "library WadRayMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "949:29:80",
                  "typeName": {
                    "id": 17358,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "970:7:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 17362,
                  "libraryName": {
                    "contractScope": null,
                    "id": 17360,
                    "name": "PercentageMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20068,
                    "src": "987:14:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_PercentageMath_$20068",
                      "typeString": "library PercentageMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "981:33:80",
                  "typeName": {
                    "id": 17361,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1006:7:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 17365,
                  "libraryName": {
                    "contractScope": null,
                    "id": 17363,
                    "name": "ReserveConfiguration",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16741,
                    "src": "1023:20:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ReserveConfiguration_$16741",
                      "typeString": "library ReserveConfiguration"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1017:65:80",
                  "typeName": {
                    "contractScope": null,
                    "id": 17364,
                    "name": "DataTypes.ReserveConfigurationMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20523,
                    "src": "1048:33:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                      "typeString": "struct DataTypes.ReserveConfigurationMap"
                    }
                  }
                },
                {
                  "id": 17368,
                  "libraryName": {
                    "contractScope": null,
                    "id": 17366,
                    "name": "UserConfiguration",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16984,
                    "src": "1091:17:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UserConfiguration_$16984",
                      "typeString": "library UserConfiguration"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1085:59:80",
                  "typeName": {
                    "contractScope": null,
                    "id": 17367,
                    "name": "DataTypes.UserConfigurationMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20526,
                    "src": "1113:30:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                      "typeString": "struct DataTypes.UserConfigurationMap"
                    }
                  }
                },
                {
                  "constant": true,
                  "functionSelector": "c3525c28",
                  "id": 17371,
                  "mutability": "constant",
                  "name": "HEALTH_FACTOR_LIQUIDATION_THRESHOLD",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17987,
                  "src": "1148:69:80",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17369,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1148:7:80",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "31",
                    "id": 17370,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1210:7:80",
                    "subdenomination": "ether",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    },
                    "value": "1"
                  },
                  "visibility": "public"
                },
                {
                  "canonicalName": "GenericLogic.balanceDecreaseAllowedLocalVars",
                  "id": 17392,
                  "members": [
                    {
                      "constant": false,
                      "id": 17373,
                      "mutability": "mutable",
                      "name": "decimals",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17392,
                      "src": "1267:16:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17372,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1267:7:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 17375,
                      "mutability": "mutable",
                      "name": "liquidationThreshold",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17392,
                      "src": "1289:28:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17374,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1289:7:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 17377,
                      "mutability": "mutable",
                      "name": "totalCollateralInETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17392,
                      "src": "1323:28:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17376,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1323:7:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 17379,
                      "mutability": "mutable",
                      "name": "totalDebtInETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17392,
                      "src": "1357:22:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17378,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1357:7:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 17381,
                      "mutability": "mutable",
                      "name": "avgLiquidationThreshold",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17392,
                      "src": "1385:31:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17380,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1385:7:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 17383,
                      "mutability": "mutable",
                      "name": "amountToDecreaseInETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17392,
                      "src": "1422:29:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17382,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1422:7:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 17385,
                      "mutability": "mutable",
                      "name": "collateralBalanceAfterDecrease",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17392,
                      "src": "1457:38:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17384,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1457:7:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 17387,
                      "mutability": "mutable",
                      "name": "liquidationThresholdAfterDecrease",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17392,
                      "src": "1501:41:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17386,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1501:7:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 17389,
                      "mutability": "mutable",
                      "name": "healthFactorAfterDecrease",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17392,
                      "src": "1548:33:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17388,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1548:7:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 17391,
                      "mutability": "mutable",
                      "name": "reserveUsageAsCollateralEnabled",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17392,
                      "src": "1587:36:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 17390,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1587:4:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "balanceDecreaseAllowedLocalVars",
                  "nodeType": "StructDefinition",
                  "scope": 17987,
                  "src": "1222:406:80",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 17564,
                    "nodeType": "Block",
                    "src": "2577:1546:80",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 17430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 17421,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "2587:28:80",
                            "subExpression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17418,
                                  "name": "userConfig",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17405,
                                  "src": "2588:10:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_calldata_ptr",
                                    "typeString": "struct DataTypes.UserConfigurationMap calldata"
                                  }
                                },
                                "id": 17419,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isBorrowingAny",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 16969,
                                "src": "2588:25:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$returns$_t_bool_$bound_to$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$",
                                  "typeString": "function (struct DataTypes.UserConfigurationMap memory) pure returns (bool)"
                                }
                              },
                              "id": 17420,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2588:27:80",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 17429,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "2619:55:80",
                            "subExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 17424,
                                      "name": "reservesData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17403,
                                      "src": "2651:12:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                        "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                      }
                                    },
                                    "id": 17426,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 17425,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17395,
                                      "src": "2664:5:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2651:19:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                                      "typeString": "struct DataTypes.ReserveData storage ref"
                                    }
                                  },
                                  "id": 17427,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "id",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20519,
                                  "src": "2651:22:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17422,
                                  "name": "userConfig",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17405,
                                  "src": "2620:10:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_calldata_ptr",
                                    "typeString": "struct DataTypes.UserConfigurationMap calldata"
                                  }
                                },
                                "id": 17423,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isUsingAsCollateral",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 16953,
                                "src": "2620:30:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$",
                                  "typeString": "function (struct DataTypes.UserConfigurationMap memory,uint256) pure returns (bool)"
                                }
                              },
                              "id": 17428,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2620:54:80",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2587:87:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 17434,
                        "nodeType": "IfStatement",
                        "src": "2583:119:80",
                        "trueBody": {
                          "id": 17433,
                          "nodeType": "Block",
                          "src": "2676:26:80",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 17431,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2691:4:80",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "functionReturnParameters": 17417,
                              "id": 17432,
                              "nodeType": "Return",
                              "src": "2684:11:80"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          17436
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17436,
                            "mutability": "mutable",
                            "name": "vars",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 17564,
                            "src": "2708:43:80",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_balanceDecreaseAllowedLocalVars_$17392_memory_ptr",
                              "typeString": "struct GenericLogic.balanceDecreaseAllowedLocalVars"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 17435,
                              "name": "balanceDecreaseAllowedLocalVars",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 17392,
                              "src": "2708:31:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_balanceDecreaseAllowedLocalVars_$17392_storage_ptr",
                                "typeString": "struct GenericLogic.balanceDecreaseAllowedLocalVars"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 17437,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2708:43:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              null,
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17438,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17436,
                                  "src": "2761:4:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_balanceDecreaseAllowedLocalVars_$17392_memory_ptr",
                                    "typeString": "struct GenericLogic.balanceDecreaseAllowedLocalVars memory"
                                  }
                                },
                                "id": 17440,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "liquidationThreshold",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17375,
                                "src": "2761:25:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              null,
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17441,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17436,
                                  "src": "2790:4:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_balanceDecreaseAllowedLocalVars_$17392_memory_ptr",
                                    "typeString": "struct GenericLogic.balanceDecreaseAllowedLocalVars memory"
                                  }
                                },
                                "id": 17442,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "decimals",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17373,
                                "src": "2790:13:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              null
                            ],
                            "id": 17443,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "2758:48:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$_t_uint256_$__$_t_uint256_$__$",
                              "typeString": "tuple(,uint256,,uint256,)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 17444,
                                    "name": "reservesData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17403,
                                    "src": "2809:12:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                      "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                    }
                                  },
                                  "id": 17446,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 17445,
                                    "name": "asset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17395,
                                    "src": "2822:5:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2809:19:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                                    "typeString": "struct DataTypes.ReserveData storage ref"
                                  }
                                },
                                "id": 17447,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "configuration",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20497,
                                "src": "2809:40:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage",
                                  "typeString": "struct DataTypes.ReserveConfigurationMap storage ref"
                                }
                              },
                              "id": 17448,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getParams",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16635,
                              "src": "2809:57:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$bound_to$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$",
                                "typeString": "function (struct DataTypes.ReserveConfigurationMap storage pointer) view returns (uint256,uint256,uint256,uint256,uint256)"
                              }
                            },
                            "id": 17449,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2809:59:80",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "src": "2758:110:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17451,
                        "nodeType": "ExpressionStatement",
                        "src": "2758:110:80"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 17452,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17436,
                              "src": "2879:4:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_balanceDecreaseAllowedLocalVars_$17392_memory_ptr",
                                "typeString": "struct GenericLogic.balanceDecreaseAllowedLocalVars memory"
                              }
                            },
                            "id": 17453,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "liquidationThreshold",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17375,
                            "src": "2879:25:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 17454,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2908:1:80",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2879:30:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 17459,
                        "nodeType": "IfStatement",
                        "src": "2875:62:80",
                        "trueBody": {
                          "id": 17458,
                          "nodeType": "Block",
                          "src": "2911:26:80",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 17456,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2926:4:80",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "functionReturnParameters": 17417,
                              "id": 17457,
                              "nodeType": "Return",
                              "src": "2919:11:80"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17460,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17436,
                                  "src": "2951:4:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_balanceDecreaseAllowedLocalVars_$17392_memory_ptr",
                                    "typeString": "struct GenericLogic.balanceDecreaseAllowedLocalVars memory"
                                  }
                                },
                                "id": 17462,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "totalCollateralInETH",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17377,
                                "src": "2951:25:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17463,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17436,
                                  "src": "2984:4:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_balanceDecreaseAllowedLocalVars_$17392_memory_ptr",
                                    "typeString": "struct GenericLogic.balanceDecreaseAllowedLocalVars memory"
                                  }
                                },
                                "id": 17464,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "totalDebtInETH",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17379,
                                "src": "2984:19:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              null,
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17465,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17436,
                                  "src": "3019:4:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_balanceDecreaseAllowedLocalVars_$17392_memory_ptr",
                                    "typeString": "struct GenericLogic.balanceDecreaseAllowedLocalVars memory"
                                  }
                                },
                                "id": 17466,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "avgLiquidationThreshold",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17381,
                                "src": "3019:28:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              null
                            ],
                            "id": 17467,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "2943:112:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$__$_t_uint256_$__$",
                              "typeString": "tuple(uint256,uint256,,uint256,)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 17469,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17397,
                                "src": "3083:4:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 17470,
                                "name": "reservesData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17403,
                                "src": "3089:12:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                  "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 17471,
                                "name": "userConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17405,
                                "src": "3103:10:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_calldata_ptr",
                                  "typeString": "struct DataTypes.UserConfigurationMap calldata"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 17472,
                                "name": "reserves",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17409,
                                "src": "3115:8:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                  "typeString": "mapping(uint256 => address)"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 17473,
                                "name": "reservesCount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17411,
                                "src": "3125:13:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 17474,
                                "name": "oracle",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17413,
                                "src": "3140:6:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                  "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                },
                                {
                                  "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_calldata_ptr",
                                  "typeString": "struct DataTypes.UserConfigurationMap calldata"
                                },
                                {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                  "typeString": "mapping(uint256 => address)"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 17468,
                              "name": "calculateUserAccountData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17918,
                              "src": "3058:24:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$_$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$_t_mapping$_t_uint256_$_t_address_$_$_t_uint256_$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "function (address,mapping(address => struct DataTypes.ReserveData storage ref),struct DataTypes.UserConfigurationMap memory,mapping(uint256 => address),uint256,address) view returns (uint256,uint256,uint256,uint256,uint256)"
                              }
                            },
                            "id": 17475,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3058:89:80",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "src": "2943:204:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17477,
                        "nodeType": "ExpressionStatement",
                        "src": "2943:204:80"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 17478,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17436,
                              "src": "3158:4:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_balanceDecreaseAllowedLocalVars_$17392_memory_ptr",
                                "typeString": "struct GenericLogic.balanceDecreaseAllowedLocalVars memory"
                              }
                            },
                            "id": 17479,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "totalDebtInETH",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17379,
                            "src": "3158:19:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 17480,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3181:1:80",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3158:24:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 17485,
                        "nodeType": "IfStatement",
                        "src": "3154:56:80",
                        "trueBody": {
                          "id": 17484,
                          "nodeType": "Block",
                          "src": "3184:26:80",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 17482,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3199:4:80",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "functionReturnParameters": 17417,
                              "id": 17483,
                              "nodeType": "Return",
                              "src": "3192:11:80"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17504,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 17486,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17436,
                              "src": "3216:4:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_balanceDecreaseAllowedLocalVars_$17392_memory_ptr",
                                "typeString": "struct GenericLogic.balanceDecreaseAllowedLocalVars memory"
                              }
                            },
                            "id": 17488,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amountToDecreaseInETH",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17383,
                            "src": "3216:26:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17502,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3130",
                                  "id": 17499,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3316:2:80",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17500,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17436,
                                    "src": "3320:4:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_balanceDecreaseAllowedLocalVars_$17392_memory_ptr",
                                      "typeString": "struct GenericLogic.balanceDecreaseAllowedLocalVars memory"
                                    }
                                  },
                                  "id": 17501,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "decimals",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17373,
                                  "src": "3320:13:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3316:17:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 17496,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17399,
                                    "src": "3297:6:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 17493,
                                        "name": "asset",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17395,
                                        "src": "3286:5:80",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 17490,
                                            "name": "oracle",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17413,
                                            "src": "3264:6:80",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 17489,
                                          "name": "IPriceOracleGetter",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6918,
                                          "src": "3245:18:80",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IPriceOracleGetter_$6918_$",
                                            "typeString": "type(contract IPriceOracleGetter)"
                                          }
                                        },
                                        "id": 17491,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3245:26:80",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                                          "typeString": "contract IPriceOracleGetter"
                                        }
                                      },
                                      "id": 17492,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "getAssetPrice",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6917,
                                      "src": "3245:40:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                        "typeString": "function (address) view external returns (uint256)"
                                      }
                                    },
                                    "id": 17494,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3245:47:80",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 17495,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4409,
                                  "src": "3245:51:80",
                                  "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": 17497,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3245:59:80",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 17498,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4426,
                              "src": "3245:63:80",
                              "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": 17503,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3245:94:80",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3216:123:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17505,
                        "nodeType": "ExpressionStatement",
                        "src": "3216:123:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 17506,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17436,
                              "src": "3346:4:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_balanceDecreaseAllowedLocalVars_$17392_memory_ptr",
                                "typeString": "struct GenericLogic.balanceDecreaseAllowedLocalVars memory"
                              }
                            },
                            "id": 17508,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "collateralBalanceAfterDecrease",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17385,
                            "src": "3346:35:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17512,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17436,
                                  "src": "3414:4:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_balanceDecreaseAllowedLocalVars_$17392_memory_ptr",
                                    "typeString": "struct GenericLogic.balanceDecreaseAllowedLocalVars memory"
                                  }
                                },
                                "id": 17513,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amountToDecreaseInETH",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17383,
                                "src": "3414:26:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17509,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17436,
                                  "src": "3384:4:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_balanceDecreaseAllowedLocalVars_$17392_memory_ptr",
                                    "typeString": "struct GenericLogic.balanceDecreaseAllowedLocalVars memory"
                                  }
                                },
                                "id": 17510,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalCollateralInETH",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17377,
                                "src": "3384:25:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 17511,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4346,
                              "src": "3384:29:80",
                              "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": 17514,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3384:57:80",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3346:95:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17516,
                        "nodeType": "ExpressionStatement",
                        "src": "3346:95:80"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17520,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 17517,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17436,
                              "src": "3508:4:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_balanceDecreaseAllowedLocalVars_$17392_memory_ptr",
                                "typeString": "struct GenericLogic.balanceDecreaseAllowedLocalVars memory"
                              }
                            },
                            "id": 17518,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "collateralBalanceAfterDecrease",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17385,
                            "src": "3508:35:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 17519,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3547:1:80",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3508:40:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 17524,
                        "nodeType": "IfStatement",
                        "src": "3504:73:80",
                        "trueBody": {
                          "id": 17523,
                          "nodeType": "Block",
                          "src": "3550:27:80",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 17521,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3565:5:80",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 17417,
                              "id": 17522,
                              "nodeType": "Return",
                              "src": "3558:12:80"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17546,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 17525,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17436,
                              "src": "3583:4:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_balanceDecreaseAllowedLocalVars_$17392_memory_ptr",
                                "typeString": "struct GenericLogic.balanceDecreaseAllowedLocalVars memory"
                              }
                            },
                            "id": 17527,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "liquidationThresholdAfterDecrease",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17387,
                            "src": "3583:38:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17543,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17436,
                                  "src": "3779:4:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_balanceDecreaseAllowedLocalVars_$17392_memory_ptr",
                                    "typeString": "struct GenericLogic.balanceDecreaseAllowedLocalVars memory"
                                  }
                                },
                                "id": 17544,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "collateralBalanceAfterDecrease",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17385,
                                "src": "3779:35:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 17538,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17436,
                                          "src": "3740:4:80",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_balanceDecreaseAllowedLocalVars_$17392_memory_ptr",
                                            "typeString": "struct GenericLogic.balanceDecreaseAllowedLocalVars memory"
                                          }
                                        },
                                        "id": 17539,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "liquidationThreshold",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17375,
                                        "src": "3740:25:80",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 17535,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17436,
                                          "src": "3709:4:80",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_balanceDecreaseAllowedLocalVars_$17392_memory_ptr",
                                            "typeString": "struct GenericLogic.balanceDecreaseAllowedLocalVars memory"
                                          }
                                        },
                                        "id": 17536,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "amountToDecreaseInETH",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17383,
                                        "src": "3709:26:80",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 17537,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4409,
                                      "src": "3709:30:80",
                                      "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": 17540,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3709:57:80",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 17531,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17436,
                                          "src": "3668:4:80",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_balanceDecreaseAllowedLocalVars_$17392_memory_ptr",
                                            "typeString": "struct GenericLogic.balanceDecreaseAllowedLocalVars memory"
                                          }
                                        },
                                        "id": 17532,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "avgLiquidationThreshold",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17381,
                                        "src": "3668:28:80",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 17528,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17436,
                                          "src": "3624:4:80",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_balanceDecreaseAllowedLocalVars_$17392_memory_ptr",
                                            "typeString": "struct GenericLogic.balanceDecreaseAllowedLocalVars memory"
                                          }
                                        },
                                        "id": 17529,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "totalCollateralInETH",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17377,
                                        "src": "3624:32:80",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 17530,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4409,
                                      "src": "3624:43:80",
                                      "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": 17533,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3624:73:80",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 17534,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4346,
                                  "src": "3624:84:80",
                                  "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": 17541,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3624:143:80",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 17542,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4426,
                              "src": "3624:154:80",
                              "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": 17545,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3624:191:80",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3583:232:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17547,
                        "nodeType": "ExpressionStatement",
                        "src": "3583:232:80"
                      },
                      {
                        "assignments": [
                          17549
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17549,
                            "mutability": "mutable",
                            "name": "healthFactorAfterDecrease",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 17564,
                            "src": "3822:33:80",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17548,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3822:7:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 17558,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 17551,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17436,
                                "src": "3907:4:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_balanceDecreaseAllowedLocalVars_$17392_memory_ptr",
                                  "typeString": "struct GenericLogic.balanceDecreaseAllowedLocalVars memory"
                                }
                              },
                              "id": 17552,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "collateralBalanceAfterDecrease",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17385,
                              "src": "3907:35:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 17553,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17436,
                                "src": "3952:4:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_balanceDecreaseAllowedLocalVars_$17392_memory_ptr",
                                  "typeString": "struct GenericLogic.balanceDecreaseAllowedLocalVars memory"
                                }
                              },
                              "id": 17554,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "totalDebtInETH",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17379,
                              "src": "3952:19:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 17555,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17436,
                                "src": "3981:4:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_balanceDecreaseAllowedLocalVars_$17392_memory_ptr",
                                  "typeString": "struct GenericLogic.balanceDecreaseAllowedLocalVars memory"
                                }
                              },
                              "id": 17556,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "liquidationThresholdAfterDecrease",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17387,
                              "src": "3981:38:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17550,
                            "name": "calculateHealthFactorFromBalances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17950,
                            "src": "3864:33:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 17557,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3864:163:80",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3822:205:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17562,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 17559,
                            "name": "healthFactorAfterDecrease",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17549,
                            "src": "4041:25:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 17560,
                              "name": "GenericLogic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17987,
                              "src": "4070:12:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_GenericLogic_$17987_$",
                                "typeString": "type(library GenericLogic)"
                              }
                            },
                            "id": 17561,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "HEALTH_FACTOR_LIQUIDATION_THRESHOLD",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17371,
                            "src": "4070:48:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4041:77:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 17417,
                        "id": 17563,
                        "nodeType": "Return",
                        "src": "4034:84:80"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 17393,
                    "nodeType": "StructuredDocumentation",
                    "src": "1632:599:80",
                    "text": " @dev Checks if a specific balance decrease is allowed\n (i.e. doesn't bring the user borrow position health factor under HEALTH_FACTOR_LIQUIDATION_THRESHOLD)\n @param asset The address of the underlying asset of the reserve\n @param user The address of the user\n @param amount The amount to decrease\n @param reservesData The data of all the reserves\n @param userConfig The user configuration\n @param reserves The list of all the active reserves\n @param oracle The address of the oracle contract\n @return true if the decrease of the balance is allowed*"
                  },
                  "functionSelector": "e6170424",
                  "id": 17565,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceDecreaseAllowed",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 17414,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17395,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17565,
                        "src": "2271:13:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17394,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2271:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17397,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17565,
                        "src": "2290:12:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17396,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2290:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17399,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17565,
                        "src": "2308:14:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17398,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2308:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17403,
                        "mutability": "mutable",
                        "name": "reservesData",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17565,
                        "src": "2328:62:80",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                          "typeString": "mapping(address => struct DataTypes.ReserveData)"
                        },
                        "typeName": {
                          "id": 17402,
                          "keyType": {
                            "id": 17400,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2336:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Mapping",
                          "src": "2328:41:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                            "typeString": "mapping(address => struct DataTypes.ReserveData)"
                          },
                          "valueType": {
                            "contractScope": null,
                            "id": 17401,
                            "name": "DataTypes.ReserveData",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 20520,
                            "src": "2347:21:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                              "typeString": "struct DataTypes.ReserveData"
                            }
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17405,
                        "mutability": "mutable",
                        "name": "userConfig",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17565,
                        "src": "2396:50:80",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_calldata_ptr",
                          "typeString": "struct DataTypes.UserConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 17404,
                          "name": "DataTypes.UserConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20526,
                          "src": "2396:30:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                            "typeString": "struct DataTypes.UserConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17409,
                        "mutability": "mutable",
                        "name": "reserves",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17565,
                        "src": "2452:44:80",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        },
                        "typeName": {
                          "id": 17408,
                          "keyType": {
                            "id": 17406,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2460:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Mapping",
                          "src": "2452:27:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                            "typeString": "mapping(uint256 => address)"
                          },
                          "valueType": {
                            "id": 17407,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2471:7:80",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17411,
                        "mutability": "mutable",
                        "name": "reservesCount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17565,
                        "src": "2502:21:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17410,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2502:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17413,
                        "mutability": "mutable",
                        "name": "oracle",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17565,
                        "src": "2529:14:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17412,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2529:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2265:282:80"
                  },
                  "returnParameters": {
                    "id": 17417,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17416,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17565,
                        "src": "2571:4:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 17415,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2571:4:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2570:6:80"
                  },
                  "scope": 17987,
                  "src": "2234:1889:80",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "canonicalName": "GenericLogic.CalculateUserAccountDataVars",
                  "id": 17602,
                  "members": [
                    {
                      "constant": false,
                      "id": 17567,
                      "mutability": "mutable",
                      "name": "reserveUnitPrice",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17602,
                      "src": "4169:24:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17566,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4169:7:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 17569,
                      "mutability": "mutable",
                      "name": "tokenUnit",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17602,
                      "src": "4199:17:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17568,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4199:7:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 17571,
                      "mutability": "mutable",
                      "name": "compoundedLiquidityBalance",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17602,
                      "src": "4222:34:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17570,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4222:7:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 17573,
                      "mutability": "mutable",
                      "name": "compoundedBorrowBalance",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17602,
                      "src": "4262:31:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17572,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4262:7:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 17575,
                      "mutability": "mutable",
                      "name": "decimals",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17602,
                      "src": "4299:16:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17574,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4299:7:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 17577,
                      "mutability": "mutable",
                      "name": "ltv",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17602,
                      "src": "4321:11:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17576,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4321:7:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 17579,
                      "mutability": "mutable",
                      "name": "liquidationThreshold",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17602,
                      "src": "4338:28:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17578,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4338:7:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 17581,
                      "mutability": "mutable",
                      "name": "i",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17602,
                      "src": "4372:9:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17580,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4372:7:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 17583,
                      "mutability": "mutable",
                      "name": "healthFactor",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17602,
                      "src": "4387:20:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17582,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4387:7:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 17585,
                      "mutability": "mutable",
                      "name": "totalCollateralInETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17602,
                      "src": "4413:28:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17584,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4413:7:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 17587,
                      "mutability": "mutable",
                      "name": "totalDebtInETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17602,
                      "src": "4447:22:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17586,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4447:7:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 17589,
                      "mutability": "mutable",
                      "name": "avgLtv",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17602,
                      "src": "4475:14:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17588,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4475:7:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 17591,
                      "mutability": "mutable",
                      "name": "avgLiquidationThreshold",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17602,
                      "src": "4495:31:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17590,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4495:7:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 17593,
                      "mutability": "mutable",
                      "name": "reservesLength",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17602,
                      "src": "4532:22:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17592,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4532:7:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 17595,
                      "mutability": "mutable",
                      "name": "healthFactorBelowThreshold",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17602,
                      "src": "4560:31:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 17594,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "4560:4:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 17597,
                      "mutability": "mutable",
                      "name": "currentReserveAddress",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17602,
                      "src": "4597:29:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 17596,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4597:7:80",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 17599,
                      "mutability": "mutable",
                      "name": "usageAsCollateralEnabled",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17602,
                      "src": "4632:29:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 17598,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "4632:4:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 17601,
                      "mutability": "mutable",
                      "name": "userUsesReserveAsCollateral",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17602,
                      "src": "4667:32:80",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 17600,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "4667:4:80",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "CalculateUserAccountDataVars",
                  "nodeType": "StructDefinition",
                  "scope": 17987,
                  "src": "4127:577:80",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 17917,
                    "nodeType": "Block",
                    "src": "5689:2380:80",
                    "statements": [
                      {
                        "assignments": [
                          17633
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17633,
                            "mutability": "mutable",
                            "name": "vars",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 17917,
                            "src": "5695:40:80",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                              "typeString": "struct GenericLogic.CalculateUserAccountDataVars"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 17632,
                              "name": "CalculateUserAccountDataVars",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 17602,
                              "src": "5695:28:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_storage_ptr",
                                "typeString": "struct GenericLogic.CalculateUserAccountDataVars"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 17634,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5695:40:80"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 17635,
                              "name": "userConfig",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17611,
                              "src": "5746:10:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_memory_ptr",
                                "typeString": "struct DataTypes.UserConfigurationMap memory"
                              }
                            },
                            "id": 17636,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isEmpty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16983,
                            "src": "5746:18:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$returns$_t_bool_$bound_to$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$",
                              "typeString": "function (struct DataTypes.UserConfigurationMap memory) pure returns (bool)"
                            }
                          },
                          "id": 17637,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5746:20:80",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 17650,
                        "nodeType": "IfStatement",
                        "src": "5742:73:80",
                        "trueBody": {
                          "id": 17649,
                          "nodeType": "Block",
                          "src": "5768:47:80",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 17638,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5784:1:80",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 17639,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5787:1:80",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 17640,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5790:1:80",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 17641,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5793:1:80",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 17645,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "-",
                                        "prefix": true,
                                        "src": "5804:2:80",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 17644,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "5805:1:80",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_minus_1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_minus_1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      ],
                                      "id": 17643,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5796:7:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 17642,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5796:7:80",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 17646,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5796:11:80",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 17647,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "5783:25:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_uint256_$",
                                  "typeString": "tuple(int_const 0,int_const 0,int_const 0,int_const 0,uint256)"
                                }
                              },
                              "functionReturnParameters": 17631,
                              "id": 17648,
                              "nodeType": "Return",
                              "src": "5776:32:80"
                            }
                          ]
                        }
                      },
                      {
                        "body": {
                          "id": 17856,
                          "nodeType": "Block",
                          "src": "5871:1630:80",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "id": 17670,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "!",
                                "prefix": true,
                                "src": "5883:50:80",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 17667,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17633,
                                        "src": "5926:4:80",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                          "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                        }
                                      },
                                      "id": 17668,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "i",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 17581,
                                      "src": "5926:6:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17665,
                                      "name": "userConfig",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17611,
                                      "src": "5884:10:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_memory_ptr",
                                        "typeString": "struct DataTypes.UserConfigurationMap memory"
                                      }
                                    },
                                    "id": 17666,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "isUsingAsCollateralOrBorrowing",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 16887,
                                    "src": "5884:41:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$",
                                      "typeString": "function (struct DataTypes.UserConfigurationMap memory,uint256) pure returns (bool)"
                                    }
                                  },
                                  "id": 17669,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5884:49:80",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 17673,
                              "nodeType": "IfStatement",
                              "src": "5879:83:80",
                              "trueBody": {
                                "id": 17672,
                                "nodeType": "Block",
                                "src": "5935:27:80",
                                "statements": [
                                  {
                                    "id": 17671,
                                    "nodeType": "Continue",
                                    "src": "5945:8:80"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 17681,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17674,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17633,
                                    "src": "5970:4:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                      "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                    }
                                  },
                                  "id": 17676,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "currentReserveAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17597,
                                  "src": "5970:26:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 17677,
                                    "name": "reserves",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17615,
                                    "src": "5999:8:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                      "typeString": "mapping(uint256 => address)"
                                    }
                                  },
                                  "id": 17680,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17678,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17633,
                                      "src": "6008:4:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                        "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                      }
                                    },
                                    "id": 17679,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "i",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17581,
                                    "src": "6008:6:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5999:16:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5970:45:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 17682,
                              "nodeType": "ExpressionStatement",
                              "src": "5970:45:80"
                            },
                            {
                              "assignments": [
                                17686
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 17686,
                                  "mutability": "mutable",
                                  "name": "currentReserve",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 17856,
                                  "src": "6023:44:80",
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                    "typeString": "struct DataTypes.ReserveData"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 17685,
                                    "name": "DataTypes.ReserveData",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 20520,
                                    "src": "6023:21:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                      "typeString": "struct DataTypes.ReserveData"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 17691,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 17687,
                                  "name": "reservesData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17609,
                                  "src": "6070:12:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                    "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                  }
                                },
                                "id": 17690,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17688,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17633,
                                    "src": "6083:4:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                      "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                    }
                                  },
                                  "id": 17689,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "currentReserveAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17597,
                                  "src": "6083:26:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6070:40:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                                  "typeString": "struct DataTypes.ReserveData storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6023:87:80"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 17704,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 17692,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17633,
                                        "src": "6120:4:80",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                          "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                        }
                                      },
                                      "id": 17694,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "ltv",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 17577,
                                      "src": "6120:8:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 17695,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17633,
                                        "src": "6130:4:80",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                          "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                        }
                                      },
                                      "id": 17696,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "liquidationThreshold",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 17579,
                                      "src": "6130:25:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    null,
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 17697,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17633,
                                        "src": "6159:4:80",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                          "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                        }
                                      },
                                      "id": 17698,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "decimals",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 17575,
                                      "src": "6159:13:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    null
                                  ],
                                  "id": 17699,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "6119:56:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$__$_t_uint256_$__$",
                                    "typeString": "tuple(uint256,uint256,,uint256,)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 17700,
                                        "name": "currentReserve",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17686,
                                        "src": "6178:14:80",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                          "typeString": "struct DataTypes.ReserveData storage pointer"
                                        }
                                      },
                                      "id": 17701,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "configuration",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20497,
                                      "src": "6178:37:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage",
                                        "typeString": "struct DataTypes.ReserveConfigurationMap storage ref"
                                      }
                                    },
                                    "id": 17702,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getParams",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 16635,
                                    "src": "6178:56:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$bound_to$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$",
                                      "typeString": "function (struct DataTypes.ReserveConfigurationMap storage pointer) view returns (uint256,uint256,uint256,uint256,uint256)"
                                    }
                                  },
                                  "id": 17703,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6178:58:80",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256,uint256,uint256,uint256)"
                                  }
                                },
                                "src": "6119:117:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 17705,
                              "nodeType": "ExpressionStatement",
                              "src": "6119:117:80"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 17713,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17706,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17633,
                                    "src": "6245:4:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                      "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                    }
                                  },
                                  "id": 17708,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "tokenUnit",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17569,
                                  "src": "6245:14:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17712,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "3130",
                                    "id": 17709,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6262:2:80",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10_by_1",
                                      "typeString": "int_const 10"
                                    },
                                    "value": "10"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "**",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17710,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17633,
                                      "src": "6266:4:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                        "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                      }
                                    },
                                    "id": 17711,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "decimals",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17575,
                                    "src": "6266:13:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6262:17:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6245:34:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 17714,
                              "nodeType": "ExpressionStatement",
                              "src": "6245:34:80"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 17725,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17715,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17633,
                                    "src": "6287:4:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                      "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                    }
                                  },
                                  "id": 17717,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "reserveUnitPrice",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17567,
                                  "src": "6287:21:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 17722,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17633,
                                        "src": "6352:4:80",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                          "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                        }
                                      },
                                      "id": 17723,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "currentReserveAddress",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 17597,
                                      "src": "6352:26:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 17719,
                                          "name": "oracle",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17619,
                                          "src": "6330:6:80",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 17718,
                                        "name": "IPriceOracleGetter",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6918,
                                        "src": "6311:18:80",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IPriceOracleGetter_$6918_$",
                                          "typeString": "type(contract IPriceOracleGetter)"
                                        }
                                      },
                                      "id": 17720,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6311:26:80",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IPriceOracleGetter_$6918",
                                        "typeString": "contract IPriceOracleGetter"
                                      }
                                    },
                                    "id": 17721,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getAssetPrice",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6917,
                                    "src": "6311:40:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address) view external returns (uint256)"
                                    }
                                  },
                                  "id": 17724,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6311:68:80",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6287:92:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 17726,
                              "nodeType": "ExpressionStatement",
                              "src": "6287:92:80"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 17736,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17730,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17727,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17633,
                                      "src": "6392:4:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                        "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                      }
                                    },
                                    "id": 17728,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "liquidationThreshold",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17579,
                                    "src": "6392:25:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 17729,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6421:1:80",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "6392:30:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 17733,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17633,
                                        "src": "6457:4:80",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                          "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                        }
                                      },
                                      "id": 17734,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "i",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 17581,
                                      "src": "6457:6:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17731,
                                      "name": "userConfig",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17611,
                                      "src": "6426:10:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_memory_ptr",
                                        "typeString": "struct DataTypes.UserConfigurationMap memory"
                                      }
                                    },
                                    "id": 17732,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "isUsingAsCollateral",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 16953,
                                    "src": "6426:30:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$",
                                      "typeString": "function (struct DataTypes.UserConfigurationMap memory,uint256) pure returns (bool)"
                                    }
                                  },
                                  "id": 17735,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6426:38:80",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "6392:72:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 17801,
                              "nodeType": "IfStatement",
                              "src": "6388:621:80",
                              "trueBody": {
                                "id": 17800,
                                "nodeType": "Block",
                                "src": "6466:543:80",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17747,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 17737,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17633,
                                          "src": "6476:4:80",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                            "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                          }
                                        },
                                        "id": 17739,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "compoundedLiquidityBalance",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17571,
                                        "src": "6476:31:80",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 17745,
                                            "name": "user",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17605,
                                            "src": "6557:4:80",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 17741,
                                                  "name": "currentReserve",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 17686,
                                                  "src": "6517:14:80",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                                    "typeString": "struct DataTypes.ReserveData storage pointer"
                                                  }
                                                },
                                                "id": 17742,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "aTokenAddress",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 20511,
                                                "src": "6517:28:80",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "id": 17740,
                                              "name": "IERC20",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4012,
                                              "src": "6510:6:80",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                                "typeString": "type(contract IERC20)"
                                              }
                                            },
                                            "id": 17743,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "6510:36:80",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IERC20_$4012",
                                              "typeString": "contract IERC20"
                                            }
                                          },
                                          "id": 17744,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "balanceOf",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3951,
                                          "src": "6510:46:80",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                            "typeString": "function (address) view external returns (uint256)"
                                          }
                                        },
                                        "id": 17746,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6510:52:80",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6476:86:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 17748,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6476:86:80"
                                  },
                                  {
                                    "assignments": [
                                      17750
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 17750,
                                        "mutability": "mutable",
                                        "name": "liquidityBalanceETH",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 17800,
                                        "src": "6573:27:80",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 17749,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "6573:7:80",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 17761,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 17758,
                                            "name": "vars",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17633,
                                            "src": "6676:4:80",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                              "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                            }
                                          },
                                          "id": 17759,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "tokenUnit",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17569,
                                          "src": "6676:14:80",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 17754,
                                                "name": "vars",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 17633,
                                                "src": "6639:4:80",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                                  "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                                }
                                              },
                                              "id": 17755,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "compoundedLiquidityBalance",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 17571,
                                              "src": "6639:31:80",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 17751,
                                                "name": "vars",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 17633,
                                                "src": "6613:4:80",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                                  "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                                }
                                              },
                                              "id": 17752,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "reserveUnitPrice",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 17567,
                                              "src": "6613:21:80",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 17753,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mul",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4409,
                                            "src": "6613:25:80",
                                            "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": 17756,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "6613:58:80",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 17757,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "div",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4426,
                                        "src": "6613:62:80",
                                        "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": 17760,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6613:78:80",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "6573:118:80"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17770,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 17762,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17633,
                                          "src": "6702:4:80",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                            "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                          }
                                        },
                                        "id": 17764,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "totalCollateralInETH",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17585,
                                        "src": "6702:25:80",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 17768,
                                            "name": "liquidityBalanceETH",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17750,
                                            "src": "6760:19:80",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 17765,
                                              "name": "vars",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 17633,
                                              "src": "6730:4:80",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                                "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                              }
                                            },
                                            "id": 17766,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "totalCollateralInETH",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 17585,
                                            "src": "6730:25:80",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 17767,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4329,
                                          "src": "6730:29:80",
                                          "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": 17769,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6730:50:80",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6702:78:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 17771,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6702:78:80"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17784,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 17772,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17633,
                                          "src": "6791:4:80",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                            "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                          }
                                        },
                                        "id": 17774,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "avgLtv",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17589,
                                        "src": "6791:11:80",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 17780,
                                                  "name": "vars",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 17633,
                                                  "src": "6845:4:80",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                                    "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                                  }
                                                },
                                                "id": 17781,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "ltv",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 17577,
                                                "src": "6845:8:80",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 17778,
                                                "name": "liquidityBalanceETH",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 17750,
                                                "src": "6821:19:80",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 17779,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 4409,
                                              "src": "6821:23:80",
                                              "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": 17782,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "6821:33:80",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 17775,
                                              "name": "vars",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 17633,
                                              "src": "6805:4:80",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                                "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                              }
                                            },
                                            "id": 17776,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "avgLtv",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 17589,
                                            "src": "6805:11:80",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 17777,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4329,
                                          "src": "6805:15:80",
                                          "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": 17783,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6805:50:80",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6791:64:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 17785,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6791:64:80"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17798,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 17786,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17633,
                                          "src": "6865:4:80",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                            "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                          }
                                        },
                                        "id": 17788,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "avgLiquidationThreshold",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17591,
                                        "src": "6865:28:80",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 17794,
                                                  "name": "vars",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 17633,
                                                  "src": "6964:4:80",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                                    "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                                  }
                                                },
                                                "id": 17795,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "liquidationThreshold",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 17579,
                                                "src": "6964:25:80",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 17792,
                                                "name": "liquidityBalanceETH",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 17750,
                                                "src": "6940:19:80",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 17793,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 4409,
                                              "src": "6940:23:80",
                                              "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": 17796,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "6940:50:80",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 17789,
                                              "name": "vars",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 17633,
                                              "src": "6896:4:80",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                                "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                              }
                                            },
                                            "id": 17790,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "avgLiquidationThreshold",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 17591,
                                            "src": "6896:28:80",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 17791,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4329,
                                          "src": "6896:32:80",
                                          "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": 17797,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6896:104:80",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6865:135:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 17799,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6865:135:80"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17804,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17633,
                                      "src": "7044:4:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                        "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                      }
                                    },
                                    "id": 17805,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "i",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17581,
                                    "src": "7044:6:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17802,
                                    "name": "userConfig",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17611,
                                    "src": "7021:10:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_memory_ptr",
                                      "typeString": "struct DataTypes.UserConfigurationMap memory"
                                    }
                                  },
                                  "id": 17803,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "isBorrowing",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 16919,
                                  "src": "7021:22:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$",
                                    "typeString": "function (struct DataTypes.UserConfigurationMap memory,uint256) pure returns (bool)"
                                  }
                                },
                                "id": 17806,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7021:30:80",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 17855,
                              "nodeType": "IfStatement",
                              "src": "7017:478:80",
                              "trueBody": {
                                "id": 17854,
                                "nodeType": "Block",
                                "src": "7053:442:80",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17817,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 17807,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17633,
                                          "src": "7063:4:80",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                            "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                          }
                                        },
                                        "id": 17809,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "compoundedBorrowBalance",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17573,
                                        "src": "7063:28:80",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 17815,
                                            "name": "user",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17605,
                                            "src": "7161:4:80",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 17811,
                                                  "name": "currentReserve",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 17686,
                                                  "src": "7101:14:80",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                                    "typeString": "struct DataTypes.ReserveData storage pointer"
                                                  }
                                                },
                                                "id": 17812,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "stableDebtTokenAddress",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 20513,
                                                "src": "7101:37:80",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "id": 17810,
                                              "name": "IERC20",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4012,
                                              "src": "7094:6:80",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                                "typeString": "type(contract IERC20)"
                                              }
                                            },
                                            "id": 17813,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "7094:45:80",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IERC20_$4012",
                                              "typeString": "contract IERC20"
                                            }
                                          },
                                          "id": 17814,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "balanceOf",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3951,
                                          "src": "7094:55:80",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                            "typeString": "function (address) view external returns (uint256)"
                                          }
                                        },
                                        "id": 17816,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7094:81:80",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7063:112:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 17818,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7063:112:80"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17833,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 17819,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17633,
                                          "src": "7185:4:80",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                            "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                          }
                                        },
                                        "id": 17821,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "compoundedBorrowBalance",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17573,
                                        "src": "7185:28:80",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 17830,
                                                "name": "user",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 17605,
                                                "src": "7318:4:80",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 17826,
                                                      "name": "currentReserve",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 17686,
                                                      "src": "7267:14:80",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                                        "typeString": "struct DataTypes.ReserveData storage pointer"
                                                      }
                                                    },
                                                    "id": 17827,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "variableDebtTokenAddress",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 20515,
                                                    "src": "7267:39:80",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "id": 17825,
                                                  "name": "IERC20",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 4012,
                                                  "src": "7260:6:80",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                                    "typeString": "type(contract IERC20)"
                                                  }
                                                },
                                                "id": 17828,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "7260:47:80",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_IERC20_$4012",
                                                  "typeString": "contract IERC20"
                                                }
                                              },
                                              "id": 17829,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "balanceOf",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3951,
                                              "src": "7260:57:80",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                                "typeString": "function (address) view external returns (uint256)"
                                              }
                                            },
                                            "id": 17831,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "7260:63:80",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 17822,
                                              "name": "vars",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 17633,
                                              "src": "7216:4:80",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                                "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                              }
                                            },
                                            "id": 17823,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "compoundedBorrowBalance",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 17573,
                                            "src": "7216:28:80",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 17824,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4329,
                                          "src": "7216:32:80",
                                          "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": 17832,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7216:117:80",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7185:148:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 17834,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7185:148:80"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17852,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 17835,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17633,
                                          "src": "7344:4:80",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                            "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                          }
                                        },
                                        "id": 17837,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "totalDebtInETH",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 17587,
                                        "src": "7344:19:80",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 17848,
                                                  "name": "vars",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 17633,
                                                  "src": "7461:4:80",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                                    "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                                  }
                                                },
                                                "id": 17849,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "tokenUnit",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 17569,
                                                "src": "7461:14:80",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 17844,
                                                      "name": "vars",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 17633,
                                                      "src": "7427:4:80",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                                        "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                                      }
                                                    },
                                                    "id": 17845,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "compoundedBorrowBalance",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 17573,
                                                    "src": "7427:28:80",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 17841,
                                                      "name": "vars",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 17633,
                                                      "src": "7401:4:80",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                                        "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                                      }
                                                    },
                                                    "id": 17842,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "reserveUnitPrice",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 17567,
                                                    "src": "7401:21:80",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 17843,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "mul",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 4409,
                                                  "src": "7401:25:80",
                                                  "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": 17846,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "7401:55:80",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 17847,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "div",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 4426,
                                              "src": "7401:59:80",
                                              "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": 17850,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "7401:75:80",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 17838,
                                              "name": "vars",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 17633,
                                              "src": "7366:4:80",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                                "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                              }
                                            },
                                            "id": 17839,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "totalDebtInETH",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 17587,
                                            "src": "7366:19:80",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 17840,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4329,
                                          "src": "7366:23:80",
                                          "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": 17851,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7366:120:80",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7344:142:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 17853,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7344:142:80"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17660,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 17657,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17633,
                              "src": "5837:4:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                              }
                            },
                            "id": 17658,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "i",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17581,
                            "src": "5837:6:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 17659,
                            "name": "reservesCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17617,
                            "src": "5846:13:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5837:22:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17857,
                        "initializationExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 17655,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 17651,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17633,
                                "src": "5825:4:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                  "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                }
                              },
                              "id": 17653,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "i",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17581,
                              "src": "5825:6:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 17654,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5834:1:80",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "5825:10:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 17656,
                          "nodeType": "ExpressionStatement",
                          "src": "5825:10:80"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 17663,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "5861:8:80",
                            "subExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 17661,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17633,
                                "src": "5861:4:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                  "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                }
                              },
                              "id": 17662,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "i",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17581,
                              "src": "5861:6:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 17664,
                          "nodeType": "ExpressionStatement",
                          "src": "5861:8:80"
                        },
                        "nodeType": "ForStatement",
                        "src": "5820:1681:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17873,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 17858,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17633,
                              "src": "7507:4:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                              }
                            },
                            "id": 17860,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "avgLtv",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17589,
                            "src": "7507:11:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 17864,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17861,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17633,
                                  "src": "7521:4:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                    "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                  }
                                },
                                "id": 17862,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalCollateralInETH",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17585,
                                "src": "7521:25:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 17863,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7549:1:80",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "7521:29:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 17871,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7598:1:80",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "id": 17872,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "7521:78:80",
                            "trueExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17868,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17633,
                                    "src": "7569:4:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                      "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                    }
                                  },
                                  "id": 17869,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "totalCollateralInETH",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17585,
                                  "src": "7569:25:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17865,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17633,
                                    "src": "7553:4:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                      "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                    }
                                  },
                                  "id": 17866,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "avgLtv",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17589,
                                  "src": "7553:11:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 17867,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "div",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4426,
                                "src": "7553:15:80",
                                "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": 17870,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7553:42:80",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7507:92:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17874,
                        "nodeType": "ExpressionStatement",
                        "src": "7507:92:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17890,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 17875,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17633,
                              "src": "7605:4:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                              }
                            },
                            "id": 17877,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "avgLiquidationThreshold",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17591,
                            "src": "7605:28:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 17881,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17878,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17633,
                                  "src": "7636:4:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                    "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                  }
                                },
                                "id": 17879,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalCollateralInETH",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17585,
                                "src": "7636:25:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 17880,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7664:1:80",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "7636:29:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 17888,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7742:1:80",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "id": 17889,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "7636:107:80",
                            "trueExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17885,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17633,
                                    "src": "7707:4:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                      "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                    }
                                  },
                                  "id": 17886,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "totalCollateralInETH",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17585,
                                  "src": "7707:25:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 17882,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17633,
                                    "src": "7674:4:80",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                      "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                    }
                                  },
                                  "id": 17883,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "avgLiquidationThreshold",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17591,
                                  "src": "7674:28:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 17884,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "div",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4426,
                                "src": "7674:32:80",
                                "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": 17887,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7674:59:80",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7605:138:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17891,
                        "nodeType": "ExpressionStatement",
                        "src": "7605:138:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17903,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 17892,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17633,
                              "src": "7750:4:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                              }
                            },
                            "id": 17894,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "healthFactor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17583,
                            "src": "7750:17:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17896,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17633,
                                  "src": "7811:4:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                    "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                  }
                                },
                                "id": 17897,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalCollateralInETH",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17585,
                                "src": "7811:25:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17898,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17633,
                                  "src": "7844:4:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                    "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                  }
                                },
                                "id": 17899,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalDebtInETH",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17587,
                                "src": "7844:19:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17900,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17633,
                                  "src": "7871:4:80",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                    "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                  }
                                },
                                "id": 17901,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "avgLiquidationThreshold",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17591,
                                "src": "7871:28:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 17895,
                              "name": "calculateHealthFactorFromBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17950,
                              "src": "7770:33:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 17902,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7770:135:80",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7750:155:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17904,
                        "nodeType": "ExpressionStatement",
                        "src": "7750:155:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 17905,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17633,
                                "src": "7926:4:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                  "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                }
                              },
                              "id": 17906,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "totalCollateralInETH",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17585,
                              "src": "7926:25:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 17907,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17633,
                                "src": "7959:4:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                  "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                }
                              },
                              "id": 17908,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "totalDebtInETH",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17587,
                              "src": "7959:19:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 17909,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17633,
                                "src": "7986:4:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                  "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                }
                              },
                              "id": 17910,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "avgLtv",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17589,
                              "src": "7986:11:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 17911,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17633,
                                "src": "8005:4:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                  "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                }
                              },
                              "id": 17912,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "avgLiquidationThreshold",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17591,
                              "src": "8005:28:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 17913,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17633,
                                "src": "8041:4:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CalculateUserAccountDataVars_$17602_memory_ptr",
                                  "typeString": "struct GenericLogic.CalculateUserAccountDataVars memory"
                                }
                              },
                              "id": 17914,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "healthFactor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17583,
                              "src": "8041:17:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 17915,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "7918:146:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256,uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 17631,
                        "id": 17916,
                        "nodeType": "Return",
                        "src": "7911:153:80"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 17603,
                    "nodeType": "StructuredDocumentation",
                    "src": "4708:585:80",
                    "text": " @dev Calculates the user data across the reserves.\n this includes the total liquidity/collateral/borrow balances in ETH,\n the average Loan To Value, the average Liquidation Ratio, and the Health factor.\n @param user The address of the user\n @param reservesData Data of all the reserves\n @param userConfig The configuration of the user\n @param reserves The list of the available reserves\n @param oracle The price oracle address\n @return The total collateral and total debt of the user in ETH, the avg ltv, liquidation threshold and the HF*"
                  },
                  "id": 17918,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "calculateUserAccountData",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 17620,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17605,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17918,
                        "src": "5335:12:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17604,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5335:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17609,
                        "mutability": "mutable",
                        "name": "reservesData",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17918,
                        "src": "5353:62:80",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                          "typeString": "mapping(address => struct DataTypes.ReserveData)"
                        },
                        "typeName": {
                          "id": 17608,
                          "keyType": {
                            "id": 17606,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5361:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Mapping",
                          "src": "5353:41:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                            "typeString": "mapping(address => struct DataTypes.ReserveData)"
                          },
                          "valueType": {
                            "contractScope": null,
                            "id": 17607,
                            "name": "DataTypes.ReserveData",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 20520,
                            "src": "5372:21:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                              "typeString": "struct DataTypes.ReserveData"
                            }
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17611,
                        "mutability": "mutable",
                        "name": "userConfig",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17918,
                        "src": "5421:48:80",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_memory_ptr",
                          "typeString": "struct DataTypes.UserConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 17610,
                          "name": "DataTypes.UserConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20526,
                          "src": "5421:30:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                            "typeString": "struct DataTypes.UserConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17615,
                        "mutability": "mutable",
                        "name": "reserves",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17918,
                        "src": "5475:44:80",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        },
                        "typeName": {
                          "id": 17614,
                          "keyType": {
                            "id": 17612,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5483:7:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Mapping",
                          "src": "5475:27:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                            "typeString": "mapping(uint256 => address)"
                          },
                          "valueType": {
                            "id": 17613,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5494:7:80",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17617,
                        "mutability": "mutable",
                        "name": "reservesCount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17918,
                        "src": "5525:21:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17616,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5525:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17619,
                        "mutability": "mutable",
                        "name": "oracle",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17918,
                        "src": "5552:14:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17618,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5552:7:80",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5329:241:80"
                  },
                  "returnParameters": {
                    "id": 17631,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17622,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17918,
                        "src": "5613:7:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17621,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5613:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17624,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17918,
                        "src": "5628:7:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17623,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5628:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17626,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17918,
                        "src": "5643:7:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17625,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5643:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17628,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17918,
                        "src": "5658:7:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17627,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5658:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17630,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17918,
                        "src": "5673:7:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17629,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5673:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5605:81:80"
                  },
                  "scope": 17987,
                  "src": "5296:2773:80",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 17949,
                    "nodeType": "Block",
                    "src": "8574:146:80",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17932,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 17930,
                            "name": "totalDebtInETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17923,
                            "src": "8584:14:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 17931,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8602:1:80",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8584:19:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 17939,
                        "nodeType": "IfStatement",
                        "src": "8580:43:80",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 17936,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "8620:2:80",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 17935,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8621:1:80",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              ],
                              "id": 17934,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8612:7:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 17933,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8612:7:80",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 17937,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8612:11:80",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "functionReturnParameters": 17929,
                          "id": 17938,
                          "nodeType": "Return",
                          "src": "8605:18:80"
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 17946,
                              "name": "totalDebtInETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17923,
                              "src": "8700:14:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 17942,
                                      "name": "liquidationThreshold",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17925,
                                      "src": "8670:20:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 17940,
                                      "name": "totalCollateralInETH",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17921,
                                      "src": "8638:20:80",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 17941,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "percentMul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20016,
                                    "src": "8638:31:80",
                                    "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": 17943,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8638:53:80",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 17944,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "8637:55:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 17945,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "wadDiv",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20333,
                            "src": "8637:62:80",
                            "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": 17947,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8637:78:80",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 17929,
                        "id": 17948,
                        "nodeType": "Return",
                        "src": "8630:85:80"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 17919,
                    "nodeType": "StructuredDocumentation",
                    "src": "8073:323:80",
                    "text": " @dev Calculates the health factor from the corresponding balances\n @param totalCollateralInETH The total collateral in ETH\n @param totalDebtInETH The total debt in ETH\n @param liquidationThreshold The avg liquidation threshold\n @return The health factor calculated from the balances provided*"
                  },
                  "id": 17950,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "calculateHealthFactorFromBalances",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 17926,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17921,
                        "mutability": "mutable",
                        "name": "totalCollateralInETH",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17950,
                        "src": "8447:28:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17920,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8447:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17923,
                        "mutability": "mutable",
                        "name": "totalDebtInETH",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17950,
                        "src": "8481:22:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17922,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8481:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17925,
                        "mutability": "mutable",
                        "name": "liquidationThreshold",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17950,
                        "src": "8509:28:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17924,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8509:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8441:100:80"
                  },
                  "returnParameters": {
                    "id": 17929,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17928,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17950,
                        "src": "8565:7:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17927,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8565:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8564:9:80"
                  },
                  "scope": 17987,
                  "src": "8399:321:80",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 17985,
                    "nodeType": "Block",
                    "src": "9258:248:80",
                    "statements": [
                      {
                        "assignments": [
                          17963
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17963,
                            "mutability": "mutable",
                            "name": "availableBorrowsETH",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 17985,
                            "src": "9264:27:80",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17962,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9264:7:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 17968,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 17966,
                              "name": "ltv",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17957,
                              "src": "9326:3:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 17964,
                              "name": "totalCollateralInETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17953,
                              "src": "9294:20:80",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 17965,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "percentMul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20016,
                            "src": "9294:31:80",
                            "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": 17967,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9294:36:80",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9264:66:80"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17971,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 17969,
                            "name": "availableBorrowsETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17963,
                            "src": "9341:19:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 17970,
                            "name": "totalDebtInETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17955,
                            "src": "9363:14:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9341:36:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 17975,
                        "nodeType": "IfStatement",
                        "src": "9337:65:80",
                        "trueBody": {
                          "id": 17974,
                          "nodeType": "Block",
                          "src": "9379:23:80",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 17972,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9394:1:80",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 17961,
                              "id": 17973,
                              "nodeType": "Return",
                              "src": "9387:8:80"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17981,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 17976,
                            "name": "availableBorrowsETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17963,
                            "src": "9408:19:80",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 17979,
                                "name": "totalDebtInETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17955,
                                "src": "9454:14:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 17977,
                                "name": "availableBorrowsETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17963,
                                "src": "9430:19:80",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 17978,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4346,
                              "src": "9430:23:80",
                              "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": 17980,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9430:39:80",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9408:61:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17982,
                        "nodeType": "ExpressionStatement",
                        "src": "9408:61:80"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 17983,
                          "name": "availableBorrowsETH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17963,
                          "src": "9482:19:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 17961,
                        "id": 17984,
                        "nodeType": "Return",
                        "src": "9475:26:80"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 17951,
                    "nodeType": "StructuredDocumentation",
                    "src": "8724:377:80",
                    "text": " @dev Calculates the equivalent amount in ETH that an user can borrow, depending on the available collateral and the\n average Loan To Value\n @param totalCollateralInETH The total collateral in ETH\n @param totalDebtInETH The total borrow balance\n @param ltv The average loan to value\n @return the amount available to borrow in ETH for the user*"
                  },
                  "id": 17986,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "calculateAvailableBorrowsETH",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 17958,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17953,
                        "mutability": "mutable",
                        "name": "totalCollateralInETH",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17986,
                        "src": "9148:28:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17952,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9148:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17955,
                        "mutability": "mutable",
                        "name": "totalDebtInETH",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17986,
                        "src": "9182:22:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17954,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9182:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17957,
                        "mutability": "mutable",
                        "name": "ltv",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17986,
                        "src": "9210:11:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17956,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9210:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9142:83:80"
                  },
                  "returnParameters": {
                    "id": 17961,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17960,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17986,
                        "src": "9249:7:80",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17959,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9249:7:80",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9248:9:80"
                  },
                  "scope": 17987,
                  "src": "9105:401:80",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 17988,
              "src": "846:8662:80"
            }
          ],
          "src": "37:9472:80"
        },
        "id": 80
      },
      "contracts/protocol/libraries/logic/ReserveLogic.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/libraries/logic/ReserveLogic.sol",
          "exportedSymbols": {
            "ReserveLogic": [
              18795
            ]
          },
          "id": 18796,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 17989,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:81"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeMath.sol",
              "file": "../../../dependencies/openzeppelin/contracts/SafeMath.sol",
              "id": 17991,
              "nodeType": "ImportDirective",
              "scope": 18796,
              "sourceUnit": 4497,
              "src": "62:83:81",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 17990,
                    "name": "SafeMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:8:81",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
              "file": "../../../dependencies/openzeppelin/contracts/IERC20.sol",
              "id": 17993,
              "nodeType": "ImportDirective",
              "scope": 18796,
              "sourceUnit": 4013,
              "src": "146:79:81",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 17992,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "154:6:81",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeERC20.sol",
              "file": "../../../dependencies/openzeppelin/contracts/SafeERC20.sol",
              "id": 17995,
              "nodeType": "ImportDirective",
              "scope": 18796,
              "sourceUnit": 4301,
              "src": "226:85:81",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 17994,
                    "name": "SafeERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "234:9:81",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IAToken.sol",
              "file": "../../../interfaces/IAToken.sol",
              "id": 17997,
              "nodeType": "ImportDirective",
              "scope": 18796,
              "sourceUnit": 5668,
              "src": "312:56:81",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 17996,
                    "name": "IAToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "320:7:81",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IStableDebtToken.sol",
              "file": "../../../interfaces/IStableDebtToken.sol",
              "id": 17999,
              "nodeType": "ImportDirective",
              "scope": 18796,
              "sourceUnit": 7134,
              "src": "369:74:81",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 17998,
                    "name": "IStableDebtToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "377:16:81",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IVariableDebtToken.sol",
              "file": "../../../interfaces/IVariableDebtToken.sol",
              "id": 18001,
              "nodeType": "ImportDirective",
              "scope": 18796,
              "sourceUnit": 7505,
              "src": "444:78:81",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 18000,
                    "name": "IVariableDebtToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "452:18:81",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IReserveInterestRateStrategy.sol",
              "file": "../../../interfaces/IReserveInterestRateStrategy.sol",
              "id": 18003,
              "nodeType": "ImportDirective",
              "scope": 18796,
              "sourceUnit": 6979,
              "src": "523:98:81",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 18002,
                    "name": "IReserveInterestRateStrategy",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "531:28:81",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/configuration/ReserveConfiguration.sol",
              "file": "../configuration/ReserveConfiguration.sol",
              "id": 18005,
              "nodeType": "ImportDirective",
              "scope": 18796,
              "sourceUnit": 16742,
              "src": "622:79:81",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 18004,
                    "name": "ReserveConfiguration",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "630:20:81",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/math/MathUtils.sol",
              "file": "../math/MathUtils.sol",
              "id": 18007,
              "nodeType": "ImportDirective",
              "scope": 18796,
              "sourceUnit": 19956,
              "src": "702:48:81",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 18006,
                    "name": "MathUtils",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "710:9:81",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/math/WadRayMath.sol",
              "file": "../math/WadRayMath.sol",
              "id": 18009,
              "nodeType": "ImportDirective",
              "scope": 18796,
              "sourceUnit": 20494,
              "src": "751:50:81",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 18008,
                    "name": "WadRayMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "759:10:81",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/math/PercentageMath.sol",
              "file": "../math/PercentageMath.sol",
              "id": 18011,
              "nodeType": "ImportDirective",
              "scope": 18796,
              "sourceUnit": 20069,
              "src": "802:58:81",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 18010,
                    "name": "PercentageMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "810:14:81",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/helpers/Errors.sol",
              "file": "../helpers/Errors.sol",
              "id": 18013,
              "nodeType": "ImportDirective",
              "scope": 18796,
              "sourceUnit": 17240,
              "src": "861:45:81",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 18012,
                    "name": "Errors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "869:6:81",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/types/DataTypes.sol",
              "file": "../types/DataTypes.sol",
              "id": 18015,
              "nodeType": "ImportDirective",
              "scope": 18796,
              "sourceUnit": 20532,
              "src": "907:49:81",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 18014,
                    "name": "DataTypes",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "915:9:81",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 18016,
                "nodeType": "StructuredDocumentation",
                "src": "958:115:81",
                "text": " @title ReserveLogic library\n @author Aave\n @notice Implements the logic to update the reserves state"
              },
              "fullyImplemented": true,
              "id": 18795,
              "linearizedBaseContracts": [
                18795
              ],
              "name": "ReserveLogic",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 18019,
                  "libraryName": {
                    "contractScope": null,
                    "id": 18017,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4496,
                    "src": "1105:8:81",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$4496",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1099:27:81",
                  "typeName": {
                    "id": 18018,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1118:7:81",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 18022,
                  "libraryName": {
                    "contractScope": null,
                    "id": 18020,
                    "name": "WadRayMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20493,
                    "src": "1135:10:81",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_WadRayMath_$20493",
                      "typeString": "library WadRayMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1129:29:81",
                  "typeName": {
                    "id": 18021,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1150:7:81",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 18025,
                  "libraryName": {
                    "contractScope": null,
                    "id": 18023,
                    "name": "PercentageMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20068,
                    "src": "1167:14:81",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_PercentageMath_$20068",
                      "typeString": "library PercentageMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1161:33:81",
                  "typeName": {
                    "id": 18024,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1186:7:81",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 18028,
                  "libraryName": {
                    "contractScope": null,
                    "id": 18026,
                    "name": "SafeERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4300,
                    "src": "1203:9:81",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeERC20_$4300",
                      "typeString": "library SafeERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1197:27:81",
                  "typeName": {
                    "contractScope": null,
                    "id": 18027,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4012,
                    "src": "1217:6:81",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$4012",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 18029,
                    "nodeType": "StructuredDocumentation",
                    "src": "1228:414:81",
                    "text": " @dev Emitted when the state of a reserve is updated\n @param asset The address of the underlying asset of the reserve\n @param liquidityRate The new liquidity rate\n @param stableBorrowRate The new stable borrow rate\n @param variableBorrowRate The new variable borrow rate\n @param liquidityIndex The new liquidity index\n @param variableBorrowIndex The new variable borrow index*"
                  },
                  "id": 18043,
                  "name": "ReserveDataUpdated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 18042,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18031,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18043,
                        "src": "1675:21:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18030,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1675:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18033,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "liquidityRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18043,
                        "src": "1702:21:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18032,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1702:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18035,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "stableBorrowRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18043,
                        "src": "1729:24:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18034,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1729:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18037,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "variableBorrowRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18043,
                        "src": "1759:26:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18036,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1759:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18039,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "liquidityIndex",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18043,
                        "src": "1791:22:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18038,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1791:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18041,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "variableBorrowIndex",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18043,
                        "src": "1819:27:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18040,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1819:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1669:181:81"
                  },
                  "src": "1645:206:81"
                },
                {
                  "id": 18046,
                  "libraryName": {
                    "contractScope": null,
                    "id": 18044,
                    "name": "ReserveLogic",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 18795,
                    "src": "1861:12:81",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ReserveLogic_$18795",
                      "typeString": "library ReserveLogic"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1855:45:81",
                  "typeName": {
                    "contractScope": null,
                    "id": 18045,
                    "name": "DataTypes.ReserveData",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20520,
                    "src": "1878:21:81",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                      "typeString": "struct DataTypes.ReserveData"
                    }
                  }
                },
                {
                  "id": 18049,
                  "libraryName": {
                    "contractScope": null,
                    "id": 18047,
                    "name": "ReserveConfiguration",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16741,
                    "src": "1909:20:81",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ReserveConfiguration_$16741",
                      "typeString": "library ReserveConfiguration"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1903:65:81",
                  "typeName": {
                    "contractScope": null,
                    "id": 18048,
                    "name": "DataTypes.ReserveConfigurationMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20523,
                    "src": "1934:33:81",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                      "typeString": "struct DataTypes.ReserveConfigurationMap"
                    }
                  }
                },
                {
                  "body": {
                    "id": 18089,
                    "nodeType": "Block",
                    "src": "2428:444:81",
                    "statements": [
                      {
                        "assignments": [
                          18058
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18058,
                            "mutability": "mutable",
                            "name": "timestamp",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 18089,
                            "src": "2434:16:81",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            },
                            "typeName": {
                              "id": 18057,
                              "name": "uint40",
                              "nodeType": "ElementaryTypeName",
                              "src": "2434:6:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint40",
                                "typeString": "uint40"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18061,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 18059,
                            "name": "reserve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18052,
                            "src": "2453:7:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                              "typeString": "struct DataTypes.ReserveData storage pointer"
                            }
                          },
                          "id": 18060,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "lastUpdateTimestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 20509,
                          "src": "2453:27:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2434:46:81"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          },
                          "id": 18068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 18062,
                            "name": "timestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18058,
                            "src": "2522:9:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18065,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "2542:5:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 18066,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2542:15:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 18064,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2535:6:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint40_$",
                                "typeString": "type(uint40)"
                              },
                              "typeName": {
                                "id": 18063,
                                "name": "uint40",
                                "nodeType": "ElementaryTypeName",
                                "src": "2535:6:81",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 18067,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2535:23:81",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            }
                          },
                          "src": "2522:36:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 18073,
                        "nodeType": "IfStatement",
                        "src": "2518:173:81",
                        "trueBody": {
                          "id": 18072,
                          "nodeType": "Block",
                          "src": "2560:131:81",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18069,
                                  "name": "reserve",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18052,
                                  "src": "2662:7:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                    "typeString": "struct DataTypes.ReserveData storage pointer"
                                  }
                                },
                                "id": 18070,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "liquidityIndex",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20499,
                                "src": "2662:22:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "functionReturnParameters": 18056,
                              "id": 18071,
                              "nodeType": "Return",
                              "src": "2655:29:81"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          18075
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18075,
                            "mutability": "mutable",
                            "name": "cumulated",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 18089,
                            "src": "2697:17:81",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18074,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2697:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18086,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18083,
                                "name": "reserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18052,
                                "src": "2814:7:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                }
                              },
                              "id": 18084,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "liquidityIndex",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20499,
                              "src": "2814:22:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 18078,
                                    "name": "reserve",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18052,
                                    "src": "2757:7:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                      "typeString": "struct DataTypes.ReserveData storage pointer"
                                    }
                                  },
                                  "id": 18079,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "currentLiquidityRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20503,
                                  "src": "2757:28:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 18080,
                                  "name": "timestamp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18058,
                                  "src": "2787:9:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint40",
                                    "typeString": "uint40"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  {
                                    "typeIdentifier": "t_uint40",
                                    "typeString": "uint40"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18076,
                                  "name": "MathUtils",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19955,
                                  "src": "2723:9:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_MathUtils_$19955_$",
                                    "typeString": "type(library MathUtils)"
                                  }
                                },
                                "id": 18077,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "calculateLinearInterest",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 19824,
                                "src": "2723:33:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint40_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint40) view returns (uint256)"
                                }
                              },
                              "id": 18081,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2723:74:81",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 18082,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayMul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20381,
                            "src": "2723:81:81",
                            "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": 18085,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2723:121:81",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2697:147:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18087,
                          "name": "cumulated",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18075,
                          "src": "2858:9:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 18056,
                        "id": 18088,
                        "nodeType": "Return",
                        "src": "2851:16:81"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18050,
                    "nodeType": "StructuredDocumentation",
                    "src": "1972:339:81",
                    "text": " @dev Returns the ongoing normalized income for the reserve\n A value of 1e27 means there is no income. As time passes, the income is accrued\n A value of 2*1e27 means for each unit of asset one unit of income has been accrued\n @param reserve The reserve object\n @return the normalized income. expressed in ray*"
                  },
                  "id": 18090,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getNormalizedIncome",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 18053,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18052,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18090,
                        "src": "2343:37:81",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                          "typeString": "struct DataTypes.ReserveData"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 18051,
                          "name": "DataTypes.ReserveData",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20520,
                          "src": "2343:21:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                            "typeString": "struct DataTypes.ReserveData"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2342:39:81"
                  },
                  "returnParameters": {
                    "id": 18056,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18055,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18090,
                        "src": "2417:7:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18054,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2417:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2416:9:81"
                  },
                  "scope": 18795,
                  "src": "2314:558:81",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 18130,
                    "nodeType": "Block",
                    "src": "3359:463:81",
                    "statements": [
                      {
                        "assignments": [
                          18099
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18099,
                            "mutability": "mutable",
                            "name": "timestamp",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 18130,
                            "src": "3365:16:81",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            },
                            "typeName": {
                              "id": 18098,
                              "name": "uint40",
                              "nodeType": "ElementaryTypeName",
                              "src": "3365:6:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint40",
                                "typeString": "uint40"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18102,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 18100,
                            "name": "reserve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18093,
                            "src": "3384:7:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                              "typeString": "struct DataTypes.ReserveData storage pointer"
                            }
                          },
                          "id": 18101,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "lastUpdateTimestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 20509,
                          "src": "3384:27:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3365:46:81"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          },
                          "id": 18109,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 18103,
                            "name": "timestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18099,
                            "src": "3453:9:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18106,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "3473:5:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 18107,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3473:15:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 18105,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3466:6:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint40_$",
                                "typeString": "type(uint40)"
                              },
                              "typeName": {
                                "id": 18104,
                                "name": "uint40",
                                "nodeType": "ElementaryTypeName",
                                "src": "3466:6:81",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 18108,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3466:23:81",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            }
                          },
                          "src": "3453:36:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 18114,
                        "nodeType": "IfStatement",
                        "src": "3449:178:81",
                        "trueBody": {
                          "id": 18113,
                          "nodeType": "Block",
                          "src": "3491:136:81",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18110,
                                  "name": "reserve",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18093,
                                  "src": "3593:7:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                    "typeString": "struct DataTypes.ReserveData storage pointer"
                                  }
                                },
                                "id": 18111,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "variableBorrowIndex",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20501,
                                "src": "3593:27:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "functionReturnParameters": 18097,
                              "id": 18112,
                              "nodeType": "Return",
                              "src": "3586:34:81"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          18116
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18116,
                            "mutability": "mutable",
                            "name": "cumulated",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 18130,
                            "src": "3633:17:81",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18115,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3633:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18127,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18124,
                                "name": "reserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18093,
                                "src": "3759:7:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                }
                              },
                              "id": 18125,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "variableBorrowIndex",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20501,
                              "src": "3759:27:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 18119,
                                    "name": "reserve",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18093,
                                    "src": "3697:7:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                      "typeString": "struct DataTypes.ReserveData storage pointer"
                                    }
                                  },
                                  "id": 18120,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "currentVariableBorrowRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20505,
                                  "src": "3697:33:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 18121,
                                  "name": "timestamp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18099,
                                  "src": "3732:9:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint40",
                                    "typeString": "uint40"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  {
                                    "typeIdentifier": "t_uint40",
                                    "typeString": "uint40"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18117,
                                  "name": "MathUtils",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19955,
                                  "src": "3659:9:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_MathUtils_$19955_$",
                                    "typeString": "type(library MathUtils)"
                                  }
                                },
                                "id": 18118,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "calculateCompoundedInterest",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 19954,
                                "src": "3659:37:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint40_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint40) view returns (uint256)"
                                }
                              },
                              "id": 18122,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3659:83:81",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 18123,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayMul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20381,
                            "src": "3659:90:81",
                            "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": 18126,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3659:135:81",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3633:161:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18128,
                          "name": "cumulated",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18116,
                          "src": "3808:9:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 18097,
                        "id": 18129,
                        "nodeType": "Return",
                        "src": "3801:16:81"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18091,
                    "nodeType": "StructuredDocumentation",
                    "src": "2876:368:81",
                    "text": " @dev Returns the ongoing normalized variable debt for the reserve\n A value of 1e27 means there is no debt. As time passes, the income is accrued\n A value of 2*1e27 means that for each unit of debt, one unit worth of interest has been accumulated\n @param reserve The reserve object\n @return The normalized variable debt. expressed in ray*"
                  },
                  "id": 18131,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getNormalizedDebt",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 18094,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18093,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18131,
                        "src": "3274:37:81",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                          "typeString": "struct DataTypes.ReserveData"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 18092,
                          "name": "DataTypes.ReserveData",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20520,
                          "src": "3274:21:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                            "typeString": "struct DataTypes.ReserveData"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3273:39:81"
                  },
                  "returnParameters": {
                    "id": 18097,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18096,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18131,
                        "src": "3348:7:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18095,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3348:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3347:9:81"
                  },
                  "scope": 18795,
                  "src": "3247:575:81",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 18182,
                    "nodeType": "Block",
                    "src": "4027:741:81",
                    "statements": [
                      {
                        "assignments": [
                          18138
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18138,
                            "mutability": "mutable",
                            "name": "scaledVariableDebt",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 18182,
                            "src": "4033:26:81",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18137,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4033:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18145,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 18140,
                                    "name": "reserve",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18134,
                                    "src": "4087:7:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                      "typeString": "struct DataTypes.ReserveData storage pointer"
                                    }
                                  },
                                  "id": 18141,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "variableDebtTokenAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20515,
                                  "src": "4087:32:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 18139,
                                "name": "IVariableDebtToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7504,
                                "src": "4068:18:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IVariableDebtToken_$7504_$",
                                  "typeString": "type(contract IVariableDebtToken)"
                                }
                              },
                              "id": 18142,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4068:52:81",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IVariableDebtToken_$7504",
                                "typeString": "contract IVariableDebtToken"
                              }
                            },
                            "id": 18143,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "scaledTotalSupply",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7004,
                            "src": "4068:70:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                              "typeString": "function () view external returns (uint256)"
                            }
                          },
                          "id": 18144,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4068:72:81",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4033:107:81"
                      },
                      {
                        "assignments": [
                          18147
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18147,
                            "mutability": "mutable",
                            "name": "previousVariableBorrowIndex",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 18182,
                            "src": "4146:35:81",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18146,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4146:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18150,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 18148,
                            "name": "reserve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18134,
                            "src": "4184:7:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                              "typeString": "struct DataTypes.ReserveData storage pointer"
                            }
                          },
                          "id": 18149,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "variableBorrowIndex",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 20501,
                          "src": "4184:27:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4146:65:81"
                      },
                      {
                        "assignments": [
                          18152
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18152,
                            "mutability": "mutable",
                            "name": "previousLiquidityIndex",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 18182,
                            "src": "4217:30:81",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18151,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4217:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18155,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 18153,
                            "name": "reserve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18134,
                            "src": "4250:7:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                              "typeString": "struct DataTypes.ReserveData storage pointer"
                            }
                          },
                          "id": 18154,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "liquidityIndex",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 20499,
                          "src": "4250:22:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4217:55:81"
                      },
                      {
                        "assignments": [
                          18157
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18157,
                            "mutability": "mutable",
                            "name": "lastUpdatedTimestamp",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 18182,
                            "src": "4278:27:81",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            },
                            "typeName": {
                              "id": 18156,
                              "name": "uint40",
                              "nodeType": "ElementaryTypeName",
                              "src": "4278:6:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint40",
                                "typeString": "uint40"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18160,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 18158,
                            "name": "reserve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18134,
                            "src": "4308:7:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                              "typeString": "struct DataTypes.ReserveData storage pointer"
                            }
                          },
                          "id": 18159,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "lastUpdateTimestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 20509,
                          "src": "4308:27:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4278:57:81"
                      },
                      {
                        "assignments": [
                          18162,
                          18164
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18162,
                            "mutability": "mutable",
                            "name": "newLiquidityIndex",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 18182,
                            "src": "4343:25:81",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18161,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4343:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 18164,
                            "mutability": "mutable",
                            "name": "newVariableBorrowIndex",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 18182,
                            "src": "4370:30:81",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18163,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4370:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18172,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 18166,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18134,
                              "src": "4434:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18167,
                              "name": "scaledVariableDebt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18138,
                              "src": "4451:18:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18168,
                              "name": "previousLiquidityIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18152,
                              "src": "4479:22:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18169,
                              "name": "previousVariableBorrowIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18147,
                              "src": "4511:27:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18170,
                              "name": "lastUpdatedTimestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18157,
                              "src": "4548:20:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint40",
                                "typeString": "uint40"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint40",
                                "typeString": "uint40"
                              }
                            ],
                            "id": 18165,
                            "name": "_updateIndexes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18794,
                            "src": "4410:14:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReserveData_$20520_storage_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint40_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (struct DataTypes.ReserveData storage pointer,uint256,uint256,uint256,uint40) returns (uint256,uint256)"
                            }
                          },
                          "id": 18171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4410:166:81",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4342:234:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 18174,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18134,
                              "src": "4606:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18175,
                              "name": "scaledVariableDebt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18138,
                              "src": "4621:18:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18176,
                              "name": "previousVariableBorrowIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18147,
                              "src": "4647:27:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18177,
                              "name": "newLiquidityIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18162,
                              "src": "4682:17:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18178,
                              "name": "newVariableBorrowIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18164,
                              "src": "4707:22:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18179,
                              "name": "lastUpdatedTimestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18157,
                              "src": "4737:20:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint40",
                                "typeString": "uint40"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint40",
                                "typeString": "uint40"
                              }
                            ],
                            "id": 18173,
                            "name": "_mintToTreasury",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18665,
                            "src": "4583:15:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReserveData_$20520_storage_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint40_$returns$__$",
                              "typeString": "function (struct DataTypes.ReserveData storage pointer,uint256,uint256,uint256,uint256,uint40)"
                            }
                          },
                          "id": 18180,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4583:180:81",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18181,
                        "nodeType": "ExpressionStatement",
                        "src": "4583:180:81"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18132,
                    "nodeType": "StructuredDocumentation",
                    "src": "3826:129:81",
                    "text": " @dev Updates the liquidity cumulative index and the variable borrow index.\n @param reserve the reserve object*"
                  },
                  "id": 18183,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updateState",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 18135,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18134,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18183,
                        "src": "3979:37:81",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                          "typeString": "struct DataTypes.ReserveData"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 18133,
                          "name": "DataTypes.ReserveData",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20520,
                          "src": "3979:21:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                            "typeString": "struct DataTypes.ReserveData"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3978:39:81"
                  },
                  "returnParameters": {
                    "id": 18136,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4027:0:81"
                  },
                  "scope": 18795,
                  "src": "3958:810:81",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 18242,
                    "nodeType": "Block",
                    "src": "5289:341:81",
                    "statements": [
                      {
                        "assignments": [
                          18194
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18194,
                            "mutability": "mutable",
                            "name": "amountToLiquidityRatio",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 18242,
                            "src": "5295:30:81",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18193,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5295:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18203,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18199,
                                  "name": "totalLiquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18188,
                                  "src": "5353:14:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 18200,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "wadToRay",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20492,
                                "src": "5353:23:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 18201,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5353:25:81",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18195,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18190,
                                  "src": "5328:6:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 18196,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "wadToRay",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20492,
                                "src": "5328:15:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 18197,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5328:17:81",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 18198,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayDiv",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20432,
                            "src": "5328:24:81",
                            "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": 18202,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5328:51:81",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5295:84:81"
                      },
                      {
                        "assignments": [
                          18205
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18205,
                            "mutability": "mutable",
                            "name": "result",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 18242,
                            "src": "5386:14:81",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18204,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5386:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18212,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18208,
                                  "name": "WadRayMath",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20493,
                                  "src": "5430:10:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_WadRayMath_$20493_$",
                                    "typeString": "type(library WadRayMath)"
                                  }
                                },
                                "id": 18209,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "ray",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20207,
                                "src": "5430:14:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                  "typeString": "function () pure returns (uint256)"
                                }
                              },
                              "id": 18210,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5430:16:81",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 18206,
                              "name": "amountToLiquidityRatio",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18194,
                              "src": "5403:22:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 18207,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4329,
                            "src": "5403:26:81",
                            "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": 18211,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5403:44:81",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5386:61:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18219,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 18213,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18205,
                            "src": "5454:6:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18216,
                                  "name": "reserve",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18186,
                                  "src": "5477:7:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                    "typeString": "struct DataTypes.ReserveData storage pointer"
                                  }
                                },
                                "id": 18217,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "liquidityIndex",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20499,
                                "src": "5477:22:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 18214,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18205,
                                "src": "5463:6:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18215,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "rayMul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20381,
                              "src": "5463:13:81",
                              "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": 18218,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5463:37:81",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5454:46:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18220,
                        "nodeType": "ExpressionStatement",
                        "src": "5454:46:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 18228,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 18222,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18205,
                                "src": "5514:6:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 18225,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5529:7:81",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint128_$",
                                        "typeString": "type(uint128)"
                                      },
                                      "typeName": {
                                        "id": 18224,
                                        "name": "uint128",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5529:7:81",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_uint128_$",
                                        "typeString": "type(uint128)"
                                      }
                                    ],
                                    "id": 18223,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "5524:4:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 18226,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5524:13:81",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_uint128",
                                    "typeString": "type(uint128)"
                                  }
                                },
                                "id": 18227,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "max",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5524:17:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "5514:27:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18229,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "5543:6:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 18230,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "RL_LIQUIDITY_INDEX_OVERFLOW",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17149,
                              "src": "5543:34:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 18221,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5506:7:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18231,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5506:72:81",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18232,
                        "nodeType": "ExpressionStatement",
                        "src": "5506:72:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18240,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18233,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18186,
                              "src": "5585:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            "id": 18235,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "liquidityIndex",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20499,
                            "src": "5585:22:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 18238,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18205,
                                "src": "5618:6:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 18237,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5610:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              },
                              "typeName": {
                                "id": 18236,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "5610:7:81",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 18239,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5610:15:81",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "5585:40:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 18241,
                        "nodeType": "ExpressionStatement",
                        "src": "5585:40:81"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18184,
                    "nodeType": "StructuredDocumentation",
                    "src": "4772:376:81",
                    "text": " @dev Accumulates a predefined amount of asset to the reserve as a fixed, instantaneous income. Used for example to accumulate\n the flashloan fee to the reserve, and spread it between all the depositors\n @param reserve The reserve object\n @param totalLiquidity The total liquidity available in the reserve\n @param amount The amount to accomulate*"
                  },
                  "id": 18243,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "cumulateToLiquidityIndex",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 18191,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18186,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18243,
                        "src": "5190:37:81",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                          "typeString": "struct DataTypes.ReserveData"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 18185,
                          "name": "DataTypes.ReserveData",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20520,
                          "src": "5190:21:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                            "typeString": "struct DataTypes.ReserveData"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18188,
                        "mutability": "mutable",
                        "name": "totalLiquidity",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18243,
                        "src": "5233:22:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18187,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5233:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18190,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18243,
                        "src": "5261:14:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18189,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5261:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5184:95:81"
                  },
                  "returnParameters": {
                    "id": 18192,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5289:0:81"
                  },
                  "scope": 18795,
                  "src": "5151:479:81",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 18315,
                    "nodeType": "Block",
                    "src": "6092:452:81",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 18264,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18258,
                                  "name": "reserve",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18246,
                                  "src": "6106:7:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                    "typeString": "struct DataTypes.ReserveData storage pointer"
                                  }
                                },
                                "id": 18259,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "aTokenAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20511,
                                "src": "6106:21:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 18262,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6139:1:81",
                                    "subdenomination": null,
                                    "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": 18261,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6131:7:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 18260,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6131:7:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 18263,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6131:10:81",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6106:35:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18265,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "6143:6:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 18266,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "RL_RESERVE_ALREADY_INITIALIZED",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17089,
                              "src": "6143:37:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 18257,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6098:7:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18267,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6098:83:81",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18268,
                        "nodeType": "ExpressionStatement",
                        "src": "6098:83:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18269,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18246,
                              "src": "6188:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            "id": 18271,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "liquidityIndex",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20499,
                            "src": "6188:22:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 18274,
                                    "name": "WadRayMath",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20493,
                                    "src": "6221:10:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_WadRayMath_$20493_$",
                                      "typeString": "type(library WadRayMath)"
                                    }
                                  },
                                  "id": 18275,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "ray",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20207,
                                  "src": "6221:14:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                    "typeString": "function () pure returns (uint256)"
                                  }
                                },
                                "id": 18276,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6221:16:81",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 18273,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6213:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              },
                              "typeName": {
                                "id": 18272,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "6213:7:81",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 18277,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6213:25:81",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "6188:50:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 18279,
                        "nodeType": "ExpressionStatement",
                        "src": "6188:50:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18289,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18280,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18246,
                              "src": "6244:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            "id": 18282,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "variableBorrowIndex",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20501,
                            "src": "6244:27:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 18285,
                                    "name": "WadRayMath",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20493,
                                    "src": "6282:10:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_WadRayMath_$20493_$",
                                      "typeString": "type(library WadRayMath)"
                                    }
                                  },
                                  "id": 18286,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "ray",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20207,
                                  "src": "6282:14:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                    "typeString": "function () pure returns (uint256)"
                                  }
                                },
                                "id": 18287,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6282:16:81",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 18284,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6274:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              },
                              "typeName": {
                                "id": 18283,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "6274:7:81",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 18288,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6274:25:81",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "6244:55:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 18290,
                        "nodeType": "ExpressionStatement",
                        "src": "6244:55:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18295,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18291,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18246,
                              "src": "6305:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            "id": 18293,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "aTokenAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20511,
                            "src": "6305:21:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 18294,
                            "name": "aTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18248,
                            "src": "6329:13:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6305:37:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 18296,
                        "nodeType": "ExpressionStatement",
                        "src": "6305:37:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18301,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18297,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18246,
                              "src": "6348:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            "id": 18299,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "stableDebtTokenAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20513,
                            "src": "6348:30:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 18300,
                            "name": "stableDebtTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18250,
                            "src": "6381:22:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6348:55:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 18302,
                        "nodeType": "ExpressionStatement",
                        "src": "6348:55:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18307,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18303,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18246,
                              "src": "6409:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            "id": 18305,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "variableDebtTokenAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20515,
                            "src": "6409:32:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 18306,
                            "name": "variableDebtTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18252,
                            "src": "6444:24:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6409:59:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 18308,
                        "nodeType": "ExpressionStatement",
                        "src": "6409:59:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18313,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18309,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18246,
                              "src": "6474:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            "id": 18311,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "interestRateStrategyAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20517,
                            "src": "6474:35:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 18312,
                            "name": "interestRateStrategyAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18254,
                            "src": "6512:27:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6474:65:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 18314,
                        "nodeType": "ExpressionStatement",
                        "src": "6474:65:81"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18244,
                    "nodeType": "StructuredDocumentation",
                    "src": "5634:243:81",
                    "text": " @dev Initializes a reserve\n @param reserve The reserve object\n @param aTokenAddress The address of the overlying atoken contract\n @param interestRateStrategyAddress The address of the interest rate strategy contract*"
                  },
                  "functionSelector": "2b33897c",
                  "id": 18316,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "init",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 18255,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18246,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18316,
                        "src": "5899:37:81",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                          "typeString": "struct DataTypes.ReserveData"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 18245,
                          "name": "DataTypes.ReserveData",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20520,
                          "src": "5899:21:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                            "typeString": "struct DataTypes.ReserveData"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18248,
                        "mutability": "mutable",
                        "name": "aTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18316,
                        "src": "5942:21:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18247,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5942:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18250,
                        "mutability": "mutable",
                        "name": "stableDebtTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18316,
                        "src": "5969:30:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18249,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5969:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18252,
                        "mutability": "mutable",
                        "name": "variableDebtTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18316,
                        "src": "6005:32:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18251,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6005:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18254,
                        "mutability": "mutable",
                        "name": "interestRateStrategyAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18316,
                        "src": "6043:35:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18253,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6043:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5893:189:81"
                  },
                  "returnParameters": {
                    "id": 18256,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6092:0:81"
                  },
                  "scope": 18795,
                  "src": "5880:664:81",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "canonicalName": "ReserveLogic.UpdateInterestRatesLocalVars",
                  "id": 18333,
                  "members": [
                    {
                      "constant": false,
                      "id": 18318,
                      "mutability": "mutable",
                      "name": "stableDebtTokenAddress",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18333,
                      "src": "6590:30:81",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 18317,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6590:7:81",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18320,
                      "mutability": "mutable",
                      "name": "availableLiquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18333,
                      "src": "6626:26:81",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18319,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6626:7:81",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18322,
                      "mutability": "mutable",
                      "name": "totalStableDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18333,
                      "src": "6658:23:81",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18321,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6658:7:81",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18324,
                      "mutability": "mutable",
                      "name": "newLiquidityRate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18333,
                      "src": "6687:24:81",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18323,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6687:7:81",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18326,
                      "mutability": "mutable",
                      "name": "newStableRate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18333,
                      "src": "6717:21:81",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18325,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6717:7:81",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18328,
                      "mutability": "mutable",
                      "name": "newVariableRate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18333,
                      "src": "6744:23:81",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18327,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6744:7:81",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18330,
                      "mutability": "mutable",
                      "name": "avgStableRate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18333,
                      "src": "6773:21:81",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18329,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6773:7:81",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18332,
                      "mutability": "mutable",
                      "name": "totalVariableDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18333,
                      "src": "6800:25:81",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18331,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6800:7:81",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "UpdateInterestRatesLocalVars",
                  "nodeType": "StructDefinition",
                  "scope": 18795,
                  "src": "6548:282:81",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 18499,
                    "nodeType": "Block",
                    "src": "7435:1722:81",
                    "statements": [
                      {
                        "assignments": [
                          18348
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18348,
                            "mutability": "mutable",
                            "name": "vars",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 18499,
                            "src": "7441:40:81",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UpdateInterestRatesLocalVars_$18333_memory_ptr",
                              "typeString": "struct ReserveLogic.UpdateInterestRatesLocalVars"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 18347,
                              "name": "UpdateInterestRatesLocalVars",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 18333,
                              "src": "7441:28:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UpdateInterestRatesLocalVars_$18333_storage_ptr",
                                "typeString": "struct ReserveLogic.UpdateInterestRatesLocalVars"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18349,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7441:40:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18355,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18350,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18348,
                              "src": "7488:4:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UpdateInterestRatesLocalVars_$18333_memory_ptr",
                                "typeString": "struct ReserveLogic.UpdateInterestRatesLocalVars memory"
                              }
                            },
                            "id": 18352,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "stableDebtTokenAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18318,
                            "src": "7488:27:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18353,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18336,
                              "src": "7518:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            "id": 18354,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "stableDebtTokenAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20513,
                            "src": "7518:30:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "7488:60:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 18356,
                        "nodeType": "ExpressionStatement",
                        "src": "7488:60:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18369,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18357,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18348,
                                  "src": "7556:4:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UpdateInterestRatesLocalVars_$18333_memory_ptr",
                                    "typeString": "struct ReserveLogic.UpdateInterestRatesLocalVars memory"
                                  }
                                },
                                "id": 18359,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "totalStableDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18322,
                                "src": "7556:20:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18360,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18348,
                                  "src": "7578:4:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UpdateInterestRatesLocalVars_$18333_memory_ptr",
                                    "typeString": "struct ReserveLogic.UpdateInterestRatesLocalVars memory"
                                  }
                                },
                                "id": 18361,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "avgStableRate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18330,
                                "src": "7578:18:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 18362,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "7555:42:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18364,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18348,
                                      "src": "7617:4:81",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UpdateInterestRatesLocalVars_$18333_memory_ptr",
                                        "typeString": "struct ReserveLogic.UpdateInterestRatesLocalVars memory"
                                      }
                                    },
                                    "id": 18365,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "stableDebtTokenAddress",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18318,
                                    "src": "7617:27:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 18363,
                                  "name": "IStableDebtToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7133,
                                  "src": "7600:16:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IStableDebtToken_$7133_$",
                                    "typeString": "type(contract IStableDebtToken)"
                                  }
                                },
                                "id": 18366,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7600:45:81",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IStableDebtToken_$7133",
                                  "typeString": "contract IStableDebtToken"
                                }
                              },
                              "id": 18367,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getTotalSupplyAndAvgRate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7118,
                              "src": "7600:77:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function () view external returns (uint256,uint256)"
                              }
                            },
                            "id": 18368,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7600:79:81",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "7555:124:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18370,
                        "nodeType": "ExpressionStatement",
                        "src": "7555:124:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18384,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18371,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18348,
                              "src": "7899:4:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UpdateInterestRatesLocalVars_$18333_memory_ptr",
                                "typeString": "struct ReserveLogic.UpdateInterestRatesLocalVars memory"
                              }
                            },
                            "id": 18373,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "totalVariableDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18332,
                            "src": "7899:22:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18381,
                                  "name": "reserve",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18336,
                                  "src": "8018:7:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                    "typeString": "struct DataTypes.ReserveData storage pointer"
                                  }
                                },
                                "id": 18382,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "variableBorrowIndex",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20501,
                                "src": "8018:27:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 18375,
                                          "name": "reserve",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18336,
                                          "src": "7943:7:81",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                            "typeString": "struct DataTypes.ReserveData storage pointer"
                                          }
                                        },
                                        "id": 18376,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "variableDebtTokenAddress",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 20515,
                                        "src": "7943:32:81",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 18374,
                                      "name": "IVariableDebtToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7504,
                                      "src": "7924:18:81",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IVariableDebtToken_$7504_$",
                                        "typeString": "type(contract IVariableDebtToken)"
                                      }
                                    },
                                    "id": 18377,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7924:52:81",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IVariableDebtToken_$7504",
                                      "typeString": "contract IVariableDebtToken"
                                    }
                                  },
                                  "id": 18378,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "scaledTotalSupply",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7004,
                                  "src": "7924:77:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view external returns (uint256)"
                                  }
                                },
                                "id": 18379,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7924:79:81",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18380,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "rayMul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20381,
                              "src": "7924:93:81",
                              "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": 18383,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7924:122:81",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7899:147:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18385,
                        "nodeType": "ExpressionStatement",
                        "src": "7899:147:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18386,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18348,
                                  "src": "8061:4:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UpdateInterestRatesLocalVars_$18333_memory_ptr",
                                    "typeString": "struct ReserveLogic.UpdateInterestRatesLocalVars memory"
                                  }
                                },
                                "id": 18388,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "newLiquidityRate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18324,
                                "src": "8061:21:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18389,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18348,
                                  "src": "8090:4:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UpdateInterestRatesLocalVars_$18333_memory_ptr",
                                    "typeString": "struct ReserveLogic.UpdateInterestRatesLocalVars memory"
                                  }
                                },
                                "id": 18390,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "newStableRate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18326,
                                "src": "8090:18:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18391,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18348,
                                  "src": "8116:4:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UpdateInterestRatesLocalVars_$18333_memory_ptr",
                                    "typeString": "struct ReserveLogic.UpdateInterestRatesLocalVars memory"
                                  }
                                },
                                "id": 18392,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "newVariableRate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18328,
                                "src": "8116:20:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 18393,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "8053:89:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 18399,
                                "name": "reserveAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18338,
                                "src": "8241:14:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 18400,
                                "name": "aTokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18340,
                                "src": "8263:13:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 18401,
                                "name": "liquidityAdded",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18342,
                                "src": "8284:14:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 18402,
                                "name": "liquidityTaken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18344,
                                "src": "8306:14:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18403,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18348,
                                  "src": "8328:4:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UpdateInterestRatesLocalVars_$18333_memory_ptr",
                                    "typeString": "struct ReserveLogic.UpdateInterestRatesLocalVars memory"
                                  }
                                },
                                "id": 18404,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalStableDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18322,
                                "src": "8328:20:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18405,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18348,
                                  "src": "8356:4:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UpdateInterestRatesLocalVars_$18333_memory_ptr",
                                    "typeString": "struct ReserveLogic.UpdateInterestRatesLocalVars memory"
                                  }
                                },
                                "id": 18406,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalVariableDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18332,
                                "src": "8356:22:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18407,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18348,
                                  "src": "8386:4:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UpdateInterestRatesLocalVars_$18333_memory_ptr",
                                    "typeString": "struct ReserveLogic.UpdateInterestRatesLocalVars memory"
                                  }
                                },
                                "id": 18408,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "avgStableRate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18330,
                                "src": "8386:18:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18409,
                                      "name": "reserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18336,
                                      "src": "8412:7:81",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                        "typeString": "struct DataTypes.ReserveData storage pointer"
                                      }
                                    },
                                    "id": 18410,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "configuration",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20497,
                                    "src": "8412:21:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage",
                                      "typeString": "struct DataTypes.ReserveConfigurationMap storage ref"
                                    }
                                  },
                                  "id": 18411,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getReserveFactor",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 16529,
                                  "src": "8412:38:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$",
                                    "typeString": "function (struct DataTypes.ReserveConfigurationMap storage pointer) view returns (uint256)"
                                  }
                                },
                                "id": 18412,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8412:40:81",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18395,
                                      "name": "reserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18336,
                                      "src": "8174:7:81",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                        "typeString": "struct DataTypes.ReserveData storage pointer"
                                      }
                                    },
                                    "id": 18396,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "interestRateStrategyAddress",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20517,
                                    "src": "8174:35:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 18394,
                                  "name": "IReserveInterestRateStrategy",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6978,
                                  "src": "8145:28:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IReserveInterestRateStrategy_$6978_$",
                                    "typeString": "type(contract IReserveInterestRateStrategy)"
                                  }
                                },
                                "id": 18397,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8145:65:81",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IReserveInterestRateStrategy_$6978",
                                  "typeString": "contract IReserveInterestRateStrategy"
                                }
                              },
                              "id": 18398,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "calculateInterestRates",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6977,
                              "src": "8145:88:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "function (address,address,uint256,uint256,uint256,uint256,uint256,uint256) view external returns (uint256,uint256,uint256)"
                              }
                            },
                            "id": 18413,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8145:313:81",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "src": "8053:405:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18415,
                        "nodeType": "ExpressionStatement",
                        "src": "8053:405:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 18424,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18417,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18348,
                                  "src": "8472:4:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UpdateInterestRatesLocalVars_$18333_memory_ptr",
                                    "typeString": "struct ReserveLogic.UpdateInterestRatesLocalVars memory"
                                  }
                                },
                                "id": 18418,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "newLiquidityRate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18324,
                                "src": "8472:21:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 18421,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8502:7:81",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint128_$",
                                        "typeString": "type(uint128)"
                                      },
                                      "typeName": {
                                        "id": 18420,
                                        "name": "uint128",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8502:7:81",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_uint128_$",
                                        "typeString": "type(uint128)"
                                      }
                                    ],
                                    "id": 18419,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "8497:4:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 18422,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8497:13:81",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_uint128",
                                    "typeString": "type(uint128)"
                                  }
                                },
                                "id": 18423,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "max",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "8497:17:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "8472:42:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18425,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "8516:6:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 18426,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "RL_LIQUIDITY_RATE_OVERFLOW",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17155,
                              "src": "8516:33:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 18416,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8464:7:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18427,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8464:86:81",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18428,
                        "nodeType": "ExpressionStatement",
                        "src": "8464:86:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 18437,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18430,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18348,
                                  "src": "8564:4:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UpdateInterestRatesLocalVars_$18333_memory_ptr",
                                    "typeString": "struct ReserveLogic.UpdateInterestRatesLocalVars memory"
                                  }
                                },
                                "id": 18431,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "newStableRate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18326,
                                "src": "8564:18:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 18434,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8591:7:81",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint128_$",
                                        "typeString": "type(uint128)"
                                      },
                                      "typeName": {
                                        "id": 18433,
                                        "name": "uint128",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8591:7:81",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_uint128_$",
                                        "typeString": "type(uint128)"
                                      }
                                    ],
                                    "id": 18432,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "8586:4:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 18435,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8586:13:81",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_uint128",
                                    "typeString": "type(uint128)"
                                  }
                                },
                                "id": 18436,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "max",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "8586:17:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "8564:39:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18438,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "8605:6:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 18439,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "RL_STABLE_BORROW_RATE_OVERFLOW",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17161,
                              "src": "8605:37:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 18429,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8556:7:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18440,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8556:87:81",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18441,
                        "nodeType": "ExpressionStatement",
                        "src": "8556:87:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 18450,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18443,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18348,
                                  "src": "8657:4:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UpdateInterestRatesLocalVars_$18333_memory_ptr",
                                    "typeString": "struct ReserveLogic.UpdateInterestRatesLocalVars memory"
                                  }
                                },
                                "id": 18444,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "newVariableRate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18328,
                                "src": "8657:20:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 18447,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8686:7:81",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint128_$",
                                        "typeString": "type(uint128)"
                                      },
                                      "typeName": {
                                        "id": 18446,
                                        "name": "uint128",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8686:7:81",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_uint128_$",
                                        "typeString": "type(uint128)"
                                      }
                                    ],
                                    "id": 18445,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "8681:4:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 18448,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8681:13:81",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_uint128",
                                    "typeString": "type(uint128)"
                                  }
                                },
                                "id": 18449,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "max",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "8681:17:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "8657:41:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18451,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "8700:6:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 18452,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "RL_VARIABLE_BORROW_RATE_OVERFLOW",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17158,
                              "src": "8700:39:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 18442,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8649:7:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18453,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8649:91:81",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18454,
                        "nodeType": "ExpressionStatement",
                        "src": "8649:91:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18463,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18455,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18336,
                              "src": "8747:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            "id": 18457,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "currentLiquidityRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20503,
                            "src": "8747:28:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18460,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18348,
                                  "src": "8786:4:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UpdateInterestRatesLocalVars_$18333_memory_ptr",
                                    "typeString": "struct ReserveLogic.UpdateInterestRatesLocalVars memory"
                                  }
                                },
                                "id": 18461,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "newLiquidityRate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18324,
                                "src": "8786:21:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 18459,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8778:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              },
                              "typeName": {
                                "id": 18458,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "8778:7:81",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 18462,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8778:30:81",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "8747:61:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 18464,
                        "nodeType": "ExpressionStatement",
                        "src": "8747:61:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18473,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18465,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18336,
                              "src": "8814:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            "id": 18467,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "currentStableBorrowRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20507,
                            "src": "8814:31:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18470,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18348,
                                  "src": "8856:4:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UpdateInterestRatesLocalVars_$18333_memory_ptr",
                                    "typeString": "struct ReserveLogic.UpdateInterestRatesLocalVars memory"
                                  }
                                },
                                "id": 18471,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "newStableRate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18326,
                                "src": "8856:18:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 18469,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8848:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              },
                              "typeName": {
                                "id": 18468,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "8848:7:81",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 18472,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8848:27:81",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "8814:61:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 18474,
                        "nodeType": "ExpressionStatement",
                        "src": "8814:61:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18483,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18475,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18336,
                              "src": "8881:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            "id": 18477,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "currentVariableBorrowRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20505,
                            "src": "8881:33:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18480,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18348,
                                  "src": "8925:4:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UpdateInterestRatesLocalVars_$18333_memory_ptr",
                                    "typeString": "struct ReserveLogic.UpdateInterestRatesLocalVars memory"
                                  }
                                },
                                "id": 18481,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "newVariableRate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18328,
                                "src": "8925:20:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 18479,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8917:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              },
                              "typeName": {
                                "id": 18478,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "8917:7:81",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 18482,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8917:29:81",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "8881:65:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 18484,
                        "nodeType": "ExpressionStatement",
                        "src": "8881:65:81"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 18486,
                              "name": "reserveAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18338,
                              "src": "8984:14:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18487,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18348,
                                "src": "9006:4:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateInterestRatesLocalVars_$18333_memory_ptr",
                                  "typeString": "struct ReserveLogic.UpdateInterestRatesLocalVars memory"
                                }
                              },
                              "id": 18488,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "newLiquidityRate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18324,
                              "src": "9006:21:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18489,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18348,
                                "src": "9035:4:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateInterestRatesLocalVars_$18333_memory_ptr",
                                  "typeString": "struct ReserveLogic.UpdateInterestRatesLocalVars memory"
                                }
                              },
                              "id": 18490,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "newStableRate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18326,
                              "src": "9035:18:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18491,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18348,
                                "src": "9061:4:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UpdateInterestRatesLocalVars_$18333_memory_ptr",
                                  "typeString": "struct ReserveLogic.UpdateInterestRatesLocalVars memory"
                                }
                              },
                              "id": 18492,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "newVariableRate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18328,
                              "src": "9061:20:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18493,
                                "name": "reserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18336,
                                "src": "9089:7:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                }
                              },
                              "id": 18494,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "liquidityIndex",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20499,
                              "src": "9089:22:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18495,
                                "name": "reserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18336,
                                "src": "9119:7:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                }
                              },
                              "id": 18496,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "variableBorrowIndex",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20501,
                              "src": "9119:27:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              },
                              {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            ],
                            "id": 18485,
                            "name": "ReserveDataUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18043,
                            "src": "8958:18:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "id": 18497,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8958:194:81",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18498,
                        "nodeType": "EmitStatement",
                        "src": "8953:199:81"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18334,
                    "nodeType": "StructuredDocumentation",
                    "src": "6834:402:81",
                    "text": " @dev Updates the reserve current stable borrow rate, the current variable borrow rate and the current liquidity rate\n @param reserve The address of the reserve to be updated\n @param liquidityAdded The amount of liquidity added to the protocol (deposit or repay) in the previous action\n @param liquidityTaken The amount of liquidity taken from the protocol (redeem or borrow)*"
                  },
                  "id": 18500,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updateInterestRates",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 18345,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18336,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18500,
                        "src": "7273:37:81",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                          "typeString": "struct DataTypes.ReserveData"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 18335,
                          "name": "DataTypes.ReserveData",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20520,
                          "src": "7273:21:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                            "typeString": "struct DataTypes.ReserveData"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18338,
                        "mutability": "mutable",
                        "name": "reserveAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18500,
                        "src": "7316:22:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18337,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7316:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18340,
                        "mutability": "mutable",
                        "name": "aTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18500,
                        "src": "7344:21:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18339,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7344:7:81",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18342,
                        "mutability": "mutable",
                        "name": "liquidityAdded",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18500,
                        "src": "7371:22:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18341,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7371:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18344,
                        "mutability": "mutable",
                        "name": "liquidityTaken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18500,
                        "src": "7399:22:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18343,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7399:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7267:158:81"
                  },
                  "returnParameters": {
                    "id": 18346,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7435:0:81"
                  },
                  "scope": 18795,
                  "src": "7239:1918:81",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "canonicalName": "ReserveLogic.MintToTreasuryLocalVars",
                  "id": 18523,
                  "members": [
                    {
                      "constant": false,
                      "id": 18502,
                      "mutability": "mutable",
                      "name": "currentStableDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18523,
                      "src": "9198:25:81",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18501,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9198:7:81",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18504,
                      "mutability": "mutable",
                      "name": "principalStableDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18523,
                      "src": "9229:27:81",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18503,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9229:7:81",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18506,
                      "mutability": "mutable",
                      "name": "previousStableDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18523,
                      "src": "9262:26:81",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18505,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9262:7:81",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18508,
                      "mutability": "mutable",
                      "name": "currentVariableDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18523,
                      "src": "9294:27:81",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18507,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9294:7:81",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18510,
                      "mutability": "mutable",
                      "name": "previousVariableDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18523,
                      "src": "9327:28:81",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18509,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9327:7:81",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18512,
                      "mutability": "mutable",
                      "name": "avgStableRate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18523,
                      "src": "9361:21:81",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18511,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9361:7:81",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18514,
                      "mutability": "mutable",
                      "name": "cumulatedStableInterest",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18523,
                      "src": "9388:31:81",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18513,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9388:7:81",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18516,
                      "mutability": "mutable",
                      "name": "totalDebtAccrued",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18523,
                      "src": "9425:24:81",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18515,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9425:7:81",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18518,
                      "mutability": "mutable",
                      "name": "amountToMint",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18523,
                      "src": "9455:20:81",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18517,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9455:7:81",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18520,
                      "mutability": "mutable",
                      "name": "reserveFactor",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18523,
                      "src": "9481:21:81",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18519,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9481:7:81",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18522,
                      "mutability": "mutable",
                      "name": "stableSupplyUpdatedTimestamp",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18523,
                      "src": "9508:35:81",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint40",
                        "typeString": "uint40"
                      },
                      "typeName": {
                        "id": 18521,
                        "name": "uint40",
                        "nodeType": "ElementaryTypeName",
                        "src": "9508:6:81",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "MintToTreasuryLocalVars",
                  "nodeType": "StructDefinition",
                  "scope": 18795,
                  "src": "9161:387:81",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 18664,
                    "nodeType": "Block",
                    "src": "10334:1541:81",
                    "statements": [
                      {
                        "assignments": [
                          18540
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18540,
                            "mutability": "mutable",
                            "name": "vars",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 18664,
                            "src": "10340:35:81",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MintToTreasuryLocalVars_$18523_memory_ptr",
                              "typeString": "struct ReserveLogic.MintToTreasuryLocalVars"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 18539,
                              "name": "MintToTreasuryLocalVars",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 18523,
                              "src": "10340:23:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MintToTreasuryLocalVars_$18523_storage_ptr",
                                "typeString": "struct ReserveLogic.MintToTreasuryLocalVars"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18541,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10340:35:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18549,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18542,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18540,
                              "src": "10382:4:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MintToTreasuryLocalVars_$18523_memory_ptr",
                                "typeString": "struct ReserveLogic.MintToTreasuryLocalVars memory"
                              }
                            },
                            "id": 18544,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "reserveFactor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18520,
                            "src": "10382:18:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18545,
                                  "name": "reserve",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18526,
                                  "src": "10403:7:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                    "typeString": "struct DataTypes.ReserveData storage pointer"
                                  }
                                },
                                "id": 18546,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "configuration",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20497,
                                "src": "10403:21:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage",
                                  "typeString": "struct DataTypes.ReserveConfigurationMap storage ref"
                                }
                              },
                              "id": 18547,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getReserveFactor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16529,
                              "src": "10403:38:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$",
                                "typeString": "function (struct DataTypes.ReserveConfigurationMap storage pointer) view returns (uint256)"
                              }
                            },
                            "id": 18548,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10403:40:81",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10382:61:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18550,
                        "nodeType": "ExpressionStatement",
                        "src": "10382:61:81"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18554,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18551,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18540,
                              "src": "10454:4:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MintToTreasuryLocalVars_$18523_memory_ptr",
                                "typeString": "struct ReserveLogic.MintToTreasuryLocalVars memory"
                              }
                            },
                            "id": 18552,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "reserveFactor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18520,
                            "src": "10454:18:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 18553,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10476:1:81",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "10454:23:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 18557,
                        "nodeType": "IfStatement",
                        "src": "10450:50:81",
                        "trueBody": {
                          "id": 18556,
                          "nodeType": "Block",
                          "src": "10479:21:81",
                          "statements": [
                            {
                              "expression": null,
                              "functionReturnParameters": 18538,
                              "id": 18555,
                              "nodeType": "Return",
                              "src": "10487:7:81"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18558,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18540,
                                  "src": "10586:4:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MintToTreasuryLocalVars_$18523_memory_ptr",
                                    "typeString": "struct ReserveLogic.MintToTreasuryLocalVars memory"
                                  }
                                },
                                "id": 18560,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "principalStableDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18504,
                                "src": "10586:24:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18561,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18540,
                                  "src": "10618:4:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MintToTreasuryLocalVars_$18523_memory_ptr",
                                    "typeString": "struct ReserveLogic.MintToTreasuryLocalVars memory"
                                  }
                                },
                                "id": 18562,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "currentStableDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18502,
                                "src": "10618:22:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18563,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18540,
                                  "src": "10648:4:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MintToTreasuryLocalVars_$18523_memory_ptr",
                                    "typeString": "struct ReserveLogic.MintToTreasuryLocalVars memory"
                                  }
                                },
                                "id": 18564,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "avgStableRate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18512,
                                "src": "10648:18:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18565,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18540,
                                  "src": "10674:4:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MintToTreasuryLocalVars_$18523_memory_ptr",
                                    "typeString": "struct ReserveLogic.MintToTreasuryLocalVars memory"
                                  }
                                },
                                "id": 18566,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "stableSupplyUpdatedTimestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18522,
                                "src": "10674:33:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint40",
                                  "typeString": "uint40"
                                }
                              }
                            ],
                            "id": 18567,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "10578:135:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint40_$",
                              "typeString": "tuple(uint256,uint256,uint256,uint40)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18569,
                                      "name": "reserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18526,
                                      "src": "10733:7:81",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                        "typeString": "struct DataTypes.ReserveData storage pointer"
                                      }
                                    },
                                    "id": 18570,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "stableDebtTokenAddress",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20513,
                                    "src": "10733:30:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 18568,
                                  "name": "IStableDebtToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7133,
                                  "src": "10716:16:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IStableDebtToken_$7133_$",
                                    "typeString": "type(contract IStableDebtToken)"
                                  }
                                },
                                "id": 18571,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10716:48:81",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IStableDebtToken_$7133",
                                  "typeString": "contract IStableDebtToken"
                                }
                              },
                              "id": 18572,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getSupplyData",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7104,
                              "src": "10716:62:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint40_$",
                                "typeString": "function () view external returns (uint256,uint256,uint256,uint40)"
                              }
                            },
                            "id": 18573,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10716:64:81",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint40_$",
                              "typeString": "tuple(uint256,uint256,uint256,uint40)"
                            }
                          },
                          "src": "10578:202:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18575,
                        "nodeType": "ExpressionStatement",
                        "src": "10578:202:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18583,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18576,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18540,
                              "src": "10836:4:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MintToTreasuryLocalVars_$18523_memory_ptr",
                                "typeString": "struct ReserveLogic.MintToTreasuryLocalVars memory"
                              }
                            },
                            "id": 18578,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "previousVariableDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18510,
                            "src": "10836:25:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 18581,
                                "name": "previousVariableBorrowIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18530,
                                "src": "10890:27:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 18579,
                                "name": "scaledVariableDebt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18528,
                                "src": "10864:18:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18580,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "rayMul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20381,
                              "src": "10864:25:81",
                              "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": 18582,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10864:54:81",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10836:82:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18584,
                        "nodeType": "ExpressionStatement",
                        "src": "10836:82:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18592,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18585,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18540,
                              "src": "10994:4:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MintToTreasuryLocalVars_$18523_memory_ptr",
                                "typeString": "struct ReserveLogic.MintToTreasuryLocalVars memory"
                              }
                            },
                            "id": 18587,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "currentVariableDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18508,
                            "src": "10994:24:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 18590,
                                "name": "newVariableBorrowIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18534,
                                "src": "11047:22:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 18588,
                                "name": "scaledVariableDebt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18528,
                                "src": "11021:18:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18589,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "rayMul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20381,
                              "src": "11021:25:81",
                              "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": 18591,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11021:49:81",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10994:76:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18593,
                        "nodeType": "ExpressionStatement",
                        "src": "10994:76:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18605,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18594,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18540,
                              "src": "11141:4:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MintToTreasuryLocalVars_$18523_memory_ptr",
                                "typeString": "struct ReserveLogic.MintToTreasuryLocalVars memory"
                              }
                            },
                            "id": 18596,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "cumulatedStableInterest",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18514,
                            "src": "11141:28:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18599,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18540,
                                  "src": "11217:4:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MintToTreasuryLocalVars_$18523_memory_ptr",
                                    "typeString": "struct ReserveLogic.MintToTreasuryLocalVars memory"
                                  }
                                },
                                "id": 18600,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "avgStableRate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18512,
                                "src": "11217:18:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18601,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18540,
                                  "src": "11243:4:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MintToTreasuryLocalVars_$18523_memory_ptr",
                                    "typeString": "struct ReserveLogic.MintToTreasuryLocalVars memory"
                                  }
                                },
                                "id": 18602,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "stableSupplyUpdatedTimestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18522,
                                "src": "11243:33:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint40",
                                  "typeString": "uint40"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 18603,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18536,
                                "src": "11284:9:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint40",
                                  "typeString": "uint40"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint40",
                                  "typeString": "uint40"
                                },
                                {
                                  "typeIdentifier": "t_uint40",
                                  "typeString": "uint40"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 18597,
                                "name": "MathUtils",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19955,
                                "src": "11172:9:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MathUtils_$19955_$",
                                  "typeString": "type(library MathUtils)"
                                }
                              },
                              "id": 18598,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "calculateCompoundedInterest",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 19936,
                              "src": "11172:37:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint40_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint40,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 18604,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11172:127:81",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11141:158:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18606,
                        "nodeType": "ExpressionStatement",
                        "src": "11141:158:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18616,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18607,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18540,
                              "src": "11306:4:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MintToTreasuryLocalVars_$18523_memory_ptr",
                                "typeString": "struct ReserveLogic.MintToTreasuryLocalVars memory"
                              }
                            },
                            "id": 18609,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "previousStableDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18506,
                            "src": "11306:23:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18613,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18540,
                                  "src": "11364:4:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MintToTreasuryLocalVars_$18523_memory_ptr",
                                    "typeString": "struct ReserveLogic.MintToTreasuryLocalVars memory"
                                  }
                                },
                                "id": 18614,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "cumulatedStableInterest",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18514,
                                "src": "11364:28:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18610,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18540,
                                  "src": "11332:4:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MintToTreasuryLocalVars_$18523_memory_ptr",
                                    "typeString": "struct ReserveLogic.MintToTreasuryLocalVars memory"
                                  }
                                },
                                "id": 18611,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "principalStableDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18504,
                                "src": "11332:24:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18612,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "rayMul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20381,
                              "src": "11332:31:81",
                              "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": 18615,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11332:61:81",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11306:87:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18617,
                        "nodeType": "ExpressionStatement",
                        "src": "11306:87:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18635,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18618,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18540,
                              "src": "11495:4:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MintToTreasuryLocalVars_$18523_memory_ptr",
                                "typeString": "struct ReserveLogic.MintToTreasuryLocalVars memory"
                              }
                            },
                            "id": 18620,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "totalDebtAccrued",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18516,
                            "src": "11495:21:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18632,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18540,
                                  "src": "11635:4:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MintToTreasuryLocalVars_$18523_memory_ptr",
                                    "typeString": "struct ReserveLogic.MintToTreasuryLocalVars memory"
                                  }
                                },
                                "id": 18633,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "previousStableDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18506,
                                "src": "11635:23:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18628,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18540,
                                      "src": "11597:4:81",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_MintToTreasuryLocalVars_$18523_memory_ptr",
                                        "typeString": "struct ReserveLogic.MintToTreasuryLocalVars memory"
                                      }
                                    },
                                    "id": 18629,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "previousVariableDebt",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18510,
                                    "src": "11597:25:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 18624,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18540,
                                          "src": "11562:4:81",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_MintToTreasuryLocalVars_$18523_memory_ptr",
                                            "typeString": "struct ReserveLogic.MintToTreasuryLocalVars memory"
                                          }
                                        },
                                        "id": 18625,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "currentStableDebt",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 18502,
                                        "src": "11562:22:81",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 18621,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18540,
                                          "src": "11519:4:81",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_MintToTreasuryLocalVars_$18523_memory_ptr",
                                            "typeString": "struct ReserveLogic.MintToTreasuryLocalVars memory"
                                          }
                                        },
                                        "id": 18622,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "currentVariableDebt",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 18508,
                                        "src": "11519:31:81",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 18623,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "add",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4329,
                                      "src": "11519:42:81",
                                      "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": 18626,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11519:66:81",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 18627,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4346,
                                  "src": "11519:77:81",
                                  "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": 18630,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11519:104:81",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18631,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4346,
                              "src": "11519:115:81",
                              "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": 18634,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11519:140:81",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11495:164:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18636,
                        "nodeType": "ExpressionStatement",
                        "src": "11495:164:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18646,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18637,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18540,
                              "src": "11666:4:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MintToTreasuryLocalVars_$18523_memory_ptr",
                                "typeString": "struct ReserveLogic.MintToTreasuryLocalVars memory"
                              }
                            },
                            "id": 18639,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amountToMint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18518,
                            "src": "11666:17:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18643,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18540,
                                  "src": "11719:4:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MintToTreasuryLocalVars_$18523_memory_ptr",
                                    "typeString": "struct ReserveLogic.MintToTreasuryLocalVars memory"
                                  }
                                },
                                "id": 18644,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "reserveFactor",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18520,
                                "src": "11719:18:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18640,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18540,
                                  "src": "11686:4:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MintToTreasuryLocalVars_$18523_memory_ptr",
                                    "typeString": "struct ReserveLogic.MintToTreasuryLocalVars memory"
                                  }
                                },
                                "id": 18641,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalDebtAccrued",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18516,
                                "src": "11686:21:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18642,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "percentMul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20016,
                              "src": "11686:32:81",
                              "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": 18645,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11686:52:81",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11666:72:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18647,
                        "nodeType": "ExpressionStatement",
                        "src": "11666:72:81"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18651,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18648,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18540,
                              "src": "11749:4:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MintToTreasuryLocalVars_$18523_memory_ptr",
                                "typeString": "struct ReserveLogic.MintToTreasuryLocalVars memory"
                              }
                            },
                            "id": 18649,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "amountToMint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18518,
                            "src": "11749:17:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 18650,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11770:1:81",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "11749:22:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 18663,
                        "nodeType": "IfStatement",
                        "src": "11745:126:81",
                        "trueBody": {
                          "id": 18662,
                          "nodeType": "Block",
                          "src": "11773:98:81",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18657,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18540,
                                      "src": "11827:4:81",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_MintToTreasuryLocalVars_$18523_memory_ptr",
                                        "typeString": "struct ReserveLogic.MintToTreasuryLocalVars memory"
                                      }
                                    },
                                    "id": 18658,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amountToMint",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18518,
                                    "src": "11827:17:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 18659,
                                    "name": "newLiquidityIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18532,
                                    "src": "11846:17:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 18653,
                                          "name": "reserve",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18526,
                                          "src": "11789:7:81",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                            "typeString": "struct DataTypes.ReserveData storage pointer"
                                          }
                                        },
                                        "id": 18654,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "aTokenAddress",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 20511,
                                        "src": "11789:21:81",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 18652,
                                      "name": "IAToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5667,
                                      "src": "11781:7:81",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IAToken_$5667_$",
                                        "typeString": "type(contract IAToken)"
                                      }
                                    },
                                    "id": 18655,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11781:30:81",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IAToken_$5667",
                                      "typeString": "contract IAToken"
                                    }
                                  },
                                  "id": 18656,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mintToTreasury",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5626,
                                  "src": "11781:45:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,uint256) external"
                                  }
                                },
                                "id": 18660,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11781:83:81",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 18661,
                              "nodeType": "ExpressionStatement",
                              "src": "11781:83:81"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18524,
                    "nodeType": "StructuredDocumentation",
                    "src": "9552:536:81",
                    "text": " @dev Mints part of the repaid interest to the reserve treasury as a function of the reserveFactor for the\n specific asset.\n @param reserve The reserve reserve to be updated\n @param scaledVariableDebt The current scaled total variable debt\n @param previousVariableBorrowIndex The variable borrow index before the last accumulation of the interest\n @param newLiquidityIndex The new liquidity index\n @param newVariableBorrowIndex The variable borrow index after the last accumulation of the interest*"
                  },
                  "id": 18665,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mintToTreasury",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 18537,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18526,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18665,
                        "src": "10121:37:81",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                          "typeString": "struct DataTypes.ReserveData"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 18525,
                          "name": "DataTypes.ReserveData",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20520,
                          "src": "10121:21:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                            "typeString": "struct DataTypes.ReserveData"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18528,
                        "mutability": "mutable",
                        "name": "scaledVariableDebt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18665,
                        "src": "10164:26:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18527,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10164:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18530,
                        "mutability": "mutable",
                        "name": "previousVariableBorrowIndex",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18665,
                        "src": "10196:35:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18529,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10196:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18532,
                        "mutability": "mutable",
                        "name": "newLiquidityIndex",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18665,
                        "src": "10237:25:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18531,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10237:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18534,
                        "mutability": "mutable",
                        "name": "newVariableBorrowIndex",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18665,
                        "src": "10268:30:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18533,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10268:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18536,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18665,
                        "src": "10304:16:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        },
                        "typeName": {
                          "id": 18535,
                          "name": "uint40",
                          "nodeType": "ElementaryTypeName",
                          "src": "10304:6:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10115:209:81"
                  },
                  "returnParameters": {
                    "id": 18538,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10334:0:81"
                  },
                  "scope": 18795,
                  "src": "10091:1784:81",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 18793,
                    "nodeType": "Block",
                    "src": "12423:1415:81",
                    "statements": [
                      {
                        "assignments": [
                          18684
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18684,
                            "mutability": "mutable",
                            "name": "currentLiquidityRate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 18793,
                            "src": "12429:28:81",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18683,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12429:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18687,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 18685,
                            "name": "reserve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18668,
                            "src": "12460:7:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                              "typeString": "struct DataTypes.ReserveData storage pointer"
                            }
                          },
                          "id": 18686,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "currentLiquidityRate",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 20503,
                          "src": "12460:28:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12429:59:81"
                      },
                      {
                        "assignments": [
                          18689
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18689,
                            "mutability": "mutable",
                            "name": "newLiquidityIndex",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 18793,
                            "src": "12495:25:81",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18688,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12495:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18691,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 18690,
                          "name": "liquidityIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18672,
                          "src": "12523:14:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12495:42:81"
                      },
                      {
                        "assignments": [
                          18693
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18693,
                            "mutability": "mutable",
                            "name": "newVariableBorrowIndex",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 18793,
                            "src": "12543:30:81",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18692,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12543:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 18695,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 18694,
                          "name": "variableBorrowIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18674,
                          "src": "12576:19:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12543:52:81"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18698,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 18696,
                            "name": "currentLiquidityRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18684,
                            "src": "12666:20:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 18697,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12689:1:81",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "12666:24:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 18778,
                        "nodeType": "IfStatement",
                        "src": "12662:1025:81",
                        "trueBody": {
                          "id": 18777,
                          "nodeType": "Block",
                          "src": "12692:995:81",
                          "statements": [
                            {
                              "assignments": [
                                18700
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 18700,
                                  "mutability": "mutable",
                                  "name": "cumulatedLiquidityInterest",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 18777,
                                  "src": "12700:34:81",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 18699,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12700:7:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 18706,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 18703,
                                    "name": "currentLiquidityRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18684,
                                    "src": "12779:20:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 18704,
                                    "name": "timestamp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18676,
                                    "src": "12801:9:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint40",
                                      "typeString": "uint40"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint40",
                                      "typeString": "uint40"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 18701,
                                    "name": "MathUtils",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19955,
                                    "src": "12745:9:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_MathUtils_$19955_$",
                                      "typeString": "type(library MathUtils)"
                                    }
                                  },
                                  "id": 18702,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calculateLinearInterest",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 19824,
                                  "src": "12745:33:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint40_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint40) view returns (uint256)"
                                  }
                                },
                                "id": 18705,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12745:66:81",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12700:111:81"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 18712,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 18707,
                                  "name": "newLiquidityIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18689,
                                  "src": "12819:17:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 18710,
                                      "name": "liquidityIndex",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18672,
                                      "src": "12873:14:81",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18708,
                                      "name": "cumulatedLiquidityInterest",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18700,
                                      "src": "12839:26:81",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 18709,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "rayMul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20381,
                                    "src": "12839:33:81",
                                    "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": 18711,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12839:49:81",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12819:69:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18713,
                              "nodeType": "ExpressionStatement",
                              "src": "12819:69:81"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 18721,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 18715,
                                      "name": "newLiquidityIndex",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18689,
                                      "src": "12904:17:81",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 18718,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "12930:7:81",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint128_$",
                                              "typeString": "type(uint128)"
                                            },
                                            "typeName": {
                                              "id": 18717,
                                              "name": "uint128",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "12930:7:81",
                                              "typeDescriptions": {
                                                "typeIdentifier": null,
                                                "typeString": null
                                              }
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_type$_t_uint128_$",
                                              "typeString": "type(uint128)"
                                            }
                                          ],
                                          "id": 18716,
                                          "name": "type",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -27,
                                          "src": "12925:4:81",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                            "typeString": "function () pure"
                                          }
                                        },
                                        "id": 18719,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12925:13:81",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_meta_type_t_uint128",
                                          "typeString": "type(uint128)"
                                        }
                                      },
                                      "id": 18720,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "max",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "12925:17:81",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "src": "12904:38:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18722,
                                      "name": "Errors",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17239,
                                      "src": "12944:6:81",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                        "typeString": "type(library Errors)"
                                      }
                                    },
                                    "id": 18723,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "RL_LIQUIDITY_INDEX_OVERFLOW",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17149,
                                    "src": "12944:34:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 18714,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "12896:7:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 18724,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12896:83:81",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 18725,
                              "nodeType": "ExpressionStatement",
                              "src": "12896:83:81"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 18733,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 18726,
                                    "name": "reserve",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18668,
                                    "src": "12988:7:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                      "typeString": "struct DataTypes.ReserveData storage pointer"
                                    }
                                  },
                                  "id": 18728,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "liquidityIndex",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20499,
                                  "src": "12988:22:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 18731,
                                      "name": "newLiquidityIndex",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18689,
                                      "src": "13021:17:81",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 18730,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13013:7:81",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint128_$",
                                      "typeString": "type(uint128)"
                                    },
                                    "typeName": {
                                      "id": 18729,
                                      "name": "uint128",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13013:7:81",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 18732,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13013:26:81",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "12988:51:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 18734,
                              "nodeType": "ExpressionStatement",
                              "src": "12988:51:81"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 18737,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 18735,
                                  "name": "scaledVariableDebt",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18670,
                                  "src": "13203:18:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 18736,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13225:1:81",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "13203:23:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 18776,
                              "nodeType": "IfStatement",
                              "src": "13199:482:81",
                              "trueBody": {
                                "id": 18775,
                                "nodeType": "Block",
                                "src": "13228:453:81",
                                "statements": [
                                  {
                                    "assignments": [
                                      18739
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 18739,
                                        "mutability": "mutable",
                                        "name": "cumulatedVariableBorrowInterest",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 18775,
                                        "src": "13238:39:81",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 18738,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "13238:7:81",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 18746,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 18742,
                                            "name": "reserve",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18668,
                                            "src": "13328:7:81",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                              "typeString": "struct DataTypes.ReserveData storage pointer"
                                            }
                                          },
                                          "id": 18743,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "currentVariableBorrowRate",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 20505,
                                          "src": "13328:33:81",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 18744,
                                          "name": "timestamp",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18676,
                                          "src": "13363:9:81",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint40",
                                            "typeString": "uint40"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          },
                                          {
                                            "typeIdentifier": "t_uint40",
                                            "typeString": "uint40"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 18740,
                                          "name": "MathUtils",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19955,
                                          "src": "13290:9:81",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_MathUtils_$19955_$",
                                            "typeString": "type(library MathUtils)"
                                          }
                                        },
                                        "id": 18741,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "calculateCompoundedInterest",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 19954,
                                        "src": "13290:37:81",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint40_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint40) view returns (uint256)"
                                        }
                                      },
                                      "id": 18745,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13290:83:81",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "13238:135:81"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18752,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 18747,
                                        "name": "newVariableBorrowIndex",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18693,
                                        "src": "13383:22:81",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 18750,
                                            "name": "variableBorrowIndex",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18674,
                                            "src": "13447:19:81",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 18748,
                                            "name": "cumulatedVariableBorrowInterest",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18739,
                                            "src": "13408:31:81",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 18749,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "rayMul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 20381,
                                          "src": "13408:38:81",
                                          "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": 18751,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13408:59:81",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "13383:84:81",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 18753,
                                    "nodeType": "ExpressionStatement",
                                    "src": "13383:84:81"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 18761,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 18755,
                                            "name": "newVariableBorrowIndex",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18693,
                                            "src": "13496:22:81",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<=",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 18758,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "13527:7:81",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_uint128_$",
                                                    "typeString": "type(uint128)"
                                                  },
                                                  "typeName": {
                                                    "id": 18757,
                                                    "name": "uint128",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "13527:7:81",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": null,
                                                      "typeString": null
                                                    }
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_type$_t_uint128_$",
                                                    "typeString": "type(uint128)"
                                                  }
                                                ],
                                                "id": 18756,
                                                "name": "type",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -27,
                                                "src": "13522:4:81",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                                  "typeString": "function () pure"
                                                }
                                              },
                                              "id": 18759,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "13522:13:81",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_meta_type_t_uint128",
                                                "typeString": "type(uint128)"
                                              }
                                            },
                                            "id": 18760,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "max",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "13522:17:81",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          },
                                          "src": "13496:43:81",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 18762,
                                            "name": "Errors",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17239,
                                            "src": "13551:6:81",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                              "typeString": "type(library Errors)"
                                            }
                                          },
                                          "id": 18763,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "RL_VARIABLE_BORROW_INDEX_OVERFLOW",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17152,
                                          "src": "13551:40:81",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        ],
                                        "id": 18754,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -18,
                                          -18
                                        ],
                                        "referencedDeclaration": -18,
                                        "src": "13477:7:81",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 18764,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13477:124:81",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 18765,
                                    "nodeType": "ExpressionStatement",
                                    "src": "13477:124:81"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 18773,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 18766,
                                          "name": "reserve",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18668,
                                          "src": "13611:7:81",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                            "typeString": "struct DataTypes.ReserveData storage pointer"
                                          }
                                        },
                                        "id": 18768,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "variableBorrowIndex",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 20501,
                                        "src": "13611:27:81",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 18771,
                                            "name": "newVariableBorrowIndex",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18693,
                                            "src": "13649:22:81",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 18770,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "13641:7:81",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint128_$",
                                            "typeString": "type(uint128)"
                                          },
                                          "typeName": {
                                            "id": 18769,
                                            "name": "uint128",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "13641:7:81",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 18772,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13641:31:81",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "src": "13611:61:81",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "id": 18774,
                                    "nodeType": "ExpressionStatement",
                                    "src": "13611:61:81"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 18787,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 18779,
                              "name": "reserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18668,
                              "src": "13724:7:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                "typeString": "struct DataTypes.ReserveData storage pointer"
                              }
                            },
                            "id": 18781,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "lastUpdateTimestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20509,
                            "src": "13724:27:81",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18784,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "13761:5:81",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 18785,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "13761:15:81",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 18783,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13754:6:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint40_$",
                                "typeString": "type(uint40)"
                              },
                              "typeName": {
                                "id": 18782,
                                "name": "uint40",
                                "nodeType": "ElementaryTypeName",
                                "src": "13754:6:81",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 18786,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13754:23:81",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            }
                          },
                          "src": "13724:53:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "id": 18788,
                        "nodeType": "ExpressionStatement",
                        "src": "13724:53:81"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 18789,
                              "name": "newLiquidityIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18689,
                              "src": "13791:17:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 18790,
                              "name": "newVariableBorrowIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18693,
                              "src": "13810:22:81",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 18791,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "13790:43:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 18682,
                        "id": 18792,
                        "nodeType": "Return",
                        "src": "13783:50:81"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18666,
                    "nodeType": "StructuredDocumentation",
                    "src": "11879:319:81",
                    "text": " @dev Updates the reserve indexes and the timestamp of the update\n @param reserve The reserve reserve to be updated\n @param scaledVariableDebt The scaled variable debt\n @param liquidityIndex The last stored liquidity index\n @param variableBorrowIndex The last stored variable borrow index*"
                  },
                  "id": 18794,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_updateIndexes",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 18677,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18668,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18794,
                        "src": "12230:37:81",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                          "typeString": "struct DataTypes.ReserveData"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 18667,
                          "name": "DataTypes.ReserveData",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20520,
                          "src": "12230:21:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                            "typeString": "struct DataTypes.ReserveData"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18670,
                        "mutability": "mutable",
                        "name": "scaledVariableDebt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18794,
                        "src": "12273:26:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18669,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12273:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18672,
                        "mutability": "mutable",
                        "name": "liquidityIndex",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18794,
                        "src": "12305:22:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18671,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12305:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18674,
                        "mutability": "mutable",
                        "name": "variableBorrowIndex",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18794,
                        "src": "12333:27:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18673,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12333:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18676,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18794,
                        "src": "12366:16:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        },
                        "typeName": {
                          "id": 18675,
                          "name": "uint40",
                          "nodeType": "ElementaryTypeName",
                          "src": "12366:6:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12224:162:81"
                  },
                  "returnParameters": {
                    "id": 18682,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18679,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18794,
                        "src": "12405:7:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18678,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12405:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18681,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18794,
                        "src": "12414:7:81",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18680,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12414:7:81",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12404:18:81"
                  },
                  "scope": 18795,
                  "src": "12201:1637:81",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 18796,
              "src": "1074:12766:81"
            }
          ],
          "src": "37:13804:81"
        },
        "id": 81
      },
      "contracts/protocol/libraries/logic/ValidationLogic.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/libraries/logic/ValidationLogic.sol",
          "exportedSymbols": {
            "ValidationLogic": [
              19773
            ]
          },
          "id": 19774,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 18797,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:82"
            },
            {
              "id": 18798,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "61:33:82"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeMath.sol",
              "file": "../../../dependencies/openzeppelin/contracts/SafeMath.sol",
              "id": 18800,
              "nodeType": "ImportDirective",
              "scope": 19774,
              "sourceUnit": 4497,
              "src": "96:83:82",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 18799,
                    "name": "SafeMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "104:8:82",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
              "file": "../../../dependencies/openzeppelin/contracts/IERC20.sol",
              "id": 18802,
              "nodeType": "ImportDirective",
              "scope": 19774,
              "sourceUnit": 4013,
              "src": "180:79:82",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 18801,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "188:6:82",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/logic/ReserveLogic.sol",
              "file": "./ReserveLogic.sol",
              "id": 18804,
              "nodeType": "ImportDirective",
              "scope": 19774,
              "sourceUnit": 18796,
              "src": "260:48:82",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 18803,
                    "name": "ReserveLogic",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "268:12:82",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/logic/GenericLogic.sol",
              "file": "./GenericLogic.sol",
              "id": 18806,
              "nodeType": "ImportDirective",
              "scope": 19774,
              "sourceUnit": 17988,
              "src": "309:48:82",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 18805,
                    "name": "GenericLogic",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "317:12:82",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/math/WadRayMath.sol",
              "file": "../math/WadRayMath.sol",
              "id": 18808,
              "nodeType": "ImportDirective",
              "scope": 19774,
              "sourceUnit": 20494,
              "src": "358:50:82",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 18807,
                    "name": "WadRayMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "366:10:82",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/math/PercentageMath.sol",
              "file": "../math/PercentageMath.sol",
              "id": 18810,
              "nodeType": "ImportDirective",
              "scope": 19774,
              "sourceUnit": 20069,
              "src": "409:58:82",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 18809,
                    "name": "PercentageMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "417:14:82",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeERC20.sol",
              "file": "../../../dependencies/openzeppelin/contracts/SafeERC20.sol",
              "id": 18812,
              "nodeType": "ImportDirective",
              "scope": 19774,
              "sourceUnit": 4301,
              "src": "468:85:82",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 18811,
                    "name": "SafeERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "476:9:82",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/configuration/ReserveConfiguration.sol",
              "file": "../configuration/ReserveConfiguration.sol",
              "id": 18814,
              "nodeType": "ImportDirective",
              "scope": 19774,
              "sourceUnit": 16742,
              "src": "554:79:82",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 18813,
                    "name": "ReserveConfiguration",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "562:20:82",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/configuration/UserConfiguration.sol",
              "file": "../configuration/UserConfiguration.sol",
              "id": 18816,
              "nodeType": "ImportDirective",
              "scope": 19774,
              "sourceUnit": 16985,
              "src": "634:73:82",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 18815,
                    "name": "UserConfiguration",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "642:17:82",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/helpers/Errors.sol",
              "file": "../helpers/Errors.sol",
              "id": 18818,
              "nodeType": "ImportDirective",
              "scope": 19774,
              "sourceUnit": 17240,
              "src": "708:45:82",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 18817,
                    "name": "Errors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "716:6:82",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/helpers/Helpers.sol",
              "file": "../helpers/Helpers.sol",
              "id": 18820,
              "nodeType": "ImportDirective",
              "scope": 19774,
              "sourceUnit": 17305,
              "src": "754:47:82",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 18819,
                    "name": "Helpers",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "762:7:82",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IReserveInterestRateStrategy.sol",
              "file": "../../../interfaces/IReserveInterestRateStrategy.sol",
              "id": 18822,
              "nodeType": "ImportDirective",
              "scope": 19774,
              "sourceUnit": 6979,
              "src": "802:98:82",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 18821,
                    "name": "IReserveInterestRateStrategy",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "810:28:82",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/types/DataTypes.sol",
              "file": "../types/DataTypes.sol",
              "id": 18824,
              "nodeType": "ImportDirective",
              "scope": 19774,
              "sourceUnit": 20532,
              "src": "901:49:82",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 18823,
                    "name": "DataTypes",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "909:9:82",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 18825,
                "nodeType": "StructuredDocumentation",
                "src": "952:136:82",
                "text": " @title ReserveLogic library\n @author Aave\n @notice Implements functions to validate the different actions of the protocol"
              },
              "fullyImplemented": true,
              "id": 19773,
              "linearizedBaseContracts": [
                19773
              ],
              "name": "ValidationLogic",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 18828,
                  "libraryName": {
                    "contractScope": null,
                    "id": 18826,
                    "name": "ReserveLogic",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 18795,
                    "src": "1123:12:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ReserveLogic_$18795",
                      "typeString": "library ReserveLogic"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1117:45:82",
                  "typeName": {
                    "contractScope": null,
                    "id": 18827,
                    "name": "DataTypes.ReserveData",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20520,
                    "src": "1140:21:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                      "typeString": "struct DataTypes.ReserveData"
                    }
                  }
                },
                {
                  "id": 18831,
                  "libraryName": {
                    "contractScope": null,
                    "id": 18829,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4496,
                    "src": "1171:8:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$4496",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1165:27:82",
                  "typeName": {
                    "id": 18830,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1184:7:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 18834,
                  "libraryName": {
                    "contractScope": null,
                    "id": 18832,
                    "name": "WadRayMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20493,
                    "src": "1201:10:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_WadRayMath_$20493",
                      "typeString": "library WadRayMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1195:29:82",
                  "typeName": {
                    "id": 18833,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1216:7:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 18837,
                  "libraryName": {
                    "contractScope": null,
                    "id": 18835,
                    "name": "PercentageMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20068,
                    "src": "1233:14:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_PercentageMath_$20068",
                      "typeString": "library PercentageMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1227:33:82",
                  "typeName": {
                    "id": 18836,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1252:7:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 18840,
                  "libraryName": {
                    "contractScope": null,
                    "id": 18838,
                    "name": "SafeERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4300,
                    "src": "1269:9:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeERC20_$4300",
                      "typeString": "library SafeERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1263:27:82",
                  "typeName": {
                    "contractScope": null,
                    "id": 18839,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4012,
                    "src": "1283:6:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$4012",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "id": 18843,
                  "libraryName": {
                    "contractScope": null,
                    "id": 18841,
                    "name": "ReserveConfiguration",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16741,
                    "src": "1299:20:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ReserveConfiguration_$16741",
                      "typeString": "library ReserveConfiguration"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1293:65:82",
                  "typeName": {
                    "contractScope": null,
                    "id": 18842,
                    "name": "DataTypes.ReserveConfigurationMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20523,
                    "src": "1324:33:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                      "typeString": "struct DataTypes.ReserveConfigurationMap"
                    }
                  }
                },
                {
                  "id": 18846,
                  "libraryName": {
                    "contractScope": null,
                    "id": 18844,
                    "name": "UserConfiguration",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16984,
                    "src": "1367:17:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UserConfiguration_$16984",
                      "typeString": "library UserConfiguration"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1361:59:82",
                  "typeName": {
                    "contractScope": null,
                    "id": 18845,
                    "name": "DataTypes.UserConfigurationMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20526,
                    "src": "1389:30:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                      "typeString": "struct DataTypes.UserConfigurationMap"
                    }
                  }
                },
                {
                  "constant": true,
                  "functionSelector": "abfcc86a",
                  "id": 18849,
                  "mutability": "constant",
                  "name": "REBALANCE_UP_LIQUIDITY_RATE_THRESHOLD",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19773,
                  "src": "1424:68:82",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18847,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1424:7:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "34303030",
                    "id": 18848,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1488:4:82",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_4000_by_1",
                      "typeString": "int_const 4000"
                    },
                    "value": "4000"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "5494eb8a",
                  "id": 18854,
                  "mutability": "constant",
                  "name": "REBALANCE_UP_USAGE_RATIO_THRESHOLD",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19773,
                  "src": "1496:72:82",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18850,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1496:7:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_rational_950000000000000000000000000_by_1",
                      "typeString": "int_const 950000000000000000000000000"
                    },
                    "id": 18853,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "hexValue": "302e3935",
                      "id": 18851,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1557:4:82",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_19_by_20",
                        "typeString": "rational_const 19 / 20"
                      },
                      "value": "0.95"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31653237",
                      "id": 18852,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1564:4:82",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1000000000000000000000000000_by_1",
                        "typeString": "int_const 1000000000000000000000000000"
                      },
                      "value": "1e27"
                    },
                    "src": "1557:11:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_950000000000000000000000000_by_1",
                      "typeString": "int_const 950000000000000000000000000"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 18892,
                    "nodeType": "Block",
                    "src": "1854:235:82",
                    "statements": [
                      {
                        "assignments": [
                          18863,
                          18865,
                          null,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18863,
                            "mutability": "mutable",
                            "name": "isActive",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 18892,
                            "src": "1861:13:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 18862,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1861:4:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 18865,
                            "mutability": "mutable",
                            "name": "isFrozen",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 18892,
                            "src": "1876:13:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 18864,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1876:4:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null,
                          null
                        ],
                        "id": 18870,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18866,
                                "name": "reserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18857,
                                "src": "1897:7:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                }
                              },
                              "id": 18867,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "configuration",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20497,
                              "src": "1897:21:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage",
                                "typeString": "struct DataTypes.ReserveConfigurationMap storage ref"
                              }
                            },
                            "id": 18868,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getFlags",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16579,
                            "src": "1897:30:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$returns$_t_bool_$_t_bool_$_t_bool_$_t_bool_$bound_to$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveConfigurationMap storage pointer) view returns (bool,bool,bool,bool)"
                            }
                          },
                          "id": 18869,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1897:32:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bool_$_t_bool_$_t_bool_$",
                            "typeString": "tuple(bool,bool,bool,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1860:69:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 18874,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 18872,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18859,
                                "src": "1944:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 18873,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1954:1:82",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1944:11:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18875,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "1957:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 18876,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "VL_INVALID_AMOUNT",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16996,
                              "src": "1957:24:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 18871,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1936:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18877,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1936:46:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18878,
                        "nodeType": "ExpressionStatement",
                        "src": "1936:46:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 18880,
                              "name": "isActive",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18863,
                              "src": "1996:8:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18881,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "2006:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 18882,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "VL_NO_ACTIVE_RESERVE",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16999,
                              "src": "2006:27:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 18879,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1988:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18883,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1988:46:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18884,
                        "nodeType": "ExpressionStatement",
                        "src": "1988:46:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 18887,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "2048:9:82",
                              "subExpression": {
                                "argumentTypes": null,
                                "id": 18886,
                                "name": "isFrozen",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18865,
                                "src": "2049:8:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18888,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "2059:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 18889,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "VL_RESERVE_FROZEN",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17002,
                              "src": "2059:24:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 18885,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2040:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18890,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2040:44:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18891,
                        "nodeType": "ExpressionStatement",
                        "src": "2040:44:82"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18855,
                    "nodeType": "StructuredDocumentation",
                    "src": "1594:163:82",
                    "text": " @dev Validates a deposit action\n @param reserve The reserve object on which the user is depositing\n @param amount The amount to be deposited"
                  },
                  "functionSelector": "0eca322b",
                  "id": 18893,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "validateDeposit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 18860,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18857,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18893,
                        "src": "1785:37:82",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                          "typeString": "struct DataTypes.ReserveData"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 18856,
                          "name": "DataTypes.ReserveData",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20520,
                          "src": "1785:21:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                            "typeString": "struct DataTypes.ReserveData"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18859,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18893,
                        "src": "1824:14:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18858,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1824:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1784:55:82"
                  },
                  "returnParameters": {
                    "id": 18861,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1854:0:82"
                  },
                  "scope": 19773,
                  "src": "1760:329:82",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 18965,
                    "nodeType": "Block",
                    "src": "2854:542:82",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 18920,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 18918,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18898,
                                "src": "2868:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 18919,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2878:1:82",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2868:11:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18921,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "2881:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 18922,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "VL_INVALID_AMOUNT",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16996,
                              "src": "2881:24:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 18917,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2860:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2860:46:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18924,
                        "nodeType": "ExpressionStatement",
                        "src": "2860:46:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 18928,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 18926,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18898,
                                "src": "2920:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 18927,
                                "name": "userBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18900,
                                "src": "2930:11:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2920:21:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18929,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "2943:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 18930,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "VL_NOT_ENOUGH_AVAILABLE_USER_BALANCE",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17008,
                              "src": "2943:43:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 18925,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2912:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18931,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2912:75:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18932,
                        "nodeType": "ExpressionStatement",
                        "src": "2912:75:82"
                      },
                      {
                        "assignments": [
                          18934,
                          null,
                          null,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18934,
                            "mutability": "mutable",
                            "name": "isActive",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 18965,
                            "src": "2995:13:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 18933,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2995:4:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null,
                          null,
                          null
                        ],
                        "id": 18941,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 18935,
                                  "name": "reservesData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18904,
                                  "src": "3018:12:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                    "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                  }
                                },
                                "id": 18937,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 18936,
                                  "name": "reserveAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18896,
                                  "src": "3031:14:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3018:28:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage",
                                  "typeString": "struct DataTypes.ReserveData storage ref"
                                }
                              },
                              "id": 18938,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "configuration",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20497,
                              "src": "3018:42:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage",
                                "typeString": "struct DataTypes.ReserveConfigurationMap storage ref"
                              }
                            },
                            "id": 18939,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getFlags",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16579,
                            "src": "3018:51:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$returns$_t_bool_$_t_bool_$_t_bool_$_t_bool_$bound_to$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveConfigurationMap storage pointer) view returns (bool,bool,bool,bool)"
                            }
                          },
                          "id": 18940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3018:53:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bool_$_t_bool_$_t_bool_$",
                            "typeString": "tuple(bool,bool,bool,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2994:77:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 18943,
                              "name": "isActive",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18934,
                              "src": "3085:8:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18944,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "3095:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 18945,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "VL_NO_ACTIVE_RESERVE",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16999,
                              "src": "3095:27:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 18942,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3077:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18946,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3077:46:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18947,
                        "nodeType": "ExpressionStatement",
                        "src": "3077:46:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 18951,
                                  "name": "reserveAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18896,
                                  "src": "3190:14:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 18952,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "3214:3:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 18953,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "3214:10:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 18954,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18898,
                                  "src": "3234:6:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 18955,
                                  "name": "reservesData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18904,
                                  "src": "3250:12:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                    "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 18956,
                                  "name": "userConfig",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18906,
                                  "src": "3272:10:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                    "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 18957,
                                  "name": "reserves",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18910,
                                  "src": "3292:8:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                    "typeString": "mapping(uint256 => address)"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 18958,
                                  "name": "reservesCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18912,
                                  "src": "3310:13:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 18959,
                                  "name": "oracle",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18914,
                                  "src": "3333:6:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                    "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                  },
                                  {
                                    "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                    "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                                  },
                                  {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                    "typeString": "mapping(uint256 => address)"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 18949,
                                  "name": "GenericLogic",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17987,
                                  "src": "3145:12:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_GenericLogic_$17987_$",
                                    "typeString": "type(library GenericLogic)"
                                  }
                                },
                                "id": 18950,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceDecreaseAllowed",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17565,
                                "src": "3145:35:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_delegatecall_view$_t_address_$_t_address_$_t_uint256_$_t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$_$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$_t_mapping$_t_uint256_$_t_address_$_$_t_uint256_$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address,address,uint256,mapping(address => struct DataTypes.ReserveData storage ref),struct DataTypes.UserConfigurationMap memory,mapping(uint256 => address),uint256,address) view returns (bool)"
                                }
                              },
                              "id": 18960,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3145:202:82",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 18961,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "3355:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 18962,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "VL_TRANSFER_NOT_ALLOWED",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17011,
                              "src": "3355:30:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 18948,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3130:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18963,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3130:261:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18964,
                        "nodeType": "ExpressionStatement",
                        "src": "3130:261:82"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18894,
                    "nodeType": "StructuredDocumentation",
                    "src": "2093:421:82",
                    "text": " @dev Validates a withdraw action\n @param reserveAddress The address of the reserve\n @param amount The amount to be withdrawn\n @param userBalance The balance of the user\n @param reservesData The reserves state\n @param userConfig The user configuration\n @param reserves The addresses of the reserves\n @param reservesCount The number of reserves\n @param oracle The price oracle"
                  },
                  "functionSelector": "d09db04a",
                  "id": 18966,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "validateWithdraw",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 18915,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18896,
                        "mutability": "mutable",
                        "name": "reserveAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18966,
                        "src": "2548:22:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18895,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2548:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18898,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18966,
                        "src": "2576:14:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18897,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2576:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18900,
                        "mutability": "mutable",
                        "name": "userBalance",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18966,
                        "src": "2596:19:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18899,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2596:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18904,
                        "mutability": "mutable",
                        "name": "reservesData",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18966,
                        "src": "2621:62:82",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                          "typeString": "mapping(address => struct DataTypes.ReserveData)"
                        },
                        "typeName": {
                          "id": 18903,
                          "keyType": {
                            "id": 18901,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2629:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Mapping",
                          "src": "2621:41:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                            "typeString": "mapping(address => struct DataTypes.ReserveData)"
                          },
                          "valueType": {
                            "contractScope": null,
                            "id": 18902,
                            "name": "DataTypes.ReserveData",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 20520,
                            "src": "2640:21:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                              "typeString": "struct DataTypes.ReserveData"
                            }
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18906,
                        "mutability": "mutable",
                        "name": "userConfig",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18966,
                        "src": "2689:49:82",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                          "typeString": "struct DataTypes.UserConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 18905,
                          "name": "DataTypes.UserConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20526,
                          "src": "2689:30:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                            "typeString": "struct DataTypes.UserConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18910,
                        "mutability": "mutable",
                        "name": "reserves",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18966,
                        "src": "2744:44:82",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        },
                        "typeName": {
                          "id": 18909,
                          "keyType": {
                            "id": 18907,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2752:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Mapping",
                          "src": "2744:27:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                            "typeString": "mapping(uint256 => address)"
                          },
                          "valueType": {
                            "id": 18908,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2763:7:82",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18912,
                        "mutability": "mutable",
                        "name": "reservesCount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18966,
                        "src": "2794:21:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18911,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2794:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18914,
                        "mutability": "mutable",
                        "name": "oracle",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 18966,
                        "src": "2821:14:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18913,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2821:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2542:297:82"
                  },
                  "returnParameters": {
                    "id": 18916,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2854:0:82"
                  },
                  "scope": 19773,
                  "src": "2517:879:82",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "canonicalName": "ValidationLogic.ValidateBorrowLocalVars",
                  "id": 18989,
                  "members": [
                    {
                      "constant": false,
                      "id": 18968,
                      "mutability": "mutable",
                      "name": "currentLtv",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18989,
                      "src": "3437:18:82",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18967,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3437:7:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18970,
                      "mutability": "mutable",
                      "name": "currentLiquidationThreshold",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18989,
                      "src": "3461:35:82",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18969,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3461:7:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18972,
                      "mutability": "mutable",
                      "name": "amountOfCollateralNeededETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18989,
                      "src": "3502:35:82",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18971,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3502:7:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18974,
                      "mutability": "mutable",
                      "name": "userCollateralBalanceETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18989,
                      "src": "3543:32:82",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18973,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3543:7:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18976,
                      "mutability": "mutable",
                      "name": "userBorrowBalanceETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18989,
                      "src": "3581:28:82",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18975,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3581:7:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18978,
                      "mutability": "mutable",
                      "name": "availableLiquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18989,
                      "src": "3615:26:82",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18977,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3615:7:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18980,
                      "mutability": "mutable",
                      "name": "healthFactor",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18989,
                      "src": "3647:20:82",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18979,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3647:7:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18982,
                      "mutability": "mutable",
                      "name": "isActive",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18989,
                      "src": "3673:13:82",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 18981,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3673:4:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18984,
                      "mutability": "mutable",
                      "name": "isFrozen",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18989,
                      "src": "3692:13:82",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 18983,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3692:4:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18986,
                      "mutability": "mutable",
                      "name": "borrowingEnabled",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18989,
                      "src": "3711:21:82",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 18985,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3711:4:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 18988,
                      "mutability": "mutable",
                      "name": "stableRateBorrowingEnabled",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 18989,
                      "src": "3738:31:82",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 18987,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3738:4:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "ValidateBorrowLocalVars",
                  "nodeType": "StructDefinition",
                  "scope": 19773,
                  "src": "3400:374:82",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 19231,
                    "nodeType": "Block",
                    "src": "4982:2971:82",
                    "statements": [
                      {
                        "assignments": [
                          19022
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19022,
                            "mutability": "mutable",
                            "name": "vars",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 19231,
                            "src": "4988:35:82",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ValidateBorrowLocalVars_$18989_memory_ptr",
                              "typeString": "struct ValidationLogic.ValidateBorrowLocalVars"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 19021,
                              "name": "ValidateBorrowLocalVars",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 18989,
                              "src": "4988:23:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ValidateBorrowLocalVars_$18989_storage_ptr",
                                "typeString": "struct ValidationLogic.ValidateBorrowLocalVars"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19023,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4988:35:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19038,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19024,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19022,
                                  "src": "5031:4:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ValidateBorrowLocalVars_$18989_memory_ptr",
                                    "typeString": "struct ValidationLogic.ValidateBorrowLocalVars memory"
                                  }
                                },
                                "id": 19026,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "isActive",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18982,
                                "src": "5031:13:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19027,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19022,
                                  "src": "5046:4:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ValidateBorrowLocalVars_$18989_memory_ptr",
                                    "typeString": "struct ValidationLogic.ValidateBorrowLocalVars memory"
                                  }
                                },
                                "id": 19028,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "isFrozen",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18984,
                                "src": "5046:13:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19029,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19022,
                                  "src": "5061:4:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ValidateBorrowLocalVars_$18989_memory_ptr",
                                    "typeString": "struct ValidationLogic.ValidateBorrowLocalVars memory"
                                  }
                                },
                                "id": 19030,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "borrowingEnabled",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18986,
                                "src": "5061:21:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19031,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19022,
                                  "src": "5084:4:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ValidateBorrowLocalVars_$18989_memory_ptr",
                                    "typeString": "struct ValidationLogic.ValidateBorrowLocalVars memory"
                                  }
                                },
                                "id": 19032,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "stableRateBorrowingEnabled",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18988,
                                "src": "5084:31:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 19033,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "5030:86:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_bool_$_t_bool_$_t_bool_$",
                              "typeString": "tuple(bool,bool,bool,bool)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19034,
                                  "name": "reserve",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18994,
                                  "src": "5119:7:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                    "typeString": "struct DataTypes.ReserveData storage pointer"
                                  }
                                },
                                "id": 19035,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "configuration",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20497,
                                "src": "5119:28:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage",
                                  "typeString": "struct DataTypes.ReserveConfigurationMap storage ref"
                                }
                              },
                              "id": 19036,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getFlags",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16579,
                              "src": "5119:44:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$returns$_t_bool_$_t_bool_$_t_bool_$_t_bool_$bound_to$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$",
                                "typeString": "function (struct DataTypes.ReserveConfigurationMap storage pointer) view returns (bool,bool,bool,bool)"
                              }
                            },
                            "id": 19037,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5119:46:82",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_bool_$_t_bool_$_t_bool_$",
                              "typeString": "tuple(bool,bool,bool,bool)"
                            }
                          },
                          "src": "5030:135:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19039,
                        "nodeType": "ExpressionStatement",
                        "src": "5030:135:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19041,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19022,
                                "src": "5180:4:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ValidateBorrowLocalVars_$18989_memory_ptr",
                                  "typeString": "struct ValidationLogic.ValidateBorrowLocalVars memory"
                                }
                              },
                              "id": 19042,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isActive",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18982,
                              "src": "5180:13:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19043,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "5195:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 19044,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "VL_NO_ACTIVE_RESERVE",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16999,
                              "src": "5195:27:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 19040,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5172:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19045,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5172:51:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19046,
                        "nodeType": "ExpressionStatement",
                        "src": "5172:51:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19050,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "5237:14:82",
                              "subExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19048,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19022,
                                  "src": "5238:4:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ValidateBorrowLocalVars_$18989_memory_ptr",
                                    "typeString": "struct ValidationLogic.ValidateBorrowLocalVars memory"
                                  }
                                },
                                "id": 19049,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isFrozen",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18984,
                                "src": "5238:13:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19051,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "5253:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 19052,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "VL_RESERVE_FROZEN",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17002,
                              "src": "5253:24:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 19047,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5229:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19053,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5229:49:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19054,
                        "nodeType": "ExpressionStatement",
                        "src": "5229:49:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 19058,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 19056,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18998,
                                "src": "5292:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 19057,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5302:1:82",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "5292:11:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19059,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "5305:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 19060,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "VL_INVALID_AMOUNT",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16996,
                              "src": "5305:24:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 19055,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5284:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5284:46:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19062,
                        "nodeType": "ExpressionStatement",
                        "src": "5284:46:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19064,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19022,
                                "src": "5345:4:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ValidateBorrowLocalVars_$18989_memory_ptr",
                                  "typeString": "struct ValidationLogic.ValidateBorrowLocalVars memory"
                                }
                              },
                              "id": 19065,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "borrowingEnabled",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18986,
                              "src": "5345:21:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19066,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "5368:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 19067,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "VL_BORROWING_NOT_ENABLED",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17014,
                              "src": "5368:31:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 19063,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5337:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5337:63:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19069,
                        "nodeType": "ExpressionStatement",
                        "src": "5337:63:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 19087,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 19078,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 19073,
                                          "name": "DataTypes",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20531,
                                          "src": "5464:9:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_DataTypes_$20531_$",
                                            "typeString": "type(library DataTypes)"
                                          }
                                        },
                                        "id": 19074,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "InterestRateMode",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 20530,
                                        "src": "5464:26:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_InterestRateMode_$20530_$",
                                          "typeString": "type(enum DataTypes.InterestRateMode)"
                                        }
                                      },
                                      "id": 19075,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "VARIABLE",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "5464:35:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                        "typeString": "enum DataTypes.InterestRateMode"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                        "typeString": "enum DataTypes.InterestRateMode"
                                      }
                                    ],
                                    "id": 19072,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5456:7:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 19071,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5456:7:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 19076,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5456:44:82",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 19077,
                                  "name": "interestRateMode",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19002,
                                  "src": "5504:16:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5456:64:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 19086,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 19081,
                                          "name": "DataTypes",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20531,
                                          "src": "5540:9:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_DataTypes_$20531_$",
                                            "typeString": "type(library DataTypes)"
                                          }
                                        },
                                        "id": 19082,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "InterestRateMode",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 20530,
                                        "src": "5540:26:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_InterestRateMode_$20530_$",
                                          "typeString": "type(enum DataTypes.InterestRateMode)"
                                        }
                                      },
                                      "id": 19083,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "STABLE",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "5540:33:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                        "typeString": "enum DataTypes.InterestRateMode"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                        "typeString": "enum DataTypes.InterestRateMode"
                                      }
                                    ],
                                    "id": 19080,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5532:7:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 19079,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5532:7:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 19084,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5532:42:82",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 19085,
                                  "name": "interestRateMode",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19002,
                                  "src": "5578:16:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5532:62:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5456:138:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19088,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "5602:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 19089,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "VL_INVALID_INTEREST_RATE_MODE_SELECTED",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17017,
                              "src": "5602:45:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 19070,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5441:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19090,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5441:212:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19091,
                        "nodeType": "ExpressionStatement",
                        "src": "5441:212:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19092,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19022,
                                  "src": "5668:4:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ValidateBorrowLocalVars_$18989_memory_ptr",
                                    "typeString": "struct ValidationLogic.ValidateBorrowLocalVars memory"
                                  }
                                },
                                "id": 19094,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "userCollateralBalanceETH",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18974,
                                "src": "5668:29:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19095,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19022,
                                  "src": "5705:4:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ValidateBorrowLocalVars_$18989_memory_ptr",
                                    "typeString": "struct ValidationLogic.ValidateBorrowLocalVars memory"
                                  }
                                },
                                "id": 19096,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "userBorrowBalanceETH",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18976,
                                "src": "5705:25:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19097,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19022,
                                  "src": "5738:4:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ValidateBorrowLocalVars_$18989_memory_ptr",
                                    "typeString": "struct ValidationLogic.ValidateBorrowLocalVars memory"
                                  }
                                },
                                "id": 19098,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "currentLtv",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18968,
                                "src": "5738:15:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19099,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19022,
                                  "src": "5761:4:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ValidateBorrowLocalVars_$18989_memory_ptr",
                                    "typeString": "struct ValidationLogic.ValidateBorrowLocalVars memory"
                                  }
                                },
                                "id": 19100,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "currentLiquidationThreshold",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18970,
                                "src": "5761:32:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19101,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19022,
                                  "src": "5801:4:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ValidateBorrowLocalVars_$18989_memory_ptr",
                                    "typeString": "struct ValidationLogic.ValidateBorrowLocalVars memory"
                                  }
                                },
                                "id": 19102,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "healthFactor",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18980,
                                "src": "5801:17:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 19103,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "5660:164:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 19106,
                                "name": "userAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18996,
                                "src": "5872:11:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 19107,
                                "name": "reservesData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19008,
                                "src": "5891:12:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                  "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 19108,
                                "name": "userConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19010,
                                "src": "5911:10:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                  "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 19109,
                                "name": "reserves",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19014,
                                "src": "5929:8:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                  "typeString": "mapping(uint256 => address)"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 19110,
                                "name": "reservesCount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19016,
                                "src": "5945:13:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 19111,
                                "name": "oracle",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19018,
                                "src": "5966:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                  "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                },
                                {
                                  "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                  "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                                },
                                {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                  "typeString": "mapping(uint256 => address)"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 19104,
                                "name": "GenericLogic",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17987,
                                "src": "5827:12:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_GenericLogic_$17987_$",
                                  "typeString": "type(library GenericLogic)"
                                }
                              },
                              "id": 19105,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "calculateUserAccountData",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17918,
                              "src": "5827:37:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$_$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$_t_mapping$_t_uint256_$_t_address_$_$_t_uint256_$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "function (address,mapping(address => struct DataTypes.ReserveData storage ref),struct DataTypes.UserConfigurationMap memory,mapping(uint256 => address),uint256,address) view returns (uint256,uint256,uint256,uint256,uint256)"
                              }
                            },
                            "id": 19112,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5827:151:82",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "src": "5660:318:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19114,
                        "nodeType": "ExpressionStatement",
                        "src": "5660:318:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 19119,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19116,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19022,
                                  "src": "5993:4:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ValidateBorrowLocalVars_$18989_memory_ptr",
                                    "typeString": "struct ValidationLogic.ValidateBorrowLocalVars memory"
                                  }
                                },
                                "id": 19117,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "userCollateralBalanceETH",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18974,
                                "src": "5993:29:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 19118,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6025:1:82",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "5993:33:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19120,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "6028:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 19121,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "VL_COLLATERAL_BALANCE_IS_0",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17020,
                              "src": "6028:33:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 19115,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5985:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19122,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5985:77:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19123,
                        "nodeType": "ExpressionStatement",
                        "src": "5985:77:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 19129,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19125,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19022,
                                  "src": "6084:4:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ValidateBorrowLocalVars_$18989_memory_ptr",
                                    "typeString": "struct ValidationLogic.ValidateBorrowLocalVars memory"
                                  }
                                },
                                "id": 19126,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "healthFactor",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18980,
                                "src": "6084:17:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19127,
                                  "name": "GenericLogic",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17987,
                                  "src": "6104:12:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_GenericLogic_$17987_$",
                                    "typeString": "type(library GenericLogic)"
                                  }
                                },
                                "id": 19128,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "HEALTH_FACTOR_LIQUIDATION_THRESHOLD",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17371,
                                "src": "6104:48:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6084:68:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19130,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "6160:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 19131,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "VL_HEALTH_FACTOR_LOWER_THAN_LIQUIDATION_THRESHOLD",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17023,
                              "src": "6160:56:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 19124,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6069:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6069:153:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19133,
                        "nodeType": "ExpressionStatement",
                        "src": "6069:153:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19134,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19022,
                              "src": "6341:4:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ValidateBorrowLocalVars_$18989_memory_ptr",
                                "typeString": "struct ValidationLogic.ValidateBorrowLocalVars memory"
                              }
                            },
                            "id": 19136,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amountOfCollateralNeededETH",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 18972,
                            "src": "6341:32:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19143,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19022,
                                  "src": "6437:4:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ValidateBorrowLocalVars_$18989_memory_ptr",
                                    "typeString": "struct ValidationLogic.ValidateBorrowLocalVars memory"
                                  }
                                },
                                "id": 19144,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "currentLtv",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18968,
                                "src": "6437:15:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 19140,
                                    "name": "amountInETH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19000,
                                    "src": "6406:11:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19137,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19022,
                                      "src": "6376:4:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ValidateBorrowLocalVars_$18989_memory_ptr",
                                        "typeString": "struct ValidationLogic.ValidateBorrowLocalVars memory"
                                      }
                                    },
                                    "id": 19138,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "userBorrowBalanceETH",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18976,
                                    "src": "6376:25:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 19139,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4329,
                                  "src": "6376:29:82",
                                  "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": 19141,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6376:42:82",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19142,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "percentDiv",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20067,
                              "src": "6376:53:82",
                              "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": 19145,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6376:82:82",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6341:117:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19147,
                        "nodeType": "ExpressionStatement",
                        "src": "6341:117:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 19153,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19149,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19022,
                                  "src": "6514:4:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ValidateBorrowLocalVars_$18989_memory_ptr",
                                    "typeString": "struct ValidationLogic.ValidateBorrowLocalVars memory"
                                  }
                                },
                                "id": 19150,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amountOfCollateralNeededETH",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18972,
                                "src": "6514:32:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19151,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19022,
                                  "src": "6550:4:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ValidateBorrowLocalVars_$18989_memory_ptr",
                                    "typeString": "struct ValidationLogic.ValidateBorrowLocalVars memory"
                                  }
                                },
                                "id": 19152,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "userCollateralBalanceETH",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 18974,
                                "src": "6550:29:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6514:65:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19154,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "6587:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 19155,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "VL_COLLATERAL_CANNOT_COVER_NEW_BORROW",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17026,
                              "src": "6587:44:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 19148,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6499:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19156,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6499:138:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19157,
                        "nodeType": "ExpressionStatement",
                        "src": "6499:138:82"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19165,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 19158,
                            "name": "interestRateMode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19002,
                            "src": "7045:16:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19161,
                                    "name": "DataTypes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20531,
                                    "src": "7073:9:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_DataTypes_$20531_$",
                                      "typeString": "type(library DataTypes)"
                                    }
                                  },
                                  "id": 19162,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "InterestRateMode",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20530,
                                  "src": "7073:26:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_InterestRateMode_$20530_$",
                                    "typeString": "type(enum DataTypes.InterestRateMode)"
                                  }
                                },
                                "id": 19163,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "STABLE",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "7073:33:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                  "typeString": "enum DataTypes.InterestRateMode"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                  "typeString": "enum DataTypes.InterestRateMode"
                                }
                              ],
                              "id": 19160,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7065:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 19159,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "7065:7:82",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 19164,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7065:42:82",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7045:62:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 19230,
                        "nodeType": "IfStatement",
                        "src": "7041:908:82",
                        "trueBody": {
                          "id": 19229,
                          "nodeType": "Block",
                          "src": "7109:840:82",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19167,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19022,
                                      "src": "7225:4:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ValidateBorrowLocalVars_$18989_memory_ptr",
                                        "typeString": "struct ValidationLogic.ValidateBorrowLocalVars memory"
                                      }
                                    },
                                    "id": 19168,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "stableRateBorrowingEnabled",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18988,
                                    "src": "7225:31:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19169,
                                      "name": "Errors",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17239,
                                      "src": "7258:6:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                        "typeString": "type(library Errors)"
                                      }
                                    },
                                    "id": 19170,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "VL_STABLE_BORROWING_NOT_ENABLED",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17029,
                                    "src": "7258:38:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 19166,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "7217:7:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 19171,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7217:80:82",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19172,
                              "nodeType": "ExpressionStatement",
                              "src": "7217:80:82"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 19196,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 19186,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 19179,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "!",
                                        "prefix": true,
                                        "src": "7323:43:82",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 19176,
                                                "name": "reserve",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 18994,
                                                "src": "7355:7:82",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                                }
                                              },
                                              "id": 19177,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "id",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 20519,
                                              "src": "7355:10:82",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 19174,
                                              "name": "userConfig",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 19010,
                                              "src": "7324:10:82",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                                "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                                              }
                                            },
                                            "id": 19175,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "isUsingAsCollateral",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 16953,
                                            "src": "7324:30:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$",
                                              "typeString": "function (struct DataTypes.UserConfigurationMap memory,uint256) pure returns (bool)"
                                            }
                                          },
                                          "id": 19178,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "7324:42:82",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "||",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 19185,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 19180,
                                                "name": "reserve",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 18994,
                                                "src": "7380:7:82",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                                }
                                              },
                                              "id": 19181,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "configuration",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 20497,
                                              "src": "7380:21:82",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage",
                                                "typeString": "struct DataTypes.ReserveConfigurationMap storage ref"
                                              }
                                            },
                                            "id": 19182,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getLtv",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 16137,
                                            "src": "7380:28:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_view$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$",
                                              "typeString": "function (struct DataTypes.ReserveConfigurationMap storage pointer) view returns (uint256)"
                                            }
                                          },
                                          "id": 19183,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "7380:30:82",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 19184,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7414:1:82",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "7380:35:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "src": "7323:92:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 19195,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 19187,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18998,
                                        "src": "7429:6:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 19193,
                                            "name": "userAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18996,
                                            "src": "7478:11:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 19189,
                                                  "name": "reserve",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 18994,
                                                  "src": "7445:7:82",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                                    "typeString": "struct DataTypes.ReserveData storage pointer"
                                                  }
                                                },
                                                "id": 19190,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "aTokenAddress",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 20511,
                                                "src": "7445:21:82",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "id": 19188,
                                              "name": "IERC20",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4012,
                                              "src": "7438:6:82",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                                "typeString": "type(contract IERC20)"
                                              }
                                            },
                                            "id": 19191,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "7438:29:82",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IERC20_$4012",
                                              "typeString": "contract IERC20"
                                            }
                                          },
                                          "id": 19192,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "balanceOf",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3951,
                                          "src": "7438:39:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                            "typeString": "function (address) view external returns (uint256)"
                                          }
                                        },
                                        "id": 19194,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7438:52:82",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7429:61:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "7323:167:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19197,
                                      "name": "Errors",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17239,
                                      "src": "7500:6:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                        "typeString": "type(library Errors)"
                                      }
                                    },
                                    "id": 19198,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "VL_COLLATERAL_SAME_AS_BORROWING_CURRENCY",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17032,
                                    "src": "7500:47:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 19173,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "7306:7:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 19199,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7306:249:82",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19200,
                              "nodeType": "ExpressionStatement",
                              "src": "7306:249:82"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 19211,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19201,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19022,
                                    "src": "7564:4:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ValidateBorrowLocalVars_$18989_memory_ptr",
                                      "typeString": "struct ValidationLogic.ValidateBorrowLocalVars memory"
                                    }
                                  },
                                  "id": 19203,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "availableLiquidity",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18978,
                                  "src": "7564:23:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 19208,
                                        "name": "reserve",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18994,
                                        "src": "7614:7:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                          "typeString": "struct DataTypes.ReserveData storage pointer"
                                        }
                                      },
                                      "id": 19209,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "aTokenAddress",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20511,
                                      "src": "7614:21:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 19205,
                                          "name": "asset",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18992,
                                          "src": "7597:5:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 19204,
                                        "name": "IERC20",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4012,
                                        "src": "7590:6:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                          "typeString": "type(contract IERC20)"
                                        }
                                      },
                                      "id": 19206,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7590:13:82",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$4012",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 19207,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "balanceOf",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3951,
                                    "src": "7590:23:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address) view external returns (uint256)"
                                    }
                                  },
                                  "id": 19210,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7590:46:82",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7564:72:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19212,
                              "nodeType": "ExpressionStatement",
                              "src": "7564:72:82"
                            },
                            {
                              "assignments": [
                                19214
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 19214,
                                  "mutability": "mutable",
                                  "name": "maxLoanSizeStable",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 19229,
                                  "src": "7762:25:82",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 19213,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7762:7:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 19220,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 19218,
                                    "name": "maxStableLoanPercent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19004,
                                    "src": "7825:20:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19215,
                                      "name": "vars",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19022,
                                      "src": "7790:4:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ValidateBorrowLocalVars_$18989_memory_ptr",
                                        "typeString": "struct ValidationLogic.ValidateBorrowLocalVars memory"
                                      }
                                    },
                                    "id": 19216,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "availableLiquidity",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18978,
                                    "src": "7790:23:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 19217,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "percentMul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20016,
                                  "src": "7790:34:82",
                                  "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": 19219,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7790:56:82",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7762:84:82"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 19224,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 19222,
                                      "name": "amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18998,
                                      "src": "7863:6:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 19223,
                                      "name": "maxLoanSizeStable",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19214,
                                      "src": "7873:17:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "7863:27:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19225,
                                      "name": "Errors",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17239,
                                      "src": "7892:6:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                        "typeString": "type(library Errors)"
                                      }
                                    },
                                    "id": 19226,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "VL_AMOUNT_BIGGER_THAN_MAX_LOAN_SIZE_STABLE",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17035,
                                    "src": "7892:49:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 19221,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "7855:7:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 19227,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7855:87:82",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19228,
                              "nodeType": "ExpressionStatement",
                              "src": "7855:87:82"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18990,
                    "nodeType": "StructuredDocumentation",
                    "src": "3778:742:82",
                    "text": " @dev Validates a borrow action\n @param asset The address of the asset to borrow\n @param reserve The reserve state from which the user is borrowing\n @param userAddress The address of the user\n @param amount The amount to be borrowed\n @param amountInETH The amount to be borrowed, in ETH\n @param interestRateMode The interest rate mode at which the user is borrowing\n @param maxStableLoanPercent The max amount of the liquidity that can be borrowed at stable rate, in percentage\n @param reservesData The state of all the reserves\n @param userConfig The state of the user for the specific reserve\n @param reserves The addresses of all the active reserves\n @param oracle The price oracle"
                  },
                  "functionSelector": "721a92f9",
                  "id": 19232,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "validateBorrow",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 19019,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18992,
                        "mutability": "mutable",
                        "name": "asset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19232,
                        "src": "4553:13:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18991,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4553:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18994,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19232,
                        "src": "4572:37:82",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                          "typeString": "struct DataTypes.ReserveData"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 18993,
                          "name": "DataTypes.ReserveData",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20520,
                          "src": "4572:21:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                            "typeString": "struct DataTypes.ReserveData"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18996,
                        "mutability": "mutable",
                        "name": "userAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19232,
                        "src": "4615:19:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18995,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4615:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18998,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19232,
                        "src": "4640:14:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18997,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4640:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19000,
                        "mutability": "mutable",
                        "name": "amountInETH",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19232,
                        "src": "4660:19:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18999,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4660:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19002,
                        "mutability": "mutable",
                        "name": "interestRateMode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19232,
                        "src": "4685:24:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19001,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4685:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19004,
                        "mutability": "mutable",
                        "name": "maxStableLoanPercent",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19232,
                        "src": "4715:28:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19003,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4715:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19008,
                        "mutability": "mutable",
                        "name": "reservesData",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19232,
                        "src": "4749:62:82",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                          "typeString": "mapping(address => struct DataTypes.ReserveData)"
                        },
                        "typeName": {
                          "id": 19007,
                          "keyType": {
                            "id": 19005,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4757:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Mapping",
                          "src": "4749:41:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                            "typeString": "mapping(address => struct DataTypes.ReserveData)"
                          },
                          "valueType": {
                            "contractScope": null,
                            "id": 19006,
                            "name": "DataTypes.ReserveData",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 20520,
                            "src": "4768:21:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                              "typeString": "struct DataTypes.ReserveData"
                            }
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19010,
                        "mutability": "mutable",
                        "name": "userConfig",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19232,
                        "src": "4817:49:82",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                          "typeString": "struct DataTypes.UserConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 19009,
                          "name": "DataTypes.UserConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20526,
                          "src": "4817:30:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                            "typeString": "struct DataTypes.UserConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19014,
                        "mutability": "mutable",
                        "name": "reserves",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19232,
                        "src": "4872:44:82",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        },
                        "typeName": {
                          "id": 19013,
                          "keyType": {
                            "id": 19011,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4880:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Mapping",
                          "src": "4872:27:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                            "typeString": "mapping(uint256 => address)"
                          },
                          "valueType": {
                            "id": 19012,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4891:7:82",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19016,
                        "mutability": "mutable",
                        "name": "reservesCount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19232,
                        "src": "4922:21:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19015,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4922:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19018,
                        "mutability": "mutable",
                        "name": "oracle",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19232,
                        "src": "4949:14:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19017,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4949:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4547:420:82"
                  },
                  "returnParameters": {
                    "id": 19020,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4982:0:82"
                  },
                  "scope": 19773,
                  "src": "4524:3429:82",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 19318,
                    "nodeType": "Block",
                    "src": "8574:595:82",
                    "statements": [
                      {
                        "assignments": [
                          19249
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19249,
                            "mutability": "mutable",
                            "name": "isActive",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 19318,
                            "src": "8580:13:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 19248,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "8580:4:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19254,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19250,
                                "name": "reserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19235,
                                "src": "8596:7:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                }
                              },
                              "id": 19251,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "configuration",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20497,
                              "src": "8596:21:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage",
                                "typeString": "struct DataTypes.ReserveConfigurationMap storage ref"
                              }
                            },
                            "id": 19252,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getActive",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16335,
                            "src": "8596:31:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$returns$_t_bool_$bound_to$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveConfigurationMap storage pointer) view returns (bool)"
                            }
                          },
                          "id": 19253,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8596:33:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8580:49:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19256,
                              "name": "isActive",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19249,
                              "src": "8644:8:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19257,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "8654:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 19258,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "VL_NO_ACTIVE_RESERVE",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16999,
                              "src": "8654:27:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 19255,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8636:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8636:46:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19260,
                        "nodeType": "ExpressionStatement",
                        "src": "8636:46:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 19264,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 19262,
                                "name": "amountSent",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19237,
                                "src": "8697:10:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 19263,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8710:1:82",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "8697:14:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19265,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "8713:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 19266,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "VL_INVALID_AMOUNT",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16996,
                              "src": "8713:24:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 19261,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8689:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19267,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8689:49:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19268,
                        "nodeType": "ExpressionStatement",
                        "src": "8689:49:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 19296,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 19281,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 19272,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 19270,
                                        "name": "stableDebt",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19243,
                                        "src": "8761:10:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 19271,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8774:1:82",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "8761:14:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                        "typeString": "enum DataTypes.InterestRateMode"
                                      },
                                      "id": 19280,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 19275,
                                            "name": "rateMode",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 19239,
                                            "src": "8814:8:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                              "typeString": "enum DataTypes.InterestRateMode"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                              "typeString": "enum DataTypes.InterestRateMode"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19273,
                                            "name": "DataTypes",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20531,
                                            "src": "8787:9:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_DataTypes_$20531_$",
                                              "typeString": "type(library DataTypes)"
                                            }
                                          },
                                          "id": 19274,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "InterestRateMode",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 20530,
                                          "src": "8787:26:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_InterestRateMode_$20530_$",
                                            "typeString": "type(enum DataTypes.InterestRateMode)"
                                          }
                                        },
                                        "id": 19276,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8787:36:82",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                          "typeString": "enum DataTypes.InterestRateMode"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19277,
                                            "name": "DataTypes",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20531,
                                            "src": "8827:9:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_DataTypes_$20531_$",
                                              "typeString": "type(library DataTypes)"
                                            }
                                          },
                                          "id": 19278,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "InterestRateMode",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 20530,
                                          "src": "8827:26:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_InterestRateMode_$20530_$",
                                            "typeString": "type(enum DataTypes.InterestRateMode)"
                                          }
                                        },
                                        "id": 19279,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "STABLE",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "8827:33:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                          "typeString": "enum DataTypes.InterestRateMode"
                                        }
                                      },
                                      "src": "8787:73:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "8761:99:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 19282,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "8760:101:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 19294,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 19285,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 19283,
                                        "name": "variableDebt",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19245,
                                        "src": "8874:12:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 19284,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8889:1:82",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "8874:16:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                        "typeString": "enum DataTypes.InterestRateMode"
                                      },
                                      "id": 19293,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 19288,
                                            "name": "rateMode",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 19239,
                                            "src": "8931:8:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                              "typeString": "enum DataTypes.InterestRateMode"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                              "typeString": "enum DataTypes.InterestRateMode"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19286,
                                            "name": "DataTypes",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20531,
                                            "src": "8904:9:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_DataTypes_$20531_$",
                                              "typeString": "type(library DataTypes)"
                                            }
                                          },
                                          "id": 19287,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "InterestRateMode",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 20530,
                                          "src": "8904:26:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_InterestRateMode_$20530_$",
                                            "typeString": "type(enum DataTypes.InterestRateMode)"
                                          }
                                        },
                                        "id": 19289,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8904:36:82",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                          "typeString": "enum DataTypes.InterestRateMode"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19290,
                                            "name": "DataTypes",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20531,
                                            "src": "8944:9:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_DataTypes_$20531_$",
                                              "typeString": "type(library DataTypes)"
                                            }
                                          },
                                          "id": 19291,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "InterestRateMode",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 20530,
                                          "src": "8944:26:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_InterestRateMode_$20530_$",
                                            "typeString": "type(enum DataTypes.InterestRateMode)"
                                          }
                                        },
                                        "id": 19292,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "VARIABLE",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "8944:35:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                          "typeString": "enum DataTypes.InterestRateMode"
                                        }
                                      },
                                      "src": "8904:75:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "8874:105:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 19295,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "8873:107:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "8760:220:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19297,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "8988:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 19298,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "VL_NO_DEBT_OF_SELECTED_TYPE",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17038,
                              "src": "8988:34:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 19269,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8745:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8745:283:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19300,
                        "nodeType": "ExpressionStatement",
                        "src": "8745:283:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 19313,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 19308,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 19302,
                                  "name": "amountSent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19237,
                                  "src": "9050:10:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 19306,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "-",
                                      "prefix": true,
                                      "src": "9072:2:82",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 19305,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9073:1:82",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_minus_1_by_1",
                                        "typeString": "int_const -1"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_minus_1_by_1",
                                        "typeString": "int_const -1"
                                      }
                                    ],
                                    "id": 19304,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "9064:7:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 19303,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "9064:7:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 19307,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9064:11:82",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9050:25:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 19312,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19309,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "9079:3:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 19310,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "9079:10:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 19311,
                                  "name": "onBehalfOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19241,
                                  "src": "9093:10:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "9079:24:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "9050:53:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19314,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "9111:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 19315,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "VL_NO_EXPLICIT_AMOUNT_TO_REPAY_ON_BEHALF",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17041,
                              "src": "9111:47:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 19301,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9035:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19316,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9035:129:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19317,
                        "nodeType": "ExpressionStatement",
                        "src": "9035:129:82"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19233,
                    "nodeType": "StructuredDocumentation",
                    "src": "7957:391:82",
                    "text": " @dev Validates a repay action\n @param reserve The reserve state from which the user is repaying\n @param amountSent The amount sent for the repayment. Can be an actual value or uint(-1)\n @param onBehalfOf The address of the user msg.sender is repaying for\n @param stableDebt The borrow balance of the user\n @param variableDebt The borrow balance of the user"
                  },
                  "functionSelector": "fa0c2149",
                  "id": 19319,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "validateRepay",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 19246,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19235,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19319,
                        "src": "8379:37:82",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                          "typeString": "struct DataTypes.ReserveData"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 19234,
                          "name": "DataTypes.ReserveData",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20520,
                          "src": "8379:21:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                            "typeString": "struct DataTypes.ReserveData"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19237,
                        "mutability": "mutable",
                        "name": "amountSent",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19319,
                        "src": "8422:18:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19236,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8422:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19239,
                        "mutability": "mutable",
                        "name": "rateMode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19319,
                        "src": "8446:35:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                          "typeString": "enum DataTypes.InterestRateMode"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 19238,
                          "name": "DataTypes.InterestRateMode",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20530,
                          "src": "8446:26:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                            "typeString": "enum DataTypes.InterestRateMode"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19241,
                        "mutability": "mutable",
                        "name": "onBehalfOf",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19319,
                        "src": "8487:18:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19240,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8487:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19243,
                        "mutability": "mutable",
                        "name": "stableDebt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19319,
                        "src": "8511:18:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19242,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8511:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19245,
                        "mutability": "mutable",
                        "name": "variableDebt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19319,
                        "src": "8535:20:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19244,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8535:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8373:186:82"
                  },
                  "returnParameters": {
                    "id": 19247,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8574:0:82"
                  },
                  "scope": 19773,
                  "src": "8351:818:82",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 19431,
                    "nodeType": "Block",
                    "src": "9771:1292:82",
                    "statements": [
                      {
                        "assignments": [
                          19334,
                          19336,
                          null,
                          19338
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19334,
                            "mutability": "mutable",
                            "name": "isActive",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 19431,
                            "src": "9778:13:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 19333,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "9778:4:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19336,
                            "mutability": "mutable",
                            "name": "isFrozen",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 19431,
                            "src": "9793:13:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 19335,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "9793:4:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null,
                          {
                            "constant": false,
                            "id": 19338,
                            "mutability": "mutable",
                            "name": "stableRateEnabled",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 19431,
                            "src": "9810:22:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 19337,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "9810:4:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19343,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19339,
                                "name": "reserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19322,
                                "src": "9836:7:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                }
                              },
                              "id": 19340,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "configuration",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20497,
                              "src": "9836:21:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage",
                                "typeString": "struct DataTypes.ReserveConfigurationMap storage ref"
                              }
                            },
                            "id": 19341,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getFlags",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16579,
                            "src": "9836:30:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$returns$_t_bool_$_t_bool_$_t_bool_$_t_bool_$bound_to$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveConfigurationMap storage pointer) view returns (bool,bool,bool,bool)"
                            }
                          },
                          "id": 19342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9836:32:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bool_$_t_bool_$_t_bool_$",
                            "typeString": "tuple(bool,bool,bool,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9777:91:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19345,
                              "name": "isActive",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19334,
                              "src": "9883:8:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19346,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "9893:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 19347,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "VL_NO_ACTIVE_RESERVE",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16999,
                              "src": "9893:27:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 19344,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9875:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19348,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9875:46:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19349,
                        "nodeType": "ExpressionStatement",
                        "src": "9875:46:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19352,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "9935:9:82",
                              "subExpression": {
                                "argumentTypes": null,
                                "id": 19351,
                                "name": "isFrozen",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19336,
                                "src": "9936:8:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19353,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "9946:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 19354,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "VL_RESERVE_FROZEN",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17002,
                              "src": "9946:24:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 19350,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9927:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19355,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9927:44:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19356,
                        "nodeType": "ExpressionStatement",
                        "src": "9927:44:82"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                            "typeString": "enum DataTypes.InterestRateMode"
                          },
                          "id": 19361,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 19357,
                            "name": "currentRateMode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19330,
                            "src": "9982:15:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                              "typeString": "enum DataTypes.InterestRateMode"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19358,
                                "name": "DataTypes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20531,
                                "src": "10001:9:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_DataTypes_$20531_$",
                                  "typeString": "type(library DataTypes)"
                                }
                              },
                              "id": 19359,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "InterestRateMode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20530,
                              "src": "10001:26:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_InterestRateMode_$20530_$",
                                "typeString": "type(enum DataTypes.InterestRateMode)"
                              }
                            },
                            "id": 19360,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "STABLE",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10001:33:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                              "typeString": "enum DataTypes.InterestRateMode"
                            }
                          },
                          "src": "9982:52:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                              "typeString": "enum DataTypes.InterestRateMode"
                            },
                            "id": 19375,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 19371,
                              "name": "currentRateMode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19330,
                              "src": "10126:15:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                "typeString": "enum DataTypes.InterestRateMode"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19372,
                                  "name": "DataTypes",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20531,
                                  "src": "10145:9:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_DataTypes_$20531_$",
                                    "typeString": "type(library DataTypes)"
                                  }
                                },
                                "id": 19373,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "InterestRateMode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20530,
                                "src": "10145:26:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_InterestRateMode_$20530_$",
                                  "typeString": "type(enum DataTypes.InterestRateMode)"
                                }
                              },
                              "id": 19374,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "VARIABLE",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10145:35:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                                "typeString": "enum DataTypes.InterestRateMode"
                              }
                            },
                            "src": "10126:54:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 19428,
                            "nodeType": "Block",
                            "src": "10991:68:82",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 19424,
                                        "name": "Errors",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17239,
                                        "src": "11006:6:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                          "typeString": "type(library Errors)"
                                        }
                                      },
                                      "id": 19425,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "VL_INVALID_INTEREST_RATE_MODE_SELECTED",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 17017,
                                      "src": "11006:45:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    ],
                                    "id": 19423,
                                    "name": "revert",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -19,
                                      -19
                                    ],
                                    "referencedDeclaration": -19,
                                    "src": "10999:6:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (string memory) pure"
                                    }
                                  },
                                  "id": 19426,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10999:53:82",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 19427,
                                "nodeType": "ExpressionStatement",
                                "src": "10999:53:82"
                              }
                            ]
                          },
                          "id": 19429,
                          "nodeType": "IfStatement",
                          "src": "10122:937:82",
                          "trueBody": {
                            "id": 19422,
                            "nodeType": "Block",
                            "src": "10182:803:82",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 19379,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 19377,
                                        "name": "variableDebt",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19328,
                                        "src": "10198:12:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 19378,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10213:1:82",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "10198:16:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 19380,
                                        "name": "Errors",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17239,
                                        "src": "10216:6:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                          "typeString": "type(library Errors)"
                                        }
                                      },
                                      "id": 19381,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "VL_NO_VARIABLE_RATE_LOAN_IN_RESERVE",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 17047,
                                      "src": "10216:42:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    ],
                                    "id": 19376,
                                    "name": "require",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -18,
                                      -18
                                    ],
                                    "referencedDeclaration": -18,
                                    "src": "10190:7:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (bool,string memory) pure"
                                    }
                                  },
                                  "id": 19382,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10190:69:82",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 19383,
                                "nodeType": "ExpressionStatement",
                                "src": "10190:69:82"
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 19385,
                                      "name": "stableRateEnabled",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19338,
                                      "src": "10641:17:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 19386,
                                        "name": "Errors",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17239,
                                        "src": "10660:6:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                          "typeString": "type(library Errors)"
                                        }
                                      },
                                      "id": 19387,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "VL_STABLE_BORROWING_NOT_ENABLED",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 17029,
                                      "src": "10660:38:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    ],
                                    "id": 19384,
                                    "name": "require",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -18,
                                      -18
                                    ],
                                    "referencedDeclaration": -18,
                                    "src": "10633:7:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (bool,string memory) pure"
                                    }
                                  },
                                  "id": 19388,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10633:66:82",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 19389,
                                "nodeType": "ExpressionStatement",
                                "src": "10633:66:82"
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 19417,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "id": 19403,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 19396,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "UnaryOperation",
                                          "operator": "!",
                                          "prefix": true,
                                          "src": "10725:43:82",
                                          "subExpression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 19393,
                                                  "name": "reserve",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 19322,
                                                  "src": "10757:7:82",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                                    "typeString": "struct DataTypes.ReserveData storage pointer"
                                                  }
                                                },
                                                "id": 19394,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "id",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 20519,
                                                "src": "10757:10:82",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 19391,
                                                "name": "userConfig",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 19324,
                                                "src": "10726:10:82",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                                  "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                                                }
                                              },
                                              "id": 19392,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "isUsingAsCollateral",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 16953,
                                              "src": "10726:30:82",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$",
                                                "typeString": "function (struct DataTypes.UserConfigurationMap memory,uint256) pure returns (bool)"
                                              }
                                            },
                                            "id": 19395,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "10726:42:82",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "||",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 19402,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "expression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 19397,
                                                  "name": "reserve",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 19322,
                                                  "src": "10782:7:82",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                                    "typeString": "struct DataTypes.ReserveData storage pointer"
                                                  }
                                                },
                                                "id": 19398,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "configuration",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 20497,
                                                "src": "10782:21:82",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage",
                                                  "typeString": "struct DataTypes.ReserveConfigurationMap storage ref"
                                                }
                                              },
                                              "id": 19399,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "getLtv",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 16137,
                                              "src": "10782:28:82",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_view$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$",
                                                "typeString": "function (struct DataTypes.ReserveConfigurationMap storage pointer) view returns (uint256)"
                                              }
                                            },
                                            "id": 19400,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "10782:30:82",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 19401,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "10816:1:82",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "10782:35:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "src": "10725:92:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "||",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 19416,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 19406,
                                              "name": "variableDebt",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 19328,
                                              "src": "10846:12:82",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 19404,
                                              "name": "stableDebt",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 19326,
                                              "src": "10831:10:82",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 19405,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "add",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4329,
                                            "src": "10831:14:82",
                                            "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": 19407,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "10831:28:82",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 19413,
                                                "name": "msg",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -15,
                                                "src": "10902:3:82",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_message",
                                                  "typeString": "msg"
                                                }
                                              },
                                              "id": 19414,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "sender",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "10902:10:82",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 19409,
                                                    "name": "reserve",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 19322,
                                                    "src": "10869:7:82",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                                      "typeString": "struct DataTypes.ReserveData storage pointer"
                                                    }
                                                  },
                                                  "id": 19410,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "aTokenAddress",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 20511,
                                                  "src": "10869:21:82",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                ],
                                                "id": 19408,
                                                "name": "IERC20",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4012,
                                                "src": "10862:6:82",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                                  "typeString": "type(contract IERC20)"
                                                }
                                              },
                                              "id": 19411,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "10862:29:82",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                                "typeString": "contract IERC20"
                                              }
                                            },
                                            "id": 19412,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "balanceOf",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3951,
                                            "src": "10862:39:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                              "typeString": "function (address) view external returns (uint256)"
                                            }
                                          },
                                          "id": 19415,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "10862:51:82",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "10831:82:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "src": "10725:188:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 19418,
                                        "name": "Errors",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17239,
                                        "src": "10923:6:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                          "typeString": "type(library Errors)"
                                        }
                                      },
                                      "id": 19419,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "VL_COLLATERAL_SAME_AS_BORROWING_CURRENCY",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 17032,
                                      "src": "10923:47:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    ],
                                    "id": 19390,
                                    "name": "require",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -18,
                                      -18
                                    ],
                                    "referencedDeclaration": -18,
                                    "src": "10708:7:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (bool,string memory) pure"
                                    }
                                  },
                                  "id": 19420,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10708:270:82",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 19421,
                                "nodeType": "ExpressionStatement",
                                "src": "10708:270:82"
                              }
                            ]
                          }
                        },
                        "id": 19430,
                        "nodeType": "IfStatement",
                        "src": "9978:1081:82",
                        "trueBody": {
                          "id": 19370,
                          "nodeType": "Block",
                          "src": "10036:80:82",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 19365,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 19363,
                                      "name": "stableDebt",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19326,
                                      "src": "10052:10:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 19364,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "10065:1:82",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "10052:14:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19366,
                                      "name": "Errors",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17239,
                                      "src": "10068:6:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                        "typeString": "type(library Errors)"
                                      }
                                    },
                                    "id": 19367,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "VL_NO_STABLE_RATE_LOAN_IN_RESERVE",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17044,
                                    "src": "10068:40:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 19362,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "10044:7:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 19368,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10044:65:82",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19369,
                              "nodeType": "ExpressionStatement",
                              "src": "10044:65:82"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19320,
                    "nodeType": "StructuredDocumentation",
                    "src": "9173:351:82",
                    "text": " @dev Validates a swap of borrow rate mode.\n @param reserve The reserve state on which the user is swapping the rate\n @param userConfig The user reserves configuration\n @param stableDebt The stable debt of the user\n @param variableDebt The variable debt of the user\n @param currentRateMode The rate mode of the borrow"
                  },
                  "functionSelector": "a8695b1d",
                  "id": 19432,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "validateSwapRateMode",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 19331,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19322,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19432,
                        "src": "9562:37:82",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                          "typeString": "struct DataTypes.ReserveData"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 19321,
                          "name": "DataTypes.ReserveData",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20520,
                          "src": "9562:21:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                            "typeString": "struct DataTypes.ReserveData"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19324,
                        "mutability": "mutable",
                        "name": "userConfig",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19432,
                        "src": "9605:49:82",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                          "typeString": "struct DataTypes.UserConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 19323,
                          "name": "DataTypes.UserConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20526,
                          "src": "9605:30:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                            "typeString": "struct DataTypes.UserConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19326,
                        "mutability": "mutable",
                        "name": "stableDebt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19432,
                        "src": "9660:18:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19325,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9660:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19328,
                        "mutability": "mutable",
                        "name": "variableDebt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19432,
                        "src": "9684:20:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19327,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9684:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19330,
                        "mutability": "mutable",
                        "name": "currentRateMode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19432,
                        "src": "9710:42:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                          "typeString": "enum DataTypes.InterestRateMode"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 19329,
                          "name": "DataTypes.InterestRateMode",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20530,
                          "src": "9710:26:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_InterestRateMode_$20530",
                            "typeString": "enum DataTypes.InterestRateMode"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9556:200:82"
                  },
                  "returnParameters": {
                    "id": 19332,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9771:0:82"
                  },
                  "scope": 19773,
                  "src": "9527:1536:82",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 19527,
                    "nodeType": "Block",
                    "src": "11669:1100:82",
                    "statements": [
                      {
                        "assignments": [
                          19447,
                          null,
                          null,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19447,
                            "mutability": "mutable",
                            "name": "isActive",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 19527,
                            "src": "11676:13:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 19446,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "11676:4:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null,
                          null,
                          null
                        ],
                        "id": 19452,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19448,
                                "name": "reserve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19435,
                                "src": "11699:7:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                  "typeString": "struct DataTypes.ReserveData storage pointer"
                                }
                              },
                              "id": 19449,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "configuration",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20497,
                              "src": "11699:21:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage",
                                "typeString": "struct DataTypes.ReserveConfigurationMap storage ref"
                              }
                            },
                            "id": 19450,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getFlags",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16579,
                            "src": "11699:30:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$returns$_t_bool_$_t_bool_$_t_bool_$_t_bool_$bound_to$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$",
                              "typeString": "function (struct DataTypes.ReserveConfigurationMap storage pointer) view returns (bool,bool,bool,bool)"
                            }
                          },
                          "id": 19451,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11699:32:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bool_$_t_bool_$_t_bool_$",
                            "typeString": "tuple(bool,bool,bool,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11675:56:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19454,
                              "name": "isActive",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19447,
                              "src": "11746:8:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19455,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "11756:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 19456,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "VL_NO_ACTIVE_RESERVE",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16999,
                              "src": "11756:27:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 19453,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11738:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19457,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11738:46:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19458,
                        "nodeType": "ExpressionStatement",
                        "src": "11738:46:82"
                      },
                      {
                        "assignments": [
                          19460
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19460,
                            "mutability": "mutable",
                            "name": "totalDebt",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 19527,
                            "src": "11855:17:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19459,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11855:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19471,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19465,
                                      "name": "variableDebtToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19441,
                                      "src": "11915:17:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$4012",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 19466,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "totalSupply",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3943,
                                    "src": "11915:29:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                      "typeString": "function () view external returns (uint256)"
                                    }
                                  },
                                  "id": 19467,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11915:31:82",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19461,
                                      "name": "stableDebtToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19439,
                                      "src": "11881:15:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$4012",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 19462,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "totalSupply",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3943,
                                    "src": "11881:27:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                      "typeString": "function () view external returns (uint256)"
                                    }
                                  },
                                  "id": 19463,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11881:29:82",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 19464,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4329,
                                "src": "11881:33:82",
                                "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": 19468,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11881:66:82",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 19469,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "wadToRay",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20492,
                            "src": "11881:75:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 19470,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11881:77:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11855:103:82"
                      },
                      {
                        "assignments": [
                          19473
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19473,
                            "mutability": "mutable",
                            "name": "availableLiquidity",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 19527,
                            "src": "11964:26:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19472,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11964:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19482,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 19478,
                                  "name": "aTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19443,
                                  "src": "12026:13:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 19475,
                                      "name": "reserveAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19437,
                                      "src": "12000:14:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 19474,
                                    "name": "IERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4012,
                                    "src": "11993:6:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                      "typeString": "type(contract IERC20)"
                                    }
                                  },
                                  "id": 19476,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11993:22:82",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$4012",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 19477,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3951,
                                "src": "11993:32:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 19479,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11993:47:82",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 19480,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "wadToRay",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20492,
                            "src": "11993:56:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 19481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11993:58:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11964:87:82"
                      },
                      {
                        "assignments": [
                          19484
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19484,
                            "mutability": "mutable",
                            "name": "usageRatio",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 19527,
                            "src": "12057:18:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19483,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12057:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19497,
                        "initialValue": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 19487,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 19485,
                              "name": "totalDebt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19460,
                              "src": "12078:9:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 19486,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12091:1:82",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "12078:14:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 19493,
                                    "name": "totalDebt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19460,
                                    "src": "12139:9:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19491,
                                    "name": "availableLiquidity",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19473,
                                    "src": "12116:18:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 19492,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4329,
                                  "src": "12116:22:82",
                                  "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": 19494,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12116:33:82",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 19489,
                                "name": "totalDebt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19460,
                                "src": "12099:9:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19490,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "rayDiv",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20432,
                              "src": "12099:16:82",
                              "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": 19495,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12099:51:82",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 19496,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "12078:72:82",
                          "trueExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 19488,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12095:1:82",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12057:93:82"
                      },
                      {
                        "assignments": [
                          19499
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19499,
                            "mutability": "mutable",
                            "name": "currentLiquidityRate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 19527,
                            "src": "12318:28:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19498,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12318:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19502,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 19500,
                            "name": "reserve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19435,
                            "src": "12349:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                              "typeString": "struct DataTypes.ReserveData storage pointer"
                            }
                          },
                          "id": 19501,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "currentLiquidityRate",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 20503,
                          "src": "12349:28:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12318:59:82"
                      },
                      {
                        "assignments": [
                          19504
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19504,
                            "mutability": "mutable",
                            "name": "maxVariableBorrowRate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 19527,
                            "src": "12383:29:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19503,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12383:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19511,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19506,
                                    "name": "reserve",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19435,
                                    "src": "12450:7:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                      "typeString": "struct DataTypes.ReserveData storage pointer"
                                    }
                                  },
                                  "id": 19507,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "interestRateStrategyAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20517,
                                  "src": "12450:35:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 19505,
                                "name": "IReserveInterestRateStrategy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6978,
                                "src": "12421:28:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IReserveInterestRateStrategy_$6978_$",
                                  "typeString": "type(contract IReserveInterestRateStrategy)"
                                }
                              },
                              "id": 19508,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12421:65:82",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IReserveInterestRateStrategy_$6978",
                                "typeString": "contract IReserveInterestRateStrategy"
                              }
                            },
                            "id": 19509,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getMaxVariableBorrowRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6931,
                            "src": "12421:90:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                              "typeString": "function () view external returns (uint256)"
                            }
                          },
                          "id": 19510,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12421:92:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12383:130:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 19522,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 19515,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 19513,
                                  "name": "usageRatio",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19484,
                                  "src": "12535:10:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 19514,
                                  "name": "REBALANCE_UP_USAGE_RATIO_THRESHOLD",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18854,
                                  "src": "12549:34:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12535:48:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 19521,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 19516,
                                  "name": "currentLiquidityRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19499,
                                  "src": "12595:20:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 19519,
                                      "name": "REBALANCE_UP_LIQUIDITY_RATE_THRESHOLD",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18849,
                                      "src": "12660:37:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19517,
                                      "name": "maxVariableBorrowRate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19504,
                                      "src": "12627:21:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 19518,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "percentMul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20016,
                                    "src": "12627:32:82",
                                    "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": 19520,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12627:71:82",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12595:103:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "12535:163:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19523,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "12706:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 19524,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "LP_INTEREST_RATE_REBALANCE_CONDITIONS_NOT_MET",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17059,
                              "src": "12706:52:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 19512,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "12520:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12520:244:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19526,
                        "nodeType": "ExpressionStatement",
                        "src": "12520:244:82"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19433,
                    "nodeType": "StructuredDocumentation",
                    "src": "11067:382:82",
                    "text": " @dev Validates a stable borrow rate rebalance action\n @param reserve The reserve state on which the user is getting rebalanced\n @param reserveAddress The address of the reserve\n @param stableDebtToken The stable debt token instance\n @param variableDebtToken The variable debt token instance\n @param aTokenAddress The address of the aToken contract"
                  },
                  "functionSelector": "548cad09",
                  "id": 19528,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "validateRebalanceStableBorrowRate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 19444,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19435,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19528,
                        "src": "11500:37:82",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                          "typeString": "struct DataTypes.ReserveData"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 19434,
                          "name": "DataTypes.ReserveData",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20520,
                          "src": "11500:21:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                            "typeString": "struct DataTypes.ReserveData"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19437,
                        "mutability": "mutable",
                        "name": "reserveAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19528,
                        "src": "11543:22:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19436,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11543:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19439,
                        "mutability": "mutable",
                        "name": "stableDebtToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19528,
                        "src": "11571:22:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$4012",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 19438,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4012,
                          "src": "11571:6:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$4012",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19441,
                        "mutability": "mutable",
                        "name": "variableDebtToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19528,
                        "src": "11599:24:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$4012",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 19440,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4012,
                          "src": "11599:6:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$4012",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19443,
                        "mutability": "mutable",
                        "name": "aTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19528,
                        "src": "11629:21:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19442,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11629:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11494:160:82"
                  },
                  "returnParameters": {
                    "id": 19445,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11669:0:82"
                  },
                  "scope": 19773,
                  "src": "11452:1317:82",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 19590,
                    "nodeType": "Block",
                    "src": "13602:502:82",
                    "statements": [
                      {
                        "assignments": [
                          19553
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19553,
                            "mutability": "mutable",
                            "name": "underlyingBalance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 19590,
                            "src": "13608:25:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19552,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13608:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19562,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19559,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "13676:3:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 19560,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13676:10:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19555,
                                    "name": "reserve",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19531,
                                    "src": "13643:7:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                      "typeString": "struct DataTypes.ReserveData storage pointer"
                                    }
                                  },
                                  "id": 19556,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "aTokenAddress",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20511,
                                  "src": "13643:21:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 19554,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "13636:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 19557,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13636:29:82",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 19558,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3951,
                            "src": "13636:39:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 19561,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13636:51:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13608:79:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 19566,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 19564,
                                "name": "underlyingBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19553,
                                "src": "13702:17:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 19565,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13722:1:82",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "13702:21:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19567,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "13725:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 19568,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "VL_UNDERLYING_BALANCE_NOT_GREATER_THAN_0",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17050,
                              "src": "13725:47:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 19563,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "13694:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13694:79:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19570,
                        "nodeType": "ExpressionStatement",
                        "src": "13694:79:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 19585,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 19572,
                                "name": "useAsCollateral",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19535,
                                "src": "13795:15:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 19575,
                                    "name": "reserveAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19533,
                                    "src": "13869:14:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19576,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "13895:3:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 19577,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "13895:10:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 19578,
                                    "name": "underlyingBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19553,
                                    "src": "13917:17:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 19579,
                                    "name": "reservesData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19539,
                                    "src": "13946:12:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                      "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 19580,
                                    "name": "userConfig",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19541,
                                    "src": "13970:10:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                      "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 19581,
                                    "name": "reserves",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19545,
                                    "src": "13992:8:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                      "typeString": "mapping(uint256 => address)"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 19582,
                                    "name": "reservesCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19547,
                                    "src": "14012:13:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 19583,
                                    "name": "oracle",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19549,
                                    "src": "14037:6:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                      "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                      "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                                    },
                                    {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                      "typeString": "mapping(uint256 => address)"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19573,
                                    "name": "GenericLogic",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17987,
                                    "src": "13822:12:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_GenericLogic_$17987_$",
                                      "typeString": "type(library GenericLogic)"
                                    }
                                  },
                                  "id": 19574,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceDecreaseAllowed",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 17565,
                                  "src": "13822:35:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_delegatecall_view$_t_address_$_t_address_$_t_uint256_$_t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$_$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$_t_mapping$_t_uint256_$_t_address_$_$_t_uint256_$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address,address,uint256,mapping(address => struct DataTypes.ReserveData storage ref),struct DataTypes.UserConfigurationMap memory,mapping(uint256 => address),uint256,address) view returns (bool)"
                                  }
                                },
                                "id": 19584,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13822:231:82",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "13795:258:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19586,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "14061:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 19587,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "VL_DEPOSIT_ALREADY_IN_USE",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17053,
                              "src": "14061:32:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 19571,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "13780:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19588,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13780:319:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19589,
                        "nodeType": "ExpressionStatement",
                        "src": "13780:319:82"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19529,
                    "nodeType": "StructuredDocumentation",
                    "src": "12773:448:82",
                    "text": " @dev Validates the action of setting an asset as collateral\n @param reserve The state of the reserve that the user is enabling or disabling as collateral\n @param reserveAddress The address of the reserve\n @param reservesData The data of all the reserves\n @param userConfig The state of the user for the specific reserve\n @param reserves The addresses of all the active reserves\n @param oracle The price oracle"
                  },
                  "functionSelector": "5fa297e5",
                  "id": 19591,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "validateSetUseReserveAsCollateral",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 19550,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19531,
                        "mutability": "mutable",
                        "name": "reserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19591,
                        "src": "13272:37:82",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                          "typeString": "struct DataTypes.ReserveData"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 19530,
                          "name": "DataTypes.ReserveData",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20520,
                          "src": "13272:21:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                            "typeString": "struct DataTypes.ReserveData"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19533,
                        "mutability": "mutable",
                        "name": "reserveAddress",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19591,
                        "src": "13315:22:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19532,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13315:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19535,
                        "mutability": "mutable",
                        "name": "useAsCollateral",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19591,
                        "src": "13343:20:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 19534,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13343:4:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19539,
                        "mutability": "mutable",
                        "name": "reservesData",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19591,
                        "src": "13369:62:82",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                          "typeString": "mapping(address => struct DataTypes.ReserveData)"
                        },
                        "typeName": {
                          "id": 19538,
                          "keyType": {
                            "id": 19536,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "13377:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Mapping",
                          "src": "13369:41:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                            "typeString": "mapping(address => struct DataTypes.ReserveData)"
                          },
                          "valueType": {
                            "contractScope": null,
                            "id": 19537,
                            "name": "DataTypes.ReserveData",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 20520,
                            "src": "13388:21:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                              "typeString": "struct DataTypes.ReserveData"
                            }
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19541,
                        "mutability": "mutable",
                        "name": "userConfig",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19591,
                        "src": "13437:49:82",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                          "typeString": "struct DataTypes.UserConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 19540,
                          "name": "DataTypes.UserConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20526,
                          "src": "13437:30:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                            "typeString": "struct DataTypes.UserConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19545,
                        "mutability": "mutable",
                        "name": "reserves",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19591,
                        "src": "13492:44:82",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        },
                        "typeName": {
                          "id": 19544,
                          "keyType": {
                            "id": 19542,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "13500:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Mapping",
                          "src": "13492:27:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                            "typeString": "mapping(uint256 => address)"
                          },
                          "valueType": {
                            "id": 19543,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "13511:7:82",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19547,
                        "mutability": "mutable",
                        "name": "reservesCount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19591,
                        "src": "13542:21:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19546,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13542:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19549,
                        "mutability": "mutable",
                        "name": "oracle",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19591,
                        "src": "13569:14:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19548,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13569:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13266:321:82"
                  },
                  "returnParameters": {
                    "id": 19551,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13602:0:82"
                  },
                  "scope": 19773,
                  "src": "13224:880:82",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 19611,
                    "nodeType": "Block",
                    "src": "14364:92:82",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 19606,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19602,
                                  "name": "assets",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19595,
                                  "src": "14378:6:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 19603,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "14378:13:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19604,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19598,
                                  "src": "14395:7:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 19605,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "14395:14:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "14378:31:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19607,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "14411:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 19608,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "VL_INCONSISTENT_FLASHLOAN_PARAMS",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17212,
                              "src": "14411:39:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 19601,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14370:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19609,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14370:81:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19610,
                        "nodeType": "ExpressionStatement",
                        "src": "14370:81:82"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19592,
                    "nodeType": "StructuredDocumentation",
                    "src": "14108:161:82",
                    "text": " @dev Validates a flashloan action\n @param assets The assets being flashborrowed\n @param amounts The amounts for each asset being borrowed*"
                  },
                  "id": 19612,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "validateFlashloan",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 19599,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19595,
                        "mutability": "mutable",
                        "name": "assets",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19612,
                        "src": "14299:23:82",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 19593,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "14299:7:82",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 19594,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "14299:9:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19598,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19612,
                        "src": "14324:24:82",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 19596,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "14324:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 19597,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "14324:9:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14298:51:82"
                  },
                  "returnParameters": {
                    "id": 19600,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14364:0:82"
                  },
                  "scope": 19773,
                  "src": "14272:184:82",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 19729,
                    "nodeType": "Block",
                    "src": "15210:1245:82",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 19642,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 19636,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "15227:44:82",
                            "subExpression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19632,
                                    "name": "collateralReserve",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19615,
                                    "src": "15228:17:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                      "typeString": "struct DataTypes.ReserveData storage pointer"
                                    }
                                  },
                                  "id": 19633,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "configuration",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20497,
                                  "src": "15228:31:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage",
                                    "typeString": "struct DataTypes.ReserveConfigurationMap storage ref"
                                  }
                                },
                                "id": 19634,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getActive",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 16335,
                                "src": "15228:41:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$returns$_t_bool_$bound_to$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$",
                                  "typeString": "function (struct DataTypes.ReserveConfigurationMap storage pointer) view returns (bool)"
                                }
                              },
                              "id": 19635,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15228:43:82",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 19641,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "15275:43:82",
                            "subExpression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19637,
                                    "name": "principalReserve",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19617,
                                    "src": "15276:16:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                      "typeString": "struct DataTypes.ReserveData storage pointer"
                                    }
                                  },
                                  "id": 19638,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "configuration",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20497,
                                  "src": "15276:30:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage",
                                    "typeString": "struct DataTypes.ReserveConfigurationMap storage ref"
                                  }
                                },
                                "id": 19639,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getActive",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 16335,
                                "src": "15276:40:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$returns$_t_bool_$bound_to$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$",
                                  "typeString": "function (struct DataTypes.ReserveConfigurationMap storage pointer) view returns (bool)"
                                }
                              },
                              "id": 19640,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15276:42:82",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "15227:91:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 19654,
                        "nodeType": "IfStatement",
                        "src": "15216:243:82",
                        "trueBody": {
                          "id": 19653,
                          "nodeType": "Block",
                          "src": "15325:134:82",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19645,
                                            "name": "Errors",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17239,
                                            "src": "15358:6:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                              "typeString": "type(library Errors)"
                                            }
                                          },
                                          "id": 19646,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "CollateralManagerErrors",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17238,
                                          "src": "15358:30:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_CollateralManagerErrors_$17238_$",
                                            "typeString": "type(enum Errors.CollateralManagerErrors)"
                                          }
                                        },
                                        "id": 19647,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "NO_ACTIVE_RESERVE",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "15358:48:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_CollateralManagerErrors_$17238",
                                          "typeString": "enum Errors.CollateralManagerErrors"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_enum$_CollateralManagerErrors_$17238",
                                          "typeString": "enum Errors.CollateralManagerErrors"
                                        }
                                      ],
                                      "id": 19644,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "15350:7:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 19643,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "15350:7:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 19648,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15350:57:82",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19649,
                                      "name": "Errors",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17239,
                                      "src": "15417:6:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                        "typeString": "type(library Errors)"
                                      }
                                    },
                                    "id": 19650,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "VL_NO_ACTIVE_RESERVE",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 16999,
                                    "src": "15417:27:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "id": 19651,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "15340:112:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_string_memory_ptr_$",
                                  "typeString": "tuple(uint256,string memory)"
                                }
                              },
                              "functionReturnParameters": 19631,
                              "id": 19652,
                              "nodeType": "Return",
                              "src": "15333:119:82"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19658,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 19655,
                            "name": "userHealthFactor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19621,
                            "src": "15469:16:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 19656,
                              "name": "GenericLogic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17987,
                              "src": "15489:12:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_GenericLogic_$17987_$",
                                "typeString": "type(library GenericLogic)"
                              }
                            },
                            "id": 19657,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "HEALTH_FACTOR_LIQUIDATION_THRESHOLD",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17371,
                            "src": "15489:48:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15469:68:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 19670,
                        "nodeType": "IfStatement",
                        "src": "15465:238:82",
                        "trueBody": {
                          "id": 19669,
                          "nodeType": "Block",
                          "src": "15539:164:82",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19661,
                                            "name": "Errors",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17239,
                                            "src": "15572:6:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                              "typeString": "type(library Errors)"
                                            }
                                          },
                                          "id": 19662,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "CollateralManagerErrors",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17238,
                                          "src": "15572:30:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_CollateralManagerErrors_$17238_$",
                                            "typeString": "type(enum Errors.CollateralManagerErrors)"
                                          }
                                        },
                                        "id": 19663,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "HEALTH_FACTOR_ABOVE_THRESHOLD",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "15572:60:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_CollateralManagerErrors_$17238",
                                          "typeString": "enum Errors.CollateralManagerErrors"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_enum$_CollateralManagerErrors_$17238",
                                          "typeString": "enum Errors.CollateralManagerErrors"
                                        }
                                      ],
                                      "id": 19660,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "15564:7:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 19659,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "15564:7:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 19664,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15564:69:82",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19665,
                                      "name": "Errors",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17239,
                                      "src": "15643:6:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                        "typeString": "type(library Errors)"
                                      }
                                    },
                                    "id": 19666,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "LPCM_HEALTH_FACTOR_NOT_BELOW_THRESHOLD",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17122,
                                    "src": "15643:45:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "id": 19667,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "15554:142:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_string_memory_ptr_$",
                                  "typeString": "tuple(uint256,string memory)"
                                }
                              },
                              "functionReturnParameters": 19631,
                              "id": 19668,
                              "nodeType": "Return",
                              "src": "15547:149:82"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          19672
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19672,
                            "mutability": "mutable",
                            "name": "isCollateralEnabled",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 19729,
                            "src": "15709:24:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 19671,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "15709:4:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19685,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 19684,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 19678,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19673,
                                    "name": "collateralReserve",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19615,
                                    "src": "15742:17:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                      "typeString": "struct DataTypes.ReserveData storage pointer"
                                    }
                                  },
                                  "id": 19674,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "configuration",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20497,
                                  "src": "15742:31:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage",
                                    "typeString": "struct DataTypes.ReserveConfigurationMap storage ref"
                                  }
                                },
                                "id": 19675,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getLiquidationThreshold",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 16187,
                                "src": "15742:55:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_ReserveConfigurationMap_$20523_storage_ptr_$",
                                  "typeString": "function (struct DataTypes.ReserveConfigurationMap storage pointer) view returns (uint256)"
                                }
                              },
                              "id": 19676,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15742:57:82",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 19677,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15802:1:82",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "15742:61:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19681,
                                  "name": "collateralReserve",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19615,
                                  "src": "15846:17:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                                    "typeString": "struct DataTypes.ReserveData storage pointer"
                                  }
                                },
                                "id": 19682,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "id",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20519,
                                "src": "15846:20:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 19679,
                                "name": "userConfig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19619,
                                "src": "15815:10:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                  "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                                }
                              },
                              "id": 19680,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isUsingAsCollateral",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16953,
                              "src": "15815:30:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$",
                                "typeString": "function (struct DataTypes.UserConfigurationMap memory,uint256) pure returns (bool)"
                              }
                            },
                            "id": 19683,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15815:52:82",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "15742:125:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15709:158:82"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 19687,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "15959:20:82",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 19686,
                            "name": "isCollateralEnabled",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19672,
                            "src": "15960:19:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 19699,
                        "nodeType": "IfStatement",
                        "src": "15955:190:82",
                        "trueBody": {
                          "id": 19698,
                          "nodeType": "Block",
                          "src": "15981:164:82",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19690,
                                            "name": "Errors",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17239,
                                            "src": "16014:6:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                              "typeString": "type(library Errors)"
                                            }
                                          },
                                          "id": 19691,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "CollateralManagerErrors",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17238,
                                          "src": "16014:30:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_CollateralManagerErrors_$17238_$",
                                            "typeString": "type(enum Errors.CollateralManagerErrors)"
                                          }
                                        },
                                        "id": 19692,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "COLLATERAL_CANNOT_BE_LIQUIDATED",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "16014:62:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_CollateralManagerErrors_$17238",
                                          "typeString": "enum Errors.CollateralManagerErrors"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_enum$_CollateralManagerErrors_$17238",
                                          "typeString": "enum Errors.CollateralManagerErrors"
                                        }
                                      ],
                                      "id": 19689,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "16006:7:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 19688,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16006:7:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 19693,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "16006:71:82",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19694,
                                      "name": "Errors",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17239,
                                      "src": "16087:6:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                        "typeString": "type(library Errors)"
                                      }
                                    },
                                    "id": 19695,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "LPCM_COLLATERAL_CANNOT_BE_LIQUIDATED",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17125,
                                    "src": "16087:43:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "id": 19696,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "15996:142:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_string_memory_ptr_$",
                                  "typeString": "tuple(uint256,string memory)"
                                }
                              },
                              "functionReturnParameters": 19631,
                              "id": 19697,
                              "nodeType": "Return",
                              "src": "15989:149:82"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 19706,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 19702,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 19700,
                              "name": "userStableDebt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19623,
                              "src": "16155:14:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 19701,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16173:1:82",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "16155:19:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 19705,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 19703,
                              "name": "userVariableDebt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19625,
                              "src": "16178:16:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 19704,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16198:1:82",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "16178:21:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "16155:44:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 19718,
                        "nodeType": "IfStatement",
                        "src": "16151:213:82",
                        "trueBody": {
                          "id": 19717,
                          "nodeType": "Block",
                          "src": "16201:163:82",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 19709,
                                            "name": "Errors",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17239,
                                            "src": "16234:6:82",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                              "typeString": "type(library Errors)"
                                            }
                                          },
                                          "id": 19710,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "CollateralManagerErrors",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 17238,
                                          "src": "16234:30:82",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_CollateralManagerErrors_$17238_$",
                                            "typeString": "type(enum Errors.CollateralManagerErrors)"
                                          }
                                        },
                                        "id": 19711,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "CURRRENCY_NOT_BORROWED",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "16234:53:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_CollateralManagerErrors_$17238",
                                          "typeString": "enum Errors.CollateralManagerErrors"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_enum$_CollateralManagerErrors_$17238",
                                          "typeString": "enum Errors.CollateralManagerErrors"
                                        }
                                      ],
                                      "id": 19708,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "16226:7:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 19707,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16226:7:82",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 19712,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "16226:62:82",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19713,
                                      "name": "Errors",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17239,
                                      "src": "16298:6:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                        "typeString": "type(library Errors)"
                                      }
                                    },
                                    "id": 19714,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "LPCM_SPECIFIED_CURRENCY_NOT_BORROWED_BY_USER",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17128,
                                    "src": "16298:51:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "id": 19715,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "16216:141:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_string_memory_ptr_$",
                                  "typeString": "tuple(uint256,string memory)"
                                }
                              },
                              "functionReturnParameters": 19631,
                              "id": 19716,
                              "nodeType": "Return",
                              "src": "16209:148:82"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 19721,
                                      "name": "Errors",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17239,
                                      "src": "16386:6:82",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                        "typeString": "type(library Errors)"
                                      }
                                    },
                                    "id": 19722,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "CollateralManagerErrors",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17238,
                                    "src": "16386:30:82",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_CollateralManagerErrors_$17238_$",
                                      "typeString": "type(enum Errors.CollateralManagerErrors)"
                                    }
                                  },
                                  "id": 19723,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "NO_ERROR",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "16386:39:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_CollateralManagerErrors_$17238",
                                    "typeString": "enum Errors.CollateralManagerErrors"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_CollateralManagerErrors_$17238",
                                    "typeString": "enum Errors.CollateralManagerErrors"
                                  }
                                ],
                                "id": 19720,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "16378:7:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 19719,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "16378:7:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 19724,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16378:48:82",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19725,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "16428:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 19726,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "LPCM_NO_ERRORS",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17134,
                              "src": "16428:21:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "id": 19727,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "16377:73:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_string_memory_ptr_$",
                            "typeString": "tuple(uint256,string memory)"
                          }
                        },
                        "functionReturnParameters": 19631,
                        "id": 19728,
                        "nodeType": "Return",
                        "src": "16370:80:82"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19613,
                    "nodeType": "StructuredDocumentation",
                    "src": "14460:415:82",
                    "text": " @dev Validates the liquidation action\n @param collateralReserve The reserve data of the collateral\n @param principalReserve The reserve data of the principal\n @param userConfig The user configuration\n @param userHealthFactor The user's health factor\n @param userStableDebt Total stable debt balance of the user\n @param userVariableDebt Total variable debt balance of the user*"
                  },
                  "id": 19730,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "validateLiquidationCall",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 19626,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19615,
                        "mutability": "mutable",
                        "name": "collateralReserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19730,
                        "src": "14916:47:82",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                          "typeString": "struct DataTypes.ReserveData"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 19614,
                          "name": "DataTypes.ReserveData",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20520,
                          "src": "14916:21:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                            "typeString": "struct DataTypes.ReserveData"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19617,
                        "mutability": "mutable",
                        "name": "principalReserve",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19730,
                        "src": "14969:46:82",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                          "typeString": "struct DataTypes.ReserveData"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 19616,
                          "name": "DataTypes.ReserveData",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20520,
                          "src": "14969:21:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                            "typeString": "struct DataTypes.ReserveData"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19619,
                        "mutability": "mutable",
                        "name": "userConfig",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19730,
                        "src": "15021:49:82",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                          "typeString": "struct DataTypes.UserConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 19618,
                          "name": "DataTypes.UserConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20526,
                          "src": "15021:30:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                            "typeString": "struct DataTypes.UserConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19621,
                        "mutability": "mutable",
                        "name": "userHealthFactor",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19730,
                        "src": "15076:24:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19620,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15076:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19623,
                        "mutability": "mutable",
                        "name": "userStableDebt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19730,
                        "src": "15106:22:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19622,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15106:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19625,
                        "mutability": "mutable",
                        "name": "userVariableDebt",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19730,
                        "src": "15134:24:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19624,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15134:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14910:252:82"
                  },
                  "returnParameters": {
                    "id": 19631,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19628,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19730,
                        "src": "15186:7:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19627,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15186:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19630,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19730,
                        "src": "15195:13:82",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 19629,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "15195:6:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15185:24:82"
                  },
                  "scope": 19773,
                  "src": "14878:1577:82",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 19771,
                    "nodeType": "Block",
                    "src": "17086:338:82",
                    "statements": [
                      {
                        "assignments": [
                          null,
                          null,
                          null,
                          null,
                          19751
                        ],
                        "declarations": [
                          null,
                          null,
                          null,
                          null,
                          {
                            "constant": false,
                            "id": 19751,
                            "mutability": "mutable",
                            "name": "healthFactor",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 19771,
                            "src": "17101:20:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19750,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17101:7:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19761,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19754,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19733,
                              "src": "17178:4:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19755,
                              "name": "reservesData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19737,
                              "src": "17192:12:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19756,
                              "name": "userConfig",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19739,
                              "src": "17214:10:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19757,
                              "name": "reserves",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19743,
                              "src": "17234:8:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19758,
                              "name": "reservesCount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19745,
                              "src": "17252:13:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19759,
                              "name": "oracle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19747,
                              "src": "17275:6:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                                "typeString": "mapping(address => struct DataTypes.ReserveData storage ref)"
                              },
                              {
                                "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                                "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                              },
                              {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 19752,
                              "name": "GenericLogic",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17987,
                              "src": "17131:12:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_GenericLogic_$17987_$",
                                "typeString": "type(library GenericLogic)"
                              }
                            },
                            "id": 19753,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "calculateUserAccountData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17918,
                            "src": "17131:37:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$_$_t_struct$_UserConfigurationMap_$20526_memory_ptr_$_t_mapping$_t_uint256_$_t_address_$_$_t_uint256_$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,mapping(address => struct DataTypes.ReserveData storage ref),struct DataTypes.UserConfigurationMap memory,mapping(uint256 => address),uint256,address) view returns (uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "id": 19760,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17131:158:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17092:197:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 19766,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 19763,
                                "name": "healthFactor",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19751,
                                "src": "17311:12:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19764,
                                  "name": "GenericLogic",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17987,
                                  "src": "17327:12:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_GenericLogic_$17987_$",
                                    "typeString": "type(library GenericLogic)"
                                  }
                                },
                                "id": 19765,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "HEALTH_FACTOR_LIQUIDATION_THRESHOLD",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17371,
                                "src": "17327:48:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "17311:64:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19767,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "17383:6:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 19768,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "VL_TRANSFER_NOT_ALLOWED",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17011,
                              "src": "17383:30:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 19762,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "17296:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19769,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17296:123:82",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19770,
                        "nodeType": "ExpressionStatement",
                        "src": "17296:123:82"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19731,
                    "nodeType": "StructuredDocumentation",
                    "src": "16459:342:82",
                    "text": " @dev Validates an aToken transfer\n @param from The user from which the aTokens are being transferred\n @param reservesData The state of all the reserves\n @param userConfig The state of the user for the specific reserve\n @param reserves The addresses of all the active reserves\n @param oracle The price oracle"
                  },
                  "id": 19772,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "validateTransfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 19748,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19733,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19772,
                        "src": "16835:12:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19732,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16835:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19737,
                        "mutability": "mutable",
                        "name": "reservesData",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19772,
                        "src": "16853:62:82",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                          "typeString": "mapping(address => struct DataTypes.ReserveData)"
                        },
                        "typeName": {
                          "id": 19736,
                          "keyType": {
                            "id": 19734,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "16861:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Mapping",
                          "src": "16853:41:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ReserveData_$20520_storage_$",
                            "typeString": "mapping(address => struct DataTypes.ReserveData)"
                          },
                          "valueType": {
                            "contractScope": null,
                            "id": 19735,
                            "name": "DataTypes.ReserveData",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 20520,
                            "src": "16872:21:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReserveData_$20520_storage_ptr",
                              "typeString": "struct DataTypes.ReserveData"
                            }
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19739,
                        "mutability": "mutable",
                        "name": "userConfig",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19772,
                        "src": "16921:49:82",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                          "typeString": "struct DataTypes.UserConfigurationMap"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 19738,
                          "name": "DataTypes.UserConfigurationMap",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 20526,
                          "src": "16921:30:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserConfigurationMap_$20526_storage_ptr",
                            "typeString": "struct DataTypes.UserConfigurationMap"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19743,
                        "mutability": "mutable",
                        "name": "reserves",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19772,
                        "src": "16976:44:82",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        },
                        "typeName": {
                          "id": 19742,
                          "keyType": {
                            "id": 19740,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "16984:7:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Mapping",
                          "src": "16976:27:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                            "typeString": "mapping(uint256 => address)"
                          },
                          "valueType": {
                            "id": 19741,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "16995:7:82",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19745,
                        "mutability": "mutable",
                        "name": "reservesCount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19772,
                        "src": "17026:21:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19744,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17026:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19747,
                        "mutability": "mutable",
                        "name": "oracle",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19772,
                        "src": "17053:14:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19746,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17053:7:82",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16829:242:82"
                  },
                  "returnParameters": {
                    "id": 19749,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17086:0:82"
                  },
                  "scope": 19773,
                  "src": "16804:620:82",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 19774,
              "src": "1089:16337:82"
            }
          ],
          "src": "37:17390:82"
        },
        "id": 82
      },
      "contracts/protocol/libraries/math/MathUtils.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/libraries/math/MathUtils.sol",
          "exportedSymbols": {
            "MathUtils": [
              19955
            ]
          },
          "id": 19956,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 19775,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:83"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeMath.sol",
              "file": "../../../dependencies/openzeppelin/contracts/SafeMath.sol",
              "id": 19777,
              "nodeType": "ImportDirective",
              "scope": 19956,
              "sourceUnit": 4497,
              "src": "62:83:83",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 19776,
                    "name": "SafeMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:8:83",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/math/WadRayMath.sol",
              "file": "./WadRayMath.sol",
              "id": 19779,
              "nodeType": "ImportDirective",
              "scope": 19956,
              "sourceUnit": 20494,
              "src": "146:44:83",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 19778,
                    "name": "WadRayMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "154:10:83",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": null,
              "fullyImplemented": true,
              "id": 19955,
              "linearizedBaseContracts": [
                19955
              ],
              "name": "MathUtils",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 19782,
                  "libraryName": {
                    "contractScope": null,
                    "id": 19780,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4496,
                    "src": "220:8:83",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$4496",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "214:27:83",
                  "typeName": {
                    "id": 19781,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "233:7:83",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 19785,
                  "libraryName": {
                    "contractScope": null,
                    "id": 19783,
                    "name": "WadRayMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20493,
                    "src": "250:10:83",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_WadRayMath_$20493",
                      "typeString": "library WadRayMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "244:29:83",
                  "typeName": {
                    "id": 19784,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "265:7:83",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 19786,
                    "nodeType": "StructuredDocumentation",
                    "src": "277:28:83",
                    "text": "@dev Ignoring leap years"
                  },
                  "id": 19789,
                  "mutability": "constant",
                  "name": "SECONDS_PER_YEAR",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19955,
                  "src": "308:53:83",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19787,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "308:7:83",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "333635",
                    "id": 19788,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "353:8:83",
                    "subdenomination": "days",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_31536000_by_1",
                      "typeString": "int_const 31536000"
                    },
                    "value": "365"
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 19823,
                    "nodeType": "Block",
                    "src": "800:197:83",
                    "statements": [
                      {
                        "assignments": [
                          19800
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19800,
                            "mutability": "mutable",
                            "name": "timeDifference",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 19823,
                            "src": "837:22:83",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19799,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "837:7:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19809,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 19806,
                                  "name": "lastUpdateTimestamp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19794,
                                  "src": "890:19:83",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint40",
                                    "typeString": "uint40"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint40",
                                    "typeString": "uint40"
                                  }
                                ],
                                "id": 19805,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "882:7:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 19804,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "882:7:83",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 19807,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "882:28:83",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19801,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "862:5:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 19802,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "862:15:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 19803,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4346,
                            "src": "862:19:83",
                            "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": 19808,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "862:49:83",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "837:74:83"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 19818,
                                  "name": "WadRayMath",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20493,
                                  "src": "975:10:83",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_WadRayMath_$20493_$",
                                    "typeString": "type(library WadRayMath)"
                                  }
                                },
                                "id": 19819,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "ray",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20207,
                                "src": "975:14:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                  "typeString": "function () pure returns (uint256)"
                                }
                              },
                              "id": 19820,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "975:16:83",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 19815,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 19812,
                                        "name": "timeDifference",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19800,
                                        "src": "935:14:83",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 19810,
                                        "name": "rate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19792,
                                        "src": "926:4:83",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 19811,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4409,
                                      "src": "926:8:83",
                                      "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": 19813,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "926:24:83",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 19814,
                                    "name": "SECONDS_PER_YEAR",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19789,
                                    "src": "953:16:83",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "926:43:83",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 19816,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "925:45:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 19817,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4329,
                            "src": "925:49:83",
                            "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": 19821,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "925:67:83",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 19798,
                        "id": 19822,
                        "nodeType": "Return",
                        "src": "918:74:83"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19790,
                    "nodeType": "StructuredDocumentation",
                    "src": "366:309:83",
                    "text": " @dev Function to calculate the interest accumulated using a linear interest rate formula\n @param rate The interest rate, in ray\n @param lastUpdateTimestamp The timestamp of the last update of the interest\n @return The interest rate linearly accumulated during the timeDelta, in ray*"
                  },
                  "id": 19824,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "calculateLinearInterest",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 19795,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19792,
                        "mutability": "mutable",
                        "name": "rate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19824,
                        "src": "712:12:83",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19791,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "712:7:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19794,
                        "mutability": "mutable",
                        "name": "lastUpdateTimestamp",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19824,
                        "src": "726:26:83",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        },
                        "typeName": {
                          "id": 19793,
                          "name": "uint40",
                          "nodeType": "ElementaryTypeName",
                          "src": "726:6:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "711:42:83"
                  },
                  "returnParameters": {
                    "id": 19798,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19797,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19824,
                        "src": "789:7:83",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19796,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "789:7:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "788:9:83"
                  },
                  "scope": 19955,
                  "src": "679:318:83",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 19935,
                    "nodeType": "Block",
                    "src": "1891:680:83",
                    "statements": [
                      {
                        "assignments": [
                          19837
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19837,
                            "mutability": "mutable",
                            "name": "exp",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 19935,
                            "src": "1928:11:83",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19836,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1928:7:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19845,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 19842,
                                  "name": "lastUpdateTimestamp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19829,
                                  "src": "1971:19:83",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint40",
                                    "typeString": "uint40"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint40",
                                    "typeString": "uint40"
                                  }
                                ],
                                "id": 19841,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1963:7:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 19840,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1963:7:83",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 19843,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1963:28:83",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 19838,
                              "name": "currentTimestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19831,
                              "src": "1942:16:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 19839,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4346,
                            "src": "1942:20:83",
                            "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": 19844,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1942:50:83",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1928:64:83"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19848,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 19846,
                            "name": "exp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19837,
                            "src": "2003:3:83",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 19847,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2010:1:83",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2003:8:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 19854,
                        "nodeType": "IfStatement",
                        "src": "1999:52:83",
                        "trueBody": {
                          "id": 19853,
                          "nodeType": "Block",
                          "src": "2013:38:83",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19849,
                                    "name": "WadRayMath",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20493,
                                    "src": "2028:10:83",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_WadRayMath_$20493_$",
                                      "typeString": "type(library WadRayMath)"
                                    }
                                  },
                                  "id": 19850,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "ray",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20207,
                                  "src": "2028:14:83",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                    "typeString": "function () pure returns (uint256)"
                                  }
                                },
                                "id": 19851,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2028:16:83",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 19835,
                              "id": 19852,
                              "nodeType": "Return",
                              "src": "2021:23:83"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          19856
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19856,
                            "mutability": "mutable",
                            "name": "expMinusOne",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 19935,
                            "src": "2057:19:83",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19855,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2057:7:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19860,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19859,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 19857,
                            "name": "exp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19837,
                            "src": "2079:3:83",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 19858,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2085:1:83",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "2079:7:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2057:29:83"
                      },
                      {
                        "assignments": [
                          19862
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19862,
                            "mutability": "mutable",
                            "name": "expMinusTwo",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 19935,
                            "src": "2093:19:83",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19861,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2093:7:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19871,
                        "initialValue": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 19865,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 19863,
                              "name": "exp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19837,
                              "src": "2115:3:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 19864,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2121:1:83",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "2115:7:83",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 19869,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2135:1:83",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "id": 19870,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "2115:21:83",
                          "trueExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 19868,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 19866,
                              "name": "exp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19837,
                              "src": "2125:3:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 19867,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2131:1:83",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "2125:7:83",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2093:43:83"
                      },
                      {
                        "assignments": [
                          19873
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19873,
                            "mutability": "mutable",
                            "name": "ratePerSecond",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 19935,
                            "src": "2143:21:83",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19872,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2143:7:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19877,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19876,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 19874,
                            "name": "rate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19827,
                            "src": "2167:4:83",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 19875,
                            "name": "SECONDS_PER_YEAR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19789,
                            "src": "2174:16:83",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2167:23:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2143:47:83"
                      },
                      {
                        "assignments": [
                          19879
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19879,
                            "mutability": "mutable",
                            "name": "basePowerTwo",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 19935,
                            "src": "2197:20:83",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19878,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2197:7:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19884,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19882,
                              "name": "ratePerSecond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19873,
                              "src": "2241:13:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 19880,
                              "name": "ratePerSecond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19873,
                              "src": "2220:13:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 19881,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayMul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20381,
                            "src": "2220:20:83",
                            "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": 19883,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2220:35:83",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2197:58:83"
                      },
                      {
                        "assignments": [
                          19886
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19886,
                            "mutability": "mutable",
                            "name": "basePowerThree",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 19935,
                            "src": "2261:22:83",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19885,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2261:7:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19891,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19889,
                              "name": "ratePerSecond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19873,
                              "src": "2306:13:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 19887,
                              "name": "basePowerTwo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19879,
                              "src": "2286:12:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 19888,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayMul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20381,
                            "src": "2286:19:83",
                            "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": 19890,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2286:34:83",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2261:59:83"
                      },
                      {
                        "assignments": [
                          19893
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19893,
                            "mutability": "mutable",
                            "name": "secondTerm",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 19935,
                            "src": "2327:18:83",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19892,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2327:7:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19903,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19902,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 19899,
                                "name": "basePowerTwo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19879,
                                "src": "2373:12:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 19896,
                                    "name": "expMinusOne",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19856,
                                    "src": "2356:11:83",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 19894,
                                    "name": "exp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19837,
                                    "src": "2348:3:83",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 19895,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4409,
                                  "src": "2348:7:83",
                                  "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": 19897,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2348:20:83",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19898,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4409,
                              "src": "2348:24:83",
                              "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": 19900,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2348:38:83",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 19901,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2389:1:83",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "2348:42:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2327:63:83"
                      },
                      {
                        "assignments": [
                          19905
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19905,
                            "mutability": "mutable",
                            "name": "thirdTerm",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 19935,
                            "src": "2396:17:83",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19904,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2396:7:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 19918,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 19914,
                                "name": "basePowerThree",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19886,
                                "src": "2458:14:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 19911,
                                    "name": "expMinusTwo",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19862,
                                    "src": "2441:11:83",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 19908,
                                        "name": "expMinusOne",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19856,
                                        "src": "2424:11:83",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 19906,
                                        "name": "exp",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19837,
                                        "src": "2416:3:83",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 19907,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4409,
                                      "src": "2416:7:83",
                                      "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": 19909,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2416:20:83",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 19910,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4409,
                                  "src": "2416:24:83",
                                  "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": 19912,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2416:37:83",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19913,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4409,
                              "src": "2416:41:83",
                              "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": 19915,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2416:57:83",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "36",
                            "id": 19916,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2476:1:83",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_6_by_1",
                              "typeString": "int_const 6"
                            },
                            "value": "6"
                          },
                          "src": "2416:61:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2396:81:83"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19932,
                              "name": "thirdTerm",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19905,
                              "src": "2556:9:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 19929,
                                  "name": "secondTerm",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19893,
                                  "src": "2540:10:83",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 19925,
                                          "name": "exp",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19837,
                                          "src": "2530:3:83",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 19923,
                                          "name": "ratePerSecond",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19873,
                                          "src": "2512:13:83",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 19924,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4409,
                                        "src": "2512:17:83",
                                        "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": 19926,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2512:22:83",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 19919,
                                          "name": "WadRayMath",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20493,
                                          "src": "2491:10:83",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_WadRayMath_$20493_$",
                                            "typeString": "type(library WadRayMath)"
                                          }
                                        },
                                        "id": 19920,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "ray",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 20207,
                                        "src": "2491:14:83",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                          "typeString": "function () pure returns (uint256)"
                                        }
                                      },
                                      "id": 19921,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2491:16:83",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 19922,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4329,
                                    "src": "2491:20:83",
                                    "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": 19927,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2491:44:83",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 19928,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4329,
                                "src": "2491:48:83",
                                "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": 19930,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2491:60:83",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 19931,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4329,
                            "src": "2491:64:83",
                            "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": 19933,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2491:75:83",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 19835,
                        "id": 19934,
                        "nodeType": "Return",
                        "src": "2484:82:83"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19825,
                    "nodeType": "StructuredDocumentation",
                    "src": "1001:734:83",
                    "text": " @dev Function to calculate the interest using a compounded interest rate formula\n To avoid expensive exponentiation, the calculation is performed using a binomial approximation:\n  (1+x)^n = 1+n*x+[n/2*(n-1)]*x^2+[n/6*(n-1)*(n-2)*x^3...\n The approximation slightly underpays liquidity providers and undercharges borrowers, with the advantage of great gas cost reductions\n The whitepaper contains reference to the approximation and a table showing the margin of error per different time periods\n @param rate The interest rate, in ray\n @param lastUpdateTimestamp The timestamp of the last update of the interest\n @return The interest rate compounded during the timeDelta, in ray*"
                  },
                  "id": 19936,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "calculateCompoundedInterest",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 19832,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19827,
                        "mutability": "mutable",
                        "name": "rate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19936,
                        "src": "1780:12:83",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19826,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1780:7:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19829,
                        "mutability": "mutable",
                        "name": "lastUpdateTimestamp",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19936,
                        "src": "1798:26:83",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        },
                        "typeName": {
                          "id": 19828,
                          "name": "uint40",
                          "nodeType": "ElementaryTypeName",
                          "src": "1798:6:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19831,
                        "mutability": "mutable",
                        "name": "currentTimestamp",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19936,
                        "src": "1830:24:83",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19830,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1830:7:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1774:84:83"
                  },
                  "returnParameters": {
                    "id": 19835,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19834,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19936,
                        "src": "1882:7:83",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19833,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1882:7:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1881:9:83"
                  },
                  "scope": 19955,
                  "src": "1738:833:83",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 19953,
                    "nodeType": "Block",
                    "src": "2981:89:83",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 19947,
                              "name": "rate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19939,
                              "src": "3022:4:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 19948,
                              "name": "lastUpdateTimestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19941,
                              "src": "3028:19:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint40",
                                "typeString": "uint40"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 19949,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "3049:5:83",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 19950,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3049:15:83",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint40",
                                "typeString": "uint40"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19946,
                            "name": "calculateCompoundedInterest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              19936,
                              19954
                            ],
                            "referencedDeclaration": 19936,
                            "src": "2994:27:83",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint40_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint40,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 19951,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2994:71:83",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 19945,
                        "id": 19952,
                        "nodeType": "Return",
                        "src": "2987:78:83"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19937,
                    "nodeType": "StructuredDocumentation",
                    "src": "2575:278:83",
                    "text": " @dev Calculates the compounded interest between the timestamp of the last update and the current block timestamp\n @param rate The interest rate (in ray)\n @param lastUpdateTimestamp The timestamp from which the interest accumulation needs to be calculated*"
                  },
                  "id": 19954,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "calculateCompoundedInterest",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 19942,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19939,
                        "mutability": "mutable",
                        "name": "rate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19954,
                        "src": "2893:12:83",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19938,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2893:7:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19941,
                        "mutability": "mutable",
                        "name": "lastUpdateTimestamp",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19954,
                        "src": "2907:26:83",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        },
                        "typeName": {
                          "id": 19940,
                          "name": "uint40",
                          "nodeType": "ElementaryTypeName",
                          "src": "2907:6:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2892:42:83"
                  },
                  "returnParameters": {
                    "id": 19945,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19944,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 19954,
                        "src": "2970:7:83",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19943,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2970:7:83",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2969:9:83"
                  },
                  "scope": 19955,
                  "src": "2856:214:83",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 19956,
              "src": "192:2880:83"
            }
          ],
          "src": "37:3036:83"
        },
        "id": 83
      },
      "contracts/protocol/libraries/math/PercentageMath.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/libraries/math/PercentageMath.sol",
          "exportedSymbols": {
            "PercentageMath": [
              20068
            ]
          },
          "id": 20069,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 19957,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:84"
            },
            {
              "absolutePath": "contracts/protocol/libraries/helpers/Errors.sol",
              "file": "../helpers/Errors.sol",
              "id": 19959,
              "nodeType": "ImportDirective",
              "scope": 20069,
              "sourceUnit": 17240,
              "src": "62:45:84",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 19958,
                    "name": "Errors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:6:84",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 19960,
                "nodeType": "StructuredDocumentation",
                "src": "109:291:84",
                "text": " @title PercentageMath library\n @author Aave\n @notice Provides functions to perform percentage calculations\n @dev Percentages are defined by default with 2 decimals of precision (100.00). The precision is indicated by PERCENTAGE_FACTOR\n @dev Operations are rounded half up*"
              },
              "fullyImplemented": true,
              "id": 20068,
              "linearizedBaseContracts": [
                20068
              ],
              "name": "PercentageMath",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 19963,
                  "mutability": "constant",
                  "name": "PERCENTAGE_FACTOR",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 20068,
                  "src": "429:40:84",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19961,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "429:7:84",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "316534",
                    "id": 19962,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "466:3:84",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_10000_by_1",
                      "typeString": "int_const 10000"
                    },
                    "value": "1e4"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 19968,
                  "mutability": "constant",
                  "name": "HALF_PERCENT",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 20068,
                  "src": "504:53:84",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19964,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "504:7:84",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 19967,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 19965,
                      "name": "PERCENTAGE_FACTOR",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19963,
                      "src": "536:17:84",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "32",
                      "id": 19966,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "556:1:84",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2_by_1",
                        "typeString": "int_const 2"
                      },
                      "value": "2"
                    },
                    "src": "536:21:84",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20015,
                    "nodeType": "Block",
                    "src": "889:264:84",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 19984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 19980,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 19978,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19971,
                              "src": "899:5:84",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 19979,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "908:1:84",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "899:10:84",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 19983,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 19981,
                              "name": "percentage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19973,
                              "src": "913:10:84",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 19982,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "927:1:84",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "913:15:84",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "899:29:84",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 19988,
                        "nodeType": "IfStatement",
                        "src": "895:58:84",
                        "trueBody": {
                          "id": 19987,
                          "nodeType": "Block",
                          "src": "930:23:84",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 19985,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "945:1:84",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 19977,
                              "id": 19986,
                              "nodeType": "Return",
                              "src": "938:8:84"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 20001,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 19990,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19971,
                                "src": "974:5:84",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20000,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 19997,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 19993,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "989:7:84",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 19992,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "989:7:84",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              }
                                            ],
                                            "id": 19991,
                                            "name": "type",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -27,
                                            "src": "984:4:84",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                              "typeString": "function () pure"
                                            }
                                          },
                                          "id": 19994,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "984:13:84",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_meta_type_t_uint256",
                                            "typeString": "type(uint256)"
                                          }
                                        },
                                        "id": 19995,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "max",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "984:17:84",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 19996,
                                        "name": "HALF_PERCENT",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19968,
                                        "src": "1004:12:84",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "984:32:84",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 19998,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "983:34:84",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 19999,
                                  "name": "percentage",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19973,
                                  "src": "1020:10:84",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "983:47:84",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "974:56:84",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20002,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "1038:6:84",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 20003,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "MATH_MULTIPLICATION_OVERFLOW",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17140,
                              "src": "1038:35:84",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 19989,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "959:7:84",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20004,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "959:120:84",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20005,
                        "nodeType": "ExpressionStatement",
                        "src": "959:120:84"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20013,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20010,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20008,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 20006,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19971,
                                    "src": "1094:5:84",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 20007,
                                    "name": "percentage",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19973,
                                    "src": "1102:10:84",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1094:18:84",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 20009,
                                  "name": "HALF_PERCENT",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19968,
                                  "src": "1115:12:84",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1094:33:84",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 20011,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1093:35:84",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 20012,
                            "name": "PERCENTAGE_FACTOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19963,
                            "src": "1131:17:84",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1093:55:84",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 19977,
                        "id": 20014,
                        "nodeType": "Return",
                        "src": "1086:62:84"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19969,
                    "nodeType": "StructuredDocumentation",
                    "src": "562:237:84",
                    "text": " @dev Executes a percentage multiplication\n @param value The value of which the percentage needs to be calculated\n @param percentage The percentage of the value to be calculated\n @return The percentage of value*"
                  },
                  "id": 20016,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "percentMul",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 19974,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19971,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20016,
                        "src": "822:13:84",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19970,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "822:7:84",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19973,
                        "mutability": "mutable",
                        "name": "percentage",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20016,
                        "src": "837:18:84",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19972,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "837:7:84",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "821:35:84"
                  },
                  "returnParameters": {
                    "id": 19977,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19976,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20016,
                        "src": "880:7:84",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19975,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "880:7:84",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "879:9:84"
                  },
                  "scope": 20068,
                  "src": "802:351:84",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20066,
                    "nodeType": "Block",
                    "src": "1487:317:84",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 20029,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 20027,
                                "name": "percentage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20021,
                                "src": "1501:10:84",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 20028,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1515:1:84",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1501:15:84",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20030,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "1518:6:84",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 20031,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "MATH_DIVISION_BY_ZERO",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17146,
                              "src": "1518:28:84",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 20026,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1493:7:84",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20032,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1493:54:84",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20033,
                        "nodeType": "ExpressionStatement",
                        "src": "1493:54:84"
                      },
                      {
                        "assignments": [
                          20035
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20035,
                            "mutability": "mutable",
                            "name": "halfPercentage",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 20066,
                            "src": "1553:22:84",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20034,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1553:7:84",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 20039,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20038,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 20036,
                            "name": "percentage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20021,
                            "src": "1578:10:84",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 20037,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1591:1:84",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "1578:14:84",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1553:39:84"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 20052,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 20041,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20019,
                                "src": "1614:5:84",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20051,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 20048,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 20044,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "1629:7:84",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 20043,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1629:7:84",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              }
                                            ],
                                            "id": 20042,
                                            "name": "type",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -27,
                                            "src": "1624:4:84",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                              "typeString": "function () pure"
                                            }
                                          },
                                          "id": 20045,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1624:13:84",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_meta_type_t_uint256",
                                            "typeString": "type(uint256)"
                                          }
                                        },
                                        "id": 20046,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "max",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "1624:17:84",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 20047,
                                        "name": "halfPercentage",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20035,
                                        "src": "1644:14:84",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "1624:34:84",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 20049,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "1623:36:84",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 20050,
                                  "name": "PERCENTAGE_FACTOR",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19963,
                                  "src": "1662:17:84",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1623:56:84",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1614:65:84",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20053,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "1687:6:84",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 20054,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "MATH_MULTIPLICATION_OVERFLOW",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17140,
                              "src": "1687:35:84",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 20040,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1599:7:84",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20055,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1599:129:84",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20056,
                        "nodeType": "ExpressionStatement",
                        "src": "1599:129:84"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20064,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20061,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20059,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 20057,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20019,
                                    "src": "1743:5:84",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 20058,
                                    "name": "PERCENTAGE_FACTOR",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19963,
                                    "src": "1751:17:84",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1743:25:84",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 20060,
                                  "name": "halfPercentage",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20035,
                                  "src": "1771:14:84",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1743:42:84",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 20062,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1742:44:84",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 20063,
                            "name": "percentage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20021,
                            "src": "1789:10:84",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1742:57:84",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 20025,
                        "id": 20065,
                        "nodeType": "Return",
                        "src": "1735:64:84"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 20017,
                    "nodeType": "StructuredDocumentation",
                    "src": "1157:240:84",
                    "text": " @dev Executes a percentage division\n @param value The value of which the percentage needs to be calculated\n @param percentage The percentage of the value to be calculated\n @return The value divided the percentage*"
                  },
                  "id": 20067,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "percentDiv",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 20022,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20019,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20067,
                        "src": "1420:13:84",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20018,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1420:7:84",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20021,
                        "mutability": "mutable",
                        "name": "percentage",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20067,
                        "src": "1435:18:84",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20020,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1435:7:84",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1419:35:84"
                  },
                  "returnParameters": {
                    "id": 20025,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20024,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20067,
                        "src": "1478:7:84",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20023,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1478:7:84",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1477:9:84"
                  },
                  "scope": 20068,
                  "src": "1400:404:84",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 20069,
              "src": "402:1404:84"
            }
          ],
          "src": "37:1770:84"
        },
        "id": 84
      },
      "contracts/protocol/libraries/math/RayMathNoRounding.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/libraries/math/RayMathNoRounding.sol",
          "exportedSymbols": {
            "RayMathNoRounding": [
              20174
            ]
          },
          "id": 20175,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 20070,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:85"
            },
            {
              "id": 20071,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "61:33:85"
            },
            {
              "absolutePath": "contracts/protocol/libraries/helpers/Errors.sol",
              "file": "../helpers/Errors.sol",
              "id": 20073,
              "nodeType": "ImportDirective",
              "scope": 20175,
              "sourceUnit": 17240,
              "src": "96:45:85",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 20072,
                    "name": "Errors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "104:6:85",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": null,
              "fullyImplemented": true,
              "id": 20174,
              "linearizedBaseContracts": [
                20174
              ],
              "name": "RayMathNoRounding",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 20076,
                  "mutability": "constant",
                  "name": "RAY",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 20174,
                  "src": "173:36:85",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20074,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "173:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "31653237",
                    "id": 20075,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "205:4:85",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000000000000"
                    },
                    "value": "1e27"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 20079,
                  "mutability": "constant",
                  "name": "WAD_RAY_RATIO",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 20174,
                  "src": "213:45:85",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20077,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "213:7:85",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "316539",
                    "id": 20078,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "255:3:85",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000_by_1",
                      "typeString": "int_const 1000000000"
                    },
                    "value": "1e9"
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20120,
                    "nodeType": "Block",
                    "src": "343:159:85",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 20094,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 20090,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 20088,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20081,
                              "src": "353:1:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 20089,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "358:1:85",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "353:6:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 20093,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 20091,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20083,
                              "src": "363:1:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 20092,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "368:1:85",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "363:6:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "353:16:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 20098,
                        "nodeType": "IfStatement",
                        "src": "349:45:85",
                        "trueBody": {
                          "id": 20097,
                          "nodeType": "Block",
                          "src": "371:23:85",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 20095,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "386:1:85",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 20087,
                              "id": 20096,
                              "nodeType": "Return",
                              "src": "379:8:85"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 20108,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 20100,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20081,
                                "src": "407:1:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20107,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 20103,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "417:7:85",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 20102,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "417:7:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        }
                                      ],
                                      "id": 20101,
                                      "name": "type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -27,
                                      "src": "412:4:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 20104,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "412:13:85",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_meta_type_t_uint256",
                                      "typeString": "type(uint256)"
                                    }
                                  },
                                  "id": 20105,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "max",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "412:17:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 20106,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20083,
                                  "src": "432:1:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "412:21:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "407:26:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20109,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "435:6:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 20110,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "MATH_MULTIPLICATION_OVERFLOW",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17140,
                              "src": "435:35:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 20099,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "399:7:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20111,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "399:72:85",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20112,
                        "nodeType": "ExpressionStatement",
                        "src": "399:72:85"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20118,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20115,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 20113,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20081,
                                  "src": "485:1:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 20114,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20083,
                                  "src": "489:1:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "485:5:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 20116,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "484:7:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 20117,
                            "name": "RAY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20076,
                            "src": "494:3:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "484:13:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 20087,
                        "id": 20119,
                        "nodeType": "Return",
                        "src": "477:20:85"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 20121,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "rayMulNoRounding",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 20084,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20081,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20121,
                        "src": "289:9:85",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20080,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "289:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20083,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20121,
                        "src": "300:9:85",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20082,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "300:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "288:22:85"
                  },
                  "returnParameters": {
                    "id": 20087,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20086,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20121,
                        "src": "334:7:85",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20085,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "334:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "333:9:85"
                  },
                  "scope": 20174,
                  "src": "263:239:85",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20160,
                    "nodeType": "Block",
                    "src": "586:164:85",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 20133,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 20131,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20125,
                                "src": "600:1:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 20132,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "605:1:85",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "600:6:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20134,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "608:6:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 20135,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "MATH_DIVISION_BY_ZERO",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17146,
                              "src": "608:28:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 20130,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "592:7:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20136,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "592:45:85",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20137,
                        "nodeType": "ExpressionStatement",
                        "src": "592:45:85"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 20148,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 20139,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20123,
                                "src": "651:1:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20147,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 20142,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "662:7:85",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint256_$",
                                              "typeString": "type(uint256)"
                                            },
                                            "typeName": {
                                              "id": 20141,
                                              "name": "uint256",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "662:7:85",
                                              "typeDescriptions": {
                                                "typeIdentifier": null,
                                                "typeString": null
                                              }
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_type$_t_uint256_$",
                                              "typeString": "type(uint256)"
                                            }
                                          ],
                                          "id": 20140,
                                          "name": "type",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -27,
                                          "src": "657:4:85",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                            "typeString": "function () pure"
                                          }
                                        },
                                        "id": 20143,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "657:13:85",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_meta_type_t_uint256",
                                          "typeString": "type(uint256)"
                                        }
                                      },
                                      "id": 20144,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "max",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "657:17:85",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 20145,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "656:19:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 20146,
                                  "name": "RAY",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20076,
                                  "src": "678:3:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "656:25:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "651:30:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20149,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "683:6:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 20150,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "MATH_MULTIPLICATION_OVERFLOW",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17140,
                              "src": "683:35:85",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 20138,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "643:7:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20151,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "643:76:85",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20152,
                        "nodeType": "ExpressionStatement",
                        "src": "643:76:85"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20155,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 20153,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20123,
                                  "src": "733:1:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 20154,
                                  "name": "RAY",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20076,
                                  "src": "737:3:85",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "733:7:85",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 20156,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "732:9:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 20157,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20125,
                            "src": "744:1:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "732:13:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 20129,
                        "id": 20159,
                        "nodeType": "Return",
                        "src": "725:20:85"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 20161,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "rayDivNoRounding",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 20126,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20123,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20161,
                        "src": "532:9:85",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20122,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "532:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20125,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20161,
                        "src": "543:9:85",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20124,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "543:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "531:22:85"
                  },
                  "returnParameters": {
                    "id": 20129,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20128,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20161,
                        "src": "577:7:85",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20127,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "577:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "576:9:85"
                  },
                  "scope": 20174,
                  "src": "506:244:85",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20172,
                    "nodeType": "Block",
                    "src": "825:35:85",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20170,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 20168,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20163,
                            "src": "838:1:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 20169,
                            "name": "WAD_RAY_RATIO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20079,
                            "src": "842:13:85",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "838:17:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 20167,
                        "id": 20171,
                        "nodeType": "Return",
                        "src": "831:24:85"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 20173,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "rayToWadNoRounding",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 20164,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20163,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20173,
                        "src": "782:9:85",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20162,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "782:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "781:11:85"
                  },
                  "returnParameters": {
                    "id": 20167,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20166,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20173,
                        "src": "816:7:85",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20165,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "816:7:85",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "815:9:85"
                  },
                  "scope": 20174,
                  "src": "754:106:85",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 20175,
              "src": "143:719:85"
            }
          ],
          "src": "37:826:85"
        },
        "id": 85
      },
      "contracts/protocol/libraries/math/WadRayMath.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/libraries/math/WadRayMath.sol",
          "exportedSymbols": {
            "WadRayMath": [
              20493
            ]
          },
          "id": 20494,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 20176,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:86"
            },
            {
              "absolutePath": "contracts/protocol/libraries/helpers/Errors.sol",
              "file": "../helpers/Errors.sol",
              "id": 20178,
              "nodeType": "ImportDirective",
              "scope": 20494,
              "sourceUnit": 17240,
              "src": "62:45:86",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 20177,
                    "name": "Errors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:6:86",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 20179,
                "nodeType": "StructuredDocumentation",
                "src": "109:178:86",
                "text": " @title WadRayMath library\n @author Aave\n @dev Provides mul and div function for wads (decimal numbers with 18 digits precision) and rays (decimals with 27 digits)*"
              },
              "fullyImplemented": true,
              "id": 20493,
              "linearizedBaseContracts": [
                20493
              ],
              "name": "WadRayMath",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 20182,
                  "mutability": "constant",
                  "name": "WAD",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 20493,
                  "src": "312:36:86",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20180,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "312:7:86",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "31653138",
                    "id": 20181,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "344:4:86",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    },
                    "value": "1e18"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 20187,
                  "mutability": "constant",
                  "name": "halfWAD",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 20493,
                  "src": "352:43:86",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20183,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "352:7:86",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 20186,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 20184,
                      "name": "WAD",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20182,
                      "src": "388:3:86",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "32",
                      "id": 20185,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "394:1:86",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2_by_1",
                        "typeString": "int_const 2"
                      },
                      "value": "2"
                    },
                    "src": "388:7:86",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 20190,
                  "mutability": "constant",
                  "name": "RAY",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 20493,
                  "src": "400:36:86",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20188,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "400:7:86",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "31653237",
                    "id": 20189,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "432:4:86",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000000000000"
                    },
                    "value": "1e27"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 20195,
                  "mutability": "constant",
                  "name": "halfRAY",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 20493,
                  "src": "440:43:86",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20191,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "440:7:86",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 20194,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 20192,
                      "name": "RAY",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20190,
                      "src": "476:3:86",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "32",
                      "id": 20193,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "482:1:86",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2_by_1",
                        "typeString": "int_const 2"
                      },
                      "value": "2"
                    },
                    "src": "476:7:86",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 20198,
                  "mutability": "constant",
                  "name": "WAD_RAY_RATIO",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 20493,
                  "src": "488:45:86",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20196,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "488:7:86",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "316539",
                    "id": 20197,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "530:3:86",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000_by_1",
                      "typeString": "int_const 1000000000"
                    },
                    "value": "1e9"
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20206,
                    "nodeType": "Block",
                    "src": "625:21:86",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 20204,
                          "name": "RAY",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20190,
                          "src": "638:3:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 20203,
                        "id": 20205,
                        "nodeType": "Return",
                        "src": "631:10:86"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 20199,
                    "nodeType": "StructuredDocumentation",
                    "src": "538:37:86",
                    "text": " @return One ray, 1e27*"
                  },
                  "id": 20207,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ray",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 20200,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "590:2:86"
                  },
                  "returnParameters": {
                    "id": 20203,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20202,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20207,
                        "src": "616:7:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20201,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "616:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "615:9:86"
                  },
                  "scope": 20493,
                  "src": "578:68:86",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20215,
                    "nodeType": "Block",
                    "src": "738:21:86",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 20213,
                          "name": "WAD",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20182,
                          "src": "751:3:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 20212,
                        "id": 20214,
                        "nodeType": "Return",
                        "src": "744:10:86"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 20208,
                    "nodeType": "StructuredDocumentation",
                    "src": "650:37:86",
                    "text": " @return One wad, 1e18*"
                  },
                  "id": 20216,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "wad",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 20209,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "703:2:86"
                  },
                  "returnParameters": {
                    "id": 20212,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20211,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20216,
                        "src": "729:7:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20210,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "729:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "728:9:86"
                  },
                  "scope": 20493,
                  "src": "691:68:86",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20224,
                    "nodeType": "Block",
                    "src": "857:25:86",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 20222,
                          "name": "halfRAY",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20195,
                          "src": "870:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 20221,
                        "id": 20223,
                        "nodeType": "Return",
                        "src": "863:14:86"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 20217,
                    "nodeType": "StructuredDocumentation",
                    "src": "763:40:86",
                    "text": " @return Half ray, 1e27/2*"
                  },
                  "id": 20225,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "halfRay",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 20218,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "822:2:86"
                  },
                  "returnParameters": {
                    "id": 20221,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20220,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20225,
                        "src": "848:7:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20219,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "848:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "847:9:86"
                  },
                  "scope": 20493,
                  "src": "806:76:86",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20233,
                    "nodeType": "Block",
                    "src": "980:25:86",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 20231,
                          "name": "halfWAD",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20187,
                          "src": "993:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 20230,
                        "id": 20232,
                        "nodeType": "Return",
                        "src": "986:14:86"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 20226,
                    "nodeType": "StructuredDocumentation",
                    "src": "886:40:86",
                    "text": " @return Half ray, 1e18/2*"
                  },
                  "id": 20234,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "halfWad",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 20227,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "945:2:86"
                  },
                  "returnParameters": {
                    "id": 20230,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20229,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20234,
                        "src": "971:7:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20228,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "971:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "970:9:86"
                  },
                  "scope": 20493,
                  "src": "929:76:86",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20281,
                    "nodeType": "Block",
                    "src": "1233:183:86",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 20250,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 20246,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 20244,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20237,
                              "src": "1243:1:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 20245,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1248:1:86",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1243:6:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 20249,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 20247,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20239,
                              "src": "1253:1:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 20248,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1258:1:86",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1253:6:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1243:16:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 20254,
                        "nodeType": "IfStatement",
                        "src": "1239:45:86",
                        "trueBody": {
                          "id": 20253,
                          "nodeType": "Block",
                          "src": "1261:23:86",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 20251,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1276:1:86",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 20243,
                              "id": 20252,
                              "nodeType": "Return",
                              "src": "1269:8:86"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 20267,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 20256,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20237,
                                "src": "1298:1:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20266,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 20263,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 20259,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "1309:7:86",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 20258,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1309:7:86",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              }
                                            ],
                                            "id": 20257,
                                            "name": "type",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -27,
                                            "src": "1304:4:86",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                              "typeString": "function () pure"
                                            }
                                          },
                                          "id": 20260,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1304:13:86",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_meta_type_t_uint256",
                                            "typeString": "type(uint256)"
                                          }
                                        },
                                        "id": 20261,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "max",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "1304:17:86",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 20262,
                                        "name": "halfWAD",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20187,
                                        "src": "1324:7:86",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "1304:27:86",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 20264,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "1303:29:86",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 20265,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20239,
                                  "src": "1335:1:86",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1303:33:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1298:38:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20268,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "1338:6:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 20269,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "MATH_MULTIPLICATION_OVERFLOW",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17140,
                              "src": "1338:35:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 20255,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1290:7:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20270,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1290:84:86",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20271,
                        "nodeType": "ExpressionStatement",
                        "src": "1290:84:86"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20279,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20276,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20274,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 20272,
                                    "name": "a",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20237,
                                    "src": "1389:1:86",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 20273,
                                    "name": "b",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20239,
                                    "src": "1393:1:86",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1389:5:86",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 20275,
                                  "name": "halfWAD",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20187,
                                  "src": "1397:7:86",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1389:15:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 20277,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1388:17:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 20278,
                            "name": "WAD",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20182,
                            "src": "1408:3:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1388:23:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 20243,
                        "id": 20280,
                        "nodeType": "Return",
                        "src": "1381:30:86"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 20235,
                    "nodeType": "StructuredDocumentation",
                    "src": "1009:151:86",
                    "text": " @dev Multiplies two wad, rounding half up to the nearest wad\n @param a Wad\n @param b Wad\n @return The result of a*b, in wad*"
                  },
                  "id": 20282,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "wadMul",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 20240,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20237,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20282,
                        "src": "1179:9:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20236,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1179:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20239,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20282,
                        "src": "1190:9:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20238,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1190:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1178:22:86"
                  },
                  "returnParameters": {
                    "id": 20243,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20242,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20282,
                        "src": "1224:7:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20241,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1224:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1223:9:86"
                  },
                  "scope": 20493,
                  "src": "1163:253:86",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20332,
                    "nodeType": "Block",
                    "src": "1641:209:86",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 20295,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 20293,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20287,
                                "src": "1655:1:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 20294,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1660:1:86",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1655:6:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20296,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "1663:6:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 20297,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "MATH_DIVISION_BY_ZERO",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17146,
                              "src": "1663:28:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 20292,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1647:7:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20298,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1647:45:86",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20299,
                        "nodeType": "ExpressionStatement",
                        "src": "1647:45:86"
                      },
                      {
                        "assignments": [
                          20301
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20301,
                            "mutability": "mutable",
                            "name": "halfB",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 20332,
                            "src": "1698:13:86",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20300,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1698:7:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 20305,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20304,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 20302,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20287,
                            "src": "1714:1:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 20303,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1718:1:86",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "1714:5:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1698:21:86"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 20318,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 20307,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20285,
                                "src": "1734:1:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20317,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 20314,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 20310,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "1745:7:86",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 20309,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1745:7:86",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              }
                                            ],
                                            "id": 20308,
                                            "name": "type",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -27,
                                            "src": "1740:4:86",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                              "typeString": "function () pure"
                                            }
                                          },
                                          "id": 20311,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1740:13:86",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_meta_type_t_uint256",
                                            "typeString": "type(uint256)"
                                          }
                                        },
                                        "id": 20312,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "max",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "1740:17:86",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 20313,
                                        "name": "halfB",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20301,
                                        "src": "1760:5:86",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "1740:25:86",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 20315,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "1739:27:86",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 20316,
                                  "name": "WAD",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20182,
                                  "src": "1769:3:86",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1739:33:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1734:38:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20319,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "1774:6:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 20320,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "MATH_MULTIPLICATION_OVERFLOW",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17140,
                              "src": "1774:35:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 20306,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1726:7:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1726:84:86",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20322,
                        "nodeType": "ExpressionStatement",
                        "src": "1726:84:86"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20330,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20327,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20325,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 20323,
                                    "name": "a",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20285,
                                    "src": "1825:1:86",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 20324,
                                    "name": "WAD",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20182,
                                    "src": "1829:3:86",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1825:7:86",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 20326,
                                  "name": "halfB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20301,
                                  "src": "1835:5:86",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1825:15:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 20328,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1824:17:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 20329,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20287,
                            "src": "1844:1:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1824:21:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 20291,
                        "id": 20331,
                        "nodeType": "Return",
                        "src": "1817:28:86"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 20283,
                    "nodeType": "StructuredDocumentation",
                    "src": "1420:148:86",
                    "text": " @dev Divides two wad, rounding half up to the nearest wad\n @param a Wad\n @param b Wad\n @return The result of a/b, in wad*"
                  },
                  "id": 20333,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "wadDiv",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 20288,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20285,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20333,
                        "src": "1587:9:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20284,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1587:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20287,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20333,
                        "src": "1598:9:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20286,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1598:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1586:22:86"
                  },
                  "returnParameters": {
                    "id": 20291,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20290,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20333,
                        "src": "1632:7:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20289,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1632:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1631:9:86"
                  },
                  "scope": 20493,
                  "src": "1571:279:86",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20380,
                    "nodeType": "Block",
                    "src": "2078:183:86",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 20349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 20345,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 20343,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20336,
                              "src": "2088:1:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 20344,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2093:1:86",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "2088:6:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 20348,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 20346,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20338,
                              "src": "2098:1:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 20347,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2103:1:86",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "2098:6:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2088:16:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 20353,
                        "nodeType": "IfStatement",
                        "src": "2084:45:86",
                        "trueBody": {
                          "id": 20352,
                          "nodeType": "Block",
                          "src": "2106:23:86",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 20350,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2121:1:86",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 20342,
                              "id": 20351,
                              "nodeType": "Return",
                              "src": "2114:8:86"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 20366,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 20355,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20336,
                                "src": "2143:1:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20365,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 20362,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 20358,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "2154:7:86",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 20357,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2154:7:86",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              }
                                            ],
                                            "id": 20356,
                                            "name": "type",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -27,
                                            "src": "2149:4:86",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                              "typeString": "function () pure"
                                            }
                                          },
                                          "id": 20359,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "2149:13:86",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_meta_type_t_uint256",
                                            "typeString": "type(uint256)"
                                          }
                                        },
                                        "id": 20360,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "max",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "2149:17:86",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 20361,
                                        "name": "halfRAY",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20195,
                                        "src": "2169:7:86",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "2149:27:86",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 20363,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "2148:29:86",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 20364,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20338,
                                  "src": "2180:1:86",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2148:33:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2143:38:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20367,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "2183:6:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 20368,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "MATH_MULTIPLICATION_OVERFLOW",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17140,
                              "src": "2183:35:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 20354,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2135:7:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20369,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2135:84:86",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20370,
                        "nodeType": "ExpressionStatement",
                        "src": "2135:84:86"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20375,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20373,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 20371,
                                    "name": "a",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20336,
                                    "src": "2234:1:86",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 20372,
                                    "name": "b",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20338,
                                    "src": "2238:1:86",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "2234:5:86",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 20374,
                                  "name": "halfRAY",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20195,
                                  "src": "2242:7:86",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2234:15:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 20376,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "2233:17:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 20377,
                            "name": "RAY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20190,
                            "src": "2253:3:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2233:23:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 20342,
                        "id": 20379,
                        "nodeType": "Return",
                        "src": "2226:30:86"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 20334,
                    "nodeType": "StructuredDocumentation",
                    "src": "1854:151:86",
                    "text": " @dev Multiplies two ray, rounding half up to the nearest ray\n @param a Ray\n @param b Ray\n @return The result of a*b, in ray*"
                  },
                  "id": 20381,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "rayMul",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 20339,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20336,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20381,
                        "src": "2024:9:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20335,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2024:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20338,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20381,
                        "src": "2035:9:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20337,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2035:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2023:22:86"
                  },
                  "returnParameters": {
                    "id": 20342,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20341,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20381,
                        "src": "2069:7:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20340,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2069:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2068:9:86"
                  },
                  "scope": 20493,
                  "src": "2008:253:86",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20431,
                    "nodeType": "Block",
                    "src": "2486:209:86",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 20394,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 20392,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20386,
                                "src": "2500:1:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 20393,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2505:1:86",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2500:6:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20395,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "2508:6:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 20396,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "MATH_DIVISION_BY_ZERO",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17146,
                              "src": "2508:28:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 20391,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2492:7:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2492:45:86",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20398,
                        "nodeType": "ExpressionStatement",
                        "src": "2492:45:86"
                      },
                      {
                        "assignments": [
                          20400
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20400,
                            "mutability": "mutable",
                            "name": "halfB",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 20431,
                            "src": "2543:13:86",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20399,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2543:7:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 20404,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20403,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 20401,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20386,
                            "src": "2559:1:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 20402,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2563:1:86",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "2559:5:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2543:21:86"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 20417,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 20406,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20384,
                                "src": "2579:1:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20416,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 20413,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 20409,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "2590:7:86",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 20408,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2590:7:86",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              }
                                            ],
                                            "id": 20407,
                                            "name": "type",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -27,
                                            "src": "2585:4:86",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                              "typeString": "function () pure"
                                            }
                                          },
                                          "id": 20410,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "2585:13:86",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_meta_type_t_uint256",
                                            "typeString": "type(uint256)"
                                          }
                                        },
                                        "id": 20411,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "max",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "2585:17:86",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 20412,
                                        "name": "halfB",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20400,
                                        "src": "2605:5:86",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "2585:25:86",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 20414,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "2584:27:86",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 20415,
                                  "name": "RAY",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20190,
                                  "src": "2614:3:86",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2584:33:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2579:38:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20418,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "2619:6:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 20419,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "MATH_MULTIPLICATION_OVERFLOW",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17140,
                              "src": "2619:35:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 20405,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2571:7:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20420,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2571:84:86",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20421,
                        "nodeType": "ExpressionStatement",
                        "src": "2571:84:86"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20429,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20426,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20424,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 20422,
                                    "name": "a",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20384,
                                    "src": "2670:1:86",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 20423,
                                    "name": "RAY",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20190,
                                    "src": "2674:3:86",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "2670:7:86",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 20425,
                                  "name": "halfB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20400,
                                  "src": "2680:5:86",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2670:15:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 20427,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "2669:17:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 20428,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20386,
                            "src": "2689:1:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2669:21:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 20390,
                        "id": 20430,
                        "nodeType": "Return",
                        "src": "2662:28:86"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 20382,
                    "nodeType": "StructuredDocumentation",
                    "src": "2265:148:86",
                    "text": " @dev Divides two ray, rounding half up to the nearest ray\n @param a Ray\n @param b Ray\n @return The result of a/b, in ray*"
                  },
                  "id": 20432,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "rayDiv",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 20387,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20384,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20432,
                        "src": "2432:9:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20383,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2432:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20386,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20432,
                        "src": "2443:9:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20385,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2443:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2431:22:86"
                  },
                  "returnParameters": {
                    "id": 20390,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20389,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20432,
                        "src": "2477:7:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20388,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2477:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2476:9:86"
                  },
                  "scope": 20493,
                  "src": "2416:279:86",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20464,
                    "nodeType": "Block",
                    "src": "2888:185:86",
                    "statements": [
                      {
                        "assignments": [
                          20441
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20441,
                            "mutability": "mutable",
                            "name": "halfRatio",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 20464,
                            "src": "2894:17:86",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20440,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2894:7:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 20445,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 20442,
                            "name": "WAD_RAY_RATIO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20198,
                            "src": "2914:13:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 20443,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2930:1:86",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "2914:17:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2894:37:86"
                      },
                      {
                        "assignments": [
                          20447
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20447,
                            "mutability": "mutable",
                            "name": "result",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 20464,
                            "src": "2937:14:86",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20446,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2937:7:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 20451,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 20448,
                            "name": "halfRatio",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20441,
                            "src": "2954:9:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 20449,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20435,
                            "src": "2966:1:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2954:13:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2937:30:86"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 20455,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 20453,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20447,
                                "src": "2981:6:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 20454,
                                "name": "halfRatio",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20441,
                                "src": "2991:9:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2981:19:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20456,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "3002:6:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 20457,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "MATH_ADDITION_OVERFLOW",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17143,
                              "src": "3002:29:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 20452,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2973:7:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20458,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2973:59:86",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20459,
                        "nodeType": "ExpressionStatement",
                        "src": "2973:59:86"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20462,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 20460,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20447,
                            "src": "3046:6:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 20461,
                            "name": "WAD_RAY_RATIO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20198,
                            "src": "3055:13:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3046:22:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 20439,
                        "id": 20463,
                        "nodeType": "Return",
                        "src": "3039:29:86"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 20433,
                    "nodeType": "StructuredDocumentation",
                    "src": "2699:125:86",
                    "text": " @dev Casts ray down to wad\n @param a Ray\n @return a casted to wad, rounded half up to the nearest wad*"
                  },
                  "id": 20465,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "rayToWad",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 20436,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20435,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20465,
                        "src": "2845:9:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20434,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2845:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2844:11:86"
                  },
                  "returnParameters": {
                    "id": 20439,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20438,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20465,
                        "src": "2879:7:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20437,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2879:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2878:9:86"
                  },
                  "scope": 20493,
                  "src": "2827:246:86",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20491,
                    "nodeType": "Block",
                    "src": "3234:143:86",
                    "statements": [
                      {
                        "assignments": [
                          20474
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20474,
                            "mutability": "mutable",
                            "name": "result",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 20491,
                            "src": "3240:14:86",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20473,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3240:7:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 20478,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20477,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 20475,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20468,
                            "src": "3257:1:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 20476,
                            "name": "WAD_RAY_RATIO",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20198,
                            "src": "3261:13:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3257:17:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3240:34:86"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 20484,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20482,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 20480,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20474,
                                  "src": "3288:6:86",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 20481,
                                  "name": "WAD_RAY_RATIO",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20198,
                                  "src": "3297:13:86",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3288:22:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 20483,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20468,
                                "src": "3314:1:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3288:27:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20485,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "3317:6:86",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 20486,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "MATH_MULTIPLICATION_OVERFLOW",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17140,
                              "src": "3317:35:86",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 20479,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3280:7:86",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20487,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3280:73:86",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20488,
                        "nodeType": "ExpressionStatement",
                        "src": "3280:73:86"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 20489,
                          "name": "result",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20474,
                          "src": "3366:6:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 20472,
                        "id": 20490,
                        "nodeType": "Return",
                        "src": "3359:13:86"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 20466,
                    "nodeType": "StructuredDocumentation",
                    "src": "3077:93:86",
                    "text": " @dev Converts wad up to ray\n @param a Wad\n @return a converted in ray*"
                  },
                  "id": 20492,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "wadToRay",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 20469,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20468,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20492,
                        "src": "3191:9:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20467,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3191:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3190:11:86"
                  },
                  "returnParameters": {
                    "id": 20472,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20471,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20492,
                        "src": "3225:7:86",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20470,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3225:7:86",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3224:9:86"
                  },
                  "scope": 20493,
                  "src": "3173:204:86",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 20494,
              "src": "289:3090:86"
            }
          ],
          "src": "37:3343:86"
        },
        "id": 86
      },
      "contracts/protocol/libraries/types/DataTypes.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/libraries/types/DataTypes.sol",
          "exportedSymbols": {
            "DataTypes": [
              20531
            ]
          },
          "id": 20532,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 20495,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:87"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": null,
              "fullyImplemented": true,
              "id": 20531,
              "linearizedBaseContracts": [
                20531
              ],
              "name": "DataTypes",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "DataTypes.ReserveData",
                  "id": 20520,
                  "members": [
                    {
                      "constant": false,
                      "id": 20497,
                      "mutability": "mutable",
                      "name": "configuration",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 20520,
                      "src": "251:37:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                        "typeString": "struct DataTypes.ReserveConfigurationMap"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 20496,
                        "name": "ReserveConfigurationMap",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 20523,
                        "src": "251:23:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReserveConfigurationMap_$20523_storage_ptr",
                          "typeString": "struct DataTypes.ReserveConfigurationMap"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 20499,
                      "mutability": "mutable",
                      "name": "liquidityIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 20520,
                      "src": "338:22:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 20498,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "338:7:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 20501,
                      "mutability": "mutable",
                      "name": "variableBorrowIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 20520,
                      "src": "412:27:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 20500,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "412:7:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 20503,
                      "mutability": "mutable",
                      "name": "currentLiquidityRate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 20520,
                      "src": "493:28:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 20502,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "493:7:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 20505,
                      "mutability": "mutable",
                      "name": "currentVariableBorrowRate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 20520,
                      "src": "584:33:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 20504,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "584:7:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 20507,
                      "mutability": "mutable",
                      "name": "currentStableBorrowRate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 20520,
                      "src": "678:31:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 20506,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "678:7:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 20509,
                      "mutability": "mutable",
                      "name": "lastUpdateTimestamp",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 20520,
                      "src": "715:26:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint40",
                        "typeString": "uint40"
                      },
                      "typeName": {
                        "id": 20508,
                        "name": "uint40",
                        "nodeType": "ElementaryTypeName",
                        "src": "715:6:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 20511,
                      "mutability": "mutable",
                      "name": "aTokenAddress",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 20520,
                      "src": "770:21:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 20510,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "770:7:87",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 20513,
                      "mutability": "mutable",
                      "name": "stableDebtTokenAddress",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 20520,
                      "src": "797:30:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 20512,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "797:7:87",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 20515,
                      "mutability": "mutable",
                      "name": "variableDebtTokenAddress",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 20520,
                      "src": "833:32:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 20514,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "833:7:87",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 20517,
                      "mutability": "mutable",
                      "name": "interestRateStrategyAddress",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 20520,
                      "src": "915:35:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 20516,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "915:7:87",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 20519,
                      "mutability": "mutable",
                      "name": "id",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 20520,
                      "src": "1044:8:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 20518,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "1044:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "ReserveData",
                  "nodeType": "StructDefinition",
                  "scope": 20531,
                  "src": "187:870:87",
                  "visibility": "public"
                },
                {
                  "canonicalName": "DataTypes.ReserveConfigurationMap",
                  "id": 20523,
                  "members": [
                    {
                      "constant": false,
                      "id": 20522,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 20523,
                      "src": "1405:12:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 20521,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1405:7:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "ReserveConfigurationMap",
                  "nodeType": "StructDefinition",
                  "scope": 20531,
                  "src": "1061:361:87",
                  "visibility": "public"
                },
                {
                  "canonicalName": "DataTypes.UserConfigurationMap",
                  "id": 20526,
                  "members": [
                    {
                      "constant": false,
                      "id": 20525,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 20526,
                      "src": "1460:12:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 20524,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1460:7:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "UserConfigurationMap",
                  "nodeType": "StructDefinition",
                  "scope": 20531,
                  "src": "1426:51:87",
                  "visibility": "public"
                },
                {
                  "canonicalName": "DataTypes.InterestRateMode",
                  "id": 20530,
                  "members": [
                    {
                      "id": 20527,
                      "name": "NONE",
                      "nodeType": "EnumValue",
                      "src": "1504:4:87"
                    },
                    {
                      "id": 20528,
                      "name": "STABLE",
                      "nodeType": "EnumValue",
                      "src": "1510:6:87"
                    },
                    {
                      "id": 20529,
                      "name": "VARIABLE",
                      "nodeType": "EnumValue",
                      "src": "1518:8:87"
                    }
                  ],
                  "name": "InterestRateMode",
                  "nodeType": "EnumDefinition",
                  "src": "1481:46:87"
                }
              ],
              "scope": 20532,
              "src": "62:1467:87"
            }
          ],
          "src": "37:1493:87"
        },
        "id": 87
      },
      "contracts/protocol/tokenization/AToken.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/tokenization/AToken.sol",
          "exportedSymbols": {
            "AToken": [
              21294
            ]
          },
          "id": 21295,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 20533,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:88"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
              "file": "../../dependencies/openzeppelin/contracts/IERC20.sol",
              "id": 20535,
              "nodeType": "ImportDirective",
              "scope": 21295,
              "sourceUnit": 4013,
              "src": "62:76:88",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 20534,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:6:88",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeERC20.sol",
              "file": "../../dependencies/openzeppelin/contracts/SafeERC20.sol",
              "id": 20537,
              "nodeType": "ImportDirective",
              "scope": 21295,
              "sourceUnit": 4301,
              "src": "139:82:88",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 20536,
                    "name": "SafeERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "147:9:88",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPool.sol",
              "file": "../../interfaces/ILendingPool.sol",
              "id": 20539,
              "nodeType": "ImportDirective",
              "scope": 21295,
              "sourceUnit": 6467,
              "src": "222:63:88",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 20538,
                    "name": "ILendingPool",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "230:12:88",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IAToken.sol",
              "file": "../../interfaces/IAToken.sol",
              "id": 20541,
              "nodeType": "ImportDirective",
              "scope": 21295,
              "sourceUnit": 5668,
              "src": "286:53:88",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 20540,
                    "name": "IAToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "294:7:88",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/math/WadRayMath.sol",
              "file": "../libraries/math/WadRayMath.sol",
              "id": 20543,
              "nodeType": "ImportDirective",
              "scope": 21295,
              "sourceUnit": 20494,
              "src": "340:60:88",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 20542,
                    "name": "WadRayMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "348:10:88",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/helpers/Errors.sol",
              "file": "../libraries/helpers/Errors.sol",
              "id": 20545,
              "nodeType": "ImportDirective",
              "scope": 21295,
              "sourceUnit": 17240,
              "src": "401:55:88",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 20544,
                    "name": "Errors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "409:6:88",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/aave-upgradeability/VersionedInitializable.sol",
              "file": "../libraries/aave-upgradeability/VersionedInitializable.sol",
              "id": 20547,
              "nodeType": "ImportDirective",
              "scope": 21295,
              "sourceUnit": 16020,
              "src": "457:99:88",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 20546,
                    "name": "VersionedInitializable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "465:22:88",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/tokenization/IncentivizedERC20.sol",
              "file": "./IncentivizedERC20.sol",
              "id": 20549,
              "nodeType": "ImportDirective",
              "scope": 21295,
              "sourceUnit": 21972,
              "src": "557:58:88",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 20548,
                    "name": "IncentivizedERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "565:17:88",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IAaveIncentivesController.sol",
              "file": "../../interfaces/IAaveIncentivesController.sol",
              "id": 20551,
              "nodeType": "ImportDirective",
              "scope": 21295,
              "sourceUnit": 5823,
              "src": "616:89:88",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 20550,
                    "name": "IAaveIncentivesController",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "624:25:88",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 20553,
                    "name": "VersionedInitializable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16019,
                    "src": "855:22:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_VersionedInitializable_$16019",
                      "typeString": "contract VersionedInitializable"
                    }
                  },
                  "id": 20554,
                  "nodeType": "InheritanceSpecifier",
                  "src": "855:22:88"
                },
                {
                  "arguments": [
                    {
                      "argumentTypes": null,
                      "hexValue": "41544f4b454e5f494d504c",
                      "id": 20556,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "899:13:88",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_60246dc83bf76f5d3ca1e7624837503501076ebb1100263b4d28583c6b2aa1e0",
                        "typeString": "literal_string \"ATOKEN_IMPL\""
                      },
                      "value": "ATOKEN_IMPL"
                    },
                    {
                      "argumentTypes": null,
                      "hexValue": "41544f4b454e5f494d504c",
                      "id": 20557,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "914:13:88",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_60246dc83bf76f5d3ca1e7624837503501076ebb1100263b4d28583c6b2aa1e0",
                        "typeString": "literal_string \"ATOKEN_IMPL\""
                      },
                      "value": "ATOKEN_IMPL"
                    },
                    {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 20558,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "929:1:88",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    }
                  ],
                  "baseName": {
                    "contractScope": null,
                    "id": 20555,
                    "name": "IncentivizedERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21971,
                    "src": "881:17:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IncentivizedERC20_$21971",
                      "typeString": "contract IncentivizedERC20"
                    }
                  },
                  "id": 20559,
                  "nodeType": "InheritanceSpecifier",
                  "src": "881:50:88"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 20560,
                    "name": "IAToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5667,
                    "src": "935:7:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAToken_$5667",
                      "typeString": "contract IAToken"
                    }
                  },
                  "id": 20561,
                  "nodeType": "InheritanceSpecifier",
                  "src": "935:7:88"
                }
              ],
              "contractDependencies": [
                3427,
                4012,
                4034,
                5667,
                6015,
                7005,
                16019,
                21971
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 20552,
                "nodeType": "StructuredDocumentation",
                "src": "707:126:88",
                "text": " @title Aave ERC20 AToken\n @dev Implementation of the interest bearing token for the Aave protocol\n @author Aave"
              },
              "fullyImplemented": true,
              "id": 21294,
              "linearizedBaseContracts": [
                21294,
                5667,
                6015,
                7005,
                21971,
                4034,
                4012,
                3427,
                16019
              ],
              "name": "AToken",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 20564,
                  "libraryName": {
                    "contractScope": null,
                    "id": 20562,
                    "name": "WadRayMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20493,
                    "src": "953:10:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_WadRayMath_$20493",
                      "typeString": "library WadRayMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "947:29:88",
                  "typeName": {
                    "id": 20563,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "968:7:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 20567,
                  "libraryName": {
                    "contractScope": null,
                    "id": 20565,
                    "name": "SafeERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4300,
                    "src": "985:9:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeERC20_$4300",
                      "typeString": "library SafeERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "979:27:88",
                  "typeName": {
                    "contractScope": null,
                    "id": 20566,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4012,
                    "src": "999:6:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$4012",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "constant": true,
                  "functionSelector": "78160376",
                  "id": 20573,
                  "mutability": "constant",
                  "name": "EIP712_REVISION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21294,
                  "src": "1010:50:88",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 20568,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1010:5:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 20571,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1056:3:88",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                          "typeString": "literal_string \"1\""
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                          "typeString": "literal_string \"1\""
                        }
                      ],
                      "id": 20570,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1050:5:88",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                        "typeString": "type(bytes storage pointer)"
                      },
                      "typeName": {
                        "id": 20569,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1050:5:88",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 20572,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1050:10:88",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 20578,
                  "mutability": "constant",
                  "name": "EIP712_DOMAIN",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21294,
                  "src": "1064:141:88",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 20574,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1064:7:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                        "id": 20576,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1120:84:88",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                          "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                        },
                        "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                          "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                        }
                      ],
                      "id": 20575,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1110:9:88",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 20577,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1110:95:88",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "functionSelector": "30adf81f",
                  "id": 20583,
                  "mutability": "constant",
                  "name": "PERMIT_TYPEHASH",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21294,
                  "src": "1209:141:88",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 20579,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1209:7:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "5065726d69742861646472657373206f776e65722c61646472657373207370656e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529",
                        "id": 20581,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1265:84:88",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9",
                          "typeString": "literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""
                        },
                        "value": "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9",
                          "typeString": "literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""
                        }
                      ],
                      "id": 20580,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1255:9:88",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 20582,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1255:95:88",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "0bd7ad3b",
                  "id": 20586,
                  "mutability": "constant",
                  "name": "ATOKEN_REVISION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21294,
                  "src": "1355:45:88",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20584,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1355:7:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307831",
                    "id": 20585,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1397:3:88",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1_by_1",
                      "typeString": "int_const 1"
                    },
                    "value": "0x1"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 20587,
                    "nodeType": "StructuredDocumentation",
                    "src": "1405:58:88",
                    "text": "@dev owner => next valid nonce to submit with permit()"
                  },
                  "functionSelector": "b9844d8d",
                  "id": 20591,
                  "mutability": "mutable",
                  "name": "_nonces",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21294,
                  "src": "1466:42:88",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 20590,
                    "keyType": {
                      "id": 20588,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1474:7:88",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1466:27:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 20589,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1485:7:88",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "3644e515",
                  "id": 20593,
                  "mutability": "mutable",
                  "name": "DOMAIN_SEPARATOR",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21294,
                  "src": "1513:31:88",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 20592,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1513:7:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 20595,
                  "mutability": "mutable",
                  "name": "_pool",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21294,
                  "src": "1549:27:88",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                    "typeString": "contract ILendingPool"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 20594,
                    "name": "ILendingPool",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6466,
                    "src": "1549:12:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                      "typeString": "contract ILendingPool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20597,
                  "mutability": "mutable",
                  "name": "_treasury",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21294,
                  "src": "1580:26:88",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20596,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1580:7:88",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20599,
                  "mutability": "mutable",
                  "name": "_underlyingAsset",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21294,
                  "src": "1610:33:88",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20598,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1610:7:88",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20601,
                  "mutability": "mutable",
                  "name": "_incentivesController",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21294,
                  "src": "1647:56:88",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                    "typeString": "contract IAaveIncentivesController"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 20600,
                    "name": "IAaveIncentivesController",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5822,
                    "src": "1647:25:88",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                      "typeString": "contract IAaveIncentivesController"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20616,
                    "nodeType": "Block",
                    "src": "1733:96:88",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 20610,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 20604,
                                  "name": "_msgSender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3415,
                                  "src": "1747:10:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                    "typeString": "function () view returns (address payable)"
                                  }
                                },
                                "id": 20605,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1747:12:88",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 20608,
                                    "name": "_pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20595,
                                    "src": "1771:5:88",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                      "typeString": "contract ILendingPool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                      "typeString": "contract ILendingPool"
                                    }
                                  ],
                                  "id": 20607,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1763:7:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 20606,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1763:7:88",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 20609,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1763:14:88",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1747:30:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20611,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "1779:6:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 20612,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "CT_CALLER_MUST_BE_LENDING_POOL",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17080,
                              "src": "1779:37:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 20603,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1739:7:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20613,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1739:78:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20614,
                        "nodeType": "ExpressionStatement",
                        "src": "1739:78:88"
                      },
                      {
                        "id": 20615,
                        "nodeType": "PlaceholderStatement",
                        "src": "1823:1:88"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 20617,
                  "name": "onlyLendingPool",
                  "nodeType": "ModifierDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 20602,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1733:0:88"
                  },
                  "src": "1708:121:88",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    15999
                  ],
                  "body": {
                    "id": 20625,
                    "nodeType": "Block",
                    "src": "1905:33:88",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 20623,
                          "name": "ATOKEN_REVISION",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20586,
                          "src": "1918:15:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 20622,
                        "id": 20624,
                        "nodeType": "Return",
                        "src": "1911:22:88"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 20626,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRevision",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 20619,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1878:8:88"
                  },
                  "parameters": {
                    "id": 20618,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1853:2:88"
                  },
                  "returnParameters": {
                    "id": 20622,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20621,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20626,
                        "src": "1896:7:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20620,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1896:7:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1895:9:88"
                  },
                  "scope": 21294,
                  "src": "1833:105:88",
                  "stateMutability": "pure",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    6014
                  ],
                  "body": {
                    "id": 20721,
                    "nodeType": "Block",
                    "src": "2833:736:88",
                    "statements": [
                      {
                        "assignments": [
                          20650
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20650,
                            "mutability": "mutable",
                            "name": "chainId",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 20721,
                            "src": "2839:15:88",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20649,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2839:7:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 20651,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2839:15:88"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "2901:34:88",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2909:20:88",
                              "value": {
                                "arguments": [],
                                "functionName": {
                                  "name": "chainid",
                                  "nodeType": "YulIdentifier",
                                  "src": "2920:7:88"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2920:9:88"
                              },
                              "variableNames": [
                                {
                                  "name": "chainId",
                                  "nodeType": "YulIdentifier",
                                  "src": "2909:7:88"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 20650,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2909:7:88",
                            "valueSize": 1
                          }
                        ],
                        "id": 20652,
                        "nodeType": "InlineAssembly",
                        "src": "2892:43:88"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 20674,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 20653,
                            "name": "DOMAIN_SEPARATOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20593,
                            "src": "2941:16:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 20657,
                                    "name": "EIP712_DOMAIN",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20578,
                                    "src": "2997:13:88",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 20661,
                                            "name": "aTokenName",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20639,
                                            "src": "3036:10:88",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_string_calldata_ptr",
                                              "typeString": "string calldata"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_string_calldata_ptr",
                                              "typeString": "string calldata"
                                            }
                                          ],
                                          "id": 20660,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "3030:5:88",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                            "typeString": "type(bytes storage pointer)"
                                          },
                                          "typeName": {
                                            "id": 20659,
                                            "name": "bytes",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "3030:5:88",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 20662,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3030:17:88",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                          "typeString": "bytes calldata"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                          "typeString": "bytes calldata"
                                        }
                                      ],
                                      "id": 20658,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "3020:9:88",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 20663,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3020:28:88",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 20665,
                                        "name": "EIP712_REVISION",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20573,
                                        "src": "3068:15:88",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 20664,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "3058:9:88",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 20666,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3058:26:88",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 20667,
                                    "name": "chainId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20650,
                                    "src": "3094:7:88",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 20670,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "3119:4:88",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_AToken_$21294",
                                          "typeString": "contract AToken"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_AToken_$21294",
                                          "typeString": "contract AToken"
                                        }
                                      ],
                                      "id": 20669,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3111:7:88",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 20668,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3111:7:88",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 20671,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3111:13:88",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 20655,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "2977:3:88",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 20656,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encode",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2977:10:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 20672,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2977:155:88",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 20654,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "2960:9:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 20673,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2960:178:88",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "2941:197:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 20675,
                        "nodeType": "ExpressionStatement",
                        "src": "2941:197:88"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20677,
                              "name": "aTokenName",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20639,
                              "src": "3154:10:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            ],
                            "id": 20676,
                            "name": "_setName",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21940,
                            "src": "3145:8:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory)"
                            }
                          },
                          "id": 20678,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3145:20:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20679,
                        "nodeType": "ExpressionStatement",
                        "src": "3145:20:88"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20681,
                              "name": "aTokenSymbol",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20641,
                              "src": "3182:12:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            ],
                            "id": 20680,
                            "name": "_setSymbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21950,
                            "src": "3171:10:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory)"
                            }
                          },
                          "id": 20682,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3171:24:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20683,
                        "nodeType": "ExpressionStatement",
                        "src": "3171:24:88"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20685,
                              "name": "aTokenDecimals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20637,
                              "src": "3214:14:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 20684,
                            "name": "_setDecimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21960,
                            "src": "3201:12:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$",
                              "typeString": "function (uint8)"
                            }
                          },
                          "id": 20686,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3201:28:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20687,
                        "nodeType": "ExpressionStatement",
                        "src": "3201:28:88"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 20690,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 20688,
                            "name": "_pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20595,
                            "src": "3236:5:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPool_$6466",
                              "typeString": "contract ILendingPool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 20689,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20629,
                            "src": "3244:4:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPool_$6466",
                              "typeString": "contract ILendingPool"
                            }
                          },
                          "src": "3236:12:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "id": 20691,
                        "nodeType": "ExpressionStatement",
                        "src": "3236:12:88"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 20694,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 20692,
                            "name": "_treasury",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20597,
                            "src": "3254:9:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 20693,
                            "name": "treasury",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20631,
                            "src": "3266:8:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3254:20:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 20695,
                        "nodeType": "ExpressionStatement",
                        "src": "3254:20:88"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 20698,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 20696,
                            "name": "_underlyingAsset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20599,
                            "src": "3280:16:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 20697,
                            "name": "underlyingAsset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20633,
                            "src": "3299:15:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3280:34:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 20699,
                        "nodeType": "ExpressionStatement",
                        "src": "3280:34:88"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 20702,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 20700,
                            "name": "_incentivesController",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20601,
                            "src": "3320:21:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                              "typeString": "contract IAaveIncentivesController"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 20701,
                            "name": "incentivesController",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20635,
                            "src": "3344:20:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                              "typeString": "contract IAaveIncentivesController"
                            }
                          },
                          "src": "3320:44:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "id": 20703,
                        "nodeType": "ExpressionStatement",
                        "src": "3320:44:88"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20705,
                              "name": "underlyingAsset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20633,
                              "src": "3395:15:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 20708,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20629,
                                  "src": "3426:4:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                ],
                                "id": 20707,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3418:7:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 20706,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3418:7:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 20709,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3418:13:88",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20710,
                              "name": "treasury",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20631,
                              "src": "3439:8:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 20713,
                                  "name": "incentivesController",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20635,
                                  "src": "3463:20:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                    "typeString": "contract IAaveIncentivesController"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                    "typeString": "contract IAaveIncentivesController"
                                  }
                                ],
                                "id": 20712,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3455:7:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 20711,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3455:7:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 20714,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3455:29:88",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20715,
                              "name": "aTokenDecimals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20637,
                              "src": "3492:14:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20716,
                              "name": "aTokenName",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20639,
                              "src": "3514:10:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20717,
                              "name": "aTokenSymbol",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20641,
                              "src": "3532:12:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20718,
                              "name": "params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20643,
                              "src": "3552:6:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              },
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 20704,
                            "name": "Initialized",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5994,
                            "src": "3376:11:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint8_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,address,uint8,string memory,string memory,bytes memory)"
                            }
                          },
                          "id": 20719,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3376:188:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20720,
                        "nodeType": "EmitStatement",
                        "src": "3371:193:88"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 20627,
                    "nodeType": "StructuredDocumentation",
                    "src": "1942:589:88",
                    "text": " @dev Initializes the aToken\n @param pool The address of the lending pool where this aToken will be used\n @param treasury The address of the Aave treasury, receiving the fees on this aToken\n @param underlyingAsset The address of the underlying asset of this aToken (E.g. WETH for aWETH)\n @param incentivesController The smart contract managing potential incentives distribution\n @param aTokenDecimals The decimals of the aToken, same as the underlying asset's\n @param aTokenName The name of the aToken\n @param aTokenSymbol The symbol of the aToken"
                  },
                  "functionSelector": "183fb413",
                  "id": 20722,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 20647,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 20646,
                        "name": "initializer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15993,
                        "src": "2821:11:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2821:11:88"
                    }
                  ],
                  "name": "initialize",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 20645,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2812:8:88"
                  },
                  "parameters": {
                    "id": 20644,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20629,
                        "mutability": "mutable",
                        "name": "pool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20722,
                        "src": "2559:17:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPool_$6466",
                          "typeString": "contract ILendingPool"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 20628,
                          "name": "ILendingPool",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6466,
                          "src": "2559:12:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20631,
                        "mutability": "mutable",
                        "name": "treasury",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20722,
                        "src": "2582:16:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20630,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2582:7:88",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20633,
                        "mutability": "mutable",
                        "name": "underlyingAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20722,
                        "src": "2604:23:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20632,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2604:7:88",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20635,
                        "mutability": "mutable",
                        "name": "incentivesController",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20722,
                        "src": "2633:46:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                          "typeString": "contract IAaveIncentivesController"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 20634,
                          "name": "IAaveIncentivesController",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5822,
                          "src": "2633:25:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20637,
                        "mutability": "mutable",
                        "name": "aTokenDecimals",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20722,
                        "src": "2685:20:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 20636,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "2685:5:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20639,
                        "mutability": "mutable",
                        "name": "aTokenName",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20722,
                        "src": "2711:26:88",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 20638,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2711:6:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20641,
                        "mutability": "mutable",
                        "name": "aTokenSymbol",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20722,
                        "src": "2743:28:88",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 20640,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2743:6:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20643,
                        "mutability": "mutable",
                        "name": "params",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20722,
                        "src": "2777:21:88",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 20642,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2777:5:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2553:249:88"
                  },
                  "returnParameters": {
                    "id": 20648,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2833:0:88"
                  },
                  "scope": 21294,
                  "src": "2534:1035:88",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    5618
                  ],
                  "body": {
                    "id": 20781,
                    "nodeType": "Block",
                    "src": "4167:326:88",
                    "statements": [
                      {
                        "assignments": [
                          20738
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20738,
                            "mutability": "mutable",
                            "name": "amountScaled",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 20781,
                            "src": "4173:20:88",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20737,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4173:7:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 20743,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20741,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20731,
                              "src": "4210:5:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 20739,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20729,
                              "src": "4196:6:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 20740,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayDiv",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20432,
                            "src": "4196:13:88",
                            "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": 20742,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4196:20:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4173:43:88"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 20747,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 20745,
                                "name": "amountScaled",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20738,
                                "src": "4230:12:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 20746,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4246:1:88",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4230:17:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20748,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "4249:6:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 20749,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "CT_INVALID_BURN_AMOUNT",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17170,
                              "src": "4249:29:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 20744,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4222:7:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4222:57:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20751,
                        "nodeType": "ExpressionStatement",
                        "src": "4222:57:88"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20753,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20725,
                              "src": "4291:4:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20754,
                              "name": "amountScaled",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20738,
                              "src": "4297:12:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20752,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21886,
                            "src": "4285:5:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 20755,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4285:25:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20756,
                        "nodeType": "ExpressionStatement",
                        "src": "4285:25:88"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20761,
                              "name": "receiverOfUnderlying",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20727,
                              "src": "4355:20:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20762,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20729,
                              "src": "4377:6:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 20758,
                                  "name": "_underlyingAsset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20599,
                                  "src": "4324:16:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 20757,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "4317:6:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 20759,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4317:24:88",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 20760,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4180,
                            "src": "4317:37:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 20763,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4317:67:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20764,
                        "nodeType": "ExpressionStatement",
                        "src": "4317:67:88"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20766,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20725,
                              "src": "4405:4:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 20769,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4419:1:88",
                                  "subdenomination": null,
                                  "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": 20768,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4411:7:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 20767,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4411:7:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 20770,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4411:10:88",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20771,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20729,
                              "src": "4423:6:88",
                              "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": 20765,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4002,
                            "src": "4396:8:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 20772,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4396:34:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20773,
                        "nodeType": "EmitStatement",
                        "src": "4391:39:88"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20775,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20725,
                              "src": "4446:4:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20776,
                              "name": "receiverOfUnderlying",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20727,
                              "src": "4452:20:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20777,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20729,
                              "src": "4474:6:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20778,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20731,
                              "src": "4482:5:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20774,
                            "name": "Burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5595,
                            "src": "4441:4:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256)"
                            }
                          },
                          "id": 20779,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4441:47:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20780,
                        "nodeType": "EmitStatement",
                        "src": "4436:52:88"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 20723,
                    "nodeType": "StructuredDocumentation",
                    "src": "3573:448:88",
                    "text": " @dev Burns aTokens from `user` and sends the equivalent amount of underlying to `receiverOfUnderlying`\n - Only callable by the LendingPool, as extra state updates there need to be managed\n @param user The owner of the aTokens, getting them burned\n @param receiverOfUnderlying The address that will receive the underlying\n @param amount The amount being burned\n @param index The new liquidity index of the reserve*"
                  },
                  "functionSelector": "d7020d0a",
                  "id": 20782,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 20735,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 20734,
                        "name": "onlyLendingPool",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20617,
                        "src": "4151:15:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4151:15:88"
                    }
                  ],
                  "name": "burn",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 20733,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4142:8:88"
                  },
                  "parameters": {
                    "id": 20732,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20725,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20782,
                        "src": "4043:12:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20724,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4043:7:88",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20727,
                        "mutability": "mutable",
                        "name": "receiverOfUnderlying",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20782,
                        "src": "4061:28:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20726,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4061:7:88",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20729,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20782,
                        "src": "4095:14:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20728,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4095:7:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20731,
                        "mutability": "mutable",
                        "name": "index",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20782,
                        "src": "4115:13:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20730,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4115:7:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4037:95:88"
                  },
                  "returnParameters": {
                    "id": 20736,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4167:0:88"
                  },
                  "scope": 21294,
                  "src": "4024:469:88",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    5584
                  ],
                  "body": {
                    "id": 20843,
                    "nodeType": "Block",
                    "src": "5000:318:88",
                    "statements": [
                      {
                        "assignments": [
                          20798
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20798,
                            "mutability": "mutable",
                            "name": "previousBalance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 20843,
                            "src": "5006:23:88",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20797,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5006:7:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 20803,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20801,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20785,
                              "src": "5048:4:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 20799,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "5032:5:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_AToken_$21294",
                                "typeString": "contract super AToken"
                              }
                            },
                            "id": 20800,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21459,
                            "src": "5032:15:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 20802,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5032:21:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5006:47:88"
                      },
                      {
                        "assignments": [
                          20805
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20805,
                            "mutability": "mutable",
                            "name": "amountScaled",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 20843,
                            "src": "5060:20:88",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20804,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5060:7:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 20810,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20808,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20789,
                              "src": "5097:5:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 20806,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20787,
                              "src": "5083:6:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 20807,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayDiv",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20432,
                            "src": "5083:13:88",
                            "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": 20809,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5083:20:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5060:43:88"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 20814,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 20812,
                                "name": "amountScaled",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20805,
                                "src": "5117:12:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 20813,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5133:1:88",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "5117:17:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 20815,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "5136:6:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 20816,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "CT_INVALID_MINT_AMOUNT",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17164,
                              "src": "5136:29:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 20811,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5109:7:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20817,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5109:57:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20818,
                        "nodeType": "ExpressionStatement",
                        "src": "5109:57:88"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20820,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20785,
                              "src": "5178:4:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20821,
                              "name": "amountScaled",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20805,
                              "src": "5184:12:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20819,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21812,
                            "src": "5172:5:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 20822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5172:25:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20823,
                        "nodeType": "ExpressionStatement",
                        "src": "5172:25:88"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 20827,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5226:1:88",
                                  "subdenomination": null,
                                  "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": 20826,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5218:7:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 20825,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5218:7:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 20828,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5218:10:88",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20829,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20785,
                              "src": "5230:4:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20830,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20787,
                              "src": "5236:6:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20824,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4002,
                            "src": "5209:8:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 20831,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5209:34:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20832,
                        "nodeType": "EmitStatement",
                        "src": "5204:39:88"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20834,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20785,
                              "src": "5259:4:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20835,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20787,
                              "src": "5265:6:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20836,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20789,
                              "src": "5273:5:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20833,
                            "name": "Mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5572,
                            "src": "5254:4:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 20837,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5254:25:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20838,
                        "nodeType": "EmitStatement",
                        "src": "5249:30:88"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20841,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 20839,
                            "name": "previousBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20798,
                            "src": "5293:15:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 20840,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5312:1:88",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5293:20:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 20796,
                        "id": 20842,
                        "nodeType": "Return",
                        "src": "5286:27:88"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 20783,
                    "nodeType": "StructuredDocumentation",
                    "src": "4497:376:88",
                    "text": " @dev Mints `amount` aTokens to `user`\n - Only callable by the LendingPool, as extra state updates there need to be managed\n @param user The address receiving the minted tokens\n @param amount The amount of tokens getting minted\n @param index The new liquidity index of the reserve\n @return `true` if the the previous balance of the user was 0"
                  },
                  "functionSelector": "156e29f6",
                  "id": 20844,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 20793,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 20792,
                        "name": "onlyLendingPool",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20617,
                        "src": "4969:15:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4969:15:88"
                    }
                  ],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 20791,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4960:8:88"
                  },
                  "parameters": {
                    "id": 20790,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20785,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20844,
                        "src": "4895:12:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20784,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4895:7:88",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20787,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20844,
                        "src": "4913:14:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20786,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4913:7:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20789,
                        "mutability": "mutable",
                        "name": "index",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20844,
                        "src": "4933:13:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20788,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4933:7:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4889:61:88"
                  },
                  "returnParameters": {
                    "id": 20796,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20795,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20844,
                        "src": "4994:4:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 20794,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4994:4:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4993:6:88"
                  },
                  "scope": 21294,
                  "src": "4876:442:88",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    5626
                  ],
                  "body": {
                    "id": 20888,
                    "nodeType": "Block",
                    "src": "5623:523:88",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20857,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 20855,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20847,
                            "src": "5633:6:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 20856,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5643:1:88",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5633:11:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 20860,
                        "nodeType": "IfStatement",
                        "src": "5629:38:88",
                        "trueBody": {
                          "id": 20859,
                          "nodeType": "Block",
                          "src": "5646:21:88",
                          "statements": [
                            {
                              "expression": null,
                              "functionReturnParameters": 20854,
                              "id": 20858,
                              "nodeType": "Return",
                              "src": "5654:7:88"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          20862
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20862,
                            "mutability": "mutable",
                            "name": "treasury",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 20888,
                            "src": "5673:16:88",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 20861,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5673:7:88",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 20864,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 20863,
                          "name": "_treasury",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20597,
                          "src": "5692:9:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5673:28:88"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20866,
                              "name": "treasury",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20862,
                              "src": "6020:8:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 20869,
                                  "name": "index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20849,
                                  "src": "6044:5:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 20867,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20847,
                                  "src": "6030:6:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 20868,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "rayDiv",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20432,
                                "src": "6030:13:88",
                                "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": 20870,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6030:20:88",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20865,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21812,
                            "src": "6014:5:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 20871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6014:37:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20872,
                        "nodeType": "ExpressionStatement",
                        "src": "6014:37:88"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 20876,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6080:1:88",
                                  "subdenomination": null,
                                  "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": 20875,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6072:7:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 20874,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6072:7:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 20877,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6072:10:88",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20878,
                              "name": "treasury",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20862,
                              "src": "6084:8:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20879,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20847,
                              "src": "6094:6:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20873,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4002,
                            "src": "6063:8:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 20880,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6063:38:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20881,
                        "nodeType": "EmitStatement",
                        "src": "6058:43:88"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20883,
                              "name": "treasury",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20862,
                              "src": "6117:8:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20884,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20847,
                              "src": "6127:6:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20885,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20849,
                              "src": "6135:5:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20882,
                            "name": "Mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5572,
                            "src": "6112:4:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 20886,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6112:29:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20887,
                        "nodeType": "EmitStatement",
                        "src": "6107:34:88"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 20845,
                    "nodeType": "StructuredDocumentation",
                    "src": "5322:209:88",
                    "text": " @dev Mints aTokens to the reserve treasury\n - Only callable by the LendingPool\n @param amount The amount of tokens getting minted\n @param index The new liquidity index of the reserve"
                  },
                  "functionSelector": "7df5bd3b",
                  "id": 20889,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 20853,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 20852,
                        "name": "onlyLendingPool",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20617,
                        "src": "5607:15:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5607:15:88"
                    }
                  ],
                  "name": "mintToTreasury",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 20851,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5598:8:88"
                  },
                  "parameters": {
                    "id": 20850,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20847,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20889,
                        "src": "5558:14:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20846,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5558:7:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20849,
                        "mutability": "mutable",
                        "name": "index",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20889,
                        "src": "5574:13:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20848,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5574:7:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5557:31:88"
                  },
                  "returnParameters": {
                    "id": 20854,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5623:0:88"
                  },
                  "scope": 21294,
                  "src": "5534:612:88",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    5636
                  ],
                  "body": {
                    "id": 20915,
                    "nodeType": "Block",
                    "src": "6606:210:88",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20903,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20892,
                              "src": "6751:4:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20904,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20894,
                              "src": "6757:2:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20905,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20896,
                              "src": "6761:5:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 20906,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6768:5:88",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 20902,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              21274,
                              21293
                            ],
                            "referencedDeclaration": 21274,
                            "src": "6741:9:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,uint256,bool)"
                            }
                          },
                          "id": 20907,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6741:33:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20908,
                        "nodeType": "ExpressionStatement",
                        "src": "6741:33:88"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20910,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20892,
                              "src": "6795:4:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20911,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20894,
                              "src": "6801:2:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 20912,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20896,
                              "src": "6805:5:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20909,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4002,
                            "src": "6786:8:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 20913,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6786:25:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20914,
                        "nodeType": "EmitStatement",
                        "src": "6781:30:88"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 20890,
                    "nodeType": "StructuredDocumentation",
                    "src": "6150:331:88",
                    "text": " @dev Transfers aTokens in the event of a borrow being liquidated, in case the liquidators reclaims the aToken\n - Only callable by the LendingPool\n @param from The address getting liquidated, current owner of the aTokens\n @param to The recipient\n @param value The amount of tokens getting transferred*"
                  },
                  "functionSelector": "f866c319",
                  "id": 20916,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 20900,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 20899,
                        "name": "onlyLendingPool",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20617,
                        "src": "6590:15:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6590:15:88"
                    }
                  ],
                  "name": "transferOnLiquidation",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 20898,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6581:8:88"
                  },
                  "parameters": {
                    "id": 20897,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20892,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20916,
                        "src": "6520:12:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20891,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6520:7:88",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20894,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20916,
                        "src": "6538:10:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20893,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6538:7:88",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20896,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20916,
                        "src": "6554:13:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20895,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6554:7:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6514:57:88"
                  },
                  "returnParameters": {
                    "id": 20901,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6606:0:88"
                  },
                  "scope": 21294,
                  "src": "6484:332:88",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3951,
                    21459
                  ],
                  "body": {
                    "id": 20938,
                    "nodeType": "Block",
                    "src": "7143:98:88",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 20934,
                                  "name": "_underlyingAsset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20599,
                                  "src": "7218:16:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 20932,
                                  "name": "_pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20595,
                                  "src": "7185:5:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                },
                                "id": 20933,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getReserveNormalizedIncome",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6413,
                                "src": "7185:32:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 20935,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7185:50:88",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 20929,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20919,
                                  "src": "7172:4:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 20927,
                                  "name": "super",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -25,
                                  "src": "7156:5:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_super$_AToken_$21294",
                                    "typeString": "contract super AToken"
                                  }
                                },
                                "id": 20928,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21459,
                                "src": "7156:15:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view returns (uint256)"
                                }
                              },
                              "id": 20930,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7156:21:88",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 20931,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayMul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20381,
                            "src": "7156:28:88",
                            "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": 20936,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7156:80:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 20926,
                        "id": 20937,
                        "nodeType": "Return",
                        "src": "7149:87:88"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 20917,
                    "nodeType": "StructuredDocumentation",
                    "src": "6820:203:88",
                    "text": " @dev Calculates the balance of the user: principal balance + interest generated by the principal\n @param user The user whose balance is calculated\n @return The balance of the user*"
                  },
                  "functionSelector": "70a08231",
                  "id": 20939,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 20923,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "contractScope": null,
                        "id": 20921,
                        "name": "IncentivizedERC20",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 21971,
                        "src": "7092:17:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IncentivizedERC20_$21971",
                          "typeString": "contract IncentivizedERC20"
                        }
                      },
                      {
                        "contractScope": null,
                        "id": 20922,
                        "name": "IERC20",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4012,
                        "src": "7111:6:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$4012",
                          "typeString": "contract IERC20"
                        }
                      }
                    ],
                    "src": "7083:35:88"
                  },
                  "parameters": {
                    "id": 20920,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20919,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20939,
                        "src": "7045:12:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20918,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7045:7:88",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7044:14:88"
                  },
                  "returnParameters": {
                    "id": 20926,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20925,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20939,
                        "src": "7132:7:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20924,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7132:7:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7131:9:88"
                  },
                  "scope": 21294,
                  "src": "7026:215:88",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    6988
                  ],
                  "body": {
                    "id": 20953,
                    "nodeType": "Block",
                    "src": "7624:39:88",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 20950,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20942,
                              "src": "7653:4:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 20948,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "7637:5:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_AToken_$21294",
                                "typeString": "contract super AToken"
                              }
                            },
                            "id": 20949,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21459,
                            "src": "7637:15:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 20951,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7637:21:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 20947,
                        "id": 20952,
                        "nodeType": "Return",
                        "src": "7630:28:88"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 20940,
                    "nodeType": "StructuredDocumentation",
                    "src": "7245:296:88",
                    "text": " @dev Returns the scaled balance of the user. The scaled balance is the sum of all the\n updated stored balance divided by the reserve's liquidity index at the moment of the update\n @param user The user whose balance is calculated\n @return The scaled balance of the user*"
                  },
                  "functionSelector": "1da24f3e",
                  "id": 20954,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "scaledBalanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 20944,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7597:8:88"
                  },
                  "parameters": {
                    "id": 20943,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20942,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20954,
                        "src": "7569:12:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20941,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7569:7:88",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7568:14:88"
                  },
                  "returnParameters": {
                    "id": 20947,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20946,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20954,
                        "src": "7615:7:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20945,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7615:7:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7614:9:88"
                  },
                  "scope": 21294,
                  "src": "7544:119:88",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6998
                  ],
                  "body": {
                    "id": 20974,
                    "nodeType": "Block",
                    "src": "8024:62:88",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 20967,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20957,
                                  "src": "8054:4:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 20965,
                                  "name": "super",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -25,
                                  "src": "8038:5:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_super$_AToken_$21294",
                                    "typeString": "contract super AToken"
                                  }
                                },
                                "id": 20966,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21459,
                                "src": "8038:15:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view returns (uint256)"
                                }
                              },
                              "id": 20968,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8038:21:88",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 20969,
                                  "name": "super",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -25,
                                  "src": "8061:5:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_super$_AToken_$21294",
                                    "typeString": "contract super AToken"
                                  }
                                },
                                "id": 20970,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalSupply",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21445,
                                "src": "8061:17:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view returns (uint256)"
                                }
                              },
                              "id": 20971,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8061:19:88",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 20972,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "8037:44:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 20964,
                        "id": 20973,
                        "nodeType": "Return",
                        "src": "8030:51:88"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 20955,
                    "nodeType": "StructuredDocumentation",
                    "src": "7667:233:88",
                    "text": " @dev Returns the scaled balance of the user and the scaled total supply.\n @param user The address of the user\n @return The scaled balance of the user\n @return The scaled balance and the scaled total supply*"
                  },
                  "functionSelector": "0afbcdc9",
                  "id": 20975,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getScaledUserBalanceAndSupply",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 20959,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7982:8:88"
                  },
                  "parameters": {
                    "id": 20958,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20957,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20975,
                        "src": "7942:12:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20956,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7942:7:88",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7941:14:88"
                  },
                  "returnParameters": {
                    "id": 20964,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20961,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20975,
                        "src": "8004:7:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20960,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8004:7:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20963,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 20975,
                        "src": "8013:7:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20962,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8013:7:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8003:18:88"
                  },
                  "scope": 21294,
                  "src": "7903:183:88",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3943,
                    21445
                  ],
                  "body": {
                    "id": 21005,
                    "nodeType": "Block",
                    "src": "8393:211:88",
                    "statements": [
                      {
                        "assignments": [
                          20985
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20985,
                            "mutability": "mutable",
                            "name": "currentSupplyScaled",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 21005,
                            "src": "8399:27:88",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20984,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8399:7:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 20989,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 20986,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "8429:5:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_AToken_$21294",
                                "typeString": "contract super AToken"
                              }
                            },
                            "id": 20987,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "totalSupply",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21445,
                            "src": "8429:17:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 20988,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8429:19:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8399:49:88"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20992,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 20990,
                            "name": "currentSupplyScaled",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20985,
                            "src": "8459:19:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 20991,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8482:1:88",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "8459:24:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 20996,
                        "nodeType": "IfStatement",
                        "src": "8455:53:88",
                        "trueBody": {
                          "id": 20995,
                          "nodeType": "Block",
                          "src": "8485:23:88",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 20993,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8500:1:88",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 20983,
                              "id": 20994,
                              "nodeType": "Return",
                              "src": "8493:8:88"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 21001,
                                  "name": "_underlyingAsset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20599,
                                  "src": "8581:16:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 20999,
                                  "name": "_pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20595,
                                  "src": "8548:5:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                },
                                "id": 21000,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getReserveNormalizedIncome",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6413,
                                "src": "8548:32:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 21002,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8548:50:88",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 20997,
                              "name": "currentSupplyScaled",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20985,
                              "src": "8521:19:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 20998,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayMul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20381,
                            "src": "8521:26:88",
                            "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": 21003,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8521:78:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 20983,
                        "id": 21004,
                        "nodeType": "Return",
                        "src": "8514:85:88"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 20976,
                    "nodeType": "StructuredDocumentation",
                    "src": "8090:211:88",
                    "text": " @dev calculates the total supply of the specific aToken\n since the balance of every single user increases over time, the total supply\n does that too.\n @return the current total supply*"
                  },
                  "functionSelector": "18160ddd",
                  "id": 21006,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 20980,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "contractScope": null,
                        "id": 20978,
                        "name": "IncentivizedERC20",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 21971,
                        "src": "8348:17:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IncentivizedERC20_$21971",
                          "typeString": "contract IncentivizedERC20"
                        }
                      },
                      {
                        "contractScope": null,
                        "id": 20979,
                        "name": "IERC20",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4012,
                        "src": "8367:6:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$4012",
                          "typeString": "contract IERC20"
                        }
                      }
                    ],
                    "src": "8339:35:88"
                  },
                  "parameters": {
                    "id": 20977,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8324:2:88"
                  },
                  "returnParameters": {
                    "id": 20983,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20982,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21006,
                        "src": "8384:7:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20981,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8384:7:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8383:9:88"
                  },
                  "scope": 21294,
                  "src": "8304:300:88",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7004
                  ],
                  "body": {
                    "id": 21017,
                    "nodeType": "Block",
                    "src": "8831:37:88",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21013,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "8844:5:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_AToken_$21294",
                                "typeString": "contract super AToken"
                              }
                            },
                            "id": 21014,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "totalSupply",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21445,
                            "src": "8844:17:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 21015,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8844:19:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 21012,
                        "id": 21016,
                        "nodeType": "Return",
                        "src": "8837:26:88"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 21007,
                    "nodeType": "StructuredDocumentation",
                    "src": "8608:144:88",
                    "text": " @dev Returns the scaled total supply of the variable debt token. Represents sum(debt/index)\n @return the scaled total supply*"
                  },
                  "functionSelector": "b1bf962d",
                  "id": 21018,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "scaledTotalSupply",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 21009,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8804:8:88"
                  },
                  "parameters": {
                    "id": 21008,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8781:2:88"
                  },
                  "returnParameters": {
                    "id": 21012,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21011,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21018,
                        "src": "8822:7:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21010,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8822:7:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8821:9:88"
                  },
                  "scope": 21294,
                  "src": "8755:113:88",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21026,
                    "nodeType": "Block",
                    "src": "9037:27:88",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21024,
                          "name": "_treasury",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20597,
                          "src": "9050:9:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 21023,
                        "id": 21025,
                        "nodeType": "Return",
                        "src": "9043:16:88"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 21019,
                    "nodeType": "StructuredDocumentation",
                    "src": "8872:96:88",
                    "text": " @dev Returns the address of the Aave treasury, receiving the fees on this aToken*"
                  },
                  "functionSelector": "ae167335",
                  "id": 21027,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "RESERVE_TREASURY_ADDRESS",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 21020,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9004:2:88"
                  },
                  "returnParameters": {
                    "id": 21023,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21022,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21027,
                        "src": "9028:7:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21021,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9028:7:88",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9027:9:88"
                  },
                  "scope": 21294,
                  "src": "8971:93:88",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    5666
                  ],
                  "body": {
                    "id": 21036,
                    "nodeType": "Block",
                    "src": "9247:34:88",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21034,
                          "name": "_underlyingAsset",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20599,
                          "src": "9260:16:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 21033,
                        "id": 21035,
                        "nodeType": "Return",
                        "src": "9253:23:88"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 21028,
                    "nodeType": "StructuredDocumentation",
                    "src": "9068:101:88",
                    "text": " @dev Returns the address of the underlying asset of this aToken (E.g. WETH for aWETH)*"
                  },
                  "functionSelector": "b16a19de",
                  "id": 21037,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "UNDERLYING_ASSET_ADDRESS",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 21030,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9215:8:88"
                  },
                  "parameters": {
                    "id": 21029,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9205:2:88"
                  },
                  "returnParameters": {
                    "id": 21033,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21032,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21037,
                        "src": "9238:7:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21031,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9238:7:88",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9237:9:88"
                  },
                  "scope": 21294,
                  "src": "9172:109:88",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21045,
                    "nodeType": "Block",
                    "src": "9425:23:88",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21043,
                          "name": "_pool",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20595,
                          "src": "9438:5:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "functionReturnParameters": 21042,
                        "id": 21044,
                        "nodeType": "Return",
                        "src": "9431:12:88"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 21038,
                    "nodeType": "StructuredDocumentation",
                    "src": "9285:86:88",
                    "text": " @dev Returns the address of the lending pool where this aToken is used*"
                  },
                  "functionSelector": "7535d246",
                  "id": 21046,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "POOL",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 21039,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9387:2:88"
                  },
                  "returnParameters": {
                    "id": 21042,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21041,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21046,
                        "src": "9411:12:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPool_$6466",
                          "typeString": "contract ILendingPool"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 21040,
                          "name": "ILendingPool",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6466,
                          "src": "9411:12:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9410:14:88"
                  },
                  "scope": 21294,
                  "src": "9374:74:88",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    21465
                  ],
                  "body": {
                    "id": 21055,
                    "nodeType": "Block",
                    "src": "9643:39:88",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21053,
                          "name": "_incentivesController",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20601,
                          "src": "9656:21:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "functionReturnParameters": 21052,
                        "id": 21054,
                        "nodeType": "Return",
                        "src": "9649:28:88"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 21047,
                    "nodeType": "StructuredDocumentation",
                    "src": "9452:93:88",
                    "text": " @dev For internal usage in the logic of the parent contract IncentivizedERC20*"
                  },
                  "id": 21056,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getIncentivesController",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 21049,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9598:8:88"
                  },
                  "parameters": {
                    "id": 21048,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9581:2:88"
                  },
                  "returnParameters": {
                    "id": 21052,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21051,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21056,
                        "src": "9616:25:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                          "typeString": "contract IAaveIncentivesController"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 21050,
                          "name": "IAaveIncentivesController",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5822,
                          "src": "9616:25:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9615:27:88"
                  },
                  "scope": 21294,
                  "src": "9548:134:88",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    5660
                  ],
                  "body": {
                    "id": 21066,
                    "nodeType": "Block",
                    "src": "9861:44:88",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 21063,
                            "name": "_getIncentivesController",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              21056
                            ],
                            "referencedDeclaration": 21056,
                            "src": "9874:24:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IAaveIncentivesController_$5822_$",
                              "typeString": "function () view returns (contract IAaveIncentivesController)"
                            }
                          },
                          "id": 21064,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9874:26:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "functionReturnParameters": 21062,
                        "id": 21065,
                        "nodeType": "Return",
                        "src": "9867:33:88"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 21057,
                    "nodeType": "StructuredDocumentation",
                    "src": "9686:78:88",
                    "text": " @dev Returns the address of the incentives controller contract*"
                  },
                  "functionSelector": "75d26413",
                  "id": 21067,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getIncentivesController",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 21059,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9816:8:88"
                  },
                  "parameters": {
                    "id": 21058,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9799:2:88"
                  },
                  "returnParameters": {
                    "id": 21062,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21061,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21067,
                        "src": "9834:25:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                          "typeString": "contract IAaveIncentivesController"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 21060,
                          "name": "IAaveIncentivesController",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5822,
                          "src": "9834:25:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9833:27:88"
                  },
                  "scope": 21294,
                  "src": "9767:138:88",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    5646
                  ],
                  "body": {
                    "id": 21090,
                    "nodeType": "Block",
                    "src": "10330:83:88",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21084,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21070,
                              "src": "10374:6:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21085,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21072,
                              "src": "10382:6:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 21081,
                                  "name": "_underlyingAsset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20599,
                                  "src": "10343:16:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 21080,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4012,
                                "src": "10336:6:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 21082,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10336:24:88",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 21083,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4180,
                            "src": "10336:37:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 21086,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10336:53:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21087,
                        "nodeType": "ExpressionStatement",
                        "src": "10336:53:88"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21088,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21072,
                          "src": "10402:6:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 21079,
                        "id": 21089,
                        "nodeType": "Return",
                        "src": "10395:13:88"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 21068,
                    "nodeType": "StructuredDocumentation",
                    "src": "9909:286:88",
                    "text": " @dev Transfers the underlying asset to `target`. Used by the LendingPool to transfer\n assets in borrow(), withdraw() and flashLoan()\n @param target The recipient of the aTokens\n @param amount The amount getting transferred\n @return The amount transferred*"
                  },
                  "functionSelector": "4efecaa5",
                  "id": 21091,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 21076,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 21075,
                        "name": "onlyLendingPool",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20617,
                        "src": "10290:15:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "10290:15:88"
                    }
                  ],
                  "name": "transferUnderlyingTo",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 21074,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "10277:8:88"
                  },
                  "parameters": {
                    "id": 21073,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21070,
                        "mutability": "mutable",
                        "name": "target",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21091,
                        "src": "10228:14:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21069,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10228:7:88",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21072,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21091,
                        "src": "10244:14:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21071,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10244:7:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10227:32:88"
                  },
                  "returnParameters": {
                    "id": 21079,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21078,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21091,
                        "src": "10319:7:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21077,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10319:7:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10318:9:88"
                  },
                  "scope": 21294,
                  "src": "10198:215:88",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    5654
                  ],
                  "body": {
                    "id": 21102,
                    "nodeType": "Block",
                    "src": "10689:2:88",
                    "statements": []
                  },
                  "documentation": {
                    "id": 21092,
                    "nodeType": "StructuredDocumentation",
                    "src": "10417:180:88",
                    "text": " @dev Invoked to execute actions on the aToken side after a repayment.\n @param user The user executing the repayment\n @param amount The amount getting repaid*"
                  },
                  "functionSelector": "88dd91a1",
                  "id": 21103,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 21100,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 21099,
                        "name": "onlyLendingPool",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20617,
                        "src": "10673:15:88",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "10673:15:88"
                    }
                  ],
                  "name": "handleRepayment",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 21098,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "10664:8:88"
                  },
                  "parameters": {
                    "id": 21097,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21094,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21103,
                        "src": "10625:12:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21093,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10625:7:88",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21096,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21103,
                        "src": "10639:14:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21095,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10639:7:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10624:30:88"
                  },
                  "returnParameters": {
                    "id": 21101,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10689:0:88"
                  },
                  "scope": 21294,
                  "src": "10600:91:88",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 21193,
                    "nodeType": "Block",
                    "src": "11281:588:88",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 21127,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21122,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21106,
                                "src": "11295:5:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 21125,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11312:1:88",
                                    "subdenomination": null,
                                    "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": 21124,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11304:7:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 21123,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11304:7:88",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 21126,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11304:10:88",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "11295:19:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e56414c49445f4f574e4552",
                              "id": 21128,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11316:15:88",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a30e2b4f22d955e30086ae3aef0adfd87eec9d0d3f055d6aa9af61f522dda886",
                                "typeString": "literal_string \"INVALID_OWNER\""
                              },
                              "value": "INVALID_OWNER"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a30e2b4f22d955e30086ae3aef0adfd87eec9d0d3f055d6aa9af61f522dda886",
                                "typeString": "literal_string \"INVALID_OWNER\""
                              }
                            ],
                            "id": 21121,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11287:7:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21129,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11287:45:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21130,
                        "nodeType": "ExpressionStatement",
                        "src": "11287:45:88"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21135,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21132,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "11377:5:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 21133,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "11377:15:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 21134,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21112,
                                "src": "11396:8:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11377:27:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e56414c49445f45585049524154494f4e",
                              "id": 21136,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11406:20:88",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9fe3e5cf49f72bf8a6a8455c3e990f8479f5dfa09ac808886f330a39b0029c2d",
                                "typeString": "literal_string \"INVALID_EXPIRATION\""
                              },
                              "value": "INVALID_EXPIRATION"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9fe3e5cf49f72bf8a6a8455c3e990f8479f5dfa09ac808886f330a39b0029c2d",
                                "typeString": "literal_string \"INVALID_EXPIRATION\""
                              }
                            ],
                            "id": 21131,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11369:7:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21137,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11369:58:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21138,
                        "nodeType": "ExpressionStatement",
                        "src": "11369:58:88"
                      },
                      {
                        "assignments": [
                          21140
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21140,
                            "mutability": "mutable",
                            "name": "currentValidNonce",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 21193,
                            "src": "11433:25:88",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21139,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11433:7:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 21144,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 21141,
                            "name": "_nonces",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20591,
                            "src": "11461:7:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 21143,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 21142,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21106,
                            "src": "11469:5:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11461:14:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11433:42:88"
                      },
                      {
                        "assignments": [
                          21146
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21146,
                            "mutability": "mutable",
                            "name": "digest",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 21193,
                            "src": "11481:14:88",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 21145,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "11481:7:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 21165,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "1901",
                                  "id": 21150,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11551:10:88",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string \"\u0019\u0001\""
                                  },
                                  "value": "\u0019\u0001"
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 21151,
                                  "name": "DOMAIN_SEPARATOR",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20593,
                                  "src": "11573:16:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 21155,
                                          "name": "PERMIT_TYPEHASH",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20583,
                                          "src": "11622:15:88",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 21156,
                                          "name": "owner",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21106,
                                          "src": "11639:5:88",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 21157,
                                          "name": "spender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21108,
                                          "src": "11646:7:88",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 21158,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21110,
                                          "src": "11655:5:88",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 21159,
                                          "name": "currentValidNonce",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21140,
                                          "src": "11662:17:88",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 21160,
                                          "name": "deadline",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21112,
                                          "src": "11681:8:88",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 21153,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "11611:3:88",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 21154,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encode",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "11611:10:88",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 21161,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "11611:79:88",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 21152,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "11601:9:88",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 21162,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11601:90:88",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string \"\u0019\u0001\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21148,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "11523:3:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 21149,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "11523:16:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 21163,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11523:178:88",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 21147,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "11504:9:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 21164,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11504:205:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11481:228:88"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 21174,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21167,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21106,
                                "src": "11723:5:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 21169,
                                    "name": "digest",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21146,
                                    "src": "11742:6:88",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 21170,
                                    "name": "v",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21114,
                                    "src": "11750:1:88",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 21171,
                                    "name": "r",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21116,
                                    "src": "11753:1:88",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 21172,
                                    "name": "s",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21118,
                                    "src": "11756:1:88",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 21168,
                                  "name": "ecrecover",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -6,
                                  "src": "11732:9:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                                    "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                                  }
                                },
                                "id": 21173,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11732:26:88",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "11723:35:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e56414c49445f5349474e4154555245",
                              "id": 21175,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11760:19:88",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5e2e9eaa2d734966dea0900deacd15b20129fbce05255d633a3ce5ebca181b88",
                                "typeString": "literal_string \"INVALID_SIGNATURE\""
                              },
                              "value": "INVALID_SIGNATURE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5e2e9eaa2d734966dea0900deacd15b20129fbce05255d633a3ce5ebca181b88",
                                "typeString": "literal_string \"INVALID_SIGNATURE\""
                              }
                            ],
                            "id": 21166,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11715:7:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21176,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11715:65:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21177,
                        "nodeType": "ExpressionStatement",
                        "src": "11715:65:88"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21185,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 21178,
                              "name": "_nonces",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20591,
                              "src": "11786:7:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 21180,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 21179,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21106,
                              "src": "11794:5:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11786:14:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 21183,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11825:1:88",
                                "subdenomination": null,
                                "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"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 21181,
                                "name": "currentValidNonce",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21140,
                                "src": "11803:17:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 21182,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4329,
                              "src": "11803:21:88",
                              "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": 21184,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11803:24:88",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11786:41:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21186,
                        "nodeType": "ExpressionStatement",
                        "src": "11786:41:88"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21188,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21106,
                              "src": "11842:5:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21189,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21108,
                              "src": "11849:7:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21190,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21110,
                              "src": "11858:5:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21187,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21930,
                            "src": "11833:8:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 21191,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11833:31:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21192,
                        "nodeType": "ExpressionStatement",
                        "src": "11833:31:88"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 21104,
                    "nodeType": "StructuredDocumentation",
                    "src": "10695:430:88",
                    "text": " @dev implements the permit function as for\n https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n @param owner The owner of the funds\n @param spender The spender\n @param value The amount\n @param deadline The deadline timestamp, type(uint256).max for max deadline\n @param v Signature param\n @param s Signature param\n @param r Signature param"
                  },
                  "functionSelector": "d505accf",
                  "id": 21194,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "permit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 21119,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21106,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21194,
                        "src": "11149:13:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21105,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11149:7:88",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21108,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21194,
                        "src": "11168:15:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21107,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11168:7:88",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21110,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21194,
                        "src": "11189:13:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21109,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11189:7:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21112,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21194,
                        "src": "11208:16:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21111,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11208:7:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21114,
                        "mutability": "mutable",
                        "name": "v",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21194,
                        "src": "11230:7:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 21113,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "11230:5:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21116,
                        "mutability": "mutable",
                        "name": "r",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21194,
                        "src": "11243:9:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 21115,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11243:7:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21118,
                        "mutability": "mutable",
                        "name": "s",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21194,
                        "src": "11258:9:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 21117,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11258:7:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11143:128:88"
                  },
                  "returnParameters": {
                    "id": 21120,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11281:0:88"
                  },
                  "scope": 21294,
                  "src": "11128:741:88",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 21273,
                    "nodeType": "Block",
                    "src": "12317:523:88",
                    "statements": [
                      {
                        "assignments": [
                          21207
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21207,
                            "mutability": "mutable",
                            "name": "underlyingAsset",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 21273,
                            "src": "12323:23:88",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 21206,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "12323:7:88",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 21209,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 21208,
                          "name": "_underlyingAsset",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20599,
                          "src": "12349:16:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12323:42:88"
                      },
                      {
                        "assignments": [
                          21211
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21211,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 21273,
                            "src": "12371:17:88",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPool_$6466",
                              "typeString": "contract ILendingPool"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 21210,
                              "name": "ILendingPool",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 6466,
                              "src": "12371:12:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 21213,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 21212,
                          "name": "_pool",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20595,
                          "src": "12391:5:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12371:25:88"
                      },
                      {
                        "assignments": [
                          21215
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21215,
                            "mutability": "mutable",
                            "name": "index",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 21273,
                            "src": "12403:13:88",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21214,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12403:7:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 21220,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21218,
                              "name": "underlyingAsset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21207,
                              "src": "12451:15:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21216,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21211,
                              "src": "12419:4:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 21217,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getReserveNormalizedIncome",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6413,
                            "src": "12419:31:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 21219,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12419:48:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12403:64:88"
                      },
                      {
                        "assignments": [
                          21222
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21222,
                            "mutability": "mutable",
                            "name": "fromBalanceBefore",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 21273,
                            "src": "12474:25:88",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21221,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12474:7:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 21230,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21228,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21215,
                              "src": "12531:5:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 21225,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21197,
                                  "src": "12518:4:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21223,
                                  "name": "super",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -25,
                                  "src": "12502:5:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_super$_AToken_$21294",
                                    "typeString": "contract super AToken"
                                  }
                                },
                                "id": 21224,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21459,
                                "src": "12502:15:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view returns (uint256)"
                                }
                              },
                              "id": 21226,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12502:21:88",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 21227,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayMul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20381,
                            "src": "12502:28:88",
                            "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": 21229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12502:35:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12474:63:88"
                      },
                      {
                        "assignments": [
                          21232
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21232,
                            "mutability": "mutable",
                            "name": "toBalanceBefore",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 21273,
                            "src": "12543:23:88",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21231,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12543:7:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 21240,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21238,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21215,
                              "src": "12596:5:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 21235,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21199,
                                  "src": "12585:2:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21233,
                                  "name": "super",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -25,
                                  "src": "12569:5:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_super$_AToken_$21294",
                                    "typeString": "contract super AToken"
                                  }
                                },
                                "id": 21234,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21459,
                                "src": "12569:15:88",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view returns (uint256)"
                                }
                              },
                              "id": 21236,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12569:19:88",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 21237,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayMul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20381,
                            "src": "12569:26:88",
                            "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": 21239,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12569:33:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12543:59:88"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21244,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21197,
                              "src": "12625:4:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21245,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21199,
                              "src": "12631:2:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 21248,
                                  "name": "index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21215,
                                  "src": "12649:5:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21246,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21201,
                                  "src": "12635:6:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 21247,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "rayDiv",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20432,
                                "src": "12635:13:88",
                                "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": 21249,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12635:20:88",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21241,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "12609:5:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_AToken_$21294",
                                "typeString": "contract super AToken"
                              }
                            },
                            "id": 21243,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21739,
                            "src": "12609:15:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 21250,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12609:47:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21251,
                        "nodeType": "ExpressionStatement",
                        "src": "12609:47:88"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 21252,
                          "name": "validate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21203,
                          "src": "12667:8:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 21265,
                        "nodeType": "IfStatement",
                        "src": "12663:121:88",
                        "trueBody": {
                          "id": 21264,
                          "nodeType": "Block",
                          "src": "12677:107:88",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 21256,
                                    "name": "underlyingAsset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21207,
                                    "src": "12707:15:88",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 21257,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21197,
                                    "src": "12724:4:88",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 21258,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21199,
                                    "src": "12730:2:88",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 21259,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21201,
                                    "src": "12734:6:88",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 21260,
                                    "name": "fromBalanceBefore",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21222,
                                    "src": "12742:17:88",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 21261,
                                    "name": "toBalanceBefore",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21232,
                                    "src": "12761:15:88",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 21253,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21211,
                                    "src": "12685:4:88",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                      "typeString": "contract ILendingPool"
                                    }
                                  },
                                  "id": 21255,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "finalizeTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6444,
                                  "src": "12685:21:88",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,address,uint256,uint256,uint256) external"
                                  }
                                },
                                "id": 21262,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12685:92:88",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 21263,
                              "nodeType": "ExpressionStatement",
                              "src": "12685:92:88"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21267,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21197,
                              "src": "12811:4:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21268,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21199,
                              "src": "12817:2:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21269,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21201,
                              "src": "12821:6:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21270,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21215,
                              "src": "12829:5:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21266,
                            "name": "BalanceTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5606,
                            "src": "12795:15:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256)"
                            }
                          },
                          "id": 21271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12795:40:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21272,
                        "nodeType": "EmitStatement",
                        "src": "12790:45:88"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 21195,
                    "nodeType": "StructuredDocumentation",
                    "src": "11873:336:88",
                    "text": " @dev Transfers the aTokens between two users. Validates the transfer\n (ie checks for valid HF after the transfer) if required\n @param from The source address\n @param to The destination address\n @param amount The amount getting transferred\n @param validate `true` if the transfer needs to be validated*"
                  },
                  "id": 21274,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 21204,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21197,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21274,
                        "src": "12236:12:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21196,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12236:7:88",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21199,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21274,
                        "src": "12254:10:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21198,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12254:7:88",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21201,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21274,
                        "src": "12270:14:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21200,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12270:7:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21203,
                        "mutability": "mutable",
                        "name": "validate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21274,
                        "src": "12290:13:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 21202,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "12290:4:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12230:77:88"
                  },
                  "returnParameters": {
                    "id": 21205,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12317:0:88"
                  },
                  "scope": 21294,
                  "src": "12212:628:88",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    21739
                  ],
                  "body": {
                    "id": 21292,
                    "nodeType": "Block",
                    "src": "13167:44:88",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21286,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21277,
                              "src": "13183:4:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21287,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21279,
                              "src": "13189:2:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21288,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21281,
                              "src": "13193:6:88",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 21289,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13201:4:88",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 21285,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              21274,
                              21293
                            ],
                            "referencedDeclaration": 21274,
                            "src": "13173:9:88",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,uint256,bool)"
                            }
                          },
                          "id": 21290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13173:33:88",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21291,
                        "nodeType": "ExpressionStatement",
                        "src": "13173:33:88"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 21275,
                    "nodeType": "StructuredDocumentation",
                    "src": "12844:225:88",
                    "text": " @dev Overrides the parent _transfer to force validated transfer() and transferFrom()\n @param from The source address\n @param to The destination address\n @param amount The amount getting transferred*"
                  },
                  "id": 21293,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 21283,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "13158:8:88"
                  },
                  "parameters": {
                    "id": 21282,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21277,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21293,
                        "src": "13096:12:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21276,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13096:7:88",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21279,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21293,
                        "src": "13114:10:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21278,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13114:7:88",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21281,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21293,
                        "src": "13130:14:88",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21280,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13130:7:88",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13090:58:88"
                  },
                  "returnParameters": {
                    "id": 21284,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13167:0:88"
                  },
                  "scope": 21294,
                  "src": "13072:139:88",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 21295,
              "src": "834:12379:88"
            }
          ],
          "src": "37:13177:88"
        },
        "id": 88
      },
      "contracts/protocol/tokenization/DelegationAwareAToken.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/tokenization/DelegationAwareAToken.sol",
          "exportedSymbols": {
            "DelegationAwareAToken": [
              21343
            ]
          },
          "id": 21344,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 21296,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:89"
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPool.sol",
              "file": "../../interfaces/ILendingPool.sol",
              "id": 21298,
              "nodeType": "ImportDirective",
              "scope": 21344,
              "sourceUnit": 6467,
              "src": "62:63:89",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 21297,
                    "name": "ILendingPool",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:12:89",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IDelegationToken.sol",
              "file": "../../interfaces/IDelegationToken.sol",
              "id": 21300,
              "nodeType": "ImportDirective",
              "scope": 21344,
              "sourceUnit": 5909,
              "src": "126:71:89",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 21299,
                    "name": "IDelegationToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "134:16:89",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/helpers/Errors.sol",
              "file": "../libraries/helpers/Errors.sol",
              "id": 21302,
              "nodeType": "ImportDirective",
              "scope": 21344,
              "sourceUnit": 17240,
              "src": "198:55:89",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 21301,
                    "name": "Errors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "206:6:89",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/tokenization/AToken.sol",
              "file": "./AToken.sol",
              "id": 21304,
              "nodeType": "ImportDirective",
              "scope": 21344,
              "sourceUnit": 21295,
              "src": "254:36:89",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 21303,
                    "name": "AToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "262:6:89",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 21306,
                    "name": "AToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21294,
                    "src": "539:6:89",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AToken_$21294",
                      "typeString": "contract AToken"
                    }
                  },
                  "id": 21307,
                  "nodeType": "InheritanceSpecifier",
                  "src": "539:6:89"
                }
              ],
              "contractDependencies": [
                3427,
                4012,
                4034,
                5667,
                6015,
                7005,
                16019,
                21294,
                21971
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 21305,
                "nodeType": "StructuredDocumentation",
                "src": "292:212:89",
                "text": " @title Aave AToken enabled to delegate voting power of the underlying asset to a different address\n @dev The underlying asset needs to be compatible with the COMP delegation interface\n @author Aave"
              },
              "fullyImplemented": true,
              "id": 21343,
              "linearizedBaseContracts": [
                21343,
                21294,
                5667,
                6015,
                7005,
                21971,
                4034,
                4012,
                3427,
                16019
              ],
              "name": "DelegationAwareAToken",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 21325,
                    "nodeType": "Block",
                    "src": "573:148:89",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 21319,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 21310,
                                  "name": "_msgSender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3415,
                                  "src": "594:10:89",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                    "typeString": "function () view returns (address payable)"
                                  }
                                },
                                "id": 21311,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "594:12:89",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 21313,
                                            "name": "_pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20595,
                                            "src": "623:5:89",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                              "typeString": "contract ILendingPool"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                              "typeString": "contract ILendingPool"
                                            }
                                          ],
                                          "id": 21312,
                                          "name": "ILendingPool",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6466,
                                          "src": "610:12:89",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_ILendingPool_$6466_$",
                                            "typeString": "type(contract ILendingPool)"
                                          }
                                        },
                                        "id": 21314,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "610:19:89",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                          "typeString": "contract ILendingPool"
                                        }
                                      },
                                      "id": 21315,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "getAddressesProvider",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6455,
                                      "src": "610:40:89",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ILendingPoolAddressesProvider_$6617_$",
                                        "typeString": "function () view external returns (contract ILendingPoolAddressesProvider)"
                                      }
                                    },
                                    "id": 21316,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "610:42:89",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$6617",
                                      "typeString": "contract ILendingPoolAddressesProvider"
                                    }
                                  },
                                  "id": 21317,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getPoolAdmin",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6581,
                                  "src": "610:55:89",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                    "typeString": "function () view external returns (address)"
                                  }
                                },
                                "id": 21318,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "610:57:89",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "594:73:89",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21320,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "675:6:89",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 21321,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "CALLER_NOT_POOL_ADMIN",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16990,
                              "src": "675:28:89",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 21309,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "579:7:89",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21322,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "579:130:89",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21323,
                        "nodeType": "ExpressionStatement",
                        "src": "579:130:89"
                      },
                      {
                        "id": 21324,
                        "nodeType": "PlaceholderStatement",
                        "src": "715:1:89"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 21326,
                  "name": "onlyPoolAdmin",
                  "nodeType": "ModifierDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 21308,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "573:0:89"
                  },
                  "src": "550:171:89",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21341,
                    "nodeType": "Block",
                    "src": "959:65:89",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21338,
                              "name": "delegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21329,
                              "src": "1009:9:89",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 21335,
                                  "name": "_underlyingAsset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20599,
                                  "src": "982:16:89",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 21334,
                                "name": "IDelegationToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5908,
                                "src": "965:16:89",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IDelegationToken_$5908_$",
                                  "typeString": "type(contract IDelegationToken)"
                                }
                              },
                              "id": 21336,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "965:34:89",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IDelegationToken_$5908",
                                "typeString": "contract IDelegationToken"
                              }
                            },
                            "id": 21337,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "delegate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5907,
                            "src": "965:43:89",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address) external"
                            }
                          },
                          "id": 21339,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "965:54:89",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21340,
                        "nodeType": "ExpressionStatement",
                        "src": "965:54:89"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 21327,
                    "nodeType": "StructuredDocumentation",
                    "src": "725:159:89",
                    "text": " @dev Delegates voting power of the underlying asset to a `delegatee` address\n @param delegatee The address that will receive the delegation*"
                  },
                  "functionSelector": "2f114618",
                  "id": 21342,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 21332,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 21331,
                        "name": "onlyPoolAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21326,
                        "src": "945:13:89",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "945:13:89"
                    }
                  ],
                  "name": "delegateUnderlyingTo",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 21330,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21329,
                        "mutability": "mutable",
                        "name": "delegatee",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21342,
                        "src": "917:17:89",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21328,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "917:7:89",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "916:19:89"
                  },
                  "returnParameters": {
                    "id": 21333,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "959:0:89"
                  },
                  "scope": 21343,
                  "src": "887:137:89",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 21344,
              "src": "505:521:89"
            }
          ],
          "src": "37:990:89"
        },
        "id": 89
      },
      "contracts/protocol/tokenization/IncentivizedERC20.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/tokenization/IncentivizedERC20.sol",
          "exportedSymbols": {
            "IncentivizedERC20": [
              21971
            ]
          },
          "id": 21972,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 21345,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:90"
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/Context.sol",
              "file": "../../dependencies/openzeppelin/contracts/Context.sol",
              "id": 21347,
              "nodeType": "ImportDirective",
              "scope": 21972,
              "sourceUnit": 3428,
              "src": "62:78:90",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 21346,
                    "name": "Context",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:7:90",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
              "file": "../../dependencies/openzeppelin/contracts/IERC20.sol",
              "id": 21349,
              "nodeType": "ImportDirective",
              "scope": 21972,
              "sourceUnit": 4013,
              "src": "141:76:90",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 21348,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "149:6:90",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20Detailed.sol",
              "file": "../../dependencies/openzeppelin/contracts/IERC20Detailed.sol",
              "id": 21351,
              "nodeType": "ImportDirective",
              "scope": 21972,
              "sourceUnit": 4035,
              "src": "218:92:90",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 21350,
                    "name": "IERC20Detailed",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "226:14:90",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeMath.sol",
              "file": "../../dependencies/openzeppelin/contracts/SafeMath.sol",
              "id": 21353,
              "nodeType": "ImportDirective",
              "scope": 21972,
              "sourceUnit": 4497,
              "src": "311:80:90",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 21352,
                    "name": "SafeMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "319:8:90",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IAaveIncentivesController.sol",
              "file": "../../interfaces/IAaveIncentivesController.sol",
              "id": 21355,
              "nodeType": "ImportDirective",
              "scope": 21972,
              "sourceUnit": 5823,
              "src": "392:89:90",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 21354,
                    "name": "IAaveIncentivesController",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "400:25:90",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 21357,
                    "name": "Context",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3427,
                    "src": "652:7:90",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Context_$3427",
                      "typeString": "contract Context"
                    }
                  },
                  "id": 21358,
                  "nodeType": "InheritanceSpecifier",
                  "src": "652:7:90"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 21359,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4012,
                    "src": "661:6:90",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$4012",
                      "typeString": "contract IERC20"
                    }
                  },
                  "id": 21360,
                  "nodeType": "InheritanceSpecifier",
                  "src": "661:6:90"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 21361,
                    "name": "IERC20Detailed",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4034,
                    "src": "669:14:90",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Detailed_$4034",
                      "typeString": "contract IERC20Detailed"
                    }
                  },
                  "id": 21362,
                  "nodeType": "InheritanceSpecifier",
                  "src": "669:14:90"
                }
              ],
              "contractDependencies": [
                3427,
                4012,
                4034
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 21356,
                "nodeType": "StructuredDocumentation",
                "src": "483:129:90",
                "text": " @title ERC20\n @notice Basic ERC20 implementation\n @author Aave, inspired by the Openzeppelin ERC20 implementation*"
              },
              "fullyImplemented": false,
              "id": 21971,
              "linearizedBaseContracts": [
                21971,
                4034,
                4012,
                3427
              ],
              "name": "IncentivizedERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 21365,
                  "libraryName": {
                    "contractScope": null,
                    "id": 21363,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4496,
                    "src": "694:8:90",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$4496",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "688:27:90",
                  "typeName": {
                    "id": 21364,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "707:7:90",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 21369,
                  "mutability": "mutable",
                  "name": "_balances",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21971,
                  "src": "719:46:90",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 21368,
                    "keyType": {
                      "id": 21366,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "727:7:90",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "719:27:90",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 21367,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "738:7:90",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21375,
                  "mutability": "mutable",
                  "name": "_allowances",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21971,
                  "src": "770:67:90",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "typeName": {
                    "id": 21374,
                    "keyType": {
                      "id": 21370,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "778:7:90",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "770:47:90",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                      "typeString": "mapping(address => mapping(address => uint256))"
                    },
                    "valueType": {
                      "id": 21373,
                      "keyType": {
                        "id": 21371,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "797:7:90",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "789:27:90",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "valueType": {
                        "id": 21372,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "808:7:90",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 21377,
                  "mutability": "mutable",
                  "name": "_totalSupply",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21971,
                  "src": "841:29:90",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21376,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "841:7:90",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21379,
                  "mutability": "mutable",
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21971,
                  "src": "874:20:90",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21378,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "874:6:90",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 21381,
                  "mutability": "mutable",
                  "name": "_symbol",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21971,
                  "src": "898:22:90",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21380,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "898:6:90",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 21383,
                  "mutability": "mutable",
                  "name": "_decimals",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21971,
                  "src": "924:23:90",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 21382,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "924:5:90",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 21404,
                    "nodeType": "Block",
                    "src": "1045:71:90",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21392,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21379,
                            "src": "1051:5:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 21393,
                            "name": "name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21385,
                            "src": "1059:4:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1051:12:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 21395,
                        "nodeType": "ExpressionStatement",
                        "src": "1051:12:90"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21398,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21396,
                            "name": "_symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21381,
                            "src": "1069:7:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 21397,
                            "name": "symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21387,
                            "src": "1079:6:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1069:16:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 21399,
                        "nodeType": "ExpressionStatement",
                        "src": "1069:16:90"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21402,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21400,
                            "name": "_decimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21383,
                            "src": "1091:9:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 21401,
                            "name": "decimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21389,
                            "src": "1103:8:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "1091:20:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 21403,
                        "nodeType": "ExpressionStatement",
                        "src": "1091:20:90"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 21405,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 21390,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21385,
                        "mutability": "mutable",
                        "name": "name",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21405,
                        "src": "969:18:90",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 21384,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "969:6:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21387,
                        "mutability": "mutable",
                        "name": "symbol",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21405,
                        "src": "993:20:90",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 21386,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "993:6:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21389,
                        "mutability": "mutable",
                        "name": "decimals",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21405,
                        "src": "1019:14:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 21388,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "1019:5:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "963:74:90"
                  },
                  "returnParameters": {
                    "id": 21391,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1045:0:90"
                  },
                  "scope": 21971,
                  "src": "952:164:90",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4023
                  ],
                  "body": {
                    "id": 21414,
                    "nodeType": "Block",
                    "src": "1229:23:90",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21412,
                          "name": "_name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21379,
                          "src": "1242:5:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 21411,
                        "id": 21413,
                        "nodeType": "Return",
                        "src": "1235:12:90"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 21406,
                    "nodeType": "StructuredDocumentation",
                    "src": "1120:45:90",
                    "text": " @return The name of the token*"
                  },
                  "functionSelector": "06fdde03",
                  "id": 21415,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 21408,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1196:8:90"
                  },
                  "parameters": {
                    "id": 21407,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1181:2:90"
                  },
                  "returnParameters": {
                    "id": 21411,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21410,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21415,
                        "src": "1214:13:90",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 21409,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1214:6:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1213:15:90"
                  },
                  "scope": 21971,
                  "src": "1168:84:90",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4028
                  ],
                  "body": {
                    "id": 21424,
                    "nodeType": "Block",
                    "src": "1369:25:90",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21422,
                          "name": "_symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21381,
                          "src": "1382:7:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 21421,
                        "id": 21423,
                        "nodeType": "Return",
                        "src": "1375:14:90"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 21416,
                    "nodeType": "StructuredDocumentation",
                    "src": "1256:47:90",
                    "text": " @return The symbol of the token*"
                  },
                  "functionSelector": "95d89b41",
                  "id": 21425,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 21418,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1336:8:90"
                  },
                  "parameters": {
                    "id": 21417,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1321:2:90"
                  },
                  "returnParameters": {
                    "id": 21421,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21420,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21425,
                        "src": "1354:13:90",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 21419,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1354:6:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1353:15:90"
                  },
                  "scope": 21971,
                  "src": "1306:88:90",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4033
                  ],
                  "body": {
                    "id": 21434,
                    "nodeType": "Block",
                    "src": "1507:27:90",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21432,
                          "name": "_decimals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21383,
                          "src": "1520:9:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "functionReturnParameters": 21431,
                        "id": 21433,
                        "nodeType": "Return",
                        "src": "1513:16:90"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 21426,
                    "nodeType": "StructuredDocumentation",
                    "src": "1398:49:90",
                    "text": " @return The decimals of the token*"
                  },
                  "functionSelector": "313ce567",
                  "id": 21435,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decimals",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 21428,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1482:8:90"
                  },
                  "parameters": {
                    "id": 21427,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1467:2:90"
                  },
                  "returnParameters": {
                    "id": 21431,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21430,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21435,
                        "src": "1500:5:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 21429,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "1500:5:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1499:7:90"
                  },
                  "scope": 21971,
                  "src": "1450:84:90",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3943
                  ],
                  "body": {
                    "id": 21444,
                    "nodeType": "Block",
                    "src": "1664:30:90",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21442,
                          "name": "_totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21377,
                          "src": "1677:12:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 21441,
                        "id": 21443,
                        "nodeType": "Return",
                        "src": "1670:19:90"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 21436,
                    "nodeType": "StructuredDocumentation",
                    "src": "1538:53:90",
                    "text": " @return The total supply of the token*"
                  },
                  "functionSelector": "18160ddd",
                  "id": 21445,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 21438,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1637:8:90"
                  },
                  "parameters": {
                    "id": 21437,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1614:2:90"
                  },
                  "returnParameters": {
                    "id": 21441,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21440,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21445,
                        "src": "1655:7:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21439,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1655:7:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1654:9:90"
                  },
                  "scope": 21971,
                  "src": "1594:100:90",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3951
                  ],
                  "body": {
                    "id": 21458,
                    "nodeType": "Block",
                    "src": "1832:36:90",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 21454,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21369,
                            "src": "1845:9:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 21456,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 21455,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21448,
                            "src": "1855:7:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1845:18:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 21453,
                        "id": 21457,
                        "nodeType": "Return",
                        "src": "1838:25:90"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 21446,
                    "nodeType": "StructuredDocumentation",
                    "src": "1698:48:90",
                    "text": " @return The balance of the token*"
                  },
                  "functionSelector": "70a08231",
                  "id": 21459,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 21450,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1805:8:90"
                  },
                  "parameters": {
                    "id": 21449,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21448,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21459,
                        "src": "1768:15:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21447,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1768:7:90",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1767:17:90"
                  },
                  "returnParameters": {
                    "id": 21453,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21452,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21459,
                        "src": "1823:7:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21451,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1823:7:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1822:9:90"
                  },
                  "scope": 21971,
                  "src": "1749:119:90",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 21460,
                    "nodeType": "StructuredDocumentation",
                    "src": "1872:185:90",
                    "text": " @return Abstract function implemented by the child aToken/debtToken. \n Done this way in order to not break compatibility with previous versions of aTokens/debtTokens*"
                  },
                  "id": 21465,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getIncentivesController",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 21461,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2093:2:90"
                  },
                  "returnParameters": {
                    "id": 21464,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21463,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21465,
                        "src": "2126:25:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                          "typeString": "contract IAaveIncentivesController"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 21462,
                          "name": "IAaveIncentivesController",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5822,
                          "src": "2126:25:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2125:27:90"
                  },
                  "scope": 21971,
                  "src": "2060:93:90",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    3961
                  ],
                  "body": {
                    "id": 21492,
                    "nodeType": "Block",
                    "src": "2505:122:90",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 21477,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3415,
                                "src": "2521:10:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 21478,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2521:12:90",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21479,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21468,
                              "src": "2535:9:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21480,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21470,
                              "src": "2546:6:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21476,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21739,
                            "src": "2511:9:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 21481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2511:42:90",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21482,
                        "nodeType": "ExpressionStatement",
                        "src": "2511:42:90"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 21484,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3415,
                                "src": "2573:10:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 21485,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2573:12:90",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21486,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21468,
                              "src": "2587:9:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21487,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21470,
                              "src": "2598:6:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21483,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4002,
                            "src": "2564:8:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 21488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2564:41:90",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21489,
                        "nodeType": "EmitStatement",
                        "src": "2559:46:90"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 21490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2618:4:90",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 21475,
                        "id": 21491,
                        "nodeType": "Return",
                        "src": "2611:11:90"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 21466,
                    "nodeType": "StructuredDocumentation",
                    "src": "2157:253:90",
                    "text": " @dev Executes a transfer of tokens from _msgSender() to recipient\n @param recipient The recipient of the tokens\n @param amount The amount of tokens being transferred\n @return `true` if the transfer succeeds, `false` otherwise*"
                  },
                  "functionSelector": "a9059cbb",
                  "id": 21493,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 21472,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2481:8:90"
                  },
                  "parameters": {
                    "id": 21471,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21468,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21493,
                        "src": "2431:17:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21467,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2431:7:90",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21470,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21493,
                        "src": "2450:14:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21469,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2450:7:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2430:35:90"
                  },
                  "returnParameters": {
                    "id": 21475,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21474,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21493,
                        "src": "2499:4:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 21473,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2499:4:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2498:6:90"
                  },
                  "scope": 21971,
                  "src": "2413:214:90",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3971
                  ],
                  "body": {
                    "id": 21510,
                    "nodeType": "Block",
                    "src": "3013:45:90",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 21504,
                              "name": "_allowances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21375,
                              "src": "3026:11:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 21506,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 21505,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21496,
                              "src": "3038:5:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3026:18:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 21508,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 21507,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21498,
                            "src": "3045:7:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3026:27:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 21503,
                        "id": 21509,
                        "nodeType": "Return",
                        "src": "3019:34:90"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 21494,
                    "nodeType": "StructuredDocumentation",
                    "src": "2631:259:90",
                    "text": " @dev Returns the allowance of spender on the tokens owned by owner\n @param owner The owner of the tokens\n @param spender The user allowed to spend the owner's tokens\n @return The amount of owner's tokens spender is allowed to spend*"
                  },
                  "functionSelector": "dd62ed3e",
                  "id": 21511,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 21500,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2980:8:90"
                  },
                  "parameters": {
                    "id": 21499,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21496,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21511,
                        "src": "2912:13:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21495,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2912:7:90",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21498,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21511,
                        "src": "2927:15:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21497,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2927:7:90",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2911:32:90"
                  },
                  "returnParameters": {
                    "id": 21503,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21502,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21511,
                        "src": "3002:7:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21501,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3002:7:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3001:9:90"
                  },
                  "scope": 21971,
                  "src": "2893:165:90",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3981
                  ],
                  "body": {
                    "id": 21531,
                    "nodeType": "Block",
                    "src": "3319:67:90",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 21523,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3415,
                                "src": "3334:10:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 21524,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3334:12:90",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21525,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21514,
                              "src": "3348:7:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21526,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21516,
                              "src": "3357:6:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21522,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21930,
                            "src": "3325:8:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 21527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3325:39:90",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21528,
                        "nodeType": "ExpressionStatement",
                        "src": "3325:39:90"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 21529,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3377:4:90",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 21521,
                        "id": 21530,
                        "nodeType": "Return",
                        "src": "3370:11:90"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 21512,
                    "nodeType": "StructuredDocumentation",
                    "src": "3062:165:90",
                    "text": " @dev Allows `spender` to spend the tokens owned by _msgSender()\n @param spender The user allowed to spend _msgSender() tokens\n @return `true`*"
                  },
                  "functionSelector": "095ea7b3",
                  "id": 21532,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 21518,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3295:8:90"
                  },
                  "parameters": {
                    "id": 21517,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21514,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21532,
                        "src": "3247:15:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21513,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3247:7:90",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21516,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21532,
                        "src": "3264:14:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21515,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3264:7:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3246:33:90"
                  },
                  "returnParameters": {
                    "id": 21521,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21520,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21532,
                        "src": "3313:4:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 21519,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3313:4:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3312:6:90"
                  },
                  "scope": 21971,
                  "src": "3230:156:90",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3993
                  ],
                  "body": {
                    "id": 21575,
                    "nodeType": "Block",
                    "src": "3847:261:90",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21546,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21535,
                              "src": "3863:6:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21547,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21537,
                              "src": "3871:9:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21548,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21539,
                              "src": "3882:6:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21545,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21739,
                            "src": "3853:9:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 21549,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3853:36:90",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21550,
                        "nodeType": "ExpressionStatement",
                        "src": "3853:36:90"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21552,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21535,
                              "src": "3911:6:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 21553,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3415,
                                "src": "3925:10:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 21554,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3925:12:90",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 21562,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21539,
                                  "src": "3983:6:90",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365",
                                  "id": 21563,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3991:42:90",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330",
                                    "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\""
                                  },
                                  "value": "ERC20: transfer amount exceeds allowance"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330",
                                    "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 21555,
                                      "name": "_allowances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21375,
                                      "src": "3945:11:90",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 21557,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 21556,
                                      "name": "sender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21535,
                                      "src": "3957:6:90",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3945:19:90",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 21560,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 21558,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3415,
                                      "src": "3965:10:90",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                        "typeString": "function () view returns (address payable)"
                                      }
                                    },
                                    "id": 21559,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3965:12:90",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3945:33:90",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 21561,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4374,
                                "src": "3945:37:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                                }
                              },
                              "id": 21564,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3945:89:90",
                              "tryCall": false,
                              "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": 21551,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21930,
                            "src": "3895:8:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 21565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3895:145:90",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21566,
                        "nodeType": "ExpressionStatement",
                        "src": "3895:145:90"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21568,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21535,
                              "src": "4060:6:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21569,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21537,
                              "src": "4068:9:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21570,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21539,
                              "src": "4079:6:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21567,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4002,
                            "src": "4051:8:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 21571,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4051:35:90",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21572,
                        "nodeType": "EmitStatement",
                        "src": "4046:40:90"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 21573,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4099:4:90",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 21544,
                        "id": 21574,
                        "nodeType": "Return",
                        "src": "4092:11:90"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 21533,
                    "nodeType": "StructuredDocumentation",
                    "src": "3390:326:90",
                    "text": " @dev Executes a transfer of token from sender to recipient, if _msgSender() is allowed to do so\n @param sender The owner of the tokens\n @param recipient The recipient of the tokens\n @param amount The amount of tokens being transferred\n @return `true` if the transfer succeeds, `false` otherwise*"
                  },
                  "functionSelector": "23b872dd",
                  "id": 21576,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 21541,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3823:8:90"
                  },
                  "parameters": {
                    "id": 21540,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21535,
                        "mutability": "mutable",
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21576,
                        "src": "3746:14:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21534,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3746:7:90",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21537,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21576,
                        "src": "3766:17:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21536,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3766:7:90",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21539,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21576,
                        "src": "3789:14:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21538,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3789:7:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3740:67:90"
                  },
                  "returnParameters": {
                    "id": 21544,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21543,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21576,
                        "src": "3841:4:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 21542,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3841:4:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3840:6:90"
                  },
                  "scope": 21971,
                  "src": "3719:389:90",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21603,
                    "nodeType": "Block",
                    "src": "4448:111:90",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 21587,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3415,
                                "src": "4463:10:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 21588,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4463:12:90",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21589,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21579,
                              "src": "4477:7:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 21597,
                                  "name": "addedValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21581,
                                  "src": "4525:10:90",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 21590,
                                      "name": "_allowances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21375,
                                      "src": "4486:11:90",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 21593,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 21591,
                                        "name": "_msgSender",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3415,
                                        "src": "4498:10:90",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                          "typeString": "function () view returns (address payable)"
                                        }
                                      },
                                      "id": 21592,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4498:12:90",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4486:25:90",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 21595,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 21594,
                                    "name": "spender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21579,
                                    "src": "4512:7:90",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4486:34:90",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 21596,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4329,
                                "src": "4486:38:90",
                                "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": 21598,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4486:50:90",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21586,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21930,
                            "src": "4454:8:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 21599,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4454:83:90",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21600,
                        "nodeType": "ExpressionStatement",
                        "src": "4454:83:90"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 21601,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4550:4:90",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 21585,
                        "id": 21602,
                        "nodeType": "Return",
                        "src": "4543:11:90"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 21577,
                    "nodeType": "StructuredDocumentation",
                    "src": "4112:239:90",
                    "text": " @dev Increases the allowance of spender to spend _msgSender() tokens\n @param spender The user allowed to spend on behalf of _msgSender()\n @param addedValue The amount being added to the allowance\n @return `true`*"
                  },
                  "functionSelector": "39509351",
                  "id": 21604,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "increaseAllowance",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 21582,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21579,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21604,
                        "src": "4381:15:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21578,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4381:7:90",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21581,
                        "mutability": "mutable",
                        "name": "addedValue",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21604,
                        "src": "4398:18:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21580,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4398:7:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4380:37:90"
                  },
                  "returnParameters": {
                    "id": 21585,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21584,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21604,
                        "src": "4442:4:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 21583,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4442:4:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4441:6:90"
                  },
                  "scope": 21971,
                  "src": "4354:205:90",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21632,
                    "nodeType": "Block",
                    "src": "4928:205:90",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 21615,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3415,
                                "src": "4950:10:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 21616,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4950:12:90",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21617,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21607,
                              "src": "4970:7:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 21625,
                                  "name": "subtractedValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21609,
                                  "src": "5033:15:90",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f",
                                  "id": 21626,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5058:39:90",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
                                    "typeString": "literal_string \"ERC20: decreased allowance below zero\""
                                  },
                                  "value": "ERC20: decreased allowance below zero"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
                                    "typeString": "literal_string \"ERC20: decreased allowance below zero\""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 21618,
                                      "name": "_allowances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21375,
                                      "src": "4985:11:90",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 21621,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 21619,
                                        "name": "_msgSender",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3415,
                                        "src": "4997:10:90",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                          "typeString": "function () view returns (address payable)"
                                        }
                                      },
                                      "id": 21620,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4997:12:90",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4985:25:90",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 21623,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 21622,
                                    "name": "spender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21607,
                                    "src": "5011:7:90",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4985:34:90",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 21624,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4374,
                                "src": "4985:38:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                                }
                              },
                              "id": 21627,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4985:120:90",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21614,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21930,
                            "src": "4934:8:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 21628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4934:177:90",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21629,
                        "nodeType": "ExpressionStatement",
                        "src": "4934:177:90"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 21630,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5124:4:90",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 21613,
                        "id": 21631,
                        "nodeType": "Return",
                        "src": "5117:11:90"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 21605,
                    "nodeType": "StructuredDocumentation",
                    "src": "4563:249:90",
                    "text": " @dev Decreases the allowance of spender to spend _msgSender() tokens\n @param spender The user allowed to spend on behalf of _msgSender()\n @param subtractedValue The amount being subtracted to the allowance\n @return `true`*"
                  },
                  "functionSelector": "a457c2d7",
                  "id": 21633,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decreaseAllowance",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 21610,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21607,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21633,
                        "src": "4842:15:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21606,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4842:7:90",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21609,
                        "mutability": "mutable",
                        "name": "subtractedValue",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21633,
                        "src": "4859:23:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21608,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4859:7:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4841:42:90"
                  },
                  "returnParameters": {
                    "id": 21613,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21612,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21633,
                        "src": "4920:4:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 21611,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4920:4:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4919:6:90"
                  },
                  "scope": 21971,
                  "src": "4815:318:90",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21738,
                    "nodeType": "Block",
                    "src": "5240:828:90",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 21648,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21643,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21635,
                                "src": "5254:6:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 21646,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5272:1:90",
                                    "subdenomination": null,
                                    "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": 21645,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5264:7:90",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 21644,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5264:7:90",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 21647,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5264:10:90",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "5254:20:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373",
                              "id": 21649,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5276:39:90",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
                                "typeString": "literal_string \"ERC20: transfer from the zero address\""
                              },
                              "value": "ERC20: transfer from the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
                                "typeString": "literal_string \"ERC20: transfer from the zero address\""
                              }
                            ],
                            "id": 21642,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5246:7:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5246:70:90",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21651,
                        "nodeType": "ExpressionStatement",
                        "src": "5246:70:90"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 21658,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21653,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21637,
                                "src": "5330:9:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 21656,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5351:1:90",
                                    "subdenomination": null,
                                    "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": 21655,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5343:7:90",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 21654,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5343:7:90",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 21657,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5343:10:90",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "5330:23:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373",
                              "id": 21659,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5355:37:90",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
                                "typeString": "literal_string \"ERC20: transfer to the zero address\""
                              },
                              "value": "ERC20: transfer to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
                                "typeString": "literal_string \"ERC20: transfer to the zero address\""
                              }
                            ],
                            "id": 21652,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5322:7:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21660,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5322:71:90",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21661,
                        "nodeType": "ExpressionStatement",
                        "src": "5322:71:90"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21663,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21635,
                              "src": "5421:6:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21664,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21637,
                              "src": "5429:9:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21665,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21639,
                              "src": "5440:6:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21662,
                            "name": "_beforeTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21970,
                            "src": "5400:20:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 21666,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5400:47:90",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21667,
                        "nodeType": "ExpressionStatement",
                        "src": "5400:47:90"
                      },
                      {
                        "assignments": [
                          21669
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21669,
                            "mutability": "mutable",
                            "name": "oldSenderBalance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 21738,
                            "src": "5454:24:90",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21668,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5454:7:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 21673,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 21670,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21369,
                            "src": "5481:9:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 21672,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 21671,
                            "name": "sender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21635,
                            "src": "5491:6:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5481:17:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5454:44:90"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21682,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 21674,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21369,
                              "src": "5504:9:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 21676,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 21675,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21635,
                              "src": "5514:6:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5504:17:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21679,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21639,
                                "src": "5545:6:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365",
                                "id": 21680,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5553:40:90",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
                                  "typeString": "literal_string \"ERC20: transfer amount exceeds balance\""
                                },
                                "value": "ERC20: transfer amount exceeds balance"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
                                  "typeString": "literal_string \"ERC20: transfer amount exceeds balance\""
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 21677,
                                "name": "oldSenderBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21669,
                                "src": "5524:16:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 21678,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4374,
                              "src": "5524:20:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                              }
                            },
                            "id": 21681,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5524:70:90",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5504:90:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21683,
                        "nodeType": "ExpressionStatement",
                        "src": "5504:90:90"
                      },
                      {
                        "assignments": [
                          21685
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21685,
                            "mutability": "mutable",
                            "name": "oldRecipientBalance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 21738,
                            "src": "5600:27:90",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21684,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5600:7:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 21689,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 21686,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21369,
                            "src": "5630:9:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 21688,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 21687,
                            "name": "recipient",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21637,
                            "src": "5640:9:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5630:20:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5600:50:90"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 21690,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21369,
                              "src": "5656:9:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 21692,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 21691,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21637,
                              "src": "5666:9:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5656:20:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21697,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21639,
                                "src": "5704:6:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 21693,
                                  "name": "_balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21369,
                                  "src": "5679:9:90",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 21695,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 21694,
                                  "name": "recipient",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21637,
                                  "src": "5689:9:90",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5679:20:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 21696,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4329,
                              "src": "5679:24:90",
                              "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": 21698,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5679:32:90",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5656:55:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21700,
                        "nodeType": "ExpressionStatement",
                        "src": "5656:55:90"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 21710,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 21703,
                                  "name": "_getIncentivesController",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21465,
                                  "src": "5730:24:90",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IAaveIncentivesController_$5822_$",
                                    "typeString": "function () view returns (contract IAaveIncentivesController)"
                                  }
                                },
                                "id": 21704,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5730:26:90",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                  "typeString": "contract IAaveIncentivesController"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                  "typeString": "contract IAaveIncentivesController"
                                }
                              ],
                              "id": 21702,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5722:7:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 21701,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "5722:7:90",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 21705,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5722:35:90",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 21708,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5769:1:90",
                                "subdenomination": null,
                                "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": 21707,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5761:7:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 21706,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "5761:7:90",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 21709,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5761:10:90",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "5722:49:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 21737,
                        "nodeType": "IfStatement",
                        "src": "5718:346:90",
                        "trueBody": {
                          "id": 21736,
                          "nodeType": "Block",
                          "src": "5773:291:90",
                          "statements": [
                            {
                              "assignments": [
                                21712
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 21712,
                                  "mutability": "mutable",
                                  "name": "currentTotalSupply",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 21736,
                                  "src": "5781:26:90",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 21711,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5781:7:90",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 21714,
                              "initialValue": {
                                "argumentTypes": null,
                                "id": 21713,
                                "name": "_totalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21377,
                                "src": "5810:12:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5781:41:90"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 21718,
                                    "name": "sender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21635,
                                    "src": "5870:6:90",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 21719,
                                    "name": "currentTotalSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21712,
                                    "src": "5878:18:90",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 21720,
                                    "name": "oldSenderBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21669,
                                    "src": "5898:16:90",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 21715,
                                      "name": "_getIncentivesController",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21465,
                                      "src": "5830:24:90",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IAaveIncentivesController_$5822_$",
                                        "typeString": "function () view returns (contract IAaveIncentivesController)"
                                      }
                                    },
                                    "id": 21716,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5830:26:90",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                      "typeString": "contract IAaveIncentivesController"
                                    }
                                  },
                                  "id": 21717,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "handleAction",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5747,
                                  "src": "5830:39:90",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256) external"
                                  }
                                },
                                "id": 21721,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5830:85:90",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 21722,
                              "nodeType": "ExpressionStatement",
                              "src": "5830:85:90"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 21725,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 21723,
                                  "name": "sender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21635,
                                  "src": "5927:6:90",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 21724,
                                  "name": "recipient",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21637,
                                  "src": "5937:9:90",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5927:19:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 21735,
                              "nodeType": "IfStatement",
                              "src": "5923:135:90",
                              "trueBody": {
                                "id": 21734,
                                "nodeType": "Block",
                                "src": "5948:110:90",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 21729,
                                          "name": "recipient",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21637,
                                          "src": "5998:9:90",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 21730,
                                          "name": "currentTotalSupply",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21712,
                                          "src": "6009:18:90",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 21731,
                                          "name": "oldRecipientBalance",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21685,
                                          "src": "6029:19:90",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "id": 21726,
                                            "name": "_getIncentivesController",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 21465,
                                            "src": "5958:24:90",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IAaveIncentivesController_$5822_$",
                                              "typeString": "function () view returns (contract IAaveIncentivesController)"
                                            }
                                          },
                                          "id": 21727,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "5958:26:90",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                            "typeString": "contract IAaveIncentivesController"
                                          }
                                        },
                                        "id": 21728,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "handleAction",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 5747,
                                        "src": "5958:39:90",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,uint256,uint256) external"
                                        }
                                      },
                                      "id": 21732,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5958:91:90",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 21733,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5958:91:90"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 21739,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 21640,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21635,
                        "mutability": "mutable",
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21739,
                        "src": "5161:14:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21634,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5161:7:90",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21637,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21739,
                        "src": "5181:17:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21636,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5181:7:90",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21639,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21739,
                        "src": "5204:14:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21638,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5204:7:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5155:67:90"
                  },
                  "returnParameters": {
                    "id": 21641,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5240:0:90"
                  },
                  "scope": 21971,
                  "src": "5137:931:90",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21811,
                    "nodeType": "Block",
                    "src": "6137:491:90",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 21752,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21747,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21741,
                                "src": "6151:7:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 21750,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6170:1:90",
                                    "subdenomination": null,
                                    "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": 21749,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6162:7:90",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 21748,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6162:7:90",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 21751,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6162:10:90",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6151:21:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373",
                              "id": 21753,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6174:33:90",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
                                "typeString": "literal_string \"ERC20: mint to the zero address\""
                              },
                              "value": "ERC20: mint to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
                                "typeString": "literal_string \"ERC20: mint to the zero address\""
                              }
                            ],
                            "id": 21746,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6143:7:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21754,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6143:65:90",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21755,
                        "nodeType": "ExpressionStatement",
                        "src": "6143:65:90"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 21759,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6244:1:90",
                                  "subdenomination": null,
                                  "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": 21758,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6236:7:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 21757,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6236:7:90",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 21760,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6236:10:90",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21761,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21741,
                              "src": "6248:7:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21762,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21743,
                              "src": "6257:6:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21756,
                            "name": "_beforeTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21970,
                            "src": "6215:20:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 21763,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6215:49:90",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21764,
                        "nodeType": "ExpressionStatement",
                        "src": "6215:49:90"
                      },
                      {
                        "assignments": [
                          21766
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21766,
                            "mutability": "mutable",
                            "name": "oldTotalSupply",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 21811,
                            "src": "6271:22:90",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21765,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6271:7:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 21768,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 21767,
                          "name": "_totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21377,
                          "src": "6296:12:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6271:37:90"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21774,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21769,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21377,
                            "src": "6314:12:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21772,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21743,
                                "src": "6348:6:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 21770,
                                "name": "oldTotalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21766,
                                "src": "6329:14:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 21771,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4329,
                              "src": "6329:18:90",
                              "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": 21773,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6329:26:90",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6314:41:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21775,
                        "nodeType": "ExpressionStatement",
                        "src": "6314:41:90"
                      },
                      {
                        "assignments": [
                          21777
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21777,
                            "mutability": "mutable",
                            "name": "oldAccountBalance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 21811,
                            "src": "6362:25:90",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21776,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6362:7:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 21781,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 21778,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21369,
                            "src": "6390:9:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 21780,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 21779,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21741,
                            "src": "6400:7:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6390:18:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6362:46:90"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21789,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 21782,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21369,
                              "src": "6414:9:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 21784,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 21783,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21741,
                              "src": "6424:7:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6414:18:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21787,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21743,
                                "src": "6457:6:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 21785,
                                "name": "oldAccountBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21777,
                                "src": "6435:17:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 21786,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4329,
                              "src": "6435:21:90",
                              "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": 21788,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6435:29:90",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6414:50:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21790,
                        "nodeType": "ExpressionStatement",
                        "src": "6414:50:90"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 21800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 21793,
                                  "name": "_getIncentivesController",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21465,
                                  "src": "6483:24:90",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IAaveIncentivesController_$5822_$",
                                    "typeString": "function () view returns (contract IAaveIncentivesController)"
                                  }
                                },
                                "id": 21794,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6483:26:90",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                  "typeString": "contract IAaveIncentivesController"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                  "typeString": "contract IAaveIncentivesController"
                                }
                              ],
                              "id": 21792,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6475:7:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 21791,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "6475:7:90",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 21795,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6475:35:90",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 21798,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6522:1:90",
                                "subdenomination": null,
                                "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": 21797,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6514:7:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 21796,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "6514:7:90",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 21799,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6514:10:90",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "6475:49:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 21810,
                        "nodeType": "IfStatement",
                        "src": "6471:153:90",
                        "trueBody": {
                          "id": 21809,
                          "nodeType": "Block",
                          "src": "6526:98:90",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 21804,
                                    "name": "account",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21741,
                                    "src": "6574:7:90",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 21805,
                                    "name": "oldTotalSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21766,
                                    "src": "6583:14:90",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 21806,
                                    "name": "oldAccountBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21777,
                                    "src": "6599:17:90",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 21801,
                                      "name": "_getIncentivesController",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21465,
                                      "src": "6534:24:90",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IAaveIncentivesController_$5822_$",
                                        "typeString": "function () view returns (contract IAaveIncentivesController)"
                                      }
                                    },
                                    "id": 21802,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6534:26:90",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                      "typeString": "contract IAaveIncentivesController"
                                    }
                                  },
                                  "id": 21803,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "handleAction",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5747,
                                  "src": "6534:39:90",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256) external"
                                  }
                                },
                                "id": 21807,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6534:83:90",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 21808,
                              "nodeType": "ExpressionStatement",
                              "src": "6534:83:90"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 21812,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 21744,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21741,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21812,
                        "src": "6087:15:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21740,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6087:7:90",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21743,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21812,
                        "src": "6104:14:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21742,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6104:7:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6086:33:90"
                  },
                  "returnParameters": {
                    "id": 21745,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6137:0:90"
                  },
                  "scope": 21971,
                  "src": "6072:556:90",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21885,
                    "nodeType": "Block",
                    "src": "6697:531:90",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 21825,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21820,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21814,
                                "src": "6711:7:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 21823,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6730:1:90",
                                    "subdenomination": null,
                                    "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": 21822,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6722:7:90",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 21821,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6722:7:90",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 21824,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6722:10:90",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6711:21:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373",
                              "id": 21826,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6734:35:90",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
                                "typeString": "literal_string \"ERC20: burn from the zero address\""
                              },
                              "value": "ERC20: burn from the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
                                "typeString": "literal_string \"ERC20: burn from the zero address\""
                              }
                            ],
                            "id": 21819,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6703:7:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21827,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6703:67:90",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21828,
                        "nodeType": "ExpressionStatement",
                        "src": "6703:67:90"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21830,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21814,
                              "src": "6798:7:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 21833,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6815:1:90",
                                  "subdenomination": null,
                                  "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": 21832,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6807:7:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 21831,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6807:7:90",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 21834,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6807:10:90",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21835,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21816,
                              "src": "6819:6:90",
                              "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": 21829,
                            "name": "_beforeTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21970,
                            "src": "6777:20:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 21836,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6777:49:90",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21837,
                        "nodeType": "ExpressionStatement",
                        "src": "6777:49:90"
                      },
                      {
                        "assignments": [
                          21839
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21839,
                            "mutability": "mutable",
                            "name": "oldTotalSupply",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 21885,
                            "src": "6833:22:90",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21838,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6833:7:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 21841,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 21840,
                          "name": "_totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21377,
                          "src": "6858:12:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6833:37:90"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21847,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21842,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21377,
                            "src": "6876:12:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21845,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21816,
                                "src": "6910:6:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 21843,
                                "name": "oldTotalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21839,
                                "src": "6891:14:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 21844,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4346,
                              "src": "6891:18:90",
                              "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": 21846,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6891:26:90",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6876:41:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21848,
                        "nodeType": "ExpressionStatement",
                        "src": "6876:41:90"
                      },
                      {
                        "assignments": [
                          21850
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21850,
                            "mutability": "mutable",
                            "name": "oldAccountBalance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 21885,
                            "src": "6924:25:90",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21849,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6924:7:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 21854,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 21851,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21369,
                            "src": "6952:9:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 21853,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 21852,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21814,
                            "src": "6962:7:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6952:18:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6924:46:90"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21863,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 21855,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21369,
                              "src": "6976:9:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 21857,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 21856,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21814,
                              "src": "6986:7:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6976:18:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21860,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21816,
                                "src": "7019:6:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365",
                                "id": 21861,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7027:36:90",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd",
                                  "typeString": "literal_string \"ERC20: burn amount exceeds balance\""
                                },
                                "value": "ERC20: burn amount exceeds balance"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd",
                                  "typeString": "literal_string \"ERC20: burn amount exceeds balance\""
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 21858,
                                "name": "oldAccountBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21850,
                                "src": "6997:17:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 21859,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4374,
                              "src": "6997:21:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                              }
                            },
                            "id": 21862,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6997:67:90",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6976:88:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21864,
                        "nodeType": "ExpressionStatement",
                        "src": "6976:88:90"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 21874,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 21867,
                                  "name": "_getIncentivesController",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21465,
                                  "src": "7083:24:90",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IAaveIncentivesController_$5822_$",
                                    "typeString": "function () view returns (contract IAaveIncentivesController)"
                                  }
                                },
                                "id": 21868,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7083:26:90",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                  "typeString": "contract IAaveIncentivesController"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                  "typeString": "contract IAaveIncentivesController"
                                }
                              ],
                              "id": 21866,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7075:7:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 21865,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "7075:7:90",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 21869,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7075:35:90",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 21872,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7122:1:90",
                                "subdenomination": null,
                                "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": 21871,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7114:7:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 21870,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "7114:7:90",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 21873,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7114:10:90",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "7075:49:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 21884,
                        "nodeType": "IfStatement",
                        "src": "7071:153:90",
                        "trueBody": {
                          "id": 21883,
                          "nodeType": "Block",
                          "src": "7126:98:90",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 21878,
                                    "name": "account",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21814,
                                    "src": "7174:7:90",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 21879,
                                    "name": "oldTotalSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21839,
                                    "src": "7183:14:90",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 21880,
                                    "name": "oldAccountBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21850,
                                    "src": "7199:17:90",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 21875,
                                      "name": "_getIncentivesController",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21465,
                                      "src": "7134:24:90",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IAaveIncentivesController_$5822_$",
                                        "typeString": "function () view returns (contract IAaveIncentivesController)"
                                      }
                                    },
                                    "id": 21876,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7134:26:90",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                      "typeString": "contract IAaveIncentivesController"
                                    }
                                  },
                                  "id": 21877,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "handleAction",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5747,
                                  "src": "7134:39:90",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256) external"
                                  }
                                },
                                "id": 21881,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7134:83:90",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 21882,
                              "nodeType": "ExpressionStatement",
                              "src": "7134:83:90"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 21886,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 21817,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21814,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21886,
                        "src": "6647:15:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21813,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6647:7:90",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21816,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21886,
                        "src": "6664:14:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21815,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6664:7:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6646:33:90"
                  },
                  "returnParameters": {
                    "id": 21818,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6697:0:90"
                  },
                  "scope": 21971,
                  "src": "6632:596:90",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21929,
                    "nodeType": "Block",
                    "src": "7331:239:90",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 21901,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21896,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21888,
                                "src": "7345:5:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 21899,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7362:1:90",
                                    "subdenomination": null,
                                    "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": 21898,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7354:7:90",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 21897,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7354:7:90",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 21900,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7354:10:90",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "7345:19:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373",
                              "id": 21902,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7366:38:90",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
                                "typeString": "literal_string \"ERC20: approve from the zero address\""
                              },
                              "value": "ERC20: approve from the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
                                "typeString": "literal_string \"ERC20: approve from the zero address\""
                              }
                            ],
                            "id": 21895,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7337:7:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21903,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7337:68:90",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21904,
                        "nodeType": "ExpressionStatement",
                        "src": "7337:68:90"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 21911,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21906,
                                "name": "spender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21890,
                                "src": "7419:7:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 21909,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7438:1:90",
                                    "subdenomination": null,
                                    "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": 21908,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7430:7:90",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 21907,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7430:7:90",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 21910,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7430:10:90",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "7419:21:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373",
                              "id": 21912,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7442:36:90",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
                                "typeString": "literal_string \"ERC20: approve to the zero address\""
                              },
                              "value": "ERC20: approve to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
                                "typeString": "literal_string \"ERC20: approve to the zero address\""
                              }
                            ],
                            "id": 21905,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7411:7:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21913,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7411:68:90",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21914,
                        "nodeType": "ExpressionStatement",
                        "src": "7411:68:90"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21921,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 21915,
                                "name": "_allowances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21375,
                                "src": "7486:11:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 21918,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 21916,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21888,
                                "src": "7498:5:90",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7486:18:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 21919,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 21917,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21890,
                              "src": "7505:7:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7486:27:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 21920,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21892,
                            "src": "7516:6:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7486:36:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21922,
                        "nodeType": "ExpressionStatement",
                        "src": "7486:36:90"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21924,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21888,
                              "src": "7542:5:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21925,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21890,
                              "src": "7549:7:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21926,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21892,
                              "src": "7558:6:90",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21923,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4011,
                            "src": "7533:8:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 21927,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7533:32:90",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21928,
                        "nodeType": "EmitStatement",
                        "src": "7528:37:90"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 21930,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_approve",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 21893,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21888,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21930,
                        "src": "7255:13:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21887,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7255:7:90",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21890,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21930,
                        "src": "7274:15:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21889,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7274:7:90",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21892,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21930,
                        "src": "7295:14:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21891,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7295:7:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7249:64:90"
                  },
                  "returnParameters": {
                    "id": 21894,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7331:0:90"
                  },
                  "scope": 21971,
                  "src": "7232:338:90",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21939,
                    "nodeType": "Block",
                    "src": "7624:26:90",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21937,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21935,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21379,
                            "src": "7630:5:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 21936,
                            "name": "newName",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21932,
                            "src": "7638:7:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "7630:15:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 21938,
                        "nodeType": "ExpressionStatement",
                        "src": "7630:15:90"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 21940,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setName",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 21933,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21932,
                        "mutability": "mutable",
                        "name": "newName",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21940,
                        "src": "7592:21:90",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 21931,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "7592:6:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7591:23:90"
                  },
                  "returnParameters": {
                    "id": 21934,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7624:0:90"
                  },
                  "scope": 21971,
                  "src": "7574:76:90",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21949,
                    "nodeType": "Block",
                    "src": "7708:30:90",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21947,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21945,
                            "name": "_symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21381,
                            "src": "7714:7:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 21946,
                            "name": "newSymbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21942,
                            "src": "7724:9:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "7714:19:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 21948,
                        "nodeType": "ExpressionStatement",
                        "src": "7714:19:90"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 21950,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setSymbol",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 21943,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21942,
                        "mutability": "mutable",
                        "name": "newSymbol",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21950,
                        "src": "7674:23:90",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 21941,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "7674:6:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7673:25:90"
                  },
                  "returnParameters": {
                    "id": 21944,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7708:0:90"
                  },
                  "scope": 21971,
                  "src": "7654:84:90",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21959,
                    "nodeType": "Block",
                    "src": "7792:34:90",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21957,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21955,
                            "name": "_decimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21383,
                            "src": "7798:9:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 21956,
                            "name": "newDecimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21952,
                            "src": "7810:11:90",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "7798:23:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 21958,
                        "nodeType": "ExpressionStatement",
                        "src": "7798:23:90"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 21960,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setDecimals",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 21953,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21952,
                        "mutability": "mutable",
                        "name": "newDecimals",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21960,
                        "src": "7764:17:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 21951,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "7764:5:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7763:19:90"
                  },
                  "returnParameters": {
                    "id": 21954,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7792:0:90"
                  },
                  "scope": 21971,
                  "src": "7742:84:90",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21969,
                    "nodeType": "Block",
                    "src": "7935:2:90",
                    "statements": []
                  },
                  "documentation": null,
                  "id": 21970,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_beforeTokenTransfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 21967,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21962,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21970,
                        "src": "7865:12:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21961,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7865:7:90",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21964,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21970,
                        "src": "7883:10:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21963,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7883:7:90",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21966,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21970,
                        "src": "7899:14:90",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21965,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7899:7:90",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7859:58:90"
                  },
                  "returnParameters": {
                    "id": 21968,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7935:0:90"
                  },
                  "scope": 21971,
                  "src": "7830:107:90",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 21972,
              "src": "613:7326:90"
            }
          ],
          "src": "37:7903:90"
        },
        "id": 90
      },
      "contracts/protocol/tokenization/StableDebtToken.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/tokenization/StableDebtToken.sol",
          "exportedSymbols": {
            "StableDebtToken": [
              22904
            ]
          },
          "id": 22905,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 21973,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:91"
            },
            {
              "absolutePath": "contracts/protocol/tokenization/base/DebtTokenBase.sol",
              "file": "./base/DebtTokenBase.sol",
              "id": 21975,
              "nodeType": "ImportDirective",
              "scope": 22905,
              "sourceUnit": 26044,
              "src": "62:55:91",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 21974,
                    "name": "DebtTokenBase",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:13:91",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/math/MathUtils.sol",
              "file": "../libraries/math/MathUtils.sol",
              "id": 21977,
              "nodeType": "ImportDirective",
              "scope": 22905,
              "sourceUnit": 19956,
              "src": "118:58:91",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 21976,
                    "name": "MathUtils",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "126:9:91",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/math/WadRayMath.sol",
              "file": "../libraries/math/WadRayMath.sol",
              "id": 21979,
              "nodeType": "ImportDirective",
              "scope": 22905,
              "sourceUnit": 20494,
              "src": "177:60:91",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 21978,
                    "name": "WadRayMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "185:10:91",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IStableDebtToken.sol",
              "file": "../../interfaces/IStableDebtToken.sol",
              "id": 21981,
              "nodeType": "ImportDirective",
              "scope": 22905,
              "sourceUnit": 7134,
              "src": "238:71:91",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 21980,
                    "name": "IStableDebtToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "246:16:91",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPool.sol",
              "file": "../../interfaces/ILendingPool.sol",
              "id": 21983,
              "nodeType": "ImportDirective",
              "scope": 22905,
              "sourceUnit": 6467,
              "src": "310:63:91",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 21982,
                    "name": "ILendingPool",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "318:12:91",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IAaveIncentivesController.sol",
              "file": "../../interfaces/IAaveIncentivesController.sol",
              "id": 21985,
              "nodeType": "ImportDirective",
              "scope": 22905,
              "sourceUnit": 5823,
              "src": "374:89:91",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 21984,
                    "name": "IAaveIncentivesController",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "382:25:91",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/helpers/Errors.sol",
              "file": "../libraries/helpers/Errors.sol",
              "id": 21987,
              "nodeType": "ImportDirective",
              "scope": 22905,
              "sourceUnit": 17240,
              "src": "464:55:91",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 21986,
                    "name": "Errors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "472:6:91",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 21989,
                    "name": "IStableDebtToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7133,
                    "src": "707:16:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IStableDebtToken_$7133",
                      "typeString": "contract IStableDebtToken"
                    }
                  },
                  "id": 21990,
                  "nodeType": "InheritanceSpecifier",
                  "src": "707:16:91"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 21991,
                    "name": "DebtTokenBase",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 26043,
                    "src": "725:13:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DebtTokenBase_$26043",
                      "typeString": "contract DebtTokenBase"
                    }
                  },
                  "id": 21992,
                  "nodeType": "InheritanceSpecifier",
                  "src": "725:13:91"
                }
              ],
              "contractDependencies": [
                3427,
                4012,
                4034,
                5899,
                6058,
                7133,
                16019,
                21971,
                26043
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 21988,
                "nodeType": "StructuredDocumentation",
                "src": "521:157:91",
                "text": " @title StableDebtToken\n @notice Implements a stable debt token to track the borrowing positions of users\n at stable rate mode\n @author Aave*"
              },
              "fullyImplemented": true,
              "id": 22904,
              "linearizedBaseContracts": [
                22904,
                26043,
                5899,
                16019,
                21971,
                4034,
                4012,
                3427,
                7133,
                6058
              ],
              "name": "StableDebtToken",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 21995,
                  "libraryName": {
                    "contractScope": null,
                    "id": 21993,
                    "name": "WadRayMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20493,
                    "src": "749:10:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_WadRayMath_$20493",
                      "typeString": "library WadRayMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "743:29:91",
                  "typeName": {
                    "id": 21994,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "764:7:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": true,
                  "functionSelector": "b9a7b622",
                  "id": 21998,
                  "mutability": "constant",
                  "name": "DEBT_TOKEN_REVISION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 22904,
                  "src": "776:49:91",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21996,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "776:7:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307831",
                    "id": 21997,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "822:3:91",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1_by_1",
                      "typeString": "int_const 1"
                    },
                    "value": "0x1"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 22000,
                  "mutability": "mutable",
                  "name": "_avgStableRate",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 22904,
                  "src": "830:31:91",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21999,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "830:7:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22004,
                  "mutability": "mutable",
                  "name": "_timestamps",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 22904,
                  "src": "865:47:91",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint40_$",
                    "typeString": "mapping(address => uint40)"
                  },
                  "typeName": {
                    "id": 22003,
                    "keyType": {
                      "id": 22001,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "873:7:91",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "865:26:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint40_$",
                      "typeString": "mapping(address => uint40)"
                    },
                    "valueType": {
                      "id": 22002,
                      "name": "uint40",
                      "nodeType": "ElementaryTypeName",
                      "src": "884:6:91",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint40",
                        "typeString": "uint40"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22008,
                  "mutability": "mutable",
                  "name": "_usersStableRate",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 22904,
                  "src": "916:53:91",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 22007,
                    "keyType": {
                      "id": 22005,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "924:7:91",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "916:27:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 22006,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "935:7:91",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22010,
                  "mutability": "mutable",
                  "name": "_totalSupplyTimestamp",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 22904,
                  "src": "973:37:91",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint40",
                    "typeString": "uint40"
                  },
                  "typeName": {
                    "id": 22009,
                    "name": "uint40",
                    "nodeType": "ElementaryTypeName",
                    "src": "973:6:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint40",
                      "typeString": "uint40"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22012,
                  "mutability": "mutable",
                  "name": "_pool",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 22904,
                  "src": "1015:27:91",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                    "typeString": "contract ILendingPool"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 22011,
                    "name": "ILendingPool",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6466,
                    "src": "1015:12:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                      "typeString": "contract ILendingPool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22014,
                  "mutability": "mutable",
                  "name": "_underlyingAsset",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 22904,
                  "src": "1046:33:91",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22013,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1046:7:91",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22016,
                  "mutability": "mutable",
                  "name": "_incentivesController",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 22904,
                  "src": "1083:56:91",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                    "typeString": "contract IAaveIncentivesController"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 22015,
                    "name": "IAaveIncentivesController",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5822,
                    "src": "1083:25:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                      "typeString": "contract IAaveIncentivesController"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    6057
                  ],
                  "body": {
                    "id": 22077,
                    "nodeType": "Block",
                    "src": "1942:406:91",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22038,
                              "name": "debtTokenName",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22027,
                              "src": "1957:13:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 22037,
                            "name": "_setName",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21940,
                            "src": "1948:8:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory)"
                            }
                          },
                          "id": 22039,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1948:23:91",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22040,
                        "nodeType": "ExpressionStatement",
                        "src": "1948:23:91"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22042,
                              "name": "debtTokenSymbol",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22029,
                              "src": "1988:15:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 22041,
                            "name": "_setSymbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21950,
                            "src": "1977:10:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory)"
                            }
                          },
                          "id": 22043,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1977:27:91",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22044,
                        "nodeType": "ExpressionStatement",
                        "src": "1977:27:91"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22046,
                              "name": "debtTokenDecimals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22025,
                              "src": "2023:17:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 22045,
                            "name": "_setDecimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21960,
                            "src": "2010:12:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$",
                              "typeString": "function (uint8)"
                            }
                          },
                          "id": 22047,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2010:31:91",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22048,
                        "nodeType": "ExpressionStatement",
                        "src": "2010:31:91"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 22049,
                            "name": "_pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22012,
                            "src": "2048:5:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPool_$6466",
                              "typeString": "contract ILendingPool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 22050,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22019,
                            "src": "2056:4:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPool_$6466",
                              "typeString": "contract ILendingPool"
                            }
                          },
                          "src": "2048:12:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "id": 22052,
                        "nodeType": "ExpressionStatement",
                        "src": "2048:12:91"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22055,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 22053,
                            "name": "_underlyingAsset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22014,
                            "src": "2066:16:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 22054,
                            "name": "underlyingAsset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22021,
                            "src": "2085:15:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2066:34:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 22056,
                        "nodeType": "ExpressionStatement",
                        "src": "2066:34:91"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22059,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 22057,
                            "name": "_incentivesController",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22016,
                            "src": "2106:21:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                              "typeString": "contract IAaveIncentivesController"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 22058,
                            "name": "incentivesController",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22023,
                            "src": "2130:20:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                              "typeString": "contract IAaveIncentivesController"
                            }
                          },
                          "src": "2106:44:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "id": 22060,
                        "nodeType": "ExpressionStatement",
                        "src": "2106:44:91"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22062,
                              "name": "underlyingAsset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22021,
                              "src": "2181:15:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 22065,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22019,
                                  "src": "2212:4:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                ],
                                "id": 22064,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2204:7:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 22063,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2204:7:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 22066,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2204:13:91",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 22069,
                                  "name": "incentivesController",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22023,
                                  "src": "2233:20:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                    "typeString": "contract IAaveIncentivesController"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                    "typeString": "contract IAaveIncentivesController"
                                  }
                                ],
                                "id": 22068,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2225:7:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 22067,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2225:7:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 22070,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2225:29:91",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22071,
                              "name": "debtTokenDecimals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22025,
                              "src": "2262:17:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22072,
                              "name": "debtTokenName",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22027,
                              "src": "2287:13:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22073,
                              "name": "debtTokenSymbol",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22029,
                              "src": "2308:15:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22074,
                              "name": "params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22031,
                              "src": "2331:6:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 22061,
                            "name": "Initialized",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6039,
                            "src": "2162:11:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint8_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint8,string memory,string memory,bytes memory)"
                            }
                          },
                          "id": 22075,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2162:181:91",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22076,
                        "nodeType": "EmitStatement",
                        "src": "2157:186:91"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 22017,
                    "nodeType": "StructuredDocumentation",
                    "src": "1144:515:91",
                    "text": " @dev Initializes the debt token.\n @param pool The address of the lending pool where this aToken will be used\n @param underlyingAsset The address of the underlying asset of this aToken (E.g. WETH for aWETH)\n @param incentivesController The smart contract managing potential incentives distribution\n @param debtTokenDecimals The decimals of the debtToken, same as the underlying asset's\n @param debtTokenName The name of the token\n @param debtTokenSymbol The symbol of the token"
                  },
                  "functionSelector": "c222ec8a",
                  "id": 22078,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 22035,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 22034,
                        "name": "initializer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15993,
                        "src": "1930:11:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1930:11:91"
                    }
                  ],
                  "name": "initialize",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 22033,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1921:8:91"
                  },
                  "parameters": {
                    "id": 22032,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22019,
                        "mutability": "mutable",
                        "name": "pool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22078,
                        "src": "1687:17:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPool_$6466",
                          "typeString": "contract ILendingPool"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 22018,
                          "name": "ILendingPool",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6466,
                          "src": "1687:12:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22021,
                        "mutability": "mutable",
                        "name": "underlyingAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22078,
                        "src": "1710:23:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22020,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1710:7:91",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22023,
                        "mutability": "mutable",
                        "name": "incentivesController",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22078,
                        "src": "1739:46:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                          "typeString": "contract IAaveIncentivesController"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 22022,
                          "name": "IAaveIncentivesController",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5822,
                          "src": "1739:25:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22025,
                        "mutability": "mutable",
                        "name": "debtTokenDecimals",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22078,
                        "src": "1791:23:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 22024,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "1791:5:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22027,
                        "mutability": "mutable",
                        "name": "debtTokenName",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22078,
                        "src": "1820:27:91",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 22026,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1820:6:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22029,
                        "mutability": "mutable",
                        "name": "debtTokenSymbol",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22078,
                        "src": "1853:29:91",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 22028,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1853:6:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22031,
                        "mutability": "mutable",
                        "name": "params",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22078,
                        "src": "1888:21:91",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 22030,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1888:5:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1681:232:91"
                  },
                  "returnParameters": {
                    "id": 22036,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1942:0:91"
                  },
                  "scope": 22904,
                  "src": "1662:686:91",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    15999
                  ],
                  "body": {
                    "id": 22087,
                    "nodeType": "Block",
                    "src": "2557:37:91",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22085,
                          "name": "DEBT_TOKEN_REVISION",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21998,
                          "src": "2570:19:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 22084,
                        "id": 22086,
                        "nodeType": "Return",
                        "src": "2563:26:91"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 22079,
                    "nodeType": "StructuredDocumentation",
                    "src": "2352:130:91",
                    "text": " @dev Gets the revision of the stable debt token implementation\n @return The debt token implementation revision*"
                  },
                  "id": 22088,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRevision",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 22081,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2530:8:91"
                  },
                  "parameters": {
                    "id": 22080,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2505:2:91"
                  },
                  "returnParameters": {
                    "id": 22084,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22083,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22088,
                        "src": "2548:7:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22082,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2548:7:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2547:9:91"
                  },
                  "scope": 22904,
                  "src": "2485:109:91",
                  "stateMutability": "pure",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    7076
                  ],
                  "body": {
                    "id": 22097,
                    "nodeType": "Block",
                    "src": "2803:32:91",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22095,
                          "name": "_avgStableRate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22000,
                          "src": "2816:14:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 22094,
                        "id": 22096,
                        "nodeType": "Return",
                        "src": "2809:21:91"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 22089,
                    "nodeType": "StructuredDocumentation",
                    "src": "2598:121:91",
                    "text": " @dev Returns the average stable rate across all the stable rate debt\n @return the average stable rate*"
                  },
                  "functionSelector": "90f6fcf2",
                  "id": 22098,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAverageStableRate",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 22091,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2776:8:91"
                  },
                  "parameters": {
                    "id": 22090,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2751:2:91"
                  },
                  "returnParameters": {
                    "id": 22094,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22093,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22098,
                        "src": "2794:7:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22092,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2794:7:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2793:9:91"
                  },
                  "scope": 22904,
                  "src": "2722:113:91",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7092
                  ],
                  "body": {
                    "id": 22111,
                    "nodeType": "Block",
                    "src": "3037:35:91",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 22107,
                            "name": "_timestamps",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22004,
                            "src": "3050:11:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint40_$",
                              "typeString": "mapping(address => uint40)"
                            }
                          },
                          "id": 22109,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 22108,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22101,
                            "src": "3062:4:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3050:17:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "functionReturnParameters": 22106,
                        "id": 22110,
                        "nodeType": "Return",
                        "src": "3043:24:91"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 22099,
                    "nodeType": "StructuredDocumentation",
                    "src": "2839:105:91",
                    "text": " @dev Returns the timestamp of the last user action\n @return The last update timestamp*"
                  },
                  "functionSelector": "79ce6b8c",
                  "id": 22112,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUserLastUpdated",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 22103,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3011:8:91"
                  },
                  "parameters": {
                    "id": 22102,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22101,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22112,
                        "src": "2975:12:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22100,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2975:7:91",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2974:14:91"
                  },
                  "returnParameters": {
                    "id": 22106,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22105,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22112,
                        "src": "3029:6:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        },
                        "typeName": {
                          "id": 22104,
                          "name": "uint40",
                          "nodeType": "ElementaryTypeName",
                          "src": "3029:6:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3028:8:91"
                  },
                  "scope": 22904,
                  "src": "2947:125:91",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7084
                  ],
                  "body": {
                    "id": 22125,
                    "nodeType": "Block",
                    "src": "3303:40:91",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 22121,
                            "name": "_usersStableRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22008,
                            "src": "3316:16:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 22123,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 22122,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22115,
                            "src": "3333:4:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3316:22:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 22120,
                        "id": 22124,
                        "nodeType": "Return",
                        "src": "3309:29:91"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 22113,
                    "nodeType": "StructuredDocumentation",
                    "src": "3076:134:91",
                    "text": " @dev Returns the stable rate of the user\n @param user The address of the user\n @return The stable rate of user*"
                  },
                  "functionSelector": "e78c9b3b",
                  "id": 22126,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUserStableRate",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 22117,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3276:8:91"
                  },
                  "parameters": {
                    "id": 22116,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22115,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22126,
                        "src": "3240:12:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22114,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3240:7:91",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3239:14:91"
                  },
                  "returnParameters": {
                    "id": 22120,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22119,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22126,
                        "src": "3294:7:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22118,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3294:7:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3293:9:91"
                  },
                  "scope": 22904,
                  "src": "3213:130:91",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    21459
                  ],
                  "body": {
                    "id": 22170,
                    "nodeType": "Block",
                    "src": "3540:329:91",
                    "statements": [
                      {
                        "assignments": [
                          22136
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22136,
                            "mutability": "mutable",
                            "name": "accountBalance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 22170,
                            "src": "3546:22:91",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22135,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3546:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22141,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22139,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22129,
                              "src": "3587:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 22137,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "3571:5:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_StableDebtToken_$22904",
                                "typeString": "contract super StableDebtToken"
                              }
                            },
                            "id": 22138,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21459,
                            "src": "3571:15:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 22140,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3571:24:91",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3546:49:91"
                      },
                      {
                        "assignments": [
                          22143
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22143,
                            "mutability": "mutable",
                            "name": "stableRate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 22170,
                            "src": "3601:18:91",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22142,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3601:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22147,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 22144,
                            "name": "_usersStableRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22008,
                            "src": "3622:16:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 22146,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 22145,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22129,
                            "src": "3639:7:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3622:25:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3601:46:91"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22150,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 22148,
                            "name": "accountBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22136,
                            "src": "3657:14:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 22149,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3675:1:91",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3657:19:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 22154,
                        "nodeType": "IfStatement",
                        "src": "3653:48:91",
                        "trueBody": {
                          "id": 22153,
                          "nodeType": "Block",
                          "src": "3678:23:91",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 22151,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3693:1:91",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 22134,
                              "id": 22152,
                              "nodeType": "Return",
                              "src": "3686:8:91"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          22156
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22156,
                            "mutability": "mutable",
                            "name": "cumulatedInterest",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 22170,
                            "src": "3706:25:91",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22155,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3706:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22164,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22159,
                              "name": "stableRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22143,
                              "src": "3778:10:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 22160,
                                "name": "_timestamps",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22004,
                                "src": "3790:11:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint40_$",
                                  "typeString": "mapping(address => uint40)"
                                }
                              },
                              "id": 22162,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 22161,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22129,
                                "src": "3802:7:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3790:20:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint40",
                                "typeString": "uint40"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint40",
                                "typeString": "uint40"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 22157,
                              "name": "MathUtils",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19955,
                              "src": "3740:9:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MathUtils_$19955_$",
                                "typeString": "type(library MathUtils)"
                              }
                            },
                            "id": 22158,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "calculateCompoundedInterest",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 19954,
                            "src": "3740:37:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint40_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint40) view returns (uint256)"
                            }
                          },
                          "id": 22163,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3740:71:91",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3706:105:91"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22167,
                              "name": "cumulatedInterest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22156,
                              "src": "3846:17:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 22165,
                              "name": "accountBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22136,
                              "src": "3824:14:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 22166,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayMul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20381,
                            "src": "3824:21:91",
                            "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": 22168,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3824:40:91",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 22134,
                        "id": 22169,
                        "nodeType": "Return",
                        "src": "3817:47:91"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 22127,
                    "nodeType": "StructuredDocumentation",
                    "src": "3347:107:91",
                    "text": " @dev Calculates the current user debt balance\n @return The accumulated debt of the user*"
                  },
                  "functionSelector": "70a08231",
                  "id": 22171,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 22131,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3513:8:91"
                  },
                  "parameters": {
                    "id": 22130,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22129,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22171,
                        "src": "3476:15:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22128,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3476:7:91",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3475:17:91"
                  },
                  "returnParameters": {
                    "id": 22134,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22133,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22171,
                        "src": "3531:7:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22132,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3531:7:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3530:9:91"
                  },
                  "scope": 22904,
                  "src": "3457:412:91",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "canonicalName": "StableDebtToken.MintLocalVars",
                  "id": 22182,
                  "members": [
                    {
                      "constant": false,
                      "id": 22173,
                      "mutability": "mutable",
                      "name": "previousSupply",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 22182,
                      "src": "3900:22:91",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22172,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3900:7:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22175,
                      "mutability": "mutable",
                      "name": "nextSupply",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 22182,
                      "src": "3928:18:91",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22174,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3928:7:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22177,
                      "mutability": "mutable",
                      "name": "amountInRay",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 22182,
                      "src": "3952:19:91",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22176,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3952:7:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22179,
                      "mutability": "mutable",
                      "name": "newStableRate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 22182,
                      "src": "3977:21:91",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22178,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3977:7:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22181,
                      "mutability": "mutable",
                      "name": "currentAvgStableRate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 22182,
                      "src": "4004:28:91",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 22180,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4004:7:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "MintLocalVars",
                  "nodeType": "StructDefinition",
                  "scope": 22904,
                  "src": "3873:164:91",
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7062
                  ],
                  "body": {
                    "id": 22379,
                    "nodeType": "Block",
                    "src": "4736:1494:91",
                    "statements": [
                      {
                        "assignments": [
                          22200
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22200,
                            "mutability": "mutable",
                            "name": "vars",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 22379,
                            "src": "4742:25:91",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MintLocalVars_$22182_memory_ptr",
                              "typeString": "struct StableDebtToken.MintLocalVars"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 22199,
                              "name": "MintLocalVars",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 22182,
                              "src": "4742:13:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MintLocalVars_$22182_storage_ptr",
                                "typeString": "struct StableDebtToken.MintLocalVars"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22201,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4742:25:91"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 22204,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 22202,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22185,
                            "src": "4778:4:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 22203,
                            "name": "onBehalfOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22187,
                            "src": "4786:10:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4778:18:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 22212,
                        "nodeType": "IfStatement",
                        "src": "4774:89:91",
                        "trueBody": {
                          "id": 22211,
                          "nodeType": "Block",
                          "src": "4798:65:91",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 22206,
                                    "name": "onBehalfOf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22187,
                                    "src": "4831:10:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22207,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22185,
                                    "src": "4843:4:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22208,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22189,
                                    "src": "4849:6:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 22205,
                                  "name": "_decreaseBorrowAllowance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26032,
                                  "src": "4806:24:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 22209,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4806:50:91",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 22210,
                              "nodeType": "ExpressionStatement",
                              "src": "4806:50:91"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          null,
                          22214,
                          22216
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 22214,
                            "mutability": "mutable",
                            "name": "currentBalance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 22379,
                            "src": "4872:22:91",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22213,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4872:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 22216,
                            "mutability": "mutable",
                            "name": "balanceIncrease",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 22379,
                            "src": "4896:23:91",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22215,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4896:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22220,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22218,
                              "name": "onBehalfOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22187,
                              "src": "4949:10:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 22217,
                            "name": "_calculateBalanceIncrease",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22632,
                            "src": "4923:25:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256,uint256,uint256)"
                            }
                          },
                          "id": 22219,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4923:37:91",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4869:91:91"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22226,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 22221,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22200,
                              "src": "4967:4:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MintLocalVars_$22182_memory_ptr",
                                "typeString": "struct StableDebtToken.MintLocalVars memory"
                              }
                            },
                            "id": 22223,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "previousSupply",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22173,
                            "src": "4967:19:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 22224,
                              "name": "totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                22692
                              ],
                              "referencedDeclaration": 22692,
                              "src": "4989:11:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 22225,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4989:13:91",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4967:35:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 22227,
                        "nodeType": "ExpressionStatement",
                        "src": "4967:35:91"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22232,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 22228,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22200,
                              "src": "5008:4:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MintLocalVars_$22182_memory_ptr",
                                "typeString": "struct StableDebtToken.MintLocalVars memory"
                              }
                            },
                            "id": 22230,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "currentAvgStableRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22181,
                            "src": "5008:25:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 22231,
                            "name": "_avgStableRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22000,
                            "src": "5036:14:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5008:42:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 22233,
                        "nodeType": "ExpressionStatement",
                        "src": "5008:42:91"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22244,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 22234,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22200,
                              "src": "5056:4:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MintLocalVars_$22182_memory_ptr",
                                "typeString": "struct StableDebtToken.MintLocalVars memory"
                              }
                            },
                            "id": 22236,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "nextSupply",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22175,
                            "src": "5056:15:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 22243,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 22237,
                              "name": "_totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21377,
                              "src": "5074:12:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 22241,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22189,
                                  "src": "5113:6:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 22238,
                                    "name": "vars",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22200,
                                    "src": "5089:4:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_MintLocalVars_$22182_memory_ptr",
                                      "typeString": "struct StableDebtToken.MintLocalVars memory"
                                    }
                                  },
                                  "id": 22239,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "previousSupply",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22173,
                                  "src": "5089:19:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 22240,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4329,
                                "src": "5089:23:91",
                                "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": 22242,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5089:31:91",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5074:46:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5056:64:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 22245,
                        "nodeType": "ExpressionStatement",
                        "src": "5056:64:91"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22252,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 22246,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22200,
                              "src": "5127:4:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MintLocalVars_$22182_memory_ptr",
                                "typeString": "struct StableDebtToken.MintLocalVars memory"
                              }
                            },
                            "id": 22248,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amountInRay",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22177,
                            "src": "5127:16:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 22249,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22189,
                                "src": "5146:6:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 22250,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "wadToRay",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20492,
                              "src": "5146:15:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint256)"
                              }
                            },
                            "id": 22251,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5146:17:91",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5127:36:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 22253,
                        "nodeType": "ExpressionStatement",
                        "src": "5127:36:91"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 22254,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22200,
                              "src": "5170:4:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MintLocalVars_$22182_memory_ptr",
                                "typeString": "struct StableDebtToken.MintLocalVars memory"
                              }
                            },
                            "id": 22256,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "newStableRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22179,
                            "src": "5170:18:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 22275,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22189,
                                        "src": "5336:6:91",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 22273,
                                        "name": "currentBalance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22214,
                                        "src": "5317:14:91",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 22274,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "add",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4329,
                                      "src": "5317:18:91",
                                      "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": 22276,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5317:26:91",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 22277,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "wadToRay",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20492,
                                  "src": "5317:35:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 22278,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5317:37:91",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 22269,
                                        "name": "rate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22191,
                                        "src": "5296:4:91",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 22266,
                                          "name": "vars",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22200,
                                          "src": "5272:4:91",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_MintLocalVars_$22182_memory_ptr",
                                            "typeString": "struct StableDebtToken.MintLocalVars memory"
                                          }
                                        },
                                        "id": 22267,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "amountInRay",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22177,
                                        "src": "5272:16:91",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 22268,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "rayMul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20381,
                                      "src": "5272:23:91",
                                      "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": 22270,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5272:29:91",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 22261,
                                            "name": "currentBalance",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22214,
                                            "src": "5234:14:91",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 22262,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "wadToRay",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 20492,
                                          "src": "5234:23:91",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 22263,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5234:25:91",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 22257,
                                          "name": "_usersStableRate",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22008,
                                          "src": "5191:16:91",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                            "typeString": "mapping(address => uint256)"
                                          }
                                        },
                                        "id": 22259,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 22258,
                                          "name": "onBehalfOf",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22187,
                                          "src": "5208:10:91",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "5191:28:91",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 22260,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "rayMul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20381,
                                      "src": "5191:42:91",
                                      "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": 22264,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5191:69:91",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 22265,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4329,
                                  "src": "5191:80:91",
                                  "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": 22271,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5191:111:91",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 22272,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "rayDiv",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 20432,
                              "src": "5191:125:91",
                              "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": 22279,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5191:164:91",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5170:185:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 22281,
                        "nodeType": "ExpressionStatement",
                        "src": "5170:185:91"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 22290,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 22283,
                                  "name": "vars",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22200,
                                  "src": "5370:4:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MintLocalVars_$22182_memory_ptr",
                                    "typeString": "struct StableDebtToken.MintLocalVars memory"
                                  }
                                },
                                "id": 22284,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "newStableRate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22179,
                                "src": "5370:18:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 22287,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5397:7:91",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint128_$",
                                        "typeString": "type(uint128)"
                                      },
                                      "typeName": {
                                        "id": 22286,
                                        "name": "uint128",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5397:7:91",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_uint128_$",
                                        "typeString": "type(uint128)"
                                      }
                                    ],
                                    "id": 22285,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "5392:4:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 22288,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5392:13:91",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_uint128",
                                    "typeString": "type(uint128)"
                                  }
                                },
                                "id": 22289,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "max",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5392:17:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "5370:39:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 22291,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "5411:6:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 22292,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "SDT_STABLE_DEBT_OVERFLOW",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17224,
                              "src": "5411:31:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 22282,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5362:7:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5362:81:91",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22294,
                        "nodeType": "ExpressionStatement",
                        "src": "5362:81:91"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22300,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 22295,
                              "name": "_usersStableRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22008,
                              "src": "5449:16:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 22297,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 22296,
                              "name": "onBehalfOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22187,
                              "src": "5466:10:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5449:28:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 22298,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22200,
                              "src": "5480:4:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MintLocalVars_$22182_memory_ptr",
                                "typeString": "struct StableDebtToken.MintLocalVars memory"
                              }
                            },
                            "id": 22299,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "newStableRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22179,
                            "src": "5480:18:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5449:49:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 22301,
                        "nodeType": "ExpressionStatement",
                        "src": "5449:49:91"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22312,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 22302,
                            "name": "_totalSupplyTimestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22010,
                            "src": "5536:21:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 22311,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 22303,
                                "name": "_timestamps",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22004,
                                "src": "5560:11:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint40_$",
                                  "typeString": "mapping(address => uint40)"
                                }
                              },
                              "id": 22305,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 22304,
                                "name": "onBehalfOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22187,
                                "src": "5572:10:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "nodeType": "IndexAccess",
                              "src": "5560:23:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint40",
                                "typeString": "uint40"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 22308,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -4,
                                    "src": "5593:5:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 22309,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "timestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5593:15:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 22307,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5586:6:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint40_$",
                                  "typeString": "type(uint40)"
                                },
                                "typeName": {
                                  "id": 22306,
                                  "name": "uint40",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5586:6:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 22310,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5586:23:91",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint40",
                                "typeString": "uint40"
                              }
                            },
                            "src": "5560:49:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            }
                          },
                          "src": "5536:73:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "id": 22313,
                        "nodeType": "ExpressionStatement",
                        "src": "5536:73:91"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 22314,
                              "name": "vars",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22200,
                              "src": "5666:4:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MintLocalVars_$22182_memory_ptr",
                                "typeString": "struct StableDebtToken.MintLocalVars memory"
                              }
                            },
                            "id": 22316,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "currentAvgStableRate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22181,
                            "src": "5666:25:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 22339,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 22317,
                              "name": "_avgStableRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22000,
                              "src": "5694:14:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 22334,
                                        "name": "vars",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22200,
                                        "src": "5846:4:91",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_MintLocalVars_$22182_memory_ptr",
                                          "typeString": "struct StableDebtToken.MintLocalVars memory"
                                        }
                                      },
                                      "id": 22335,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "nextSupply",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22175,
                                      "src": "5846:15:91",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 22336,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "wadToRay",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 20492,
                                    "src": "5846:24:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 22337,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5846:26:91",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 22329,
                                            "name": "vars",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22200,
                                            "src": "5813:4:91",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_MintLocalVars_$22182_memory_ptr",
                                              "typeString": "struct StableDebtToken.MintLocalVars memory"
                                            }
                                          },
                                          "id": 22330,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "amountInRay",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22177,
                                          "src": "5813:16:91",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 22327,
                                          "name": "rate",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22191,
                                          "src": "5801:4:91",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 22328,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "rayMul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 20381,
                                        "src": "5801:11:91",
                                        "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": 22331,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5801:29:91",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 22321,
                                                "name": "vars",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 22200,
                                                "src": "5758:4:91",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_MintLocalVars_$22182_memory_ptr",
                                                  "typeString": "struct StableDebtToken.MintLocalVars memory"
                                                }
                                              },
                                              "id": 22322,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "previousSupply",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 22173,
                                              "src": "5758:19:91",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 22323,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "wadToRay",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 20492,
                                            "src": "5758:28:91",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 22324,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "5758:30:91",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 22318,
                                            "name": "vars",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22200,
                                            "src": "5711:4:91",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_MintLocalVars_$22182_memory_ptr",
                                              "typeString": "struct StableDebtToken.MintLocalVars memory"
                                            }
                                          },
                                          "id": 22319,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "currentAvgStableRate",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22181,
                                          "src": "5711:32:91",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 22320,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "rayMul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 20381,
                                        "src": "5711:46:91",
                                        "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": 22325,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5711:78:91",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 22326,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4329,
                                    "src": "5711:89:91",
                                    "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": 22332,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5711:120:91",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 22333,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "rayDiv",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 20432,
                                "src": "5711:134:91",
                                "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": 22338,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5711:162:91",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5694:179:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5666:207:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 22341,
                        "nodeType": "ExpressionStatement",
                        "src": "5666:207:91"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22343,
                              "name": "onBehalfOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22187,
                              "src": "5886:10:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 22346,
                                  "name": "balanceIncrease",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22216,
                                  "src": "5909:15:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 22344,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22189,
                                  "src": "5898:6:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 22345,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4329,
                                "src": "5898:10:91",
                                "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": 22347,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5898:27:91",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 22348,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22200,
                                "src": "5927:4:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_MintLocalVars_$22182_memory_ptr",
                                  "typeString": "struct StableDebtToken.MintLocalVars memory"
                                }
                              },
                              "id": 22349,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "previousSupply",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22173,
                              "src": "5927:19:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22342,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              22856,
                              21812
                            ],
                            "referencedDeclaration": 22856,
                            "src": "5880:5:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 22350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5880:67:91",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22351,
                        "nodeType": "ExpressionStatement",
                        "src": "5880:67:91"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 22355,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5976:1:91",
                                  "subdenomination": null,
                                  "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": 22354,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5968:7:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 22353,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5968:7:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 22356,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5968:10:91",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22357,
                              "name": "onBehalfOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22187,
                              "src": "5980:10:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22358,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22189,
                              "src": "5992:6:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22352,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4002,
                            "src": "5959:8:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 22359,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5959:40:91",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22360,
                        "nodeType": "EmitStatement",
                        "src": "5954:45:91"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22362,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22185,
                              "src": "6023:4:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22363,
                              "name": "onBehalfOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22187,
                              "src": "6035:10:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22364,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22189,
                              "src": "6053:6:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22365,
                              "name": "currentBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22214,
                              "src": "6067:14:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22366,
                              "name": "balanceIncrease",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22216,
                              "src": "6089:15:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 22367,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22200,
                                "src": "6112:4:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_MintLocalVars_$22182_memory_ptr",
                                  "typeString": "struct StableDebtToken.MintLocalVars memory"
                                }
                              },
                              "id": 22368,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "newStableRate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22179,
                              "src": "6112:18:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 22369,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22200,
                                "src": "6138:4:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_MintLocalVars_$22182_memory_ptr",
                                  "typeString": "struct StableDebtToken.MintLocalVars memory"
                                }
                              },
                              "id": 22370,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "currentAvgStableRate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22181,
                              "src": "6138:25:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 22371,
                                "name": "vars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22200,
                                "src": "6171:4:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_MintLocalVars_$22182_memory_ptr",
                                  "typeString": "struct StableDebtToken.MintLocalVars memory"
                                }
                              },
                              "id": 22372,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "nextSupply",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22175,
                              "src": "6171:15:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22361,
                            "name": "Mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7033,
                            "src": "6011:4:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,uint256,uint256,uint256,uint256)"
                            }
                          },
                          "id": 22373,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6011:181:91",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22374,
                        "nodeType": "EmitStatement",
                        "src": "6006:186:91"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22377,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 22375,
                            "name": "currentBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22214,
                            "src": "6206:14:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 22376,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6224:1:91",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6206:19:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 22198,
                        "id": 22378,
                        "nodeType": "Return",
                        "src": "6199:26:91"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 22183,
                    "nodeType": "StructuredDocumentation",
                    "src": "4041:545:91",
                    "text": " @dev Mints debt token to the `onBehalfOf` address.\n -  Only callable by the LendingPool\n - The resulting rate is the weighted average between the rate of the new debt\n and the rate of the previous debt\n @param user The address receiving the borrowed underlying, being the delegatee in case\n of credit delegate, or same as `onBehalfOf` otherwise\n @param onBehalfOf The address receiving the debt tokens\n @param amount The amount of debt tokens to mint\n @param rate The rate of the debt being minted*"
                  },
                  "functionSelector": "b3f1c93d",
                  "id": 22380,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 22195,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 22194,
                        "name": "onlyLendingPool",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25828,
                        "src": "4705:15:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4705:15:91"
                    }
                  ],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 22193,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4696:8:91"
                  },
                  "parameters": {
                    "id": 22192,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22185,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22380,
                        "src": "4608:12:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22184,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4608:7:91",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22187,
                        "mutability": "mutable",
                        "name": "onBehalfOf",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22380,
                        "src": "4626:18:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22186,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4626:7:91",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22189,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22380,
                        "src": "4650:14:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22188,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4650:7:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22191,
                        "mutability": "mutable",
                        "name": "rate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22380,
                        "src": "4670:12:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22190,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4670:7:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4602:84:91"
                  },
                  "returnParameters": {
                    "id": 22198,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22197,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22380,
                        "src": "4730:4:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 22196,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4730:4:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4729:6:91"
                  },
                  "scope": 22904,
                  "src": "4589:1641:91",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7070
                  ],
                  "body": {
                    "id": 22584,
                    "nodeType": "Block",
                    "src": "6481:2207:91",
                    "statements": [
                      {
                        "assignments": [
                          null,
                          22392,
                          22394
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 22392,
                            "mutability": "mutable",
                            "name": "currentBalance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 22584,
                            "src": "6490:22:91",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22391,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6490:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 22394,
                            "mutability": "mutable",
                            "name": "balanceIncrease",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 22584,
                            "src": "6514:23:91",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22393,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6514:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22398,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22396,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22383,
                              "src": "6567:4:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 22395,
                            "name": "_calculateBalanceIncrease",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22632,
                            "src": "6541:25:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256,uint256,uint256)"
                            }
                          },
                          "id": 22397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6541:31:91",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6487:85:91"
                      },
                      {
                        "assignments": [
                          22400
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22400,
                            "mutability": "mutable",
                            "name": "previousSupply",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 22584,
                            "src": "6579:22:91",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22399,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6579:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22403,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 22401,
                            "name": "totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              22692
                            ],
                            "referencedDeclaration": 22692,
                            "src": "6604:11:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 22402,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6604:13:91",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6579:38:91"
                      },
                      {
                        "assignments": [
                          22405
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22405,
                            "mutability": "mutable",
                            "name": "newAvgStableRate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 22584,
                            "src": "6623:24:91",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22404,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6623:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22407,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 22406,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6650:1:91",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6623:28:91"
                      },
                      {
                        "assignments": [
                          22409
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22409,
                            "mutability": "mutable",
                            "name": "nextSupply",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 22584,
                            "src": "6657:18:91",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22408,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6657:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22411,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 22410,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6678:1:91",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6657:22:91"
                      },
                      {
                        "assignments": [
                          22413
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22413,
                            "mutability": "mutable",
                            "name": "userStableRate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 22584,
                            "src": "6685:22:91",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22412,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6685:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22417,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 22414,
                            "name": "_usersStableRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22008,
                            "src": "6710:16:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 22416,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 22415,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22383,
                            "src": "6727:4:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6710:22:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6685:47:91"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22420,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 22418,
                            "name": "previousSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22400,
                            "src": "7046:14:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 22419,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22385,
                            "src": "7064:6:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7046:24:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 22485,
                          "nodeType": "Block",
                          "src": "7135:652:91",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 22437,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 22430,
                                  "name": "nextSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22409,
                                  "src": "7143:10:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 22436,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 22431,
                                    "name": "_totalSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21377,
                                    "src": "7156:12:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 22434,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22385,
                                        "src": "7190:6:91",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 22432,
                                        "name": "previousSupply",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22400,
                                        "src": "7171:14:91",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 22433,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sub",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4346,
                                      "src": "7171:18:91",
                                      "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": 22435,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7171:26:91",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7156:41:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7143:54:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 22438,
                              "nodeType": "ExpressionStatement",
                              "src": "7143:54:91"
                            },
                            {
                              "assignments": [
                                22440
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 22440,
                                  "mutability": "mutable",
                                  "name": "firstTerm",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 22485,
                                  "src": "7205:17:91",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 22439,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7205:7:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 22447,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 22443,
                                        "name": "previousSupply",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22400,
                                        "src": "7247:14:91",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 22444,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "wadToRay",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20492,
                                      "src": "7247:23:91",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 22445,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7247:25:91",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 22441,
                                    "name": "_avgStableRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22000,
                                    "src": "7225:14:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 22442,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "rayMul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20381,
                                  "src": "7225:21:91",
                                  "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": 22446,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7225:48:91",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7205:68:91"
                            },
                            {
                              "assignments": [
                                22449
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 22449,
                                  "mutability": "mutable",
                                  "name": "secondTerm",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 22485,
                                  "src": "7281:18:91",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 22448,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7281:7:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 22456,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 22452,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22385,
                                        "src": "7324:6:91",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 22453,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "wadToRay",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 20492,
                                      "src": "7324:15:91",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 22454,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7324:17:91",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 22450,
                                    "name": "userStableRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22413,
                                    "src": "7302:14:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 22451,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "rayMul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 20381,
                                  "src": "7302:21:91",
                                  "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": 22455,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7302:40:91",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7281:61:91"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 22459,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 22457,
                                  "name": "secondTerm",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22449,
                                  "src": "7569:10:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 22458,
                                  "name": "firstTerm",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22440,
                                  "src": "7583:9:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7569:23:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 22483,
                                "nodeType": "Block",
                                "src": "7671:110:91",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 22481,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 22469,
                                        "name": "newAvgStableRate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22405,
                                        "src": "7681:16:91",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 22480,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 22470,
                                          "name": "_avgStableRate",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22000,
                                          "src": "7700:14:91",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "arguments": [],
                                              "expression": {
                                                "argumentTypes": [],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 22476,
                                                  "name": "nextSupply",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 22409,
                                                  "src": "7750:10:91",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 22477,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "wadToRay",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 20492,
                                                "src": "7750:19:91",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                  "typeString": "function (uint256) pure returns (uint256)"
                                                }
                                              },
                                              "id": 22478,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "7750:21:91",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 22473,
                                                  "name": "secondTerm",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 22449,
                                                  "src": "7731:10:91",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 22471,
                                                  "name": "firstTerm",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 22440,
                                                  "src": "7717:9:91",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 22472,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sub",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 4346,
                                                "src": "7717:13:91",
                                                "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": 22474,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "7717:25:91",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 22475,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "rayDiv",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 20432,
                                            "src": "7717:32:91",
                                            "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": 22479,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "7717:55:91",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "7700:72:91",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7681:91:91",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 22482,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7681:91:91"
                                  }
                                ]
                              },
                              "id": 22484,
                              "nodeType": "IfStatement",
                              "src": "7565:216:91",
                              "trueBody": {
                                "id": 22468,
                                "nodeType": "Block",
                                "src": "7594:71:91",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 22466,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 22460,
                                        "name": "newAvgStableRate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22405,
                                        "src": "7604:16:91",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 22465,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 22461,
                                          "name": "_avgStableRate",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22000,
                                          "src": "7623:14:91",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "id": 22464,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "argumentTypes": null,
                                            "id": 22462,
                                            "name": "_totalSupply",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 21377,
                                            "src": "7640:12:91",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 22463,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7655:1:91",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "7640:16:91",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "7623:33:91",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7604:52:91",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 22467,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7604:52:91"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 22486,
                        "nodeType": "IfStatement",
                        "src": "7042:745:91",
                        "trueBody": {
                          "id": 22429,
                          "nodeType": "Block",
                          "src": "7072:57:91",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 22423,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 22421,
                                  "name": "_avgStableRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22000,
                                  "src": "7080:14:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 22422,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7097:1:91",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7080:18:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 22424,
                              "nodeType": "ExpressionStatement",
                              "src": "7080:18:91"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 22427,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 22425,
                                  "name": "_totalSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21377,
                                  "src": "7106:12:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 22426,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7121:1:91",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7106:16:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 22428,
                              "nodeType": "ExpressionStatement",
                              "src": "7106:16:91"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 22487,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22385,
                            "src": "7797:6:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 22488,
                            "name": "currentBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22392,
                            "src": "7807:14:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7797:24:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 22513,
                          "nodeType": "Block",
                          "src": "7899:91:91",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 22511,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 22503,
                                    "name": "_timestamps",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22004,
                                    "src": "7940:11:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint40_$",
                                      "typeString": "mapping(address => uint40)"
                                    }
                                  },
                                  "id": 22505,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 22504,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22383,
                                    "src": "7952:4:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7940:17:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint40",
                                    "typeString": "uint40"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 22508,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -4,
                                        "src": "7967:5:91",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 22509,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "7967:15:91",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 22507,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "7960:6:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint40_$",
                                      "typeString": "type(uint40)"
                                    },
                                    "typeName": {
                                      "id": 22506,
                                      "name": "uint40",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7960:6:91",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 22510,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7960:23:91",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint40",
                                    "typeString": "uint40"
                                  }
                                },
                                "src": "7940:43:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint40",
                                  "typeString": "uint40"
                                }
                              },
                              "id": 22512,
                              "nodeType": "ExpressionStatement",
                              "src": "7940:43:91"
                            }
                          ]
                        },
                        "id": 22514,
                        "nodeType": "IfStatement",
                        "src": "7793:197:91",
                        "trueBody": {
                          "id": 22502,
                          "nodeType": "Block",
                          "src": "7823:70:91",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 22494,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 22490,
                                    "name": "_usersStableRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22008,
                                    "src": "7831:16:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 22492,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 22491,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22383,
                                    "src": "7848:4:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7831:22:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 22493,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7856:1:91",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7831:26:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 22495,
                              "nodeType": "ExpressionStatement",
                              "src": "7831:26:91"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 22500,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 22496,
                                    "name": "_timestamps",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22004,
                                    "src": "7865:11:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint40_$",
                                      "typeString": "mapping(address => uint40)"
                                    }
                                  },
                                  "id": 22498,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 22497,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22383,
                                    "src": "7877:4:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7865:17:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint40",
                                    "typeString": "uint40"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 22499,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7885:1:91",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7865:21:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint40",
                                  "typeString": "uint40"
                                }
                              },
                              "id": 22501,
                              "nodeType": "ExpressionStatement",
                              "src": "7865:21:91"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22521,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 22515,
                            "name": "_totalSupplyTimestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22010,
                            "src": "8026:21:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 22518,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "8057:5:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 22519,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "8057:15:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 22517,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8050:6:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint40_$",
                                "typeString": "type(uint40)"
                              },
                              "typeName": {
                                "id": 22516,
                                "name": "uint40",
                                "nodeType": "ElementaryTypeName",
                                "src": "8050:6:91",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 22520,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8050:23:91",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            }
                          },
                          "src": "8026:47:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "id": 22522,
                        "nodeType": "ExpressionStatement",
                        "src": "8026:47:91"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 22523,
                            "name": "balanceIncrease",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22394,
                            "src": "8084:15:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 22524,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22385,
                            "src": "8102:6:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8084:24:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 22573,
                          "nodeType": "Block",
                          "src": "8424:214:91",
                          "statements": [
                            {
                              "assignments": [
                                22552
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 22552,
                                  "mutability": "mutable",
                                  "name": "amountToBurn",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 22573,
                                  "src": "8432:20:91",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 22551,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8432:7:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 22557,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 22555,
                                    "name": "balanceIncrease",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22394,
                                    "src": "8466:15:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 22553,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22385,
                                    "src": "8455:6:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 22554,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4346,
                                  "src": "8455:10:91",
                                  "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": 22556,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8455:27:91",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8432:50:91"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 22559,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22383,
                                    "src": "8496:4:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22560,
                                    "name": "amountToBurn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22552,
                                    "src": "8502:12:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22561,
                                    "name": "previousSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22400,
                                    "src": "8516:14:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 22558,
                                  "name": "_burn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    22903,
                                    21886
                                  ],
                                  "referencedDeclaration": 22903,
                                  "src": "8490:5:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256)"
                                  }
                                },
                                "id": 22562,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8490:41:91",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 22563,
                              "nodeType": "ExpressionStatement",
                              "src": "8490:41:91"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 22565,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22383,
                                    "src": "8549:4:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22566,
                                    "name": "amountToBurn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22552,
                                    "src": "8555:12:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22567,
                                    "name": "currentBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22392,
                                    "src": "8569:14:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22568,
                                    "name": "balanceIncrease",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22394,
                                    "src": "8585:15:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22569,
                                    "name": "newAvgStableRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22405,
                                    "src": "8602:16:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22570,
                                    "name": "nextSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22409,
                                    "src": "8620:10:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 22564,
                                  "name": "Burn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7048,
                                  "src": "8544:4:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256,uint256,uint256,uint256)"
                                  }
                                },
                                "id": 22571,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8544:87:91",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 22572,
                              "nodeType": "EmitStatement",
                              "src": "8539:92:91"
                            }
                          ]
                        },
                        "id": 22574,
                        "nodeType": "IfStatement",
                        "src": "8080:558:91",
                        "trueBody": {
                          "id": 22550,
                          "nodeType": "Block",
                          "src": "8110:308:91",
                          "statements": [
                            {
                              "assignments": [
                                22527
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 22527,
                                  "mutability": "mutable",
                                  "name": "amountToMint",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 22550,
                                  "src": "8118:20:91",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 22526,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8118:7:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 22532,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 22530,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22385,
                                    "src": "8161:6:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 22528,
                                    "name": "balanceIncrease",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22394,
                                    "src": "8141:15:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 22529,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4346,
                                  "src": "8141:19:91",
                                  "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": 22531,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8141:27:91",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8118:50:91"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 22534,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22383,
                                    "src": "8182:4:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22535,
                                    "name": "amountToMint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22527,
                                    "src": "8188:12:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22536,
                                    "name": "previousSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22400,
                                    "src": "8202:14:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 22533,
                                  "name": "_mint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    22856,
                                    21812
                                  ],
                                  "referencedDeclaration": 22856,
                                  "src": "8176:5:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256)"
                                  }
                                },
                                "id": 22537,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8176:41:91",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 22538,
                              "nodeType": "ExpressionStatement",
                              "src": "8176:41:91"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 22540,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22383,
                                    "src": "8244:4:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22541,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22383,
                                    "src": "8258:4:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22542,
                                    "name": "amountToMint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22527,
                                    "src": "8272:12:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22543,
                                    "name": "currentBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22392,
                                    "src": "8294:14:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22544,
                                    "name": "balanceIncrease",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22394,
                                    "src": "8318:15:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22545,
                                    "name": "userStableRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22413,
                                    "src": "8343:14:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22546,
                                    "name": "newAvgStableRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22405,
                                    "src": "8367:16:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22547,
                                    "name": "nextSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22409,
                                    "src": "8393:10:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 22539,
                                  "name": "Mint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7033,
                                  "src": "8230:4:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256,uint256,uint256,uint256,uint256)"
                                  }
                                },
                                "id": 22548,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8230:181:91",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 22549,
                              "nodeType": "EmitStatement",
                              "src": "8225:186:91"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22576,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22383,
                              "src": "8658:4:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 22579,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8672:1:91",
                                  "subdenomination": null,
                                  "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": 22578,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8664:7:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 22577,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8664:7:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 22580,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8664:10:91",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22581,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22385,
                              "src": "8676:6:91",
                              "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": 22575,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4002,
                            "src": "8649:8:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 22582,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8649:34:91",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22583,
                        "nodeType": "EmitStatement",
                        "src": "8644:39:91"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 22381,
                    "nodeType": "StructuredDocumentation",
                    "src": "6234:166:91",
                    "text": " @dev Burns debt of `user`\n @param user The address of the user getting his debt burned\n @param amount The amount of debt tokens getting burned*"
                  },
                  "functionSelector": "9dc29fac",
                  "id": 22585,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 22389,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 22388,
                        "name": "onlyLendingPool",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25828,
                        "src": "6465:15:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6465:15:91"
                    }
                  ],
                  "name": "burn",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 22387,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6456:8:91"
                  },
                  "parameters": {
                    "id": 22386,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22383,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22585,
                        "src": "6417:12:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22382,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6417:7:91",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22385,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22585,
                        "src": "6431:14:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22384,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6431:7:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6416:30:91"
                  },
                  "returnParameters": {
                    "id": 22390,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6481:0:91"
                  },
                  "scope": 22904,
                  "src": "6403:2285:91",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 22631,
                    "nodeType": "Block",
                    "src": "9100:416:91",
                    "statements": [
                      {
                        "assignments": [
                          22598
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22598,
                            "mutability": "mutable",
                            "name": "previousPrincipalBalance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 22631,
                            "src": "9106:32:91",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22597,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9106:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22603,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22601,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22588,
                              "src": "9157:4:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 22599,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "9141:5:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_StableDebtToken_$22904",
                                "typeString": "contract super StableDebtToken"
                              }
                            },
                            "id": 22600,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21459,
                            "src": "9141:15:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 22602,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9141:21:91",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9106:56:91"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22606,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 22604,
                            "name": "previousPrincipalBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22598,
                            "src": "9173:24:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 22605,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9201:1:91",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "9173:29:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 22613,
                        "nodeType": "IfStatement",
                        "src": "9169:66:91",
                        "trueBody": {
                          "id": 22612,
                          "nodeType": "Block",
                          "src": "9204:31:91",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 22607,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9220:1:91",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 22608,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9223:1:91",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 22609,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9226:1:91",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "id": 22610,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "9219:9:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$",
                                  "typeString": "tuple(int_const 0,int_const 0,int_const 0)"
                                }
                              },
                              "functionReturnParameters": 22596,
                              "id": 22611,
                              "nodeType": "Return",
                              "src": "9212:16:91"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          22615
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22615,
                            "mutability": "mutable",
                            "name": "balanceIncrease",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 22631,
                            "src": "9312:23:91",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22614,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9312:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22622,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22620,
                              "name": "previousPrincipalBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22598,
                              "src": "9358:24:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 22617,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22588,
                                  "src": "9348:4:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 22616,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  22171
                                ],
                                "referencedDeclaration": 22171,
                                "src": "9338:9:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view returns (uint256)"
                                }
                              },
                              "id": 22618,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9338:15:91",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 22619,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4346,
                            "src": "9338:19:91",
                            "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": 22621,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9338:45:91",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9312:71:91"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 22623,
                              "name": "previousPrincipalBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22598,
                              "src": "9405:24:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 22626,
                                  "name": "balanceIncrease",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22615,
                                  "src": "9466:15:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 22624,
                                  "name": "previousPrincipalBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22598,
                                  "src": "9437:24:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 22625,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4329,
                                "src": "9437:28:91",
                                "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": 22627,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9437:45:91",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22628,
                              "name": "balanceIncrease",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22615,
                              "src": "9490:15:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 22629,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "9397:114:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 22596,
                        "id": 22630,
                        "nodeType": "Return",
                        "src": "9390:121:91"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 22586,
                    "nodeType": "StructuredDocumentation",
                    "src": "8692:268:91",
                    "text": " @dev Calculates the increase in balance since the last user interaction\n @param user The address of the user for which the interest is being accumulated\n @return The previous principal balance, the new principal balance and the balance increase*"
                  },
                  "id": 22632,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_calculateBalanceIncrease",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 22589,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22588,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22632,
                        "src": "8998:12:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22587,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8998:7:91",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8997:14:91"
                  },
                  "returnParameters": {
                    "id": 22596,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22591,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22632,
                        "src": "9054:7:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22590,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9054:7:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22593,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22632,
                        "src": "9069:7:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22592,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9069:7:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22595,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22632,
                        "src": "9084:7:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22594,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9084:7:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9046:51:91"
                  },
                  "scope": 22904,
                  "src": "8963:553:91",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    7104
                  ],
                  "body": {
                    "id": 22659,
                    "nodeType": "Block",
                    "src": "9782:136:91",
                    "statements": [
                      {
                        "assignments": [
                          22646
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22646,
                            "mutability": "mutable",
                            "name": "avgRate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 22659,
                            "src": "9788:15:91",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22645,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9788:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22648,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 22647,
                          "name": "_avgStableRate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22000,
                          "src": "9806:14:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9788:32:91"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 22649,
                                  "name": "super",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -25,
                                  "src": "9834:5:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_super$_StableDebtToken_$22904",
                                    "typeString": "contract super StableDebtToken"
                                  }
                                },
                                "id": 22650,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalSupply",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21445,
                                "src": "9834:17:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view returns (uint256)"
                                }
                              },
                              "id": 22651,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9834:19:91",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 22653,
                                  "name": "avgRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22646,
                                  "src": "9872:7:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 22652,
                                "name": "_calcTotalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22811,
                                "src": "9855:16:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) view returns (uint256)"
                                }
                              },
                              "id": 22654,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9855:25:91",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22655,
                              "name": "avgRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22646,
                              "src": "9882:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22656,
                              "name": "_totalSupplyTimestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22010,
                              "src": "9891:21:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint40",
                                "typeString": "uint40"
                              }
                            }
                          ],
                          "id": 22657,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "9833:80:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint40_$",
                            "typeString": "tuple(uint256,uint256,uint256,uint40)"
                          }
                        },
                        "functionReturnParameters": 22644,
                        "id": 22658,
                        "nodeType": "Return",
                        "src": "9826:87:91"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 22633,
                    "nodeType": "StructuredDocumentation",
                    "src": "9520:121:91",
                    "text": " @dev Returns the principal and total supply, the average borrow rate and the last supply update timestamp*"
                  },
                  "functionSelector": "79774338",
                  "id": 22660,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSupplyData",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 22635,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9693:8:91"
                  },
                  "parameters": {
                    "id": 22634,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9666:2:91"
                  },
                  "returnParameters": {
                    "id": 22644,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22637,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22660,
                        "src": "9722:7:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22636,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9722:7:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22639,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22660,
                        "src": "9737:7:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22638,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9737:7:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22641,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22660,
                        "src": "9752:7:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22640,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9752:7:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22643,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22660,
                        "src": "9767:6:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        },
                        "typeName": {
                          "id": 22642,
                          "name": "uint40",
                          "nodeType": "ElementaryTypeName",
                          "src": "9767:6:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9714:65:91"
                  },
                  "scope": 22904,
                  "src": "9644:274:91",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7118
                  ],
                  "body": {
                    "id": 22679,
                    "nodeType": "Block",
                    "src": "10086:92:91",
                    "statements": [
                      {
                        "assignments": [
                          22670
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22670,
                            "mutability": "mutable",
                            "name": "avgRate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 22679,
                            "src": "10092:15:91",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22669,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10092:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22672,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 22671,
                          "name": "_avgStableRate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22000,
                          "src": "10110:14:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10092:32:91"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 22674,
                                  "name": "avgRate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22670,
                                  "src": "10155:7:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 22673,
                                "name": "_calcTotalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22811,
                                "src": "10138:16:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) view returns (uint256)"
                                }
                              },
                              "id": 22675,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10138:25:91",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22676,
                              "name": "avgRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22670,
                              "src": "10165:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 22677,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "10137:36:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 22668,
                        "id": 22678,
                        "nodeType": "Return",
                        "src": "10130:43:91"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 22661,
                    "nodeType": "StructuredDocumentation",
                    "src": "9922:77:91",
                    "text": " @dev Returns the the total supply and the average stable rate*"
                  },
                  "functionSelector": "f731e9be",
                  "id": 22680,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTotalSupplyAndAvgRate",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 22663,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "10050:8:91"
                  },
                  "parameters": {
                    "id": 22662,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10035:2:91"
                  },
                  "returnParameters": {
                    "id": 22668,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22665,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22680,
                        "src": "10068:7:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22664,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10068:7:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22667,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22680,
                        "src": "10077:7:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22666,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10077:7:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10067:18:91"
                  },
                  "scope": 22904,
                  "src": "10002:176:91",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    21445
                  ],
                  "body": {
                    "id": 22691,
                    "nodeType": "Block",
                    "src": "10292:50:91",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22688,
                              "name": "_avgStableRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22000,
                              "src": "10322:14:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22687,
                            "name": "_calcTotalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22811,
                            "src": "10305:16:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 22689,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10305:32:91",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 22686,
                        "id": 22690,
                        "nodeType": "Return",
                        "src": "10298:39:91"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 22681,
                    "nodeType": "StructuredDocumentation",
                    "src": "10182:45:91",
                    "text": " @dev Returns the total supply*"
                  },
                  "functionSelector": "18160ddd",
                  "id": 22692,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 22683,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "10265:8:91"
                  },
                  "parameters": {
                    "id": 22682,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10250:2:91"
                  },
                  "returnParameters": {
                    "id": 22686,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22685,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22692,
                        "src": "10283:7:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22684,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10283:7:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10282:9:91"
                  },
                  "scope": 22904,
                  "src": "10230:112:91",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7110
                  ],
                  "body": {
                    "id": 22701,
                    "nodeType": "Block",
                    "src": "10504:39:91",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22699,
                          "name": "_totalSupplyTimestamp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22010,
                          "src": "10517:21:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "functionReturnParameters": 22698,
                        "id": 22700,
                        "nodeType": "Return",
                        "src": "10510:28:91"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 22693,
                    "nodeType": "StructuredDocumentation",
                    "src": "10346:80:91",
                    "text": " @dev Returns the timestamp at which the total supply was updated*"
                  },
                  "functionSelector": "e7484890",
                  "id": 22702,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTotalSupplyLastUpdated",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 22695,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "10478:8:91"
                  },
                  "parameters": {
                    "id": 22694,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10463:2:91"
                  },
                  "returnParameters": {
                    "id": 22698,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22697,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22702,
                        "src": "10496:6:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        },
                        "typeName": {
                          "id": 22696,
                          "name": "uint40",
                          "nodeType": "ElementaryTypeName",
                          "src": "10496:6:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10495:8:91"
                  },
                  "scope": 22904,
                  "src": "10429:114:91",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7126
                  ],
                  "body": {
                    "id": 22716,
                    "nodeType": "Block",
                    "src": "10823:39:91",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22713,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22705,
                              "src": "10852:4:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 22711,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "10836:5:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_StableDebtToken_$22904",
                                "typeString": "contract super StableDebtToken"
                              }
                            },
                            "id": 22712,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21459,
                            "src": "10836:15:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 22714,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10836:21:91",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 22710,
                        "id": 22715,
                        "nodeType": "Return",
                        "src": "10829:28:91"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 22703,
                    "nodeType": "StructuredDocumentation",
                    "src": "10547:182:91",
                    "text": " @dev Returns the principal debt balance of the user from\n @param user The user's address\n @return The debt balance of the user since the last burn/mint action*"
                  },
                  "functionSelector": "c634dfaa",
                  "id": 22717,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "principalBalanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 22707,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "10796:8:91"
                  },
                  "parameters": {
                    "id": 22706,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22705,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22717,
                        "src": "10760:12:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22704,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10760:7:91",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10759:14:91"
                  },
                  "returnParameters": {
                    "id": 22710,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22709,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22717,
                        "src": "10814:7:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22708,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10814:7:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10813:9:91"
                  },
                  "scope": 22904,
                  "src": "10732:130:91",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 22725,
                    "nodeType": "Block",
                    "src": "11036:34:91",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22723,
                          "name": "_underlyingAsset",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22014,
                          "src": "11049:16:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 22722,
                        "id": 22724,
                        "nodeType": "Return",
                        "src": "11042:23:91"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 22718,
                    "nodeType": "StructuredDocumentation",
                    "src": "10866:101:91",
                    "text": " @dev Returns the address of the underlying asset of this aToken (E.g. WETH for aWETH)*"
                  },
                  "functionSelector": "b16a19de",
                  "id": 22726,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "UNDERLYING_ASSET_ADDRESS",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 22719,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11003:2:91"
                  },
                  "returnParameters": {
                    "id": 22722,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22721,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22726,
                        "src": "11027:7:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22720,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11027:7:91",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11026:9:91"
                  },
                  "scope": 22904,
                  "src": "10970:100:91",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22734,
                    "nodeType": "Block",
                    "src": "11214:23:91",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22732,
                          "name": "_pool",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22012,
                          "src": "11227:5:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "functionReturnParameters": 22731,
                        "id": 22733,
                        "nodeType": "Return",
                        "src": "11220:12:91"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 22727,
                    "nodeType": "StructuredDocumentation",
                    "src": "11074:86:91",
                    "text": " @dev Returns the address of the lending pool where this aToken is used*"
                  },
                  "functionSelector": "7535d246",
                  "id": 22735,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "POOL",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 22728,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11176:2:91"
                  },
                  "returnParameters": {
                    "id": 22731,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22730,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22735,
                        "src": "11200:12:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPool_$6466",
                          "typeString": "contract ILendingPool"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 22729,
                          "name": "ILendingPool",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6466,
                          "src": "11200:12:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11199:14:91"
                  },
                  "scope": 22904,
                  "src": "11163:74:91",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7132
                  ],
                  "body": {
                    "id": 22745,
                    "nodeType": "Block",
                    "src": "11416:44:91",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 22742,
                            "name": "_getIncentivesController",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              22756
                            ],
                            "referencedDeclaration": 22756,
                            "src": "11429:24:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IAaveIncentivesController_$5822_$",
                              "typeString": "function () view returns (contract IAaveIncentivesController)"
                            }
                          },
                          "id": 22743,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11429:26:91",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "functionReturnParameters": 22741,
                        "id": 22744,
                        "nodeType": "Return",
                        "src": "11422:33:91"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 22736,
                    "nodeType": "StructuredDocumentation",
                    "src": "11241:78:91",
                    "text": " @dev Returns the address of the incentives controller contract*"
                  },
                  "functionSelector": "75d26413",
                  "id": 22746,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getIncentivesController",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 22738,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "11371:8:91"
                  },
                  "parameters": {
                    "id": 22737,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11354:2:91"
                  },
                  "returnParameters": {
                    "id": 22741,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22740,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22746,
                        "src": "11389:25:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                          "typeString": "contract IAaveIncentivesController"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 22739,
                          "name": "IAaveIncentivesController",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5822,
                          "src": "11389:25:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11388:27:91"
                  },
                  "scope": 22904,
                  "src": "11322:138:91",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    21465
                  ],
                  "body": {
                    "id": 22755,
                    "nodeType": "Block",
                    "src": "11638:39:91",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22753,
                          "name": "_incentivesController",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22016,
                          "src": "11651:21:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "functionReturnParameters": 22752,
                        "id": 22754,
                        "nodeType": "Return",
                        "src": "11644:28:91"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 22747,
                    "nodeType": "StructuredDocumentation",
                    "src": "11464:76:91",
                    "text": " @dev For internal usage in the logic of the parent contracts*"
                  },
                  "id": 22756,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getIncentivesController",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 22749,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "11593:8:91"
                  },
                  "parameters": {
                    "id": 22748,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11576:2:91"
                  },
                  "returnParameters": {
                    "id": 22752,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22751,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22756,
                        "src": "11611:25:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                          "typeString": "contract IAaveIncentivesController"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 22750,
                          "name": "IAaveIncentivesController",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5822,
                          "src": "11611:25:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11610:27:91"
                  },
                  "scope": 22904,
                  "src": "11543:134:91",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    26037
                  ],
                  "body": {
                    "id": 22765,
                    "nodeType": "Block",
                    "src": "11839:34:91",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22763,
                          "name": "_underlyingAsset",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22014,
                          "src": "11852:16:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 22762,
                        "id": 22764,
                        "nodeType": "Return",
                        "src": "11845:23:91"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 22757,
                    "nodeType": "StructuredDocumentation",
                    "src": "11681:76:91",
                    "text": " @dev For internal usage in the logic of the parent contracts*"
                  },
                  "id": 22766,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getUnderlyingAssetAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 22759,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "11812:8:91"
                  },
                  "parameters": {
                    "id": 22758,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11795:2:91"
                  },
                  "returnParameters": {
                    "id": 22762,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22761,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22766,
                        "src": "11830:7:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22760,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11830:7:91",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11829:9:91"
                  },
                  "scope": 22904,
                  "src": "11760:113:91",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    26042
                  ],
                  "body": {
                    "id": 22775,
                    "nodeType": "Block",
                    "src": "12029:23:91",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22773,
                          "name": "_pool",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22012,
                          "src": "12042:5:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "functionReturnParameters": 22772,
                        "id": 22774,
                        "nodeType": "Return",
                        "src": "12035:12:91"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 22767,
                    "nodeType": "StructuredDocumentation",
                    "src": "11877:76:91",
                    "text": " @dev For internal usage in the logic of the parent contracts*"
                  },
                  "id": 22776,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getLendingPool",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 22769,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "11997:8:91"
                  },
                  "parameters": {
                    "id": 22768,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11980:2:91"
                  },
                  "returnParameters": {
                    "id": 22772,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22771,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22776,
                        "src": "12015:12:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPool_$6466",
                          "typeString": "contract ILendingPool"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 22770,
                          "name": "ILendingPool",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6466,
                          "src": "12015:12:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12014:14:91"
                  },
                  "scope": 22904,
                  "src": "11956:96:91",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22810,
                    "nodeType": "Block",
                    "src": "12337:276:91",
                    "statements": [
                      {
                        "assignments": [
                          22785
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22785,
                            "mutability": "mutable",
                            "name": "principalSupply",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 22810,
                            "src": "12343:23:91",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22784,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12343:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22789,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 22786,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "12369:5:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_StableDebtToken_$22904",
                                "typeString": "contract super StableDebtToken"
                              }
                            },
                            "id": 22787,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "totalSupply",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21445,
                            "src": "12369:17:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 22788,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12369:19:91",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12343:45:91"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22792,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 22790,
                            "name": "principalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22785,
                            "src": "12399:15:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 22791,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12418:1:91",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "12399:20:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 22796,
                        "nodeType": "IfStatement",
                        "src": "12395:49:91",
                        "trueBody": {
                          "id": 22795,
                          "nodeType": "Block",
                          "src": "12421:23:91",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 22793,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12436:1:91",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 22783,
                              "id": 22794,
                              "nodeType": "Return",
                              "src": "12429:8:91"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          22798
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22798,
                            "mutability": "mutable",
                            "name": "cumulatedInterest",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 22810,
                            "src": "12450:25:91",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22797,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12450:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22804,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22801,
                              "name": "avgRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22779,
                              "src": "12522:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 22802,
                              "name": "_totalSupplyTimestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22010,
                              "src": "12531:21:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint40",
                                "typeString": "uint40"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint40",
                                "typeString": "uint40"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 22799,
                              "name": "MathUtils",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19955,
                              "src": "12484:9:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MathUtils_$19955_$",
                                "typeString": "type(library MathUtils)"
                              }
                            },
                            "id": 22800,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "calculateCompoundedInterest",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 19954,
                            "src": "12484:37:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint40_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint40) view returns (uint256)"
                            }
                          },
                          "id": 22803,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12484:69:91",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12450:103:91"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 22807,
                              "name": "cumulatedInterest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22798,
                              "src": "12590:17:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 22805,
                              "name": "principalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22785,
                              "src": "12567:15:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 22806,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayMul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20381,
                            "src": "12567:22:91",
                            "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": 22808,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12567:41:91",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 22783,
                        "id": 22809,
                        "nodeType": "Return",
                        "src": "12560:48:91"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 22777,
                    "nodeType": "StructuredDocumentation",
                    "src": "12056:195:91",
                    "text": " @dev Calculates the total supply\n @param avgRate The average rate at which the total supply increases\n @return The debt balance of the user since the last burn/mint action*"
                  },
                  "id": 22811,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_calcTotalSupply",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 22780,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22779,
                        "mutability": "mutable",
                        "name": "avgRate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22811,
                        "src": "12280:15:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22778,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12280:7:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12279:17:91"
                  },
                  "returnParameters": {
                    "id": 22783,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22782,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22811,
                        "src": "12328:7:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22781,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12328:7:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12327:9:91"
                  },
                  "scope": 22904,
                  "src": "12254:359:91",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22855,
                    "nodeType": "Block",
                    "src": "12943:262:91",
                    "statements": [
                      {
                        "assignments": [
                          22822
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22822,
                            "mutability": "mutable",
                            "name": "oldAccountBalance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 22855,
                            "src": "12949:25:91",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22821,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12949:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22826,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 22823,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21369,
                            "src": "12977:9:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 22825,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 22824,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22814,
                            "src": "12987:7:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12977:18:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12949:46:91"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22834,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 22827,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21369,
                              "src": "13001:9:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 22829,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 22828,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22814,
                              "src": "13011:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "13001:18:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 22832,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22816,
                                "src": "13044:6:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 22830,
                                "name": "oldAccountBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22822,
                                "src": "13022:17:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 22831,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4329,
                              "src": "13022:21:91",
                              "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": 22833,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13022:29:91",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13001:50:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 22835,
                        "nodeType": "ExpressionStatement",
                        "src": "13001:50:91"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 22844,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 22838,
                                "name": "_incentivesController",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22016,
                                "src": "13070:21:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                  "typeString": "contract IAaveIncentivesController"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                  "typeString": "contract IAaveIncentivesController"
                                }
                              ],
                              "id": 22837,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13062:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 22836,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "13062:7:91",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 22839,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13062:30:91",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 22842,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13104:1:91",
                                "subdenomination": null,
                                "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": 22841,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13096:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 22840,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "13096:7:91",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 22843,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13096:10:91",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "13062:44:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 22854,
                        "nodeType": "IfStatement",
                        "src": "13058:143:91",
                        "trueBody": {
                          "id": 22853,
                          "nodeType": "Block",
                          "src": "13108:93:91",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 22848,
                                    "name": "account",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22814,
                                    "src": "13151:7:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22849,
                                    "name": "oldTotalSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22818,
                                    "src": "13160:14:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22850,
                                    "name": "oldAccountBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22822,
                                    "src": "13176:17:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 22845,
                                    "name": "_incentivesController",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22016,
                                    "src": "13116:21:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                      "typeString": "contract IAaveIncentivesController"
                                    }
                                  },
                                  "id": 22847,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "handleAction",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5747,
                                  "src": "13116:34:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256) external"
                                  }
                                },
                                "id": 22851,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13116:78:91",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 22852,
                              "nodeType": "ExpressionStatement",
                              "src": "13116:78:91"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 22812,
                    "nodeType": "StructuredDocumentation",
                    "src": "12617:226:91",
                    "text": " @dev Mints stable debt tokens to an user\n @param account The account receiving the debt tokens\n @param amount The amount being minted\n @param oldTotalSupply the total supply before the minting event*"
                  },
                  "id": 22856,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 22819,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22814,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22856,
                        "src": "12866:15:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22813,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12866:7:91",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22816,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22856,
                        "src": "12887:14:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22815,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12887:7:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22818,
                        "mutability": "mutable",
                        "name": "oldTotalSupply",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22856,
                        "src": "12907:22:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22817,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12907:7:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12860:73:91"
                  },
                  "returnParameters": {
                    "id": 22820,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12943:0:91"
                  },
                  "scope": 22904,
                  "src": "12846:359:91",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22902,
                    "nodeType": "Block",
                    "src": "13530:295:91",
                    "statements": [
                      {
                        "assignments": [
                          22867
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22867,
                            "mutability": "mutable",
                            "name": "oldAccountBalance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 22902,
                            "src": "13536:25:91",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22866,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13536:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 22871,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 22868,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21369,
                            "src": "13564:9:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 22870,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 22869,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22859,
                            "src": "13574:7:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13564:18:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13536:46:91"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 22872,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21369,
                              "src": "13588:9:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 22874,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 22873,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22859,
                              "src": "13598:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "13588:18:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 22877,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22861,
                                "src": "13631:6:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 22878,
                                  "name": "Errors",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17239,
                                  "src": "13639:6:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                    "typeString": "type(library Errors)"
                                  }
                                },
                                "id": 22879,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "SDT_BURN_EXCEEDS_BALANCE",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17227,
                                "src": "13639:31:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 22875,
                                "name": "oldAccountBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22867,
                                "src": "13609:17:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 22876,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4374,
                              "src": "13609:21:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                              }
                            },
                            "id": 22880,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13609:62:91",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13588:83:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 22882,
                        "nodeType": "ExpressionStatement",
                        "src": "13588:83:91"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 22891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 22885,
                                "name": "_incentivesController",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22016,
                                "src": "13690:21:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                  "typeString": "contract IAaveIncentivesController"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                  "typeString": "contract IAaveIncentivesController"
                                }
                              ],
                              "id": 22884,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13682:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 22883,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "13682:7:91",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 22886,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13682:30:91",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 22889,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13724:1:91",
                                "subdenomination": null,
                                "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": 22888,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13716:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 22887,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "13716:7:91",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 22890,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13716:10:91",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "13682:44:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 22901,
                        "nodeType": "IfStatement",
                        "src": "13678:143:91",
                        "trueBody": {
                          "id": 22900,
                          "nodeType": "Block",
                          "src": "13728:93:91",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 22895,
                                    "name": "account",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22859,
                                    "src": "13771:7:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22896,
                                    "name": "oldTotalSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22863,
                                    "src": "13780:14:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 22897,
                                    "name": "oldAccountBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22867,
                                    "src": "13796:17:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 22892,
                                    "name": "_incentivesController",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22016,
                                    "src": "13736:21:91",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                      "typeString": "contract IAaveIncentivesController"
                                    }
                                  },
                                  "id": 22894,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "handleAction",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5747,
                                  "src": "13736:34:91",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256) external"
                                  }
                                },
                                "id": 22898,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13736:78:91",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 22899,
                              "nodeType": "ExpressionStatement",
                              "src": "13736:78:91"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 22857,
                    "nodeType": "StructuredDocumentation",
                    "src": "13209:221:91",
                    "text": " @dev Burns stable debt tokens of an user\n @param account The user getting his debt burned\n @param amount The amount being burned\n @param oldTotalSupply The total supply before the burning event*"
                  },
                  "id": 22903,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 22864,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22859,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22903,
                        "src": "13453:15:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22858,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13453:7:91",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22861,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22903,
                        "src": "13474:14:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22860,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13474:7:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22863,
                        "mutability": "mutable",
                        "name": "oldTotalSupply",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22903,
                        "src": "13494:22:91",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22862,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13494:7:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13447:73:91"
                  },
                  "returnParameters": {
                    "id": 22865,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13530:0:91"
                  },
                  "scope": 22904,
                  "src": "13433:392:91",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 22905,
              "src": "679:13148:91"
            }
          ],
          "src": "37:13791:91"
        },
        "id": 91
      },
      "contracts/protocol/tokenization/StaticAToken.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/tokenization/StaticAToken.sol",
          "exportedSymbols": {
            "StaticAToken": [
              23748
            ]
          },
          "id": 23749,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 22906,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:92"
            },
            {
              "id": 22907,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "61:33:92"
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPool.sol",
              "file": "../../interfaces/ILendingPool.sol",
              "id": 22909,
              "nodeType": "ImportDirective",
              "scope": 23749,
              "sourceUnit": 6467,
              "src": "96:63:92",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 22908,
                    "name": "ILendingPool",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "104:12:92",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
              "file": "../../dependencies/openzeppelin/contracts/IERC20.sol",
              "id": 22911,
              "nodeType": "ImportDirective",
              "scope": 23749,
              "sourceUnit": 4013,
              "src": "160:76:92",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 22910,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "168:6:92",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IAToken.sol",
              "file": "../../interfaces/IAToken.sol",
              "id": 22913,
              "nodeType": "ImportDirective",
              "scope": 23749,
              "sourceUnit": 5668,
              "src": "237:53:92",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 22912,
                    "name": "IAToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "245:7:92",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/ERC20.sol",
              "file": "../../dependencies/openzeppelin/contracts/ERC20.sol",
              "id": 22915,
              "nodeType": "ImportDirective",
              "scope": 23749,
              "sourceUnit": 3935,
              "src": "291:74:92",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 22914,
                    "name": "ERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "299:5:92",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeERC20.sol",
              "file": "../../dependencies/openzeppelin/contracts/SafeERC20.sol",
              "id": 22917,
              "nodeType": "ImportDirective",
              "scope": 23749,
              "sourceUnit": 4301,
              "src": "366:82:92",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 22916,
                    "name": "SafeERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "374:9:92",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/math/WadRayMath.sol",
              "file": "../../protocol/libraries/math/WadRayMath.sol",
              "id": 22919,
              "nodeType": "ImportDirective",
              "scope": 23749,
              "sourceUnit": 20494,
              "src": "449:72:92",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 22918,
                    "name": "WadRayMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "457:10:92",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 22921,
                    "name": "ERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3934,
                    "src": "826:5:92",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20_$3934",
                      "typeString": "contract ERC20"
                    }
                  },
                  "id": 22922,
                  "nodeType": "InheritanceSpecifier",
                  "src": "826:5:92"
                }
              ],
              "contractDependencies": [
                3427,
                3934,
                4012
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 22920,
                "nodeType": "StructuredDocumentation",
                "src": "523:277:92",
                "text": " @title StaticAToken\n @dev Wrapper token that allows to deposit tokens on the Aave protocol and receive\n a token which balance doesn't increase automatically, but uses an ever-increasing exchange rate\n - Only supporting deposits and withdrawals\n @author Aave*"
              },
              "fullyImplemented": true,
              "id": 23748,
              "linearizedBaseContracts": [
                23748,
                3934,
                4012,
                3427
              ],
              "name": "StaticAToken",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 22925,
                  "libraryName": {
                    "contractScope": null,
                    "id": 22923,
                    "name": "SafeERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4300,
                    "src": "842:9:92",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeERC20_$4300",
                      "typeString": "library SafeERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "836:27:92",
                  "typeName": {
                    "contractScope": null,
                    "id": 22924,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4012,
                    "src": "856:6:92",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$4012",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "id": 22928,
                  "libraryName": {
                    "contractScope": null,
                    "id": 22926,
                    "name": "WadRayMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20493,
                    "src": "872:10:92",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_WadRayMath_$20493",
                      "typeString": "library WadRayMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "866:29:92",
                  "typeName": {
                    "id": 22927,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "887:7:92",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "canonicalName": "StaticAToken.SignatureParams",
                  "id": 22935,
                  "members": [
                    {
                      "constant": false,
                      "id": 22930,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 22935,
                      "src": "928:7:92",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 22929,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "928:5:92",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22932,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 22935,
                      "src": "941:9:92",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 22931,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "941:7:92",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 22934,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 22935,
                      "src": "956:9:92",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 22933,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "956:7:92",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "SignatureParams",
                  "nodeType": "StructDefinition",
                  "scope": 23748,
                  "src": "899:71:92",
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "78160376",
                  "id": 22941,
                  "mutability": "constant",
                  "name": "EIP712_REVISION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23748,
                  "src": "974:50:92",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 22936,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "974:5:92",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 22939,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1020:3:92",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                          "typeString": "literal_string \"1\""
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                          "typeString": "literal_string \"1\""
                        }
                      ],
                      "id": 22938,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1014:5:92",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                        "typeString": "type(bytes storage pointer)"
                      },
                      "typeName": {
                        "id": 22937,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1014:5:92",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 22940,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1014:10:92",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 22946,
                  "mutability": "constant",
                  "name": "EIP712_DOMAIN",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23748,
                  "src": "1028:141:92",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 22942,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1028:7:92",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                        "id": 22944,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1084:84:92",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                          "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                        },
                        "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                          "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                        }
                      ],
                      "id": 22943,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1074:9:92",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 22945,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1074:95:92",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "functionSelector": "30adf81f",
                  "id": 22951,
                  "mutability": "constant",
                  "name": "PERMIT_TYPEHASH",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23748,
                  "src": "1173:141:92",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 22947,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1173:7:92",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "5065726d69742861646472657373206f776e65722c61646472657373207370656e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529",
                        "id": 22949,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1229:84:92",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9",
                          "typeString": "literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""
                        },
                        "value": "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9",
                          "typeString": "literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""
                        }
                      ],
                      "id": 22948,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1219:9:92",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 22950,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1219:95:92",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "63210537",
                  "id": 22956,
                  "mutability": "constant",
                  "name": "METADEPOSIT_TYPEHASH",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23748,
                  "src": "1318:205:92",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 22952,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1318:7:92",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "4465706f7369742861646472657373206465706f7369746f722c6164647265737320726563697069656e742c75696e743235362076616c75652c75696e74313620726566657272616c436f64652c626f6f6c2066726f6d556e6465726c79696e672c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529",
                        "id": 22954,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1386:131:92",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4dab0a5e832f103ac80c9c3e51e5742f8a24aa0a3d941fe91c64e1e3db50c743",
                          "typeString": "literal_string \"Deposit(address depositor,address recipient,uint256 value,uint16 referralCode,bool fromUnderlying,uint256 nonce,uint256 deadline)\""
                        },
                        "value": "Deposit(address depositor,address recipient,uint256 value,uint16 referralCode,bool fromUnderlying,uint256 nonce,uint256 deadline)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_4dab0a5e832f103ac80c9c3e51e5742f8a24aa0a3d941fe91c64e1e3db50c743",
                          "typeString": "literal_string \"Deposit(address depositor,address recipient,uint256 value,uint16 referralCode,bool fromUnderlying,uint256 nonce,uint256 deadline)\""
                        }
                      ],
                      "id": 22953,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1369:9:92",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 22955,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1369:154:92",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "8d948415",
                  "id": 22961,
                  "mutability": "constant",
                  "name": "METAWITHDRAWAL_TYPEHASH",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23748,
                  "src": "1527:215:92",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 22957,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1527:7:92",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "57697468647261772861646472657373206f776e65722c6164647265737320726563697069656e742c75696e7432353620737461746963416d6f756e742c2075696e743235362064796e616d6963416d6f756e742c20626f6f6c20746f556e6465726c79696e672c2075696e74323536206e6f6e63652c75696e7432353620646561646c696e6529",
                        "id": 22959,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1598:138:92",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_10ab8743506cfd76acaa406d0788f01934bd03f14eadabf392640e43b01f976c",
                          "typeString": "literal_string \"Withdraw(address owner,address recipient,uint256 staticAmount, uint256 dynamicAmount, bool toUnderlying, uint256 nonce,uint256 deadline)\""
                        },
                        "value": "Withdraw(address owner,address recipient,uint256 staticAmount, uint256 dynamicAmount, bool toUnderlying, uint256 nonce,uint256 deadline)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_10ab8743506cfd76acaa406d0788f01934bd03f14eadabf392640e43b01f976c",
                          "typeString": "literal_string \"Withdraw(address owner,address recipient,uint256 staticAmount, uint256 dynamicAmount, bool toUnderlying, uint256 nonce,uint256 deadline)\""
                        }
                      ],
                      "id": 22958,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1581:9:92",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 22960,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1581:161:92",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "b4dcfc77",
                  "id": 22963,
                  "mutability": "immutable",
                  "name": "LENDING_POOL",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23748,
                  "src": "1747:42:92",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                    "typeString": "contract ILendingPool"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 22962,
                    "name": "ILendingPool",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6466,
                    "src": "1747:12:92",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                      "typeString": "contract ILendingPool"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "51c0e061",
                  "id": 22965,
                  "mutability": "immutable",
                  "name": "ATOKEN",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23748,
                  "src": "1793:30:92",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$4012",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 22964,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4012,
                    "src": "1793:6:92",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$4012",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "4800d97f",
                  "id": 22967,
                  "mutability": "immutable",
                  "name": "ASSET",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23748,
                  "src": "1827:29:92",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$4012",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 22966,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4012,
                    "src": "1827:6:92",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$4012",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 22968,
                    "nodeType": "StructuredDocumentation",
                    "src": "1861:196:92",
                    "text": "@dev owner => next valid nonce to submit with permit(), metaDeposit() and metaWithdraw()\n We choose to have sequentiality on them for each user to avoid potentially dangerous/bad UX cases"
                  },
                  "functionSelector": "b9844d8d",
                  "id": 22972,
                  "mutability": "mutable",
                  "name": "_nonces",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 23748,
                  "src": "2060:42:92",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 22971,
                    "keyType": {
                      "id": 22969,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2068:7:92",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2060:27:92",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 22970,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2079:7:92",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 23025,
                    "nodeType": "Block",
                    "src": "2298:247:92",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22989,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 22987,
                            "name": "LENDING_POOL",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22963,
                            "src": "2304:12:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPool_$6466",
                              "typeString": "contract ILendingPool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 22988,
                            "name": "lendingPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22974,
                            "src": "2319:11:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPool_$6466",
                              "typeString": "contract ILendingPool"
                            }
                          },
                          "src": "2304:26:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "id": 22990,
                        "nodeType": "ExpressionStatement",
                        "src": "2304:26:92"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 22995,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 22991,
                            "name": "ATOKEN",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22965,
                            "src": "2336:6:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$4012",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 22993,
                                "name": "aToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22976,
                                "src": "2352:6:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 22992,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4012,
                              "src": "2345:6:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 22994,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2345:14:92",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$4012",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "2336:23:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$4012",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 22996,
                        "nodeType": "ExpressionStatement",
                        "src": "2336:23:92"
                      },
                      {
                        "assignments": [
                          22998
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22998,
                            "mutability": "mutable",
                            "name": "underlyingAsset",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 23025,
                            "src": "2366:22:92",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$4012",
                              "typeString": "contract IERC20"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 22997,
                              "name": "IERC20",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4012,
                              "src": "2366:6:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 23006,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 23001,
                                      "name": "aToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22976,
                                      "src": "2406:6:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 23000,
                                    "name": "IAToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5667,
                                    "src": "2398:7:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IAToken_$5667_$",
                                      "typeString": "type(contract IAToken)"
                                    }
                                  },
                                  "id": 23002,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2398:15:92",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IAToken_$5667",
                                    "typeString": "contract IAToken"
                                  }
                                },
                                "id": 23003,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "UNDERLYING_ASSET_ADDRESS",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5666,
                                "src": "2398:40:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              "id": 23004,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2398:42:92",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 22999,
                            "name": "IERC20",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4012,
                            "src": "2391:6:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                              "typeString": "type(contract IERC20)"
                            }
                          },
                          "id": 23005,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2391:50:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$4012",
                            "typeString": "contract IERC20"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2366:75:92"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 23007,
                            "name": "ASSET",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22967,
                            "src": "2447:5:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$4012",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 23008,
                            "name": "underlyingAsset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22998,
                            "src": "2455:15:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$4012",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "2447:23:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$4012",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 23010,
                        "nodeType": "ExpressionStatement",
                        "src": "2447:23:92"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 23016,
                                  "name": "lendingPool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22974,
                                  "src": "2508:11:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                ],
                                "id": 23015,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2500:7:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 23014,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2500:7:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 23017,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2500:20:92",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 23020,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2527:7:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 23019,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2527:7:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    }
                                  ],
                                  "id": 23018,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "2522:4:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 23021,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2522:13:92",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_uint256",
                                  "typeString": "type(uint256)"
                                }
                              },
                              "id": 23022,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "max",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2522:17:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 23011,
                              "name": "underlyingAsset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22998,
                              "src": "2476:15:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 23013,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3981,
                            "src": "2476:23:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 23023,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2476:64:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 23024,
                        "nodeType": "ExpressionStatement",
                        "src": "2476:64:92"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 23026,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 22983,
                          "name": "wrappedTokenName",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22978,
                          "src": "2260:16:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 22984,
                          "name": "wrappedTokenSymbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22980,
                          "src": "2278:18:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        }
                      ],
                      "id": 22985,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 22982,
                        "name": "ERC20",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3934,
                        "src": "2254:5:92",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC20_$3934_$",
                          "typeString": "type(contract ERC20)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2254:43:92"
                    }
                  ],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 22981,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22974,
                        "mutability": "mutable",
                        "name": "lendingPool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23026,
                        "src": "2124:24:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPool_$6466",
                          "typeString": "contract ILendingPool"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 22973,
                          "name": "ILendingPool",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6466,
                          "src": "2124:12:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22976,
                        "mutability": "mutable",
                        "name": "aToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23026,
                        "src": "2154:14:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22975,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2154:7:92",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22978,
                        "mutability": "mutable",
                        "name": "wrappedTokenName",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23026,
                        "src": "2174:30:92",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 22977,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2174:6:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22980,
                        "mutability": "mutable",
                        "name": "wrappedTokenSymbol",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23026,
                        "src": "2210:32:92",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 22979,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2210:6:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2118:128:92"
                  },
                  "returnParameters": {
                    "id": 22986,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2298:0:92"
                  },
                  "scope": 23748,
                  "src": "2107:438:92",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 23049,
                    "nodeType": "Block",
                    "src": "3392:87:92",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 23041,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3414:3:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 23042,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3414:10:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23043,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23029,
                              "src": "3426:9:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23044,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23031,
                              "src": "3437:6:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23045,
                              "name": "referralCode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23033,
                              "src": "3445:12:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23046,
                              "name": "fromUnderlying",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23035,
                              "src": "3459:14:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 23040,
                            "name": "_deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23574,
                            "src": "3405:8:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint16_$_t_bool_$returns$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint16,bool) returns (uint256)"
                            }
                          },
                          "id": 23047,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3405:69:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 23039,
                        "id": 23048,
                        "nodeType": "Return",
                        "src": "3398:76:92"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 23027,
                    "nodeType": "StructuredDocumentation",
                    "src": "2549:699:92",
                    "text": " @dev Deposits `ASSET` in the Aave protocol and mints static aTokens to msg.sender\n @param recipient The address that will receive the static aTokens\n @param amount The amount of underlying `ASSET` to deposit (e.g. deposit of 100 USDC)\n @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   0 if the action is executed directly by the user, without any middle-man\n @param fromUnderlying bool\n - `true` if the msg.sender comes with underlying tokens (e.g. USDC)\n - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\n @return uint256 The amount of StaticAToken minted, static balance*"
                  },
                  "functionSelector": "2f2cab87",
                  "id": 23050,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 23036,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23029,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23050,
                        "src": "3273:17:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23028,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3273:7:92",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23031,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23050,
                        "src": "3296:14:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23030,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3296:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23033,
                        "mutability": "mutable",
                        "name": "referralCode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23050,
                        "src": "3316:19:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 23032,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "3316:6:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23035,
                        "mutability": "mutable",
                        "name": "fromUnderlying",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23050,
                        "src": "3341:19:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 23034,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3341:4:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3267:97:92"
                  },
                  "returnParameters": {
                    "id": 23039,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23038,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23050,
                        "src": "3383:7:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23037,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3383:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3382:9:92"
                  },
                  "scope": 23748,
                  "src": "3251:228:92",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 23073,
                    "nodeType": "Block",
                    "src": "4217:75:92",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 23065,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4240:3:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 23066,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4240:10:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23067,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23053,
                              "src": "4252:9:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23068,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23055,
                              "src": "4263:6:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 23069,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4271:1:92",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 23070,
                              "name": "toUnderlying",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23057,
                              "src": "4274:12:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 23064,
                            "name": "_withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23717,
                            "src": "4230:9:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256,bool) returns (uint256,uint256)"
                            }
                          },
                          "id": 23071,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4230:57:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 23063,
                        "id": 23072,
                        "nodeType": "Return",
                        "src": "4223:64:92"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 23051,
                    "nodeType": "StructuredDocumentation",
                    "src": "3483:607:92",
                    "text": " @dev Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\n @param recipient The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\n @param amount The amount to withdraw, in static balance of StaticAToken\n @param toUnderlying bool\n - `true` for the recipient to get underlying tokens (e.g. USDC)\n - `false` for the recipient to get aTokens (e.g. aUSDC)\n @return amountToBurn: StaticATokens burnt, static balance\n @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance*"
                  },
                  "functionSelector": "ead5d359",
                  "id": 23074,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 23058,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23053,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23074,
                        "src": "4116:17:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23052,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4116:7:92",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23055,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23074,
                        "src": "4139:14:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23054,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4139:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23057,
                        "mutability": "mutable",
                        "name": "toUnderlying",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23074,
                        "src": "4159:17:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 23056,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4159:4:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4110:70:92"
                  },
                  "returnParameters": {
                    "id": 23063,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23060,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23074,
                        "src": "4199:7:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23059,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4199:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23062,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23074,
                        "src": "4208:7:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23061,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4208:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4198:18:92"
                  },
                  "scope": 23748,
                  "src": "4093:199:92",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 23097,
                    "nodeType": "Block",
                    "src": "5055:75:92",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 23089,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "5078:3:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 23090,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5078:10:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23091,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23077,
                              "src": "5090:9:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 23092,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5101:1:92",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 23093,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23079,
                              "src": "5104:6:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23094,
                              "name": "toUnderlying",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23081,
                              "src": "5112:12:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 23088,
                            "name": "_withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23717,
                            "src": "5068:9:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256,bool) returns (uint256,uint256)"
                            }
                          },
                          "id": 23095,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5068:57:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 23087,
                        "id": 23096,
                        "nodeType": "Return",
                        "src": "5061:64:92"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 23075,
                    "nodeType": "StructuredDocumentation",
                    "src": "4296:619:92",
                    "text": " @dev Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\n @param recipient The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\n @param amount The amount to withdraw, in dynamic balance of aToken/underlying asset\n @param toUnderlying bool\n - `true` for the recipient to get underlying tokens (e.g. USDC)\n - `false` for the recipient to get aTokens (e.g. aUSDC)\n @return amountToBurn: StaticATokens burnt, static balance\n @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance*"
                  },
                  "functionSelector": "288587ce",
                  "id": 23098,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawDynamicAmount",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 23082,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23077,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23098,
                        "src": "4954:17:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23076,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4954:7:92",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23079,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23098,
                        "src": "4977:14:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23078,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4977:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23081,
                        "mutability": "mutable",
                        "name": "toUnderlying",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23098,
                        "src": "4997:17:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 23080,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4997:4:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4948:70:92"
                  },
                  "returnParameters": {
                    "id": 23087,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23084,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23098,
                        "src": "5037:7:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23083,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5037:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23086,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23098,
                        "src": "5046:7:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23085,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5046:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5036:18:92"
                  },
                  "scope": 23748,
                  "src": "4918:212:92",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 23192,
                    "nodeType": "Block",
                    "src": "5812:599:92",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 23124,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 23119,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23101,
                                "src": "5826:5:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 23122,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5843:1:92",
                                    "subdenomination": null,
                                    "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": 23121,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5835:7:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 23120,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5835:7:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 23123,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5835:10:92",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "5826:19:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e56414c49445f4f574e4552",
                              "id": 23125,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5847:15:92",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a30e2b4f22d955e30086ae3aef0adfd87eec9d0d3f055d6aa9af61f522dda886",
                                "typeString": "literal_string \"INVALID_OWNER\""
                              },
                              "value": "INVALID_OWNER"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a30e2b4f22d955e30086ae3aef0adfd87eec9d0d3f055d6aa9af61f522dda886",
                                "typeString": "literal_string \"INVALID_OWNER\""
                              }
                            ],
                            "id": 23118,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5818:7:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23126,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5818:45:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23127,
                        "nodeType": "ExpressionStatement",
                        "src": "5818:45:92"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 23132,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 23129,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "5908:5:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 23130,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5908:15:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 23131,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23107,
                                "src": "5927:8:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5908:27:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e56414c49445f45585049524154494f4e",
                              "id": 23133,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5937:20:92",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9fe3e5cf49f72bf8a6a8455c3e990f8479f5dfa09ac808886f330a39b0029c2d",
                                "typeString": "literal_string \"INVALID_EXPIRATION\""
                              },
                              "value": "INVALID_EXPIRATION"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9fe3e5cf49f72bf8a6a8455c3e990f8479f5dfa09ac808886f330a39b0029c2d",
                                "typeString": "literal_string \"INVALID_EXPIRATION\""
                              }
                            ],
                            "id": 23128,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5900:7:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23134,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5900:58:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23135,
                        "nodeType": "ExpressionStatement",
                        "src": "5900:58:92"
                      },
                      {
                        "assignments": [
                          23137
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23137,
                            "mutability": "mutable",
                            "name": "currentValidNonce",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 23192,
                            "src": "5964:25:92",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 23136,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5964:7:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 23141,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 23138,
                            "name": "_nonces",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22972,
                            "src": "5992:7:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 23140,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 23139,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23101,
                            "src": "6000:5:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5992:14:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5964:42:92"
                      },
                      {
                        "assignments": [
                          23143
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23143,
                            "mutability": "mutable",
                            "name": "digest",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 23192,
                            "src": "6012:14:92",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 23142,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "6012:7:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 23164,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "1901",
                                  "id": 23147,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6082:10:92",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string \"\u0019\u0001\""
                                  },
                                  "value": "\u0019\u0001"
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 23149,
                                      "name": "chainId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23115,
                                      "src": "6123:7:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 23148,
                                    "name": "getDomainSeparator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23494,
                                    "src": "6104:18:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bytes32_$",
                                      "typeString": "function (uint256) view returns (bytes32)"
                                    }
                                  },
                                  "id": 23150,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6104:27:92",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 23154,
                                          "name": "PERMIT_TYPEHASH",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22951,
                                          "src": "6164:15:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 23155,
                                          "name": "owner",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23101,
                                          "src": "6181:5:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 23156,
                                          "name": "spender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23103,
                                          "src": "6188:7:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 23157,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23105,
                                          "src": "6197:5:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 23158,
                                          "name": "currentValidNonce",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23137,
                                          "src": "6204:17:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 23159,
                                          "name": "deadline",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23107,
                                          "src": "6223:8:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 23152,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "6153:3:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 23153,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encode",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "6153:10:92",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 23160,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6153:79:92",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 23151,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "6143:9:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 23161,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6143:90:92",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string \"\u0019\u0001\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 23145,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "6054:3:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 23146,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6054:16:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 23162,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6054:189:92",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 23144,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "6035:9:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 23163,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6035:216:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6012:239:92"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 23173,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 23166,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23101,
                                "src": "6265:5:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 23168,
                                    "name": "digest",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23143,
                                    "src": "6284:6:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23169,
                                    "name": "v",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23109,
                                    "src": "6292:1:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23170,
                                    "name": "r",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23111,
                                    "src": "6295:1:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23171,
                                    "name": "s",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23113,
                                    "src": "6298:1:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 23167,
                                  "name": "ecrecover",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -6,
                                  "src": "6274:9:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                                    "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                                  }
                                },
                                "id": 23172,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6274:26:92",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "6265:35:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e56414c49445f5349474e4154555245",
                              "id": 23174,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6302:19:92",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5e2e9eaa2d734966dea0900deacd15b20129fbce05255d633a3ce5ebca181b88",
                                "typeString": "literal_string \"INVALID_SIGNATURE\""
                              },
                              "value": "INVALID_SIGNATURE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5e2e9eaa2d734966dea0900deacd15b20129fbce05255d633a3ce5ebca181b88",
                                "typeString": "literal_string \"INVALID_SIGNATURE\""
                              }
                            ],
                            "id": 23165,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6257:7:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23175,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6257:65:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23176,
                        "nodeType": "ExpressionStatement",
                        "src": "6257:65:92"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23184,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 23177,
                              "name": "_nonces",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22972,
                              "src": "6328:7:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 23179,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 23178,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23101,
                              "src": "6336:5:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6328:14:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 23182,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6367:1:92",
                                "subdenomination": null,
                                "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"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 23180,
                                "name": "currentValidNonce",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23137,
                                "src": "6345:17:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 23181,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4329,
                              "src": "6345:21:92",
                              "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": 23183,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6345:24:92",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6328:41:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 23185,
                        "nodeType": "ExpressionStatement",
                        "src": "6328:41:92"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23187,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23101,
                              "src": "6384:5:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23188,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23103,
                              "src": "6391:7:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23189,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23105,
                              "src": "6400:5:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 23186,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3911,
                            "src": "6375:8:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 23190,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6375:31:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23191,
                        "nodeType": "ExpressionStatement",
                        "src": "6375:31:92"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 23099,
                    "nodeType": "StructuredDocumentation",
                    "src": "5134:501:92",
                    "text": " @dev Implements the permit function as for\n https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n @param owner The owner of the funds\n @param spender The spender\n @param value The amount\n @param deadline The deadline timestamp, type(uint256).max for max deadline\n @param v Signature param\n @param s Signature param\n @param r Signature param\n @param chainId Passing the chainId in order to be fork-compatible"
                  },
                  "functionSelector": "8a127bfd",
                  "id": 23193,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "permit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 23116,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23101,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23193,
                        "src": "5659:13:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23100,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5659:7:92",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23103,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23193,
                        "src": "5678:15:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23102,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5678:7:92",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23105,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23193,
                        "src": "5699:13:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23104,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5699:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23107,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23193,
                        "src": "5718:16:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23106,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5718:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23109,
                        "mutability": "mutable",
                        "name": "v",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23193,
                        "src": "5740:7:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 23108,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "5740:5:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23111,
                        "mutability": "mutable",
                        "name": "r",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23193,
                        "src": "5753:9:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 23110,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5753:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23113,
                        "mutability": "mutable",
                        "name": "s",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23193,
                        "src": "5768:9:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 23112,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5768:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23115,
                        "mutability": "mutable",
                        "name": "chainId",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23193,
                        "src": "5783:15:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23114,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5783:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5653:149:92"
                  },
                  "returnParameters": {
                    "id": 23117,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5812:0:92"
                  },
                  "scope": 23748,
                  "src": "5638:773:92",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 23296,
                    "nodeType": "Block",
                    "src": "7710:894:92",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 23221,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 23216,
                                "name": "depositor",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23196,
                                "src": "7724:9:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 23219,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7745:1:92",
                                    "subdenomination": null,
                                    "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": 23218,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7737:7:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 23217,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7737:7:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 23220,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7737:10:92",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "7724:23:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e56414c49445f4445504f5349544f52",
                              "id": 23222,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7749:19:92",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5b7c396945d7c8d16c231f8d6ab4683ac1d892bfcde3eb064dbb9867d9684388",
                                "typeString": "literal_string \"INVALID_DEPOSITOR\""
                              },
                              "value": "INVALID_DEPOSITOR"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5b7c396945d7c8d16c231f8d6ab4683ac1d892bfcde3eb064dbb9867d9684388",
                                "typeString": "literal_string \"INVALID_DEPOSITOR\""
                              }
                            ],
                            "id": 23215,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7716:7:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7716:53:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23224,
                        "nodeType": "ExpressionStatement",
                        "src": "7716:53:92"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 23229,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 23226,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "7814:5:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 23227,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "7814:15:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 23228,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23206,
                                "src": "7833:8:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7814:27:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e56414c49445f45585049524154494f4e",
                              "id": 23230,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7843:20:92",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9fe3e5cf49f72bf8a6a8455c3e990f8479f5dfa09ac808886f330a39b0029c2d",
                                "typeString": "literal_string \"INVALID_EXPIRATION\""
                              },
                              "value": "INVALID_EXPIRATION"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9fe3e5cf49f72bf8a6a8455c3e990f8479f5dfa09ac808886f330a39b0029c2d",
                                "typeString": "literal_string \"INVALID_EXPIRATION\""
                              }
                            ],
                            "id": 23225,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7806:7:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23231,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7806:58:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23232,
                        "nodeType": "ExpressionStatement",
                        "src": "7806:58:92"
                      },
                      {
                        "assignments": [
                          23234
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23234,
                            "mutability": "mutable",
                            "name": "currentValidNonce",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 23296,
                            "src": "7870:25:92",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 23233,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7870:7:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 23238,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 23235,
                            "name": "_nonces",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22972,
                            "src": "7898:7:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 23237,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 23236,
                            "name": "depositor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23196,
                            "src": "7906:9:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7898:18:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7870:46:92"
                      },
                      {
                        "assignments": [
                          23240
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23240,
                            "mutability": "mutable",
                            "name": "digest",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 23296,
                            "src": "7922:14:92",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 23239,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "7922:7:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 23263,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "1901",
                                  "id": 23244,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7992:10:92",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string \"\u0019\u0001\""
                                  },
                                  "value": "\u0019\u0001"
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 23246,
                                      "name": "chainId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23210,
                                      "src": "8033:7:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 23245,
                                    "name": "getDomainSeparator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23494,
                                    "src": "8014:18:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bytes32_$",
                                      "typeString": "function (uint256) view returns (bytes32)"
                                    }
                                  },
                                  "id": 23247,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8014:27:92",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 23251,
                                          "name": "METADEPOSIT_TYPEHASH",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22956,
                                          "src": "8102:20:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 23252,
                                          "name": "depositor",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23196,
                                          "src": "8138:9:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 23253,
                                          "name": "recipient",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23198,
                                          "src": "8163:9:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 23254,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23200,
                                          "src": "8188:5:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 23255,
                                          "name": "referralCode",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23202,
                                          "src": "8209:12:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 23256,
                                          "name": "fromUnderlying",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23204,
                                          "src": "8237:14:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 23257,
                                          "name": "currentValidNonce",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23234,
                                          "src": "8267:17:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 23258,
                                          "name": "deadline",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23206,
                                          "src": "8300:8:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          },
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 23249,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "8076:3:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 23250,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encode",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "8076:10:92",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 23259,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8076:246:92",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 23248,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "8053:9:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 23260,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8053:281:92",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string \"\u0019\u0001\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 23242,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "7964:3:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 23243,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "7964:16:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 23261,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7964:380:92",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 23241,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "7945:9:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 23262,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7945:407:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7922:430:92"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 23275,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 23265,
                                "name": "depositor",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23196,
                                "src": "8373:9:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 23267,
                                    "name": "digest",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23240,
                                    "src": "8396:6:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 23268,
                                      "name": "sigParams",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23208,
                                      "src": "8404:9:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SignatureParams_$22935_calldata_ptr",
                                        "typeString": "struct StaticAToken.SignatureParams calldata"
                                      }
                                    },
                                    "id": 23269,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "v",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22930,
                                    "src": "8404:11:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 23270,
                                      "name": "sigParams",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23208,
                                      "src": "8417:9:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SignatureParams_$22935_calldata_ptr",
                                        "typeString": "struct StaticAToken.SignatureParams calldata"
                                      }
                                    },
                                    "id": 23271,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "r",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22932,
                                    "src": "8417:11:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 23272,
                                      "name": "sigParams",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23208,
                                      "src": "8430:9:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SignatureParams_$22935_calldata_ptr",
                                        "typeString": "struct StaticAToken.SignatureParams calldata"
                                      }
                                    },
                                    "id": 23273,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "s",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22934,
                                    "src": "8430:11:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 23266,
                                  "name": "ecrecover",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -6,
                                  "src": "8386:9:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                                    "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                                  }
                                },
                                "id": 23274,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8386:56:92",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "8373:69:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e56414c49445f5349474e4154555245",
                              "id": 23276,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8450:19:92",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5e2e9eaa2d734966dea0900deacd15b20129fbce05255d633a3ce5ebca181b88",
                                "typeString": "literal_string \"INVALID_SIGNATURE\""
                              },
                              "value": "INVALID_SIGNATURE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5e2e9eaa2d734966dea0900deacd15b20129fbce05255d633a3ce5ebca181b88",
                                "typeString": "literal_string \"INVALID_SIGNATURE\""
                              }
                            ],
                            "id": 23264,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8358:7:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23277,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8358:117:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23278,
                        "nodeType": "ExpressionStatement",
                        "src": "8358:117:92"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23286,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 23279,
                              "name": "_nonces",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22972,
                              "src": "8481:7:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 23281,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 23280,
                              "name": "depositor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23196,
                              "src": "8489:9:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8481:18:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 23284,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8524:1:92",
                                "subdenomination": null,
                                "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"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 23282,
                                "name": "currentValidNonce",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23234,
                                "src": "8502:17:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 23283,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4329,
                              "src": "8502:21:92",
                              "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": 23285,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8502:24:92",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8481:45:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 23287,
                        "nodeType": "ExpressionStatement",
                        "src": "8481:45:92"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23289,
                              "name": "depositor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23196,
                              "src": "8541:9:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23290,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23198,
                              "src": "8552:9:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23291,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23200,
                              "src": "8563:5:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23292,
                              "name": "referralCode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23202,
                              "src": "8570:12:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23293,
                              "name": "fromUnderlying",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23204,
                              "src": "8584:14:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 23288,
                            "name": "_deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23574,
                            "src": "8532:8:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint16_$_t_bool_$returns$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint16,bool) returns (uint256)"
                            }
                          },
                          "id": 23294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8532:67:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 23295,
                        "nodeType": "ExpressionStatement",
                        "src": "8532:67:92"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 23194,
                    "nodeType": "StructuredDocumentation",
                    "src": "6415:1042:92",
                    "text": " @dev Allows to deposit on Aave via meta-transaction\n https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n @param depositor Address from which the funds to deposit are going to be pulled\n @param recipient Address that will receive the staticATokens, in the average case, same as the `depositor`\n @param value The amount to deposit\n @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n   0 if the action is executed directly by the user, without any middle-man\n @param fromUnderlying bool\n - `true` if the msg.sender comes with underlying tokens (e.g. USDC)\n - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\n @param deadline The deadline timestamp, type(uint256).max for max deadline\n @param sigParams Signature params: v,r,s\n @param chainId Passing the chainId in order to be fork-compatible\n @return uint256 The amount of StaticAToken minted, static balance"
                  },
                  "functionSelector": "81abdab3",
                  "id": 23297,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "metaDeposit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 23211,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23196,
                        "mutability": "mutable",
                        "name": "depositor",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23297,
                        "src": "7486:17:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23195,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7486:7:92",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23198,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23297,
                        "src": "7509:17:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23197,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7509:7:92",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23200,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23297,
                        "src": "7532:13:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23199,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7532:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23202,
                        "mutability": "mutable",
                        "name": "referralCode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23297,
                        "src": "7551:19:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 23201,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "7551:6:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23204,
                        "mutability": "mutable",
                        "name": "fromUnderlying",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23297,
                        "src": "7576:19:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 23203,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7576:4:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23206,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23297,
                        "src": "7601:16:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23205,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7601:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23208,
                        "mutability": "mutable",
                        "name": "sigParams",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23297,
                        "src": "7623:34:92",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SignatureParams_$22935_calldata_ptr",
                          "typeString": "struct StaticAToken.SignatureParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 23207,
                          "name": "SignatureParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 22935,
                          "src": "7623:15:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SignatureParams_$22935_storage_ptr",
                            "typeString": "struct StaticAToken.SignatureParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23210,
                        "mutability": "mutable",
                        "name": "chainId",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23297,
                        "src": "7663:15:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23209,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7663:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7480:202:92"
                  },
                  "returnParameters": {
                    "id": 23214,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23213,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23297,
                        "src": "7701:7:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23212,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7701:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7700:9:92"
                  },
                  "scope": 23748,
                  "src": "7460:1144:92",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 23402,
                    "nodeType": "Block",
                    "src": "9895:875:92",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 23327,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 23322,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23300,
                                "src": "9909:5:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 23325,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9926:1:92",
                                    "subdenomination": null,
                                    "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": 23324,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9918:7:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 23323,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9918:7:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 23326,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9918:10:92",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "9909:19:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e56414c49445f4445504f5349544f52",
                              "id": 23328,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9930:19:92",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5b7c396945d7c8d16c231f8d6ab4683ac1d892bfcde3eb064dbb9867d9684388",
                                "typeString": "literal_string \"INVALID_DEPOSITOR\""
                              },
                              "value": "INVALID_DEPOSITOR"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5b7c396945d7c8d16c231f8d6ab4683ac1d892bfcde3eb064dbb9867d9684388",
                                "typeString": "literal_string \"INVALID_DEPOSITOR\""
                              }
                            ],
                            "id": 23321,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9901:7:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9901:49:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23330,
                        "nodeType": "ExpressionStatement",
                        "src": "9901:49:92"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 23335,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 23332,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "9995:5:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 23333,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "9995:15:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 23334,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23310,
                                "src": "10014:8:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9995:27:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e56414c49445f45585049524154494f4e",
                              "id": 23336,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10024:20:92",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9fe3e5cf49f72bf8a6a8455c3e990f8479f5dfa09ac808886f330a39b0029c2d",
                                "typeString": "literal_string \"INVALID_EXPIRATION\""
                              },
                              "value": "INVALID_EXPIRATION"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9fe3e5cf49f72bf8a6a8455c3e990f8479f5dfa09ac808886f330a39b0029c2d",
                                "typeString": "literal_string \"INVALID_EXPIRATION\""
                              }
                            ],
                            "id": 23331,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9987:7:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23337,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9987:58:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23338,
                        "nodeType": "ExpressionStatement",
                        "src": "9987:58:92"
                      },
                      {
                        "assignments": [
                          23340
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23340,
                            "mutability": "mutable",
                            "name": "currentValidNonce",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 23402,
                            "src": "10051:25:92",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 23339,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10051:7:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 23344,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 23341,
                            "name": "_nonces",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22972,
                            "src": "10079:7:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 23343,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 23342,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23300,
                            "src": "10087:5:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10079:14:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10051:42:92"
                      },
                      {
                        "assignments": [
                          23346
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23346,
                            "mutability": "mutable",
                            "name": "digest",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 23402,
                            "src": "10099:14:92",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 23345,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "10099:7:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 23369,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "1901",
                                  "id": 23350,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10169:10:92",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string \"\u0019\u0001\""
                                  },
                                  "value": "\u0019\u0001"
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 23352,
                                      "name": "chainId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23314,
                                      "src": "10210:7:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 23351,
                                    "name": "getDomainSeparator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23494,
                                    "src": "10191:18:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bytes32_$",
                                      "typeString": "function (uint256) view returns (bytes32)"
                                    }
                                  },
                                  "id": 23353,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10191:27:92",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 23357,
                                          "name": "METAWITHDRAWAL_TYPEHASH",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22961,
                                          "src": "10279:23:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 23358,
                                          "name": "owner",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23300,
                                          "src": "10318:5:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 23359,
                                          "name": "recipient",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23302,
                                          "src": "10339:9:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 23360,
                                          "name": "staticAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23304,
                                          "src": "10364:12:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 23361,
                                          "name": "dynamicAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23306,
                                          "src": "10392:13:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 23362,
                                          "name": "toUnderlying",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23308,
                                          "src": "10421:12:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 23363,
                                          "name": "currentValidNonce",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23340,
                                          "src": "10449:17:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 23364,
                                          "name": "deadline",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23310,
                                          "src": "10482:8:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 23355,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "10253:3:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 23356,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encode",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "10253:10:92",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 23365,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10253:251:92",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 23354,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "10230:9:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 23366,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10230:286:92",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string \"\u0019\u0001\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 23348,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "10141:3:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 23349,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "10141:16:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 23367,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10141:385:92",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 23347,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "10122:9:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 23368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10122:412:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10099:435:92"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 23381,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 23371,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23300,
                                "src": "10548:5:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 23373,
                                    "name": "digest",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23346,
                                    "src": "10567:6:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 23374,
                                      "name": "sigParams",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23312,
                                      "src": "10575:9:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SignatureParams_$22935_calldata_ptr",
                                        "typeString": "struct StaticAToken.SignatureParams calldata"
                                      }
                                    },
                                    "id": 23375,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "v",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22930,
                                    "src": "10575:11:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 23376,
                                      "name": "sigParams",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23312,
                                      "src": "10588:9:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SignatureParams_$22935_calldata_ptr",
                                        "typeString": "struct StaticAToken.SignatureParams calldata"
                                      }
                                    },
                                    "id": 23377,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "r",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22932,
                                    "src": "10588:11:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 23378,
                                      "name": "sigParams",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23312,
                                      "src": "10601:9:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SignatureParams_$22935_calldata_ptr",
                                        "typeString": "struct StaticAToken.SignatureParams calldata"
                                      }
                                    },
                                    "id": 23379,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "s",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22934,
                                    "src": "10601:11:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 23372,
                                  "name": "ecrecover",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -6,
                                  "src": "10557:9:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                                    "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                                  }
                                },
                                "id": 23380,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10557:56:92",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "10548:65:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e56414c49445f5349474e4154555245",
                              "id": 23382,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10615:19:92",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5e2e9eaa2d734966dea0900deacd15b20129fbce05255d633a3ce5ebca181b88",
                                "typeString": "literal_string \"INVALID_SIGNATURE\""
                              },
                              "value": "INVALID_SIGNATURE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5e2e9eaa2d734966dea0900deacd15b20129fbce05255d633a3ce5ebca181b88",
                                "typeString": "literal_string \"INVALID_SIGNATURE\""
                              }
                            ],
                            "id": 23370,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10540:7:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23383,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10540:95:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23384,
                        "nodeType": "ExpressionStatement",
                        "src": "10540:95:92"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23392,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 23385,
                              "name": "_nonces",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22972,
                              "src": "10641:7:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 23387,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 23386,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23300,
                              "src": "10649:5:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10641:14:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 23390,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10680:1:92",
                                "subdenomination": null,
                                "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"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 23388,
                                "name": "currentValidNonce",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23340,
                                "src": "10658:17:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 23389,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4329,
                              "src": "10658:21:92",
                              "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": 23391,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10658:24:92",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10641:41:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 23393,
                        "nodeType": "ExpressionStatement",
                        "src": "10641:41:92"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23395,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23300,
                              "src": "10705:5:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23396,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23302,
                              "src": "10712:9:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23397,
                              "name": "staticAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23304,
                              "src": "10723:12:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23398,
                              "name": "dynamicAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23306,
                              "src": "10737:13:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23399,
                              "name": "toUnderlying",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23308,
                              "src": "10752:12:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 23394,
                            "name": "_withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23717,
                            "src": "10695:9:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256,bool) returns (uint256,uint256)"
                            }
                          },
                          "id": 23400,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10695:70:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 23320,
                        "id": 23401,
                        "nodeType": "Return",
                        "src": "10688:77:92"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 23298,
                    "nodeType": "StructuredDocumentation",
                    "src": "8608:1021:92",
                    "text": " @dev Allows to withdraw from Aave via meta-transaction\n https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n @param owner Address owning the staticATokens\n @param recipient Address that will receive the underlying withdrawn from Aave\n @param staticAmount The amount of staticAToken to withdraw. If > 0, `dynamicAmount` needs to be 0\n @param dynamicAmount The amount of underlying/aToken to withdraw. If > 0, `staticAmount` needs to be 0\n @param toUnderlying bool\n - `true` for the recipient to get underlying tokens (e.g. USDC)\n - `false` for the recipient to get aTokens (e.g. aUSDC)\n @param deadline The deadline timestamp, type(uint256).max for max deadline\n @param sigParams Signature params: v,r,s\n @param chainId Passing the chainId in order to be fork-compatible\n @return amountToBurn: StaticATokens burnt, static balance\n @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance"
                  },
                  "functionSelector": "69af0ddb",
                  "id": 23403,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "metaWithdraw",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 23315,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23300,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23403,
                        "src": "9659:13:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23299,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9659:7:92",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23302,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23403,
                        "src": "9678:17:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23301,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9678:7:92",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23304,
                        "mutability": "mutable",
                        "name": "staticAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23403,
                        "src": "9701:20:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23303,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9701:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23306,
                        "mutability": "mutable",
                        "name": "dynamicAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23403,
                        "src": "9727:21:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23305,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9727:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23308,
                        "mutability": "mutable",
                        "name": "toUnderlying",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23403,
                        "src": "9754:17:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 23307,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9754:4:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23310,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23403,
                        "src": "9777:16:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23309,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9777:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23312,
                        "mutability": "mutable",
                        "name": "sigParams",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23403,
                        "src": "9799:34:92",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SignatureParams_$22935_calldata_ptr",
                          "typeString": "struct StaticAToken.SignatureParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 23311,
                          "name": "SignatureParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 22935,
                          "src": "9799:15:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SignatureParams_$22935_storage_ptr",
                            "typeString": "struct StaticAToken.SignatureParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23314,
                        "mutability": "mutable",
                        "name": "chainId",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23403,
                        "src": "9839:15:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23313,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9839:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9653:205:92"
                  },
                  "returnParameters": {
                    "id": 23320,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23317,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23403,
                        "src": "9877:7:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23316,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9877:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23319,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23403,
                        "src": "9886:7:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23318,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9886:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9876:18:92"
                  },
                  "scope": 23748,
                  "src": "9632:1138:92",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 23417,
                    "nodeType": "Block",
                    "src": "11047:59:92",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 23413,
                                  "name": "account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23406,
                                  "src": "11092:7:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 23412,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3534,
                                "src": "11082:9:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view returns (uint256)"
                                }
                              },
                              "id": 23414,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11082:18:92",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 23411,
                            "name": "staticToDynamicAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23433,
                            "src": "11060:21:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 23415,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11060:41:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 23410,
                        "id": 23416,
                        "nodeType": "Return",
                        "src": "11053:48:92"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 23404,
                    "nodeType": "StructuredDocumentation",
                    "src": "10774:195:92",
                    "text": " @dev Utility method to get the current aToken balance of an user, from his staticAToken balance\n @param account The address of the user\n @return uint256 The aToken balance*"
                  },
                  "functionSelector": "44b68c3f",
                  "id": 23418,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "dynamicBalanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 23407,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23406,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23418,
                        "src": "10998:15:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23405,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10998:7:92",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10997:17:92"
                  },
                  "returnParameters": {
                    "id": 23410,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23409,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23418,
                        "src": "11038:7:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23408,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11038:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11037:9:92"
                  },
                  "scope": 23748,
                  "src": "10972:134:92",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 23432,
                    "nodeType": "Block",
                    "src": "11427:39:92",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 23428,
                                "name": "rate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23463,
                                "src": "11454:4:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view returns (uint256)"
                                }
                              },
                              "id": 23429,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11454:6:92",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 23426,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23421,
                              "src": "11440:6:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 23427,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayMul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20381,
                            "src": "11440:13:92",
                            "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": 23430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11440:21:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 23425,
                        "id": 23431,
                        "nodeType": "Return",
                        "src": "11433:28:92"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 23419,
                    "nodeType": "StructuredDocumentation",
                    "src": "11110:237:92",
                    "text": " @dev Converts a static amount (scaled balance on aToken) to the aToken/underlying value,\n using the current liquidity index on Aave\n @param amount The amount to convert from\n @return uint256 The dynamic amount*"
                  },
                  "functionSelector": "f57d0b40",
                  "id": 23433,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "staticToDynamicAmount",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 23422,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23421,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23433,
                        "src": "11381:14:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23420,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11381:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11380:16:92"
                  },
                  "returnParameters": {
                    "id": 23425,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23424,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23433,
                        "src": "11418:7:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23423,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11418:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11417:9:92"
                  },
                  "scope": 23748,
                  "src": "11350:116:92",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 23447,
                    "nodeType": "Block",
                    "src": "11822:39:92",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 23443,
                                "name": "rate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23463,
                                "src": "11849:4:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view returns (uint256)"
                                }
                              },
                              "id": 23444,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11849:6:92",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 23441,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23436,
                              "src": "11835:6:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 23442,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayDiv",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20432,
                            "src": "11835:13:92",
                            "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": 23445,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11835:21:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 23440,
                        "id": 23446,
                        "nodeType": "Return",
                        "src": "11828:28:92"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 23434,
                    "nodeType": "StructuredDocumentation",
                    "src": "11470:272:92",
                    "text": " @dev Converts an aToken or underlying amount to the what it is denominated on the aToken as\n scaled balance, function of the principal and the liquidity index\n @param amount The amount to convert from\n @return uint256 The static (scaled) amount*"
                  },
                  "functionSelector": "36a5a6d6",
                  "id": 23448,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "dynamicToStaticAmount",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 23437,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23436,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23448,
                        "src": "11776:14:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23435,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11776:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11775:16:92"
                  },
                  "returnParameters": {
                    "id": 23440,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23439,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23448,
                        "src": "11813:7:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23438,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11813:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11812:9:92"
                  },
                  "scope": 23748,
                  "src": "11745:116:92",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 23462,
                    "nodeType": "Block",
                    "src": "12122:73:92",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 23458,
                                  "name": "ASSET",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22967,
                                  "src": "12183:5:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$4012",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$4012",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 23457,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "12175:7:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 23456,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12175:7:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 23459,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12175:14:92",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 23454,
                              "name": "LENDING_POOL",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22963,
                              "src": "12135:12:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 23455,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getReserveNormalizedIncome",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6413,
                            "src": "12135:39:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 23460,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12135:55:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 23453,
                        "id": 23461,
                        "nodeType": "Return",
                        "src": "12128:62:92"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 23449,
                    "nodeType": "StructuredDocumentation",
                    "src": "11865:208:92",
                    "text": " @dev Returns the Aave liquidity index of the underlying aToken, denominated rate here\n as it can be considered as an ever-increasing exchange rate\n @return bytes32 The domain separator*"
                  },
                  "functionSelector": "2c4e722e",
                  "id": 23463,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "rate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 23450,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12089:2:92"
                  },
                  "returnParameters": {
                    "id": 23453,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23452,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23463,
                        "src": "12113:7:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23451,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12113:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12112:9:92"
                  },
                  "scope": 23748,
                  "src": "12076:119:92",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 23493,
                    "nodeType": "Block",
                    "src": "12473:214:92",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 23474,
                                  "name": "EIP712_DOMAIN",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22946,
                                  "src": "12533:13:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "id": 23478,
                                            "name": "name",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3492,
                                            "src": "12574:4:92",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$",
                                              "typeString": "function () view returns (string memory)"
                                            }
                                          },
                                          "id": 23479,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "12574:6:92",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        ],
                                        "id": 23477,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "12568:5:92",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                          "typeString": "type(bytes storage pointer)"
                                        },
                                        "typeName": {
                                          "id": 23476,
                                          "name": "bytes",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "12568:5:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 23480,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12568:13:92",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 23475,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "12558:9:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 23481,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12558:24:92",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 23483,
                                      "name": "EIP712_REVISION",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22941,
                                      "src": "12604:15:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 23482,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "12594:9:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 23484,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12594:26:92",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 23485,
                                  "name": "chainId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23466,
                                  "src": "12632:7:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 23488,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "12659:4:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_StaticAToken_$23748",
                                        "typeString": "contract StaticAToken"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_StaticAToken_$23748",
                                        "typeString": "contract StaticAToken"
                                      }
                                    ],
                                    "id": 23487,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "12651:7:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 23486,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "12651:7:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 23489,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12651:13:92",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 23472,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "12511:3:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 23473,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "12511:10:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 23490,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12511:163:92",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 23471,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "12492:9:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 23491,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12492:190:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 23470,
                        "id": 23492,
                        "nodeType": "Return",
                        "src": "12479:203:92"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 23464,
                    "nodeType": "StructuredDocumentation",
                    "src": "12199:196:92",
                    "text": " @dev Function to return a dynamic domain separator, in order to be compatible with forks changing chainId\n @param chainId The chain id\n @return bytes32 The domain separator*"
                  },
                  "functionSelector": "8a3b3d6f",
                  "id": 23494,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getDomainSeparator",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 23467,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23466,
                        "mutability": "mutable",
                        "name": "chainId",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23494,
                        "src": "12426:15:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23465,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12426:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12425:17:92"
                  },
                  "returnParameters": {
                    "id": 23470,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23469,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23494,
                        "src": "12464:7:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 23468,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "12464:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12463:9:92"
                  },
                  "scope": 23748,
                  "src": "12398:289:92",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 23573,
                    "nodeType": "Block",
                    "src": "12856:440:92",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 23515,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 23510,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23498,
                                "src": "12870:9:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 23513,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12891:1:92",
                                    "subdenomination": null,
                                    "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": 23512,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12883:7:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 23511,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12883:7:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 23514,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12883:10:92",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "12870:23:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e56414c49445f524543495049454e54",
                              "id": 23516,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12895:19:92",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5e7bf34c5f9e77c6f415365fc02ea1195419ccebda18d14265f0c098f3687483",
                                "typeString": "literal_string \"INVALID_RECIPIENT\""
                              },
                              "value": "INVALID_RECIPIENT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5e7bf34c5f9e77c6f415365fc02ea1195419ccebda18d14265f0c098f3687483",
                                "typeString": "literal_string \"INVALID_RECIPIENT\""
                              }
                            ],
                            "id": 23509,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "12862:7:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23517,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12862:53:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23518,
                        "nodeType": "ExpressionStatement",
                        "src": "12862:53:92"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 23519,
                          "name": "fromUnderlying",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23504,
                          "src": "12926:14:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 23558,
                          "nodeType": "Block",
                          "src": "13100:72:92",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 23550,
                                    "name": "depositor",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23496,
                                    "src": "13132:9:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 23553,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "13151:4:92",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_StaticAToken_$23748",
                                          "typeString": "contract StaticAToken"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_StaticAToken_$23748",
                                          "typeString": "contract StaticAToken"
                                        }
                                      ],
                                      "id": 23552,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "13143:7:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 23551,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13143:7:92",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 23554,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13143:13:92",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23555,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23500,
                                    "src": "13158:6:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 23547,
                                    "name": "ATOKEN",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22965,
                                    "src": "13108:6:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$4012",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 23549,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransferFrom",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4205,
                                  "src": "13108:23:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                                    "typeString": "function (contract IERC20,address,address,uint256)"
                                  }
                                },
                                "id": 23556,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13108:57:92",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 23557,
                              "nodeType": "ExpressionStatement",
                              "src": "13108:57:92"
                            }
                          ]
                        },
                        "id": 23559,
                        "nodeType": "IfStatement",
                        "src": "12922:250:92",
                        "trueBody": {
                          "id": 23546,
                          "nodeType": "Block",
                          "src": "12942:152:92",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 23523,
                                    "name": "depositor",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23496,
                                    "src": "12973:9:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 23526,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "12992:4:92",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_StaticAToken_$23748",
                                          "typeString": "contract StaticAToken"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_StaticAToken_$23748",
                                          "typeString": "contract StaticAToken"
                                        }
                                      ],
                                      "id": 23525,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "12984:7:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 23524,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "12984:7:92",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 23527,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12984:13:92",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23528,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23500,
                                    "src": "12999:6:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 23520,
                                    "name": "ASSET",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22967,
                                    "src": "12950:5:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$4012",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 23522,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransferFrom",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4205,
                                  "src": "12950:22:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                                    "typeString": "function (contract IERC20,address,address,uint256)"
                                  }
                                },
                                "id": 23529,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12950:56:92",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 23530,
                              "nodeType": "ExpressionStatement",
                              "src": "12950:56:92"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 23536,
                                        "name": "ASSET",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22967,
                                        "src": "13043:5:92",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20_$4012",
                                          "typeString": "contract IERC20"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_IERC20_$4012",
                                          "typeString": "contract IERC20"
                                        }
                                      ],
                                      "id": 23535,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "13035:7:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 23534,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13035:7:92",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 23537,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13035:14:92",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23538,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23500,
                                    "src": "13051:6:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 23541,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "13067:4:92",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_StaticAToken_$23748",
                                          "typeString": "contract StaticAToken"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_StaticAToken_$23748",
                                          "typeString": "contract StaticAToken"
                                        }
                                      ],
                                      "id": 23540,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "13059:7:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 23539,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13059:7:92",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 23542,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13059:13:92",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23543,
                                    "name": "referralCode",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23502,
                                    "src": "13074:12:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 23531,
                                    "name": "LENDING_POOL",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22963,
                                    "src": "13014:12:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                      "typeString": "contract ILendingPool"
                                    }
                                  },
                                  "id": 23533,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "deposit",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6245,
                                  "src": "13014:20:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint16_$returns$__$",
                                    "typeString": "function (address,uint256,address,uint16) external"
                                  }
                                },
                                "id": 23544,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13014:73:92",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 23545,
                              "nodeType": "ExpressionStatement",
                              "src": "13014:73:92"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          23561
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23561,
                            "mutability": "mutable",
                            "name": "amountToMint",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 23573,
                            "src": "13178:20:92",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 23560,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13178:7:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 23565,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23563,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23500,
                              "src": "13223:6:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 23562,
                            "name": "dynamicToStaticAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23448,
                            "src": "13201:21:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 23564,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13201:29:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13178:52:92"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23567,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23498,
                              "src": "13242:9:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23568,
                              "name": "amountToMint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23561,
                              "src": "13253:12:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 23566,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3810,
                            "src": "13236:5:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 23569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13236:30:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23570,
                        "nodeType": "ExpressionStatement",
                        "src": "13236:30:92"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23571,
                          "name": "amountToMint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23561,
                          "src": "13279:12:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 23508,
                        "id": 23572,
                        "nodeType": "Return",
                        "src": "13272:19:92"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 23574,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_deposit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 23505,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23496,
                        "mutability": "mutable",
                        "name": "depositor",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23574,
                        "src": "12714:17:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23495,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12714:7:92",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23498,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23574,
                        "src": "12737:17:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23497,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12737:7:92",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23500,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23574,
                        "src": "12760:14:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23499,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12760:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23502,
                        "mutability": "mutable",
                        "name": "referralCode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23574,
                        "src": "12780:19:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 23501,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "12780:6:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23504,
                        "mutability": "mutable",
                        "name": "fromUnderlying",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23574,
                        "src": "12805:19:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 23503,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "12805:4:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12708:120:92"
                  },
                  "returnParameters": {
                    "id": 23508,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23507,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23574,
                        "src": "12847:7:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23506,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12847:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12846:9:92"
                  },
                  "scope": 23748,
                  "src": "12691:605:92",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 23716,
                    "nodeType": "Block",
                    "src": "13477:1104:92",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 23597,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 23592,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23578,
                                "src": "13491:9:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 23595,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13512:1:92",
                                    "subdenomination": null,
                                    "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": 23594,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "13504:7:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 23593,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13504:7:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 23596,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13504:10:92",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "13491:23:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e56414c49445f524543495049454e54",
                              "id": 23598,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13516:19:92",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5e7bf34c5f9e77c6f415365fc02ea1195419ccebda18d14265f0c098f3687483",
                                "typeString": "literal_string \"INVALID_RECIPIENT\""
                              },
                              "value": "INVALID_RECIPIENT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5e7bf34c5f9e77c6f415365fc02ea1195419ccebda18d14265f0c098f3687483",
                                "typeString": "literal_string \"INVALID_RECIPIENT\""
                              }
                            ],
                            "id": 23591,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "13483:7:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23599,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13483:53:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23600,
                        "nodeType": "ExpressionStatement",
                        "src": "13483:53:92"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 23608,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 23604,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 23602,
                                  "name": "staticAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23580,
                                  "src": "13550:12:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 23603,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13566:1:92",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "13550:17:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 23607,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 23605,
                                  "name": "dynamicAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23582,
                                  "src": "13571:13:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 23606,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13588:1:92",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "13571:18:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "13550:39:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f4e4c595f4f4e455f414d4f554e545f464f524d41545f414c4c4f574544",
                              "id": 23609,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13591:32:92",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_93a87b5f36e19b0d82cac863d0442d2eeea169f3a879ad2f2fe4d2287a302600",
                                "typeString": "literal_string \"ONLY_ONE_AMOUNT_FORMAT_ALLOWED\""
                              },
                              "value": "ONLY_ONE_AMOUNT_FORMAT_ALLOWED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_93a87b5f36e19b0d82cac863d0442d2eeea169f3a879ad2f2fe4d2287a302600",
                                "typeString": "literal_string \"ONLY_ONE_AMOUNT_FORMAT_ALLOWED\""
                              }
                            ],
                            "id": 23601,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "13542:7:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23610,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13542:82:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23611,
                        "nodeType": "ExpressionStatement",
                        "src": "13542:82:92"
                      },
                      {
                        "assignments": [
                          23613
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23613,
                            "mutability": "mutable",
                            "name": "userBalance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 23716,
                            "src": "13631:19:92",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 23612,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13631:7:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 23617,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23615,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23576,
                              "src": "13663:5:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 23614,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3534,
                            "src": "13653:9:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 23616,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13653:16:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13631:38:92"
                      },
                      {
                        "assignments": [
                          23619
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23619,
                            "mutability": "mutable",
                            "name": "amountToWithdraw",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 23716,
                            "src": "13676:24:92",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 23618,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13676:7:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 23620,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13676:24:92"
                      },
                      {
                        "assignments": [
                          23622
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23622,
                            "mutability": "mutable",
                            "name": "amountToBurn",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 23716,
                            "src": "13706:20:92",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 23621,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13706:7:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 23623,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13706:20:92"
                      },
                      {
                        "assignments": [
                          23625
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23625,
                            "mutability": "mutable",
                            "name": "currentRate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 23716,
                            "src": "13733:19:92",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 23624,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13733:7:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 23628,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 23626,
                            "name": "rate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23463,
                            "src": "13755:4:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 23627,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13755:6:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13733:28:92"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 23631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 23629,
                            "name": "staticAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23580,
                            "src": "13771:12:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 23630,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13786:1:92",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13771:16:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 23683,
                          "nodeType": "Block",
                          "src": "14056:268:92",
                          "statements": [
                            {
                              "assignments": [
                                23660
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 23660,
                                  "mutability": "mutable",
                                  "name": "dynamicUserBalance",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 23683,
                                  "src": "14064:26:92",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 23659,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14064:7:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 23665,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 23662,
                                    "name": "userBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23613,
                                    "src": "14116:11:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23663,
                                    "name": "currentRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23625,
                                    "src": "14129:11:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 23661,
                                  "name": "_staticToDynamicAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23747,
                                  "src": "14093:22:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 23664,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14093:48:92",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "14064:77:92"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 23674,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 23666,
                                  "name": "amountToWithdraw",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23619,
                                  "src": "14149:16:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "condition": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 23669,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 23667,
                                          "name": "dynamicAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23582,
                                          "src": "14169:13:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 23668,
                                          "name": "dynamicUserBalance",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23660,
                                          "src": "14185:18:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "14169:34:92",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "id": 23670,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "14168:36:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseExpression": {
                                    "argumentTypes": null,
                                    "id": 23672,
                                    "name": "dynamicAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23582,
                                    "src": "14228:13:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 23673,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "Conditional",
                                  "src": "14168:73:92",
                                  "trueExpression": {
                                    "argumentTypes": null,
                                    "id": 23671,
                                    "name": "dynamicUserBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23660,
                                    "src": "14207:18:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14149:92:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 23675,
                              "nodeType": "ExpressionStatement",
                              "src": "14149:92:92"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 23681,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 23676,
                                  "name": "amountToBurn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23622,
                                  "src": "14249:12:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 23678,
                                      "name": "amountToWithdraw",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23619,
                                      "src": "14287:16:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 23679,
                                      "name": "currentRate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23625,
                                      "src": "14305:11:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 23677,
                                    "name": "_dynamicToStaticAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23732,
                                    "src": "14264:22:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 23680,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14264:53:92",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14249:68:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 23682,
                              "nodeType": "ExpressionStatement",
                              "src": "14249:68:92"
                            }
                          ]
                        },
                        "id": 23684,
                        "nodeType": "IfStatement",
                        "src": "13767:557:92",
                        "trueBody": {
                          "id": 23658,
                          "nodeType": "Block",
                          "src": "13789:261:92",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 23640,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 23632,
                                  "name": "amountToBurn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23622,
                                  "src": "13797:12:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "condition": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 23635,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 23633,
                                          "name": "staticAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23580,
                                          "src": "13813:12:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 23634,
                                          "name": "userBalance",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23613,
                                          "src": "13828:11:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "13813:26:92",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "id": 23636,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "13812:28:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseExpression": {
                                    "argumentTypes": null,
                                    "id": 23638,
                                    "name": "staticAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23580,
                                    "src": "13857:12:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 23639,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "Conditional",
                                  "src": "13812:57:92",
                                  "trueExpression": {
                                    "argumentTypes": null,
                                    "id": 23637,
                                    "name": "userBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23613,
                                    "src": "13843:11:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13797:72:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 23641,
                              "nodeType": "ExpressionStatement",
                              "src": "13797:72:92"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 23656,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 23642,
                                  "name": "amountToWithdraw",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23619,
                                  "src": "13877:16:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "condition": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 23645,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 23643,
                                          "name": "staticAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23580,
                                          "src": "13897:12:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 23644,
                                          "name": "userBalance",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23613,
                                          "src": "13912:11:92",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "13897:26:92",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "id": 23646,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "13896:28:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 23652,
                                        "name": "staticAmount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23580,
                                        "src": "14017:12:92",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 23653,
                                        "name": "currentRate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23625,
                                        "src": "14031:11:92",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 23651,
                                      "name": "_staticToDynamicAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23747,
                                      "src": "13994:22:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 23654,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13994:49:92",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 23655,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "Conditional",
                                  "src": "13896:147:92",
                                  "trueExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 23648,
                                        "name": "userBalance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23613,
                                        "src": "13958:11:92",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 23649,
                                        "name": "currentRate",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23625,
                                        "src": "13971:11:92",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 23647,
                                      "name": "_staticToDynamicAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23747,
                                      "src": "13935:22:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 23650,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13935:48:92",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13877:166:92",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 23657,
                              "nodeType": "ExpressionStatement",
                              "src": "13877:166:92"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23686,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23576,
                              "src": "14336:5:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23687,
                              "name": "amountToBurn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23622,
                              "src": "14343:12:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 23685,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3866,
                            "src": "14330:5:92",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 23688,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14330:26:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23689,
                        "nodeType": "ExpressionStatement",
                        "src": "14330:26:92"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 23690,
                          "name": "toUnderlying",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23584,
                          "src": "14367:12:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 23710,
                          "nodeType": "Block",
                          "src": "14468:63:92",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 23706,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23578,
                                    "src": "14496:9:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23707,
                                    "name": "amountToWithdraw",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23619,
                                    "src": "14507:16:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 23703,
                                    "name": "ATOKEN",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22965,
                                    "src": "14476:6:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$4012",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 23705,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4180,
                                  "src": "14476:19:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 23708,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14476:48:92",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 23709,
                              "nodeType": "ExpressionStatement",
                              "src": "14476:48:92"
                            }
                          ]
                        },
                        "id": 23711,
                        "nodeType": "IfStatement",
                        "src": "14363:168:92",
                        "trueBody": {
                          "id": 23702,
                          "nodeType": "Block",
                          "src": "14381:81:92",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 23696,
                                        "name": "ASSET",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22967,
                                        "src": "14419:5:92",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20_$4012",
                                          "typeString": "contract IERC20"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_IERC20_$4012",
                                          "typeString": "contract IERC20"
                                        }
                                      ],
                                      "id": 23695,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "14411:7:92",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 23694,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "14411:7:92",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 23697,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14411:14:92",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23698,
                                    "name": "amountToWithdraw",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23619,
                                    "src": "14427:16:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 23699,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23578,
                                    "src": "14445:9:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 23691,
                                    "name": "LENDING_POOL",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22963,
                                    "src": "14389:12:92",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                      "typeString": "contract ILendingPool"
                                    }
                                  },
                                  "id": 23693,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "withdraw",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6257,
                                  "src": "14389:21:92",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address,uint256,address) external returns (uint256)"
                                  }
                                },
                                "id": 23700,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14389:66:92",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 23701,
                              "nodeType": "ExpressionStatement",
                              "src": "14389:66:92"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 23712,
                              "name": "amountToBurn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23622,
                              "src": "14545:12:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23713,
                              "name": "amountToWithdraw",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23619,
                              "src": "14559:16:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 23714,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "14544:32:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 23590,
                        "id": 23715,
                        "nodeType": "Return",
                        "src": "14537:39:92"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 23717,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_withdraw",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 23585,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23576,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23717,
                        "src": "13324:13:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23575,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13324:7:92",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23578,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23717,
                        "src": "13343:17:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23577,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13343:7:92",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23580,
                        "mutability": "mutable",
                        "name": "staticAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23717,
                        "src": "13366:20:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23579,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13366:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23582,
                        "mutability": "mutable",
                        "name": "dynamicAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23717,
                        "src": "13392:21:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23581,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13392:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23584,
                        "mutability": "mutable",
                        "name": "toUnderlying",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23717,
                        "src": "13419:17:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 23583,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13419:4:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13318:122:92"
                  },
                  "returnParameters": {
                    "id": 23590,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23587,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23717,
                        "src": "13459:7:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23586,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13459:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23589,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23717,
                        "src": "13468:7:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23588,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13468:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13458:18:92"
                  },
                  "scope": 23748,
                  "src": "13300:1281:92",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 23731,
                    "nodeType": "Block",
                    "src": "14679:37:92",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23728,
                              "name": "rate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23721,
                              "src": "14706:4:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 23726,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23719,
                              "src": "14692:6:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 23727,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayDiv",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20432,
                            "src": "14692:13:92",
                            "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": 23729,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14692:19:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 23725,
                        "id": 23730,
                        "nodeType": "Return",
                        "src": "14685:26:92"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 23732,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_dynamicToStaticAmount",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 23722,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23719,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23732,
                        "src": "14617:14:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23718,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14617:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23721,
                        "mutability": "mutable",
                        "name": "rate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23732,
                        "src": "14633:12:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23720,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14633:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14616:30:92"
                  },
                  "returnParameters": {
                    "id": 23725,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23724,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23732,
                        "src": "14670:7:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23723,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14670:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14669:9:92"
                  },
                  "scope": 23748,
                  "src": "14585:131:92",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 23746,
                    "nodeType": "Block",
                    "src": "14814:37:92",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 23743,
                              "name": "rate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23736,
                              "src": "14841:4:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 23741,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23734,
                              "src": "14827:6:92",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 23742,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayMul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20381,
                            "src": "14827:13:92",
                            "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": 23744,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14827:19:92",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 23740,
                        "id": 23745,
                        "nodeType": "Return",
                        "src": "14820:26:92"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 23747,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_staticToDynamicAmount",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 23737,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23734,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23747,
                        "src": "14752:14:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23733,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14752:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23736,
                        "mutability": "mutable",
                        "name": "rate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23747,
                        "src": "14768:12:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23735,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14768:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14751:30:92"
                  },
                  "returnParameters": {
                    "id": 23740,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23739,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23747,
                        "src": "14805:7:92",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23738,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14805:7:92",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14804:9:92"
                  },
                  "scope": 23748,
                  "src": "14720:131:92",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 23749,
              "src": "801:14052:92"
            }
          ],
          "src": "37:14817:92"
        },
        "id": 92
      },
      "contracts/protocol/tokenization/StaticATokenLM.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/tokenization/StaticATokenLM.sol",
          "exportedSymbols": {
            "ITokenBridge": [
              23787
            ],
            "StaticATokenLM": [
              25399
            ]
          },
          "id": 25400,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 23750,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:93"
            },
            {
              "id": 23751,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "61:33:93"
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPool.sol",
              "file": "../../interfaces/ILendingPool.sol",
              "id": 23753,
              "nodeType": "ImportDirective",
              "scope": 25400,
              "sourceUnit": 6467,
              "src": "96:63:93",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 23752,
                    "name": "ILendingPool",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "104:12:93",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IScaledBalanceToken.sol",
              "file": "../../interfaces/IScaledBalanceToken.sol",
              "id": 23755,
              "nodeType": "ImportDirective",
              "scope": 25400,
              "sourceUnit": 7006,
              "src": "160:77:93",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 23754,
                    "name": "IScaledBalanceToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "168:19:93",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20.sol",
              "file": "../../dependencies/openzeppelin/contracts/IERC20.sol",
              "id": 23757,
              "nodeType": "ImportDirective",
              "scope": 25400,
              "sourceUnit": 4013,
              "src": "238:76:93",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 23756,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "246:6:93",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/IERC20Detailed.sol",
              "file": "../../dependencies/openzeppelin/contracts/IERC20Detailed.sol",
              "id": 23759,
              "nodeType": "ImportDirective",
              "scope": 25400,
              "sourceUnit": 4035,
              "src": "315:92:93",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 23758,
                    "name": "IERC20Detailed",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "323:14:93",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IAToken.sol",
              "file": "../../interfaces/IAToken.sol",
              "id": 23761,
              "nodeType": "ImportDirective",
              "scope": 25400,
              "sourceUnit": 5668,
              "src": "408:53:93",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 23760,
                    "name": "IAToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "416:7:93",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IStaticATokenLM.sol",
              "file": "../../interfaces/IStaticATokenLM.sol",
              "id": 23763,
              "nodeType": "ImportDirective",
              "scope": 25400,
              "sourceUnit": 7382,
              "src": "462:69:93",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 23762,
                    "name": "IStaticATokenLM",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "470:15:93",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IAaveIncentivesController.sol",
              "file": "../../interfaces/IAaveIncentivesController.sol",
              "id": 23765,
              "nodeType": "ImportDirective",
              "scope": 25400,
              "sourceUnit": 5823,
              "src": "532:89:93",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 23764,
                    "name": "IAaveIncentivesController",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "540:25:93",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IInitializableStaticATokenLM.sol",
              "file": "../../interfaces/IInitializableStaticATokenLM.sol",
              "id": 23767,
              "nodeType": "ImportDirective",
              "scope": 25400,
              "sourceUnit": 6092,
              "src": "622:95:93",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 23766,
                    "name": "IInitializableStaticATokenLM",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "630:28:93",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/aave-upgradeability/VersionedInitializable.sol",
              "file": "../libraries/aave-upgradeability/VersionedInitializable.sol",
              "id": 23769,
              "nodeType": "ImportDirective",
              "scope": 25400,
              "sourceUnit": 16020,
              "src": "718:99:93",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 23768,
                    "name": "VersionedInitializable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "726:22:93",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/helpers/StaticATokenErrors.sol",
              "file": "../libraries/helpers/StaticATokenErrors.sol",
              "id": 23771,
              "nodeType": "ImportDirective",
              "scope": 25400,
              "sourceUnit": 17329,
              "src": "819:79:93",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 23770,
                    "name": "StaticATokenErrors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "827:18:93",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/ERC20.sol",
              "file": "../../dependencies/openzeppelin/contracts/ERC20.sol",
              "id": 23773,
              "nodeType": "ImportDirective",
              "scope": 25400,
              "sourceUnit": 3935,
              "src": "900:74:93",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 23772,
                    "name": "ERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "908:5:93",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeERC20.sol",
              "file": "../../dependencies/openzeppelin/contracts/SafeERC20.sol",
              "id": 23775,
              "nodeType": "ImportDirective",
              "scope": 25400,
              "sourceUnit": 4301,
              "src": "975:82:93",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 23774,
                    "name": "SafeERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "983:9:93",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/math/WadRayMath.sol",
              "file": "../../protocol/libraries/math/WadRayMath.sol",
              "id": 23777,
              "nodeType": "ImportDirective",
              "scope": 25400,
              "sourceUnit": 20494,
              "src": "1058:72:93",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 23776,
                    "name": "WadRayMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "1066:10:93",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/math/RayMathNoRounding.sol",
              "file": "../../protocol/libraries/math/RayMathNoRounding.sol",
              "id": 23779,
              "nodeType": "ImportDirective",
              "scope": 25400,
              "sourceUnit": 20175,
              "src": "1131:86:93",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 23778,
                    "name": "RayMathNoRounding",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "1139:17:93",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/dependencies/openzeppelin/contracts/SafeMath.sol",
              "file": "../../dependencies/openzeppelin/contracts/SafeMath.sol",
              "id": 23781,
              "nodeType": "ImportDirective",
              "scope": 25400,
              "sourceUnit": 4497,
              "src": "1218:80:93",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 23780,
                    "name": "SafeMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "1226:8:93",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 23787,
              "linearizedBaseContracts": [
                23787
              ],
              "name": "ITokenBridge",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "06e0ad45",
                  "id": 23786,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sendMessageStaticAToken",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 23784,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23783,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23786,
                        "src": "1360:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23782,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1360:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1359:9:93"
                  },
                  "returnParameters": {
                    "id": 23785,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1377:0:93"
                  },
                  "scope": 23787,
                  "src": "1327:51:93",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 25400,
              "src": "1300:80:93"
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 23789,
                    "name": "VersionedInitializable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16019,
                    "src": "1726:22:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_VersionedInitializable_$16019",
                      "typeString": "contract VersionedInitializable"
                    }
                  },
                  "id": 23790,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1726:22:93"
                },
                {
                  "arguments": [
                    {
                      "argumentTypes": null,
                      "hexValue": "5354415449435f41544f4b454e5f494d504c",
                      "id": 23792,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1758:20:93",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_19a14f0d84d069d847d42bfcc639f56721f8fddb1b66c8a91d56b8a70bf3bca7",
                        "typeString": "literal_string \"STATIC_ATOKEN_IMPL\""
                      },
                      "value": "STATIC_ATOKEN_IMPL"
                    },
                    {
                      "argumentTypes": null,
                      "hexValue": "5354415449435f41544f4b454e5f494d504c",
                      "id": 23793,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1780:20:93",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_19a14f0d84d069d847d42bfcc639f56721f8fddb1b66c8a91d56b8a70bf3bca7",
                        "typeString": "literal_string \"STATIC_ATOKEN_IMPL\""
                      },
                      "value": "STATIC_ATOKEN_IMPL"
                    }
                  ],
                  "baseName": {
                    "contractScope": null,
                    "id": 23791,
                    "name": "ERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3934,
                    "src": "1752:5:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20_$3934",
                      "typeString": "contract ERC20"
                    }
                  },
                  "id": 23794,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1752:49:93"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 23795,
                    "name": "IStaticATokenLM",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7381,
                    "src": "1805:15:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IStaticATokenLM_$7381",
                      "typeString": "contract IStaticATokenLM"
                    }
                  },
                  "id": 23796,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1805:15:93"
                }
              ],
              "contractDependencies": [
                3427,
                3934,
                4012,
                6091,
                7381,
                16019
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 23788,
                "nodeType": "StructuredDocumentation",
                "src": "1382:314:93",
                "text": " @title StaticATokenLM\n @notice Wrapper token that allows to deposit tokens on the Aave protocol and receive\n a token which balance doesn't increase automatically, but uses an ever-increasing exchange rate.\n The token support claiming liquidity mining rewards from the Aave system.\n @author Aave*"
              },
              "fullyImplemented": true,
              "id": 25399,
              "linearizedBaseContracts": [
                25399,
                7381,
                6091,
                3934,
                4012,
                3427,
                16019
              ],
              "name": "StaticATokenLM",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 23799,
                  "libraryName": {
                    "contractScope": null,
                    "id": 23797,
                    "name": "SafeERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4300,
                    "src": "1831:9:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeERC20_$4300",
                      "typeString": "library SafeERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1825:27:93",
                  "typeName": {
                    "contractScope": null,
                    "id": 23798,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4012,
                    "src": "1845:6:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$4012",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "id": 23802,
                  "libraryName": {
                    "contractScope": null,
                    "id": 23800,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4496,
                    "src": "1861:8:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$4496",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1855:27:93",
                  "typeName": {
                    "id": 23801,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1874:7:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 23805,
                  "libraryName": {
                    "contractScope": null,
                    "id": 23803,
                    "name": "WadRayMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20493,
                    "src": "1891:10:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_WadRayMath_$20493",
                      "typeString": "library WadRayMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1885:29:93",
                  "typeName": {
                    "id": 23804,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1906:7:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 23808,
                  "libraryName": {
                    "contractScope": null,
                    "id": 23806,
                    "name": "RayMathNoRounding",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20174,
                    "src": "1923:17:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_RayMathNoRounding_$20174",
                      "typeString": "library RayMathNoRounding"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1917:36:93",
                  "typeName": {
                    "id": 23807,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1945:7:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": true,
                  "functionSelector": "78160376",
                  "id": 23814,
                  "mutability": "constant",
                  "name": "EIP712_REVISION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25399,
                  "src": "1957:50:93",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 23809,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1957:5:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 23812,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2003:3:93",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                          "typeString": "literal_string \"1\""
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                          "typeString": "literal_string \"1\""
                        }
                      ],
                      "id": 23811,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1997:5:93",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                        "typeString": "type(bytes storage pointer)"
                      },
                      "typeName": {
                        "id": 23810,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1997:5:93",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 23813,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1997:10:93",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 23819,
                  "mutability": "constant",
                  "name": "EIP712_DOMAIN",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25399,
                  "src": "2011:141:93",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 23815,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2011:7:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                        "id": 23817,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2067:84:93",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                          "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                        },
                        "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                          "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                        }
                      ],
                      "id": 23816,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "2057:9:93",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 23818,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2057:95:93",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "functionSelector": "30adf81f",
                  "id": 23824,
                  "mutability": "constant",
                  "name": "PERMIT_TYPEHASH",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25399,
                  "src": "2156:141:93",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 23820,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2156:7:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "5065726d69742861646472657373206f776e65722c61646472657373207370656e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529",
                        "id": 23822,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2212:84:93",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9",
                          "typeString": "literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""
                        },
                        "value": "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9",
                          "typeString": "literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""
                        }
                      ],
                      "id": 23821,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "2202:9:93",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 23823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2202:95:93",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "63210537",
                  "id": 23829,
                  "mutability": "constant",
                  "name": "METADEPOSIT_TYPEHASH",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25399,
                  "src": "2301:205:93",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 23825,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2301:7:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "4465706f7369742861646472657373206465706f7369746f722c6164647265737320726563697069656e742c75696e743235362076616c75652c75696e74313620726566657272616c436f64652c626f6f6c2066726f6d556e6465726c79696e672c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529",
                        "id": 23827,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2369:131:93",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4dab0a5e832f103ac80c9c3e51e5742f8a24aa0a3d941fe91c64e1e3db50c743",
                          "typeString": "literal_string \"Deposit(address depositor,address recipient,uint256 value,uint16 referralCode,bool fromUnderlying,uint256 nonce,uint256 deadline)\""
                        },
                        "value": "Deposit(address depositor,address recipient,uint256 value,uint16 referralCode,bool fromUnderlying,uint256 nonce,uint256 deadline)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_4dab0a5e832f103ac80c9c3e51e5742f8a24aa0a3d941fe91c64e1e3db50c743",
                          "typeString": "literal_string \"Deposit(address depositor,address recipient,uint256 value,uint16 referralCode,bool fromUnderlying,uint256 nonce,uint256 deadline)\""
                        }
                      ],
                      "id": 23826,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "2352:9:93",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 23828,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2352:154:93",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "8d948415",
                  "id": 23834,
                  "mutability": "constant",
                  "name": "METAWITHDRAWAL_TYPEHASH",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25399,
                  "src": "2510:212:93",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 23830,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2510:7:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "57697468647261772861646472657373206f776e65722c6164647265737320726563697069656e742c75696e7432353620737461746963416d6f756e742c75696e743235362064796e616d6963416d6f756e742c626f6f6c20746f556e6465726c79696e672c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529",
                        "id": 23832,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2581:135:93",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ce21806401473655533a882461ca5036529d194f238d3c1793817a552bd133a5",
                          "typeString": "literal_string \"Withdraw(address owner,address recipient,uint256 staticAmount,uint256 dynamicAmount,bool toUnderlying,uint256 nonce,uint256 deadline)\""
                        },
                        "value": "Withdraw(address owner,address recipient,uint256 staticAmount,uint256 dynamicAmount,bool toUnderlying,uint256 nonce,uint256 deadline)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_ce21806401473655533a882461ca5036529d194f238d3c1793817a552bd133a5",
                          "typeString": "literal_string \"Withdraw(address owner,address recipient,uint256 staticAmount,uint256 dynamicAmount,bool toUnderlying,uint256 nonce,uint256 deadline)\""
                        }
                      ],
                      "id": 23831,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "2564:9:93",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 23833,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2564:158:93",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "61d0494d",
                  "id": 23837,
                  "mutability": "constant",
                  "name": "STATIC_ATOKEN_LM_REVISION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25399,
                  "src": "2727:55:93",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23835,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2727:7:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307831",
                    "id": 23836,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2779:3:93",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1_by_1",
                      "typeString": "int_const 1"
                    },
                    "value": "0x1"
                  },
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7350
                  ],
                  "constant": false,
                  "functionSelector": "b4dcfc77",
                  "id": 23840,
                  "mutability": "mutable",
                  "name": "LENDING_POOL",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 23839,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2807:8:93"
                  },
                  "scope": 25399,
                  "src": "2787:41:93",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                    "typeString": "contract ILendingPool"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 23838,
                    "name": "ILendingPool",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6466,
                    "src": "2787:12:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                      "typeString": "contract ILendingPool"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7355
                  ],
                  "constant": false,
                  "functionSelector": "10d0ab22",
                  "id": 23843,
                  "mutability": "mutable",
                  "name": "INCENTIVES_CONTROLLER",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 23842,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2865:8:93"
                  },
                  "scope": 25399,
                  "src": "2832:63:93",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                    "typeString": "contract IAaveIncentivesController"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 23841,
                    "name": "IAaveIncentivesController",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5822,
                    "src": "2832:25:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                      "typeString": "contract IAaveIncentivesController"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7360
                  ],
                  "constant": false,
                  "functionSelector": "51c0e061",
                  "id": 23846,
                  "mutability": "mutable",
                  "name": "ATOKEN",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 23845,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2913:8:93"
                  },
                  "scope": 25399,
                  "src": "2899:29:93",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$4012",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 23844,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4012,
                    "src": "2899:6:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$4012",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7365
                  ],
                  "constant": false,
                  "functionSelector": "4800d97f",
                  "id": 23849,
                  "mutability": "mutable",
                  "name": "ASSET",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 23848,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2946:8:93"
                  },
                  "scope": 25399,
                  "src": "2932:28:93",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$4012",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 23847,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4012,
                    "src": "2932:6:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$4012",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7370
                  ],
                  "constant": false,
                  "functionSelector": "99248ea7",
                  "id": 23852,
                  "mutability": "mutable",
                  "name": "REWARD_TOKEN",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 23851,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2978:8:93"
                  },
                  "scope": 25399,
                  "src": "2964:35:93",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$4012",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 23850,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4012,
                    "src": "2964:6:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$4012",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "b9844d8d",
                  "id": 23856,
                  "mutability": "mutable",
                  "name": "_nonces",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25399,
                  "src": "3004:42:93",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 23855,
                    "keyType": {
                      "id": 23853,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3012:7:93",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3004:27:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 23854,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3023:7:93",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 23860,
                  "mutability": "mutable",
                  "name": "_userSnapshotRewardsPerToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25399,
                  "src": "3114:64:93",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 23859,
                    "keyType": {
                      "id": 23857,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3122:7:93",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3114:27:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 23858,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3133:7:93",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 23864,
                  "mutability": "mutable",
                  "name": "_unclaimedRewards",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25399,
                  "src": "3222:53:93",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 23863,
                    "keyType": {
                      "id": 23861,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3230:7:93",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3222:27:93",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 23862,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3241:7:93",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 23866,
                  "mutability": "mutable",
                  "name": "_l1TokenBridge",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25399,
                  "src": "3280:30:93",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23865,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3280:7:93",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "baseFunctions": [
                    15999
                  ],
                  "body": {
                    "id": 23875,
                    "nodeType": "Block",
                    "src": "3427:43:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23873,
                          "name": "STATIC_ATOKEN_LM_REVISION",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23837,
                          "src": "3440:25:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 23872,
                        "id": 23874,
                        "nodeType": "Return",
                        "src": "3433:32:93"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 23867,
                    "nodeType": "StructuredDocumentation",
                    "src": "3315:37:93",
                    "text": "@inheritdoc VersionedInitializable"
                  },
                  "id": 23876,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRevision",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 23869,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3400:8:93"
                  },
                  "parameters": {
                    "id": 23868,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3375:2:93"
                  },
                  "returnParameters": {
                    "id": 23872,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23871,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23876,
                        "src": "3418:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23870,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3418:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3417:9:93"
                  },
                  "scope": 25399,
                  "src": "3355:115:93",
                  "stateMutability": "pure",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    6090
                  ],
                  "body": {
                    "id": 23993,
                    "nodeType": "Block",
                    "src": "3722:746:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23895,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 23893,
                            "name": "_l1TokenBridge",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23866,
                            "src": "3728:14:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 23894,
                            "name": "l1TokenBridge",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23887,
                            "src": "3745:13:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3728:30:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 23896,
                        "nodeType": "ExpressionStatement",
                        "src": "3728:30:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23899,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 23897,
                            "name": "LENDING_POOL",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23840,
                            "src": "3764:12:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPool_$6466",
                              "typeString": "contract ILendingPool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 23898,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23879,
                            "src": "3779:4:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPool_$6466",
                              "typeString": "contract ILendingPool"
                            }
                          },
                          "src": "3764:19:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "id": 23900,
                        "nodeType": "ExpressionStatement",
                        "src": "3764:19:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23905,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 23901,
                            "name": "ATOKEN",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23846,
                            "src": "3789:6:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$4012",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 23903,
                                "name": "aToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23881,
                                "src": "3805:6:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 23902,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4012,
                              "src": "3798:6:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 23904,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3798:14:93",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$4012",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "3789:23:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$4012",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 23906,
                        "nodeType": "ExpressionStatement",
                        "src": "3789:23:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23909,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 23907,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3458,
                            "src": "3819:5:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 23908,
                            "name": "staticATokenName",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23883,
                            "src": "3827:16:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "src": "3819:24:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 23910,
                        "nodeType": "ExpressionStatement",
                        "src": "3819:24:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23913,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 23911,
                            "name": "_symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3460,
                            "src": "3849:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 23912,
                            "name": "staticATokenSymbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23885,
                            "src": "3859:18:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "src": "3849:28:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 23914,
                        "nodeType": "ExpressionStatement",
                        "src": "3849:28:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 23917,
                                      "name": "aToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23881,
                                      "src": "3913:6:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 23916,
                                    "name": "IERC20Detailed",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4034,
                                    "src": "3898:14:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20Detailed_$4034_$",
                                      "typeString": "type(contract IERC20Detailed)"
                                    }
                                  },
                                  "id": 23918,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3898:22:93",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20Detailed_$4034",
                                    "typeString": "contract IERC20Detailed"
                                  }
                                },
                                "id": 23919,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "decimals",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4033,
                                "src": "3898:31:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                                  "typeString": "function () view external returns (uint8)"
                                }
                              },
                              "id": 23920,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3898:33:93",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 23915,
                            "name": "_setupDecimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3922,
                            "src": "3883:14:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$",
                              "typeString": "function (uint8)"
                            }
                          },
                          "id": 23921,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3883:49:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23922,
                        "nodeType": "ExpressionStatement",
                        "src": "3883:49:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 23931,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 23923,
                            "name": "ASSET",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23849,
                            "src": "3939:5:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$4012",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 23926,
                                        "name": "aToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23881,
                                        "src": "3962:6:93",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 23925,
                                      "name": "IAToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5667,
                                      "src": "3954:7:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IAToken_$5667_$",
                                        "typeString": "type(contract IAToken)"
                                      }
                                    },
                                    "id": 23927,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3954:15:93",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IAToken_$5667",
                                      "typeString": "contract IAToken"
                                    }
                                  },
                                  "id": 23928,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "UNDERLYING_ASSET_ADDRESS",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5666,
                                  "src": "3954:40:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                    "typeString": "function () view external returns (address)"
                                  }
                                },
                                "id": 23929,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3954:42:93",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 23924,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4012,
                              "src": "3947:6:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 23930,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3947:50:93",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$4012",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "3939:58:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$4012",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 23932,
                        "nodeType": "ExpressionStatement",
                        "src": "3939:58:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 23938,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23879,
                                  "src": "4029:4:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                ],
                                "id": 23937,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4021:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 23936,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4021:7:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 23939,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4021:13:93",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 23942,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4041:7:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 23941,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4041:7:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    }
                                  ],
                                  "id": 23940,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "4036:4:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 23943,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4036:13:93",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_uint256",
                                  "typeString": "type(uint256)"
                                }
                              },
                              "id": 23944,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "max",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4036:17:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 23933,
                              "name": "ASSET",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23849,
                              "src": "4003:5:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 23935,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeApprove",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4247,
                            "src": "4003:17:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 23945,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4003:51:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23946,
                        "nodeType": "ExpressionStatement",
                        "src": "4003:51:93"
                      },
                      {
                        "clauses": [
                          {
                            "block": {
                              "id": 23978,
                              "nodeType": "Block",
                              "src": "4176:195:93",
                              "statements": [
                                {
                                  "condition": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 23963,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 23957,
                                          "name": "incentivesController",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23953,
                                          "src": "4196:20:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                            "typeString": "contract IAaveIncentivesController"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                            "typeString": "contract IAaveIncentivesController"
                                          }
                                        ],
                                        "id": 23956,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "4188:7:93",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 23955,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "4188:7:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 23958,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4188:29:93",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 23961,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "4229:1:93",
                                          "subdenomination": null,
                                          "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": 23960,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "4221:7:93",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 23959,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "4221:7:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 23962,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4221:10:93",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "src": "4188:43:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": null,
                                  "id": 23977,
                                  "nodeType": "IfStatement",
                                  "src": "4184:181:93",
                                  "trueBody": {
                                    "id": 23976,
                                    "nodeType": "Block",
                                    "src": "4233:132:93",
                                    "statements": [
                                      {
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 23966,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "argumentTypes": null,
                                            "id": 23964,
                                            "name": "INCENTIVES_CONTROLLER",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 23843,
                                            "src": "4243:21:93",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                              "typeString": "contract IAaveIncentivesController"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "argumentTypes": null,
                                            "id": 23965,
                                            "name": "incentivesController",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 23953,
                                            "src": "4267:20:93",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                              "typeString": "contract IAaveIncentivesController"
                                            }
                                          },
                                          "src": "4243:44:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                            "typeString": "contract IAaveIncentivesController"
                                          }
                                        },
                                        "id": 23967,
                                        "nodeType": "ExpressionStatement",
                                        "src": "4243:44:93"
                                      },
                                      {
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 23974,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "argumentTypes": null,
                                            "id": 23968,
                                            "name": "REWARD_TOKEN",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 23852,
                                            "src": "4297:12:93",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IERC20_$4012",
                                              "typeString": "contract IERC20"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "arguments": [],
                                                "expression": {
                                                  "argumentTypes": [],
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 23970,
                                                    "name": "INCENTIVES_CONTROLLER",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 23843,
                                                    "src": "4319:21:93",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                                      "typeString": "contract IAaveIncentivesController"
                                                    }
                                                  },
                                                  "id": 23971,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "REWARD_TOKEN",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 5815,
                                                  "src": "4319:34:93",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                                    "typeString": "function () view external returns (address)"
                                                  }
                                                },
                                                "id": 23972,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "4319:36:93",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "id": 23969,
                                              "name": "IERC20",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4012,
                                              "src": "4312:6:93",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$4012_$",
                                                "typeString": "type(contract IERC20)"
                                              }
                                            },
                                            "id": 23973,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "4312:44:93",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IERC20_$4012",
                                              "typeString": "contract IERC20"
                                            }
                                          },
                                          "src": "4297:59:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$4012",
                                            "typeString": "contract IERC20"
                                          }
                                        },
                                        "id": 23975,
                                        "nodeType": "ExpressionStatement",
                                        "src": "4297:59:93"
                                      }
                                    ]
                                  }
                                }
                              ]
                            },
                            "errorName": "",
                            "id": 23979,
                            "nodeType": "TryCatchClause",
                            "parameters": {
                              "id": 23954,
                              "nodeType": "ParameterList",
                              "parameters": [
                                {
                                  "constant": false,
                                  "id": 23953,
                                  "mutability": "mutable",
                                  "name": "incentivesController",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 23979,
                                  "src": "4123:46:93",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                    "typeString": "contract IAaveIncentivesController"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 23952,
                                    "name": "IAaveIncentivesController",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 5822,
                                    "src": "4123:25:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                      "typeString": "contract IAaveIncentivesController"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "src": "4115:60:93"
                            },
                            "src": "4107:264:93"
                          },
                          {
                            "block": {
                              "id": 23980,
                              "nodeType": "Block",
                              "src": "4378:2:93",
                              "statements": []
                            },
                            "errorName": "",
                            "id": 23981,
                            "nodeType": "TryCatchClause",
                            "parameters": null,
                            "src": "4372:8:93"
                          }
                        ],
                        "externalCall": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 23948,
                                  "name": "aToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23881,
                                  "src": "4073:6:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 23947,
                                "name": "IAToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5667,
                                "src": "4065:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IAToken_$5667_$",
                                  "typeString": "type(contract IAToken)"
                                }
                              },
                              "id": 23949,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4065:15:93",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAToken_$5667",
                                "typeString": "contract IAToken"
                              }
                            },
                            "id": 23950,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getIncentivesController",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5660,
                            "src": "4065:39:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IAaveIncentivesController_$5822_$",
                              "typeString": "function () view external returns (contract IAaveIncentivesController)"
                            }
                          },
                          "id": 23951,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4065:41:93",
                          "tryCall": true,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "id": 23982,
                        "nodeType": "TryStatement",
                        "src": "4061:319:93"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 23986,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23879,
                                  "src": "4411:4:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                ],
                                "id": 23985,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4403:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 23984,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4403:7:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 23987,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4403:13:93",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23988,
                              "name": "aToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23881,
                              "src": "4418:6:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23989,
                              "name": "staticATokenName",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23883,
                              "src": "4426:16:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 23990,
                              "name": "staticATokenSymbol",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23885,
                              "src": "4444:18:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              },
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            ],
                            "id": 23983,
                            "name": "Initialized",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6076,
                            "src": "4391:11:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,string memory,string memory)"
                            }
                          },
                          "id": 23991,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4391:72:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23992,
                        "nodeType": "EmitStatement",
                        "src": "4386:77:93"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 23877,
                    "nodeType": "StructuredDocumentation",
                    "src": "3474:43:93",
                    "text": "@inheritdoc IInitializableStaticATokenLM"
                  },
                  "functionSelector": "362925c2",
                  "id": 23994,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 23891,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 23890,
                        "name": "initializer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15993,
                        "src": "3710:11:93",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3710:11:93"
                    }
                  ],
                  "name": "initialize",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 23889,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3701:8:93"
                  },
                  "parameters": {
                    "id": 23888,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23879,
                        "mutability": "mutable",
                        "name": "pool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23994,
                        "src": "3545:17:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPool_$6466",
                          "typeString": "contract ILendingPool"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 23878,
                          "name": "ILendingPool",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6466,
                          "src": "3545:12:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23881,
                        "mutability": "mutable",
                        "name": "aToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23994,
                        "src": "3568:14:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23880,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3568:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23883,
                        "mutability": "mutable",
                        "name": "staticATokenName",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23994,
                        "src": "3588:32:93",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 23882,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3588:6:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23885,
                        "mutability": "mutable",
                        "name": "staticATokenSymbol",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23994,
                        "src": "3626:34:93",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 23884,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3626:6:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23887,
                        "mutability": "mutable",
                        "name": "l1TokenBridge",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 23994,
                        "src": "3666:21:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23886,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3666:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3539:152:93"
                  },
                  "returnParameters": {
                    "id": 23892,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3722:0:93"
                  },
                  "scope": 25399,
                  "src": "3520:948:93",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7169
                  ],
                  "body": {
                    "id": 24018,
                    "nodeType": "Block",
                    "src": "4655:87:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 24010,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4677:3:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 24011,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4677:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 24012,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23997,
                              "src": "4689:9:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 24013,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23999,
                              "src": "4700:6:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 24014,
                              "name": "referralCode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24001,
                              "src": "4708:12:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 24015,
                              "name": "fromUnderlying",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24003,
                              "src": "4722:14:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 24009,
                            "name": "_deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24590,
                            "src": "4668:8:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint16_$_t_bool_$returns$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint16,bool) returns (uint256)"
                            }
                          },
                          "id": 24016,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4668:69:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 24008,
                        "id": 24017,
                        "nodeType": "Return",
                        "src": "4661:76:93"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 23995,
                    "nodeType": "StructuredDocumentation",
                    "src": "4472:30:93",
                    "text": "@inheritdoc IStaticATokenLM"
                  },
                  "functionSelector": "2f2cab87",
                  "id": 24019,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 24005,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4628:8:93"
                  },
                  "parameters": {
                    "id": 24004,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23997,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24019,
                        "src": "4527:17:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23996,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4527:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23999,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24019,
                        "src": "4550:14:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23998,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4550:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24001,
                        "mutability": "mutable",
                        "name": "referralCode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24019,
                        "src": "4570:19:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 24000,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "4570:6:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24003,
                        "mutability": "mutable",
                        "name": "fromUnderlying",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24019,
                        "src": "4595:19:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 24002,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4595:4:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4521:97:93"
                  },
                  "returnParameters": {
                    "id": 24008,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24007,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24019,
                        "src": "4646:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24006,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4646:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4645:9:93"
                  },
                  "scope": 25399,
                  "src": "4505:237:93",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7183
                  ],
                  "body": {
                    "id": 24043,
                    "nodeType": "Block",
                    "src": "4912:75:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 24035,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4935:3:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 24036,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4935:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 24037,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24022,
                              "src": "4947:9:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 24038,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24024,
                              "src": "4958:6:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 24039,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4966:1:93",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 24040,
                              "name": "toUnderlying",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24026,
                              "src": "4969:12:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 24034,
                            "name": "_withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24726,
                            "src": "4925:9:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256,bool) returns (uint256,uint256)"
                            }
                          },
                          "id": 24041,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4925:57:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 24033,
                        "id": 24042,
                        "nodeType": "Return",
                        "src": "4918:64:93"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 24020,
                    "nodeType": "StructuredDocumentation",
                    "src": "4746:30:93",
                    "text": "@inheritdoc IStaticATokenLM"
                  },
                  "functionSelector": "ead5d359",
                  "id": 24044,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 24028,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4876:8:93"
                  },
                  "parameters": {
                    "id": 24027,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24022,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24044,
                        "src": "4802:17:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24021,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4802:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24024,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24044,
                        "src": "4825:14:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24023,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4825:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24026,
                        "mutability": "mutable",
                        "name": "toUnderlying",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24044,
                        "src": "4845:17:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 24025,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4845:4:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4796:70:93"
                  },
                  "returnParameters": {
                    "id": 24033,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24030,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24044,
                        "src": "4894:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24029,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4894:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24032,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24044,
                        "src": "4903:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24031,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4903:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4893:18:93"
                  },
                  "scope": 25399,
                  "src": "4779:208:93",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7197
                  ],
                  "body": {
                    "id": 24068,
                    "nodeType": "Block",
                    "src": "5170:75:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 24060,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "5193:3:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 24061,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5193:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 24062,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24047,
                              "src": "5205:9:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 24063,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5216:1:93",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 24064,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24049,
                              "src": "5219:6:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 24065,
                              "name": "toUnderlying",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24051,
                              "src": "5227:12:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 24059,
                            "name": "_withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24726,
                            "src": "5183:9:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256,bool) returns (uint256,uint256)"
                            }
                          },
                          "id": 24066,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5183:57:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 24058,
                        "id": 24067,
                        "nodeType": "Return",
                        "src": "5176:64:93"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 24045,
                    "nodeType": "StructuredDocumentation",
                    "src": "4991:30:93",
                    "text": "@inheritdoc IStaticATokenLM"
                  },
                  "functionSelector": "288587ce",
                  "id": 24069,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawDynamicAmount",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 24053,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5134:8:93"
                  },
                  "parameters": {
                    "id": 24052,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24047,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24069,
                        "src": "5060:17:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24046,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5060:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24049,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24069,
                        "src": "5083:14:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24048,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5083:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24051,
                        "mutability": "mutable",
                        "name": "toUnderlying",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24069,
                        "src": "5103:17:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 24050,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5103:4:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5054:70:93"
                  },
                  "returnParameters": {
                    "id": 24058,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24055,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24069,
                        "src": "5152:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24054,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5152:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24057,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24069,
                        "src": "5161:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24056,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5161:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5151:18:93"
                  },
                  "scope": 25399,
                  "src": "5024:221:93",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7215
                  ],
                  "body": {
                    "id": 24164,
                    "nodeType": "Block",
                    "src": "5444:643:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 24094,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 24089,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24072,
                                "src": "5458:5:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 24092,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5475:1:93",
                                    "subdenomination": null,
                                    "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": 24091,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5467:7:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 24090,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5467:7:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 24093,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5467:10:93",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "5458:19:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 24095,
                                "name": "StaticATokenErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17328,
                                "src": "5479:18:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_StaticATokenErrors_$17328_$",
                                  "typeString": "type(library StaticATokenErrors)"
                                }
                              },
                              "id": 24096,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "INVALID_OWNER",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17309,
                              "src": "5479:32:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 24088,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5450:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 24097,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5450:62:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24098,
                        "nodeType": "ExpressionStatement",
                        "src": "5450:62:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 24103,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 24100,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "5557:5:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 24101,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5557:15:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 24102,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24078,
                                "src": "5576:8:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5557:27:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 24104,
                                "name": "StaticATokenErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17328,
                                "src": "5586:18:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_StaticATokenErrors_$17328_$",
                                  "typeString": "type(library StaticATokenErrors)"
                                }
                              },
                              "id": 24105,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "INVALID_EXPIRATION",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17312,
                              "src": "5586:37:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 24099,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5549:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 24106,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5549:75:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24107,
                        "nodeType": "ExpressionStatement",
                        "src": "5549:75:93"
                      },
                      {
                        "assignments": [
                          24109
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24109,
                            "mutability": "mutable",
                            "name": "currentValidNonce",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 24164,
                            "src": "5630:25:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 24108,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5630:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24113,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 24110,
                            "name": "_nonces",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23856,
                            "src": "5658:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 24112,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 24111,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24072,
                            "src": "5666:5:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5658:14:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5630:42:93"
                      },
                      {
                        "assignments": [
                          24115
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24115,
                            "mutability": "mutable",
                            "name": "digest",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 24164,
                            "src": "5678:14:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 24114,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "5678:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24135,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "1901",
                                  "id": 24119,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5748:10:93",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string \"\u0019\u0001\""
                                  },
                                  "value": "\u0019\u0001"
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 24120,
                                    "name": "getDomainSeparator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24477,
                                    "src": "5770:18:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                                      "typeString": "function () view returns (bytes32)"
                                    }
                                  },
                                  "id": 24121,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5770:20:93",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 24125,
                                          "name": "PERMIT_TYPEHASH",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23824,
                                          "src": "5823:15:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 24126,
                                          "name": "owner",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24072,
                                          "src": "5840:5:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 24127,
                                          "name": "spender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24074,
                                          "src": "5847:7:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 24128,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24076,
                                          "src": "5856:5:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 24129,
                                          "name": "currentValidNonce",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24109,
                                          "src": "5863:17:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 24130,
                                          "name": "deadline",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24078,
                                          "src": "5882:8:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 24123,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "5812:3:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 24124,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encode",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "5812:10:93",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 24131,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5812:79:93",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 24122,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "5802:9:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 24132,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5802:90:93",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string \"\u0019\u0001\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 24117,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "5720:3:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24118,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5720:16:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 24133,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5720:182:93",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24116,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "5701:9:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 24134,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5701:209:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5678:232:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 24144,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 24137,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24072,
                                "src": "5924:5:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 24139,
                                    "name": "digest",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24115,
                                    "src": "5943:6:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 24140,
                                    "name": "v",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24080,
                                    "src": "5951:1:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 24141,
                                    "name": "r",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24082,
                                    "src": "5954:1:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 24142,
                                    "name": "s",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24084,
                                    "src": "5957:1:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 24138,
                                  "name": "ecrecover",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -6,
                                  "src": "5933:9:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                                    "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                                  }
                                },
                                "id": 24143,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5933:26:93",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "5924:35:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 24145,
                                "name": "StaticATokenErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17328,
                                "src": "5961:18:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_StaticATokenErrors_$17328_$",
                                  "typeString": "type(library StaticATokenErrors)"
                                }
                              },
                              "id": 24146,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "INVALID_SIGNATURE",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17315,
                              "src": "5961:36:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 24136,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5916:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 24147,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5916:82:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24148,
                        "nodeType": "ExpressionStatement",
                        "src": "5916:82:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 24156,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 24149,
                              "name": "_nonces",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23856,
                              "src": "6004:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 24151,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 24150,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24072,
                              "src": "6012:5:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6004:14:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 24154,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6043:1:93",
                                "subdenomination": null,
                                "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"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 24152,
                                "name": "currentValidNonce",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24109,
                                "src": "6021:17:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 24153,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4329,
                              "src": "6021:21:93",
                              "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": 24155,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6021:24:93",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6004:41:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 24157,
                        "nodeType": "ExpressionStatement",
                        "src": "6004:41:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 24159,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24072,
                              "src": "6060:5:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 24160,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24074,
                              "src": "6067:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 24161,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24076,
                              "src": "6076:5:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 24158,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3911,
                            "src": "6051:8:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 24162,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6051:31:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24163,
                        "nodeType": "ExpressionStatement",
                        "src": "6051:31:93"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 24070,
                    "nodeType": "StructuredDocumentation",
                    "src": "5249:30:93",
                    "text": "@inheritdoc IStaticATokenLM"
                  },
                  "functionSelector": "d505accf",
                  "id": 24165,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "permit",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 24086,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5435:8:93"
                  },
                  "parameters": {
                    "id": 24085,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24072,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24165,
                        "src": "5303:13:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24071,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5303:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24074,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24165,
                        "src": "5322:15:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24073,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5322:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24076,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24165,
                        "src": "5343:13:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24075,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5343:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24078,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24165,
                        "src": "5362:16:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24077,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5362:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24080,
                        "mutability": "mutable",
                        "name": "v",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24165,
                        "src": "5384:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 24079,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "5384:5:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24082,
                        "mutability": "mutable",
                        "name": "r",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24165,
                        "src": "5397:9:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 24081,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5397:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24084,
                        "mutability": "mutable",
                        "name": "s",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24165,
                        "src": "5412:9:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 24083,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5412:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5297:128:93"
                  },
                  "returnParameters": {
                    "id": 24087,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5444:0:93"
                  },
                  "scope": 25399,
                  "src": "5282:805:93",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7235
                  ],
                  "body": {
                    "id": 24269,
                    "nodeType": "Block",
                    "src": "6362:945:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 24192,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 24187,
                                "name": "depositor",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24168,
                                "src": "6376:9:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 24190,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6397:1:93",
                                    "subdenomination": null,
                                    "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": 24189,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6389:7:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 24188,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6389:7:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 24191,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6389:10:93",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6376:23:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 24193,
                                "name": "StaticATokenErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17328,
                                "src": "6401:18:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_StaticATokenErrors_$17328_$",
                                  "typeString": "type(library StaticATokenErrors)"
                                }
                              },
                              "id": 24194,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "INVALID_DEPOSITOR",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17318,
                              "src": "6401:36:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 24186,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6368:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 24195,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6368:70:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24196,
                        "nodeType": "ExpressionStatement",
                        "src": "6368:70:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 24201,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 24198,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "6483:5:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 24199,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6483:15:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 24200,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24178,
                                "src": "6502:8:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6483:27:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 24202,
                                "name": "StaticATokenErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17328,
                                "src": "6512:18:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_StaticATokenErrors_$17328_$",
                                  "typeString": "type(library StaticATokenErrors)"
                                }
                              },
                              "id": 24203,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "INVALID_EXPIRATION",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17312,
                              "src": "6512:37:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 24197,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6475:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 24204,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6475:75:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24205,
                        "nodeType": "ExpressionStatement",
                        "src": "6475:75:93"
                      },
                      {
                        "assignments": [
                          24207
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24207,
                            "mutability": "mutable",
                            "name": "currentValidNonce",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 24269,
                            "src": "6556:25:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 24206,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6556:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24211,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 24208,
                            "name": "_nonces",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23856,
                            "src": "6584:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 24210,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 24209,
                            "name": "depositor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24168,
                            "src": "6592:9:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6584:18:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6556:46:93"
                      },
                      {
                        "assignments": [
                          24213
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24213,
                            "mutability": "mutable",
                            "name": "digest",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 24269,
                            "src": "6608:14:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 24212,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "6608:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24235,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "1901",
                                  "id": 24217,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6678:10:93",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string \"\u0019\u0001\""
                                  },
                                  "value": "\u0019\u0001"
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 24218,
                                    "name": "getDomainSeparator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24477,
                                    "src": "6700:18:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                                      "typeString": "function () view returns (bytes32)"
                                    }
                                  },
                                  "id": 24219,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6700:20:93",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 24223,
                                          "name": "METADEPOSIT_TYPEHASH",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23829,
                                          "src": "6781:20:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 24224,
                                          "name": "depositor",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24168,
                                          "src": "6817:9:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 24225,
                                          "name": "recipient",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24170,
                                          "src": "6842:9:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 24226,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24172,
                                          "src": "6867:5:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 24227,
                                          "name": "referralCode",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24174,
                                          "src": "6888:12:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 24228,
                                          "name": "fromUnderlying",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24176,
                                          "src": "6916:14:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 24229,
                                          "name": "currentValidNonce",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24207,
                                          "src": "6946:17:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 24230,
                                          "name": "deadline",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24178,
                                          "src": "6979:8:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          },
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 24221,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "6755:3:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 24222,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encode",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "6755:10:93",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 24231,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6755:246:93",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 24220,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "6732:9:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 24232,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6732:281:93",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string \"\u0019\u0001\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 24215,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "6650:3:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24216,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6650:16:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 24233,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6650:373:93",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24214,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "6631:9:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 24234,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6631:400:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6608:423:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 24247,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 24237,
                                "name": "depositor",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24168,
                                "src": "7052:9:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 24239,
                                    "name": "digest",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24213,
                                    "src": "7075:6:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 24240,
                                      "name": "sigParams",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24180,
                                      "src": "7083:9:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SignatureParams_$7155_calldata_ptr",
                                        "typeString": "struct IStaticATokenLM.SignatureParams calldata"
                                      }
                                    },
                                    "id": 24241,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "v",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7150,
                                    "src": "7083:11:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 24242,
                                      "name": "sigParams",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24180,
                                      "src": "7096:9:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SignatureParams_$7155_calldata_ptr",
                                        "typeString": "struct IStaticATokenLM.SignatureParams calldata"
                                      }
                                    },
                                    "id": 24243,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "r",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7152,
                                    "src": "7096:11:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 24244,
                                      "name": "sigParams",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24180,
                                      "src": "7109:9:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SignatureParams_$7155_calldata_ptr",
                                        "typeString": "struct IStaticATokenLM.SignatureParams calldata"
                                      }
                                    },
                                    "id": 24245,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "s",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7154,
                                    "src": "7109:11:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 24238,
                                  "name": "ecrecover",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -6,
                                  "src": "7065:9:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                                    "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                                  }
                                },
                                "id": 24246,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7065:56:93",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "7052:69:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 24248,
                                "name": "StaticATokenErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17328,
                                "src": "7129:18:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_StaticATokenErrors_$17328_$",
                                  "typeString": "type(library StaticATokenErrors)"
                                }
                              },
                              "id": 24249,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "INVALID_SIGNATURE",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17315,
                              "src": "7129:36:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 24236,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7037:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 24250,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7037:134:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24251,
                        "nodeType": "ExpressionStatement",
                        "src": "7037:134:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 24259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 24252,
                              "name": "_nonces",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23856,
                              "src": "7177:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 24254,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 24253,
                              "name": "depositor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24168,
                              "src": "7185:9:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7177:18:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 24257,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7220:1:93",
                                "subdenomination": null,
                                "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"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 24255,
                                "name": "currentValidNonce",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24207,
                                "src": "7198:17:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 24256,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4329,
                              "src": "7198:21:93",
                              "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": 24258,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7198:24:93",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7177:45:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 24260,
                        "nodeType": "ExpressionStatement",
                        "src": "7177:45:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 24262,
                              "name": "depositor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24168,
                              "src": "7244:9:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 24263,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24170,
                              "src": "7255:9:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 24264,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24172,
                              "src": "7266:5:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 24265,
                              "name": "referralCode",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24174,
                              "src": "7273:12:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 24266,
                              "name": "fromUnderlying",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24176,
                              "src": "7287:14:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 24261,
                            "name": "_deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24590,
                            "src": "7235:8:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint16_$_t_bool_$returns$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint16,bool) returns (uint256)"
                            }
                          },
                          "id": 24267,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7235:67:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 24185,
                        "id": 24268,
                        "nodeType": "Return",
                        "src": "7228:74:93"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 24166,
                    "nodeType": "StructuredDocumentation",
                    "src": "6091:30:93",
                    "text": "@inheritdoc IStaticATokenLM"
                  },
                  "functionSelector": "c485852b",
                  "id": 24270,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "metaDeposit",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 24182,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6335:8:93"
                  },
                  "parameters": {
                    "id": 24181,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24168,
                        "mutability": "mutable",
                        "name": "depositor",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24270,
                        "src": "6150:17:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24167,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6150:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24170,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24270,
                        "src": "6173:17:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24169,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6173:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24172,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24270,
                        "src": "6196:13:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24171,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6196:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24174,
                        "mutability": "mutable",
                        "name": "referralCode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24270,
                        "src": "6215:19:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 24173,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "6215:6:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24176,
                        "mutability": "mutable",
                        "name": "fromUnderlying",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24270,
                        "src": "6240:19:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 24175,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6240:4:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24178,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24270,
                        "src": "6265:16:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24177,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6265:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24180,
                        "mutability": "mutable",
                        "name": "sigParams",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24270,
                        "src": "6287:34:93",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SignatureParams_$7155_calldata_ptr",
                          "typeString": "struct IStaticATokenLM.SignatureParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 24179,
                          "name": "SignatureParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 7155,
                          "src": "6287:15:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SignatureParams_$7155_storage_ptr",
                            "typeString": "struct IStaticATokenLM.SignatureParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6144:181:93"
                  },
                  "returnParameters": {
                    "id": 24185,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24184,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24270,
                        "src": "6353:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24183,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6353:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6352:9:93"
                  },
                  "scope": 25399,
                  "src": "6124:1183:93",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7257
                  ],
                  "body": {
                    "id": 24376,
                    "nodeType": "Block",
                    "src": "7595:934:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 24299,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 24294,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24273,
                                "src": "7609:5:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 24297,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7626:1:93",
                                    "subdenomination": null,
                                    "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": 24296,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7618:7:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 24295,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7618:7:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 24298,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7618:10:93",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "7609:19:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 24300,
                                "name": "StaticATokenErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17328,
                                "src": "7630:18:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_StaticATokenErrors_$17328_$",
                                  "typeString": "type(library StaticATokenErrors)"
                                }
                              },
                              "id": 24301,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "INVALID_OWNER",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17309,
                              "src": "7630:32:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 24293,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7601:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 24302,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7601:62:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24303,
                        "nodeType": "ExpressionStatement",
                        "src": "7601:62:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 24308,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 24305,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "7708:5:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 24306,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "7708:15:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 24307,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24283,
                                "src": "7727:8:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7708:27:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 24309,
                                "name": "StaticATokenErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17328,
                                "src": "7737:18:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_StaticATokenErrors_$17328_$",
                                  "typeString": "type(library StaticATokenErrors)"
                                }
                              },
                              "id": 24310,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "INVALID_EXPIRATION",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17312,
                              "src": "7737:37:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 24304,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7700:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 24311,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7700:75:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24312,
                        "nodeType": "ExpressionStatement",
                        "src": "7700:75:93"
                      },
                      {
                        "assignments": [
                          24314
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24314,
                            "mutability": "mutable",
                            "name": "currentValidNonce",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 24376,
                            "src": "7781:25:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 24313,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7781:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24318,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 24315,
                            "name": "_nonces",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23856,
                            "src": "7809:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 24317,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 24316,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24273,
                            "src": "7817:5:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7809:14:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7781:42:93"
                      },
                      {
                        "assignments": [
                          24320
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24320,
                            "mutability": "mutable",
                            "name": "digest",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 24376,
                            "src": "7829:14:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 24319,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "7829:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24342,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "1901",
                                  "id": 24324,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7899:10:93",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string \"\u0019\u0001\""
                                  },
                                  "value": "\u0019\u0001"
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 24325,
                                    "name": "getDomainSeparator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24477,
                                    "src": "7921:18:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                                      "typeString": "function () view returns (bytes32)"
                                    }
                                  },
                                  "id": 24326,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7921:20:93",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 24330,
                                          "name": "METAWITHDRAWAL_TYPEHASH",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23834,
                                          "src": "8002:23:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 24331,
                                          "name": "owner",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24273,
                                          "src": "8041:5:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 24332,
                                          "name": "recipient",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24275,
                                          "src": "8062:9:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 24333,
                                          "name": "staticAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24277,
                                          "src": "8087:12:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 24334,
                                          "name": "dynamicAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24279,
                                          "src": "8115:13:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 24335,
                                          "name": "toUnderlying",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24281,
                                          "src": "8144:12:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 24336,
                                          "name": "currentValidNonce",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24314,
                                          "src": "8172:17:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 24337,
                                          "name": "deadline",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24283,
                                          "src": "8205:8:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 24328,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "7976:3:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 24329,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encode",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "7976:10:93",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 24338,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7976:251:93",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 24327,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "7953:9:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 24339,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7953:286:93",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string \"\u0019\u0001\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 24322,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "7871:3:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24323,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "7871:16:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 24340,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7871:378:93",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24321,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "7852:9:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 24341,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7852:405:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7829:428:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 24354,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 24344,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24273,
                                "src": "8279:5:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 24346,
                                    "name": "digest",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24320,
                                    "src": "8298:6:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 24347,
                                      "name": "sigParams",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24285,
                                      "src": "8306:9:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SignatureParams_$7155_calldata_ptr",
                                        "typeString": "struct IStaticATokenLM.SignatureParams calldata"
                                      }
                                    },
                                    "id": 24348,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "v",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7150,
                                    "src": "8306:11:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 24349,
                                      "name": "sigParams",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24285,
                                      "src": "8319:9:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SignatureParams_$7155_calldata_ptr",
                                        "typeString": "struct IStaticATokenLM.SignatureParams calldata"
                                      }
                                    },
                                    "id": 24350,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "r",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7152,
                                    "src": "8319:11:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 24351,
                                      "name": "sigParams",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24285,
                                      "src": "8332:9:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SignatureParams_$7155_calldata_ptr",
                                        "typeString": "struct IStaticATokenLM.SignatureParams calldata"
                                      }
                                    },
                                    "id": 24352,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "s",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7154,
                                    "src": "8332:11:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 24345,
                                  "name": "ecrecover",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -6,
                                  "src": "8288:9:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                                    "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                                  }
                                },
                                "id": 24353,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8288:56:93",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "8279:65:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 24355,
                                "name": "StaticATokenErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17328,
                                "src": "8352:18:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_StaticATokenErrors_$17328_$",
                                  "typeString": "type(library StaticATokenErrors)"
                                }
                              },
                              "id": 24356,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "INVALID_SIGNATURE",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17315,
                              "src": "8352:36:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 24343,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8264:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 24357,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8264:130:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24358,
                        "nodeType": "ExpressionStatement",
                        "src": "8264:130:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 24366,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 24359,
                              "name": "_nonces",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23856,
                              "src": "8400:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 24361,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 24360,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24273,
                              "src": "8408:5:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8400:14:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 24364,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8439:1:93",
                                "subdenomination": null,
                                "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"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 24362,
                                "name": "currentValidNonce",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24314,
                                "src": "8417:17:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 24363,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4329,
                              "src": "8417:21:93",
                              "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": 24365,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8417:24:93",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8400:41:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 24367,
                        "nodeType": "ExpressionStatement",
                        "src": "8400:41:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 24369,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24273,
                              "src": "8464:5:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 24370,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24275,
                              "src": "8471:9:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 24371,
                              "name": "staticAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24277,
                              "src": "8482:12:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 24372,
                              "name": "dynamicAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24279,
                              "src": "8496:13:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 24373,
                              "name": "toUnderlying",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24281,
                              "src": "8511:12:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 24368,
                            "name": "_withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24726,
                            "src": "8454:9:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256,bool) returns (uint256,uint256)"
                            }
                          },
                          "id": 24374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8454:70:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 24292,
                        "id": 24375,
                        "nodeType": "Return",
                        "src": "8447:77:93"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 24271,
                    "nodeType": "StructuredDocumentation",
                    "src": "7311:30:93",
                    "text": "@inheritdoc IStaticATokenLM"
                  },
                  "functionSelector": "60266557",
                  "id": 24377,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "metaWithdraw",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 24287,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7559:8:93"
                  },
                  "parameters": {
                    "id": 24286,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24273,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24377,
                        "src": "7371:13:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24272,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7371:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24275,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24377,
                        "src": "7390:17:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24274,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7390:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24277,
                        "mutability": "mutable",
                        "name": "staticAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24377,
                        "src": "7413:20:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24276,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7413:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24279,
                        "mutability": "mutable",
                        "name": "dynamicAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24377,
                        "src": "7439:21:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24278,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7439:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24281,
                        "mutability": "mutable",
                        "name": "toUnderlying",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24377,
                        "src": "7466:17:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 24280,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7466:4:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24283,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24377,
                        "src": "7489:16:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24282,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7489:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24285,
                        "mutability": "mutable",
                        "name": "sigParams",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24377,
                        "src": "7511:34:93",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SignatureParams_$7155_calldata_ptr",
                          "typeString": "struct IStaticATokenLM.SignatureParams"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 24284,
                          "name": "SignatureParams",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 7155,
                          "src": "7511:15:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SignatureParams_$7155_storage_ptr",
                            "typeString": "struct IStaticATokenLM.SignatureParams"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7365:184:93"
                  },
                  "returnParameters": {
                    "id": 24292,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24289,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24377,
                        "src": "7577:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24288,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7577:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24291,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24377,
                        "src": "7586:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24290,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7586:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7576:18:93"
                  },
                  "scope": 25399,
                  "src": "7344:1185:93",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7265
                  ],
                  "body": {
                    "id": 24394,
                    "nodeType": "Block",
                    "src": "8650:68:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 24388,
                                  "name": "account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24380,
                                  "src": "8696:7:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 24387,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3534,
                                "src": "8686:9:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view returns (uint256)"
                                }
                              },
                              "id": 24389,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8686:18:93",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 24390,
                                "name": "rate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24443,
                                "src": "8706:4:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view returns (uint256)"
                                }
                              },
                              "id": 24391,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8706:6:93",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 24386,
                            "name": "_staticToDynamicAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24507,
                            "src": "8663:22:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 24392,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8663:50:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 24385,
                        "id": 24393,
                        "nodeType": "Return",
                        "src": "8656:57:93"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 24378,
                    "nodeType": "StructuredDocumentation",
                    "src": "8533:30:93",
                    "text": "@inheritdoc IStaticATokenLM"
                  },
                  "functionSelector": "44b68c3f",
                  "id": 24395,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "dynamicBalanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 24382,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8623:8:93"
                  },
                  "parameters": {
                    "id": 24381,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24380,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24395,
                        "src": "8592:15:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24379,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8592:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8591:17:93"
                  },
                  "returnParameters": {
                    "id": 24385,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24384,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24395,
                        "src": "8641:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24383,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8641:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8640:9:93"
                  },
                  "scope": 25399,
                  "src": "8566:152:93",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7273
                  ],
                  "body": {
                    "id": 24410,
                    "nodeType": "Block",
                    "src": "8843:56:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 24405,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24398,
                              "src": "8879:6:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 24406,
                                "name": "rate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24443,
                                "src": "8887:4:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view returns (uint256)"
                                }
                              },
                              "id": 24407,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8887:6:93",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 24404,
                            "name": "_staticToDynamicAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24507,
                            "src": "8856:22:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 24408,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8856:38:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 24403,
                        "id": 24409,
                        "nodeType": "Return",
                        "src": "8849:45:93"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 24396,
                    "nodeType": "StructuredDocumentation",
                    "src": "8722:30:93",
                    "text": "@inheritdoc IStaticATokenLM"
                  },
                  "functionSelector": "f57d0b40",
                  "id": 24411,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "staticToDynamicAmount",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 24400,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8816:8:93"
                  },
                  "parameters": {
                    "id": 24399,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24398,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24411,
                        "src": "8786:14:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24397,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8786:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8785:16:93"
                  },
                  "returnParameters": {
                    "id": 24403,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24402,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24411,
                        "src": "8834:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24401,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8834:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8833:9:93"
                  },
                  "scope": 25399,
                  "src": "8755:144:93",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7281
                  ],
                  "body": {
                    "id": 24426,
                    "nodeType": "Block",
                    "src": "9024:56:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 24421,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24414,
                              "src": "9060:6:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 24422,
                                "name": "rate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24443,
                                "src": "9068:4:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view returns (uint256)"
                                }
                              },
                              "id": 24423,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9068:6:93",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 24420,
                            "name": "_dynamicToStaticAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24492,
                            "src": "9037:22:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 24424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9037:38:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 24419,
                        "id": 24425,
                        "nodeType": "Return",
                        "src": "9030:45:93"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 24412,
                    "nodeType": "StructuredDocumentation",
                    "src": "8903:30:93",
                    "text": "@inheritdoc IStaticATokenLM"
                  },
                  "functionSelector": "36a5a6d6",
                  "id": 24427,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "dynamicToStaticAmount",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 24416,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8997:8:93"
                  },
                  "parameters": {
                    "id": 24415,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24414,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24427,
                        "src": "8967:14:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24413,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8967:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8966:16:93"
                  },
                  "returnParameters": {
                    "id": 24419,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24418,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24427,
                        "src": "9015:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24417,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9015:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9014:9:93"
                  },
                  "scope": 25399,
                  "src": "8936:144:93",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7287
                  ],
                  "body": {
                    "id": 24442,
                    "nodeType": "Block",
                    "src": "9172:73:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 24438,
                                  "name": "ASSET",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23849,
                                  "src": "9233:5:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$4012",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$4012",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 24437,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9225:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 24436,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9225:7:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 24439,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9225:14:93",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 24434,
                              "name": "LENDING_POOL",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23840,
                              "src": "9185:12:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                "typeString": "contract ILendingPool"
                              }
                            },
                            "id": 24435,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getReserveNormalizedIncome",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6413,
                            "src": "9185:39:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 24440,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9185:55:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 24433,
                        "id": 24441,
                        "nodeType": "Return",
                        "src": "9178:62:93"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 24428,
                    "nodeType": "StructuredDocumentation",
                    "src": "9084:30:93",
                    "text": "@inheritdoc IStaticATokenLM"
                  },
                  "functionSelector": "2c4e722e",
                  "id": 24443,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "rate",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 24430,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9145:8:93"
                  },
                  "parameters": {
                    "id": 24429,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9130:2:93"
                  },
                  "returnParameters": {
                    "id": 24433,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24432,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24443,
                        "src": "9163:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24431,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9163:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9162:9:93"
                  },
                  "scope": 25399,
                  "src": "9117:128:93",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7293
                  ],
                  "body": {
                    "id": 24476,
                    "nodeType": "Block",
                    "src": "9351:283:93",
                    "statements": [
                      {
                        "assignments": [
                          24451
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24451,
                            "mutability": "mutable",
                            "name": "chainId",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 24476,
                            "src": "9357:15:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 24450,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9357:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24452,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9357:15:93"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "9387:34:93",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9395:20:93",
                              "value": {
                                "arguments": [],
                                "functionName": {
                                  "name": "chainid",
                                  "nodeType": "YulIdentifier",
                                  "src": "9406:7:93"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9406:9:93"
                              },
                              "variableNames": [
                                {
                                  "name": "chainId",
                                  "nodeType": "YulIdentifier",
                                  "src": "9395:7:93"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 24451,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9395:7:93",
                            "valueSize": 1
                          }
                        ],
                        "id": 24453,
                        "nodeType": "InlineAssembly",
                        "src": "9378:43:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 24457,
                                  "name": "EIP712_DOMAIN",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23819,
                                  "src": "9480:13:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "id": 24461,
                                            "name": "name",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3492,
                                            "src": "9521:4:93",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$",
                                              "typeString": "function () view returns (string memory)"
                                            }
                                          },
                                          "id": 24462,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "9521:6:93",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        ],
                                        "id": 24460,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "9515:5:93",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                          "typeString": "type(bytes storage pointer)"
                                        },
                                        "typeName": {
                                          "id": 24459,
                                          "name": "bytes",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "9515:5:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 24463,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9515:13:93",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 24458,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "9505:9:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 24464,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9505:24:93",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 24466,
                                      "name": "EIP712_REVISION",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23814,
                                      "src": "9551:15:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 24465,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "9541:9:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 24467,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9541:26:93",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 24468,
                                  "name": "chainId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24451,
                                  "src": "9579:7:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 24471,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "9606:4:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_StaticATokenLM_$25399",
                                        "typeString": "contract StaticATokenLM"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_StaticATokenLM_$25399",
                                        "typeString": "contract StaticATokenLM"
                                      }
                                    ],
                                    "id": 24470,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "9598:7:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 24469,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "9598:7:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 24472,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9598:13:93",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 24455,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "9458:3:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24456,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "9458:10:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 24473,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9458:163:93",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24454,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "9439:9:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 24474,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9439:190:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 24449,
                        "id": 24475,
                        "nodeType": "Return",
                        "src": "9426:203:93"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 24444,
                    "nodeType": "StructuredDocumentation",
                    "src": "9249:30:93",
                    "text": "@inheritdoc IStaticATokenLM"
                  },
                  "functionSelector": "ed24911d",
                  "id": 24477,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getDomainSeparator",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 24446,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9324:8:93"
                  },
                  "parameters": {
                    "id": 24445,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9309:2:93"
                  },
                  "returnParameters": {
                    "id": 24449,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24448,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24477,
                        "src": "9342:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 24447,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "9342:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9341:9:93"
                  },
                  "scope": 25399,
                  "src": "9282:352:93",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 24491,
                    "nodeType": "Block",
                    "src": "9732:37:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 24488,
                              "name": "rate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24481,
                              "src": "9759:4:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 24486,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24479,
                              "src": "9745:6:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 24487,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayDiv",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20432,
                            "src": "9745:13:93",
                            "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": 24489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9745:19:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 24485,
                        "id": 24490,
                        "nodeType": "Return",
                        "src": "9738:26:93"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 24492,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_dynamicToStaticAmount",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 24482,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24479,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24492,
                        "src": "9670:14:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24478,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9670:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24481,
                        "mutability": "mutable",
                        "name": "rate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24492,
                        "src": "9686:12:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24480,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9686:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9669:30:93"
                  },
                  "returnParameters": {
                    "id": 24485,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24484,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24492,
                        "src": "9723:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24483,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9723:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9722:9:93"
                  },
                  "scope": 25399,
                  "src": "9638:131:93",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24506,
                    "nodeType": "Block",
                    "src": "9867:37:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 24503,
                              "name": "rate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24496,
                              "src": "9894:4:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 24501,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24494,
                              "src": "9880:6:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 24502,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayMul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20381,
                            "src": "9880:13:93",
                            "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": 24504,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9880:19:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 24500,
                        "id": 24505,
                        "nodeType": "Return",
                        "src": "9873:26:93"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 24507,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_staticToDynamicAmount",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 24497,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24494,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24507,
                        "src": "9805:14:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24493,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9805:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24496,
                        "mutability": "mutable",
                        "name": "rate",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24507,
                        "src": "9821:12:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24495,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9821:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9804:30:93"
                  },
                  "returnParameters": {
                    "id": 24500,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24499,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24507,
                        "src": "9858:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24498,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9858:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9857:9:93"
                  },
                  "scope": 25399,
                  "src": "9773:131:93",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24589,
                    "nodeType": "Block",
                    "src": "10073:466:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 24528,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 24523,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24511,
                                "src": "10087:9:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 24526,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10108:1:93",
                                    "subdenomination": null,
                                    "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": 24525,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10100:7:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 24524,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10100:7:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 24527,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10100:10:93",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "10087:23:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 24529,
                                "name": "StaticATokenErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17328,
                                "src": "10112:18:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_StaticATokenErrors_$17328_$",
                                  "typeString": "type(library StaticATokenErrors)"
                                }
                              },
                              "id": 24530,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "INVALID_RECIPIENT",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17321,
                              "src": "10112:36:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 24522,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10079:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 24531,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10079:70:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24532,
                        "nodeType": "ExpressionStatement",
                        "src": "10079:70:93"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 24533,
                          "name": "fromUnderlying",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24517,
                          "src": "10160:14:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 24572,
                          "nodeType": "Block",
                          "src": "10334:72:93",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 24564,
                                    "name": "depositor",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24509,
                                    "src": "10366:9:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 24567,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "10385:4:93",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_StaticATokenLM_$25399",
                                          "typeString": "contract StaticATokenLM"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_StaticATokenLM_$25399",
                                          "typeString": "contract StaticATokenLM"
                                        }
                                      ],
                                      "id": 24566,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "10377:7:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 24565,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10377:7:93",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 24568,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10377:13:93",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 24569,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24513,
                                    "src": "10392:6:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 24561,
                                    "name": "ATOKEN",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23846,
                                    "src": "10342:6:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$4012",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 24563,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransferFrom",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4205,
                                  "src": "10342:23:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                                    "typeString": "function (contract IERC20,address,address,uint256)"
                                  }
                                },
                                "id": 24570,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10342:57:93",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 24571,
                              "nodeType": "ExpressionStatement",
                              "src": "10342:57:93"
                            }
                          ]
                        },
                        "id": 24573,
                        "nodeType": "IfStatement",
                        "src": "10156:250:93",
                        "trueBody": {
                          "id": 24560,
                          "nodeType": "Block",
                          "src": "10176:152:93",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 24537,
                                    "name": "depositor",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24509,
                                    "src": "10207:9:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 24540,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "10226:4:93",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_StaticATokenLM_$25399",
                                          "typeString": "contract StaticATokenLM"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_StaticATokenLM_$25399",
                                          "typeString": "contract StaticATokenLM"
                                        }
                                      ],
                                      "id": 24539,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "10218:7:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 24538,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10218:7:93",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 24541,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10218:13:93",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 24542,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24513,
                                    "src": "10233:6:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 24534,
                                    "name": "ASSET",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23849,
                                    "src": "10184:5:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$4012",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 24536,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransferFrom",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4205,
                                  "src": "10184:22:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                                    "typeString": "function (contract IERC20,address,address,uint256)"
                                  }
                                },
                                "id": 24543,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10184:56:93",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 24544,
                              "nodeType": "ExpressionStatement",
                              "src": "10184:56:93"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 24550,
                                        "name": "ASSET",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23849,
                                        "src": "10277:5:93",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20_$4012",
                                          "typeString": "contract IERC20"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_IERC20_$4012",
                                          "typeString": "contract IERC20"
                                        }
                                      ],
                                      "id": 24549,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "10269:7:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 24548,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10269:7:93",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 24551,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10269:14:93",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 24552,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24513,
                                    "src": "10285:6:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 24555,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "10301:4:93",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_StaticATokenLM_$25399",
                                          "typeString": "contract StaticATokenLM"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_StaticATokenLM_$25399",
                                          "typeString": "contract StaticATokenLM"
                                        }
                                      ],
                                      "id": 24554,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "10293:7:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 24553,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10293:7:93",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 24556,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10293:13:93",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 24557,
                                    "name": "referralCode",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24515,
                                    "src": "10308:12:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 24545,
                                    "name": "LENDING_POOL",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23840,
                                    "src": "10248:12:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                      "typeString": "contract ILendingPool"
                                    }
                                  },
                                  "id": 24547,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "deposit",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6245,
                                  "src": "10248:20:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint16_$returns$__$",
                                    "typeString": "function (address,uint256,address,uint16) external"
                                  }
                                },
                                "id": 24558,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10248:73:93",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 24559,
                              "nodeType": "ExpressionStatement",
                              "src": "10248:73:93"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          24575
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24575,
                            "mutability": "mutable",
                            "name": "amountToMint",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 24589,
                            "src": "10411:20:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 24574,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10411:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24581,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 24577,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24513,
                              "src": "10457:6:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 24578,
                                "name": "rate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24443,
                                "src": "10465:4:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view returns (uint256)"
                                }
                              },
                              "id": 24579,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10465:6:93",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 24576,
                            "name": "_dynamicToStaticAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24492,
                            "src": "10434:22:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 24580,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10434:38:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10411:61:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 24583,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24511,
                              "src": "10484:9:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 24584,
                              "name": "amountToMint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24575,
                              "src": "10495:12:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 24582,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3810,
                            "src": "10478:5:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 24585,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10478:30:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24586,
                        "nodeType": "ExpressionStatement",
                        "src": "10478:30:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 24587,
                          "name": "amountToMint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24575,
                          "src": "10522:12:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 24521,
                        "id": 24588,
                        "nodeType": "Return",
                        "src": "10515:19:93"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 24590,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_deposit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 24518,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24509,
                        "mutability": "mutable",
                        "name": "depositor",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24590,
                        "src": "9931:17:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24508,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9931:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24511,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24590,
                        "src": "9954:17:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24510,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9954:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24513,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24590,
                        "src": "9977:14:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24512,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9977:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24515,
                        "mutability": "mutable",
                        "name": "referralCode",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24590,
                        "src": "9997:19:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 24514,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "9997:6:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24517,
                        "mutability": "mutable",
                        "name": "fromUnderlying",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24590,
                        "src": "10022:19:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 24516,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "10022:4:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9925:120:93"
                  },
                  "returnParameters": {
                    "id": 24521,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24520,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24590,
                        "src": "10064:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24519,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10064:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10063:9:93"
                  },
                  "scope": 25399,
                  "src": "9908:631:93",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24725,
                    "nodeType": "Block",
                    "src": "10720:1058:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 24613,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 24608,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24594,
                                "src": "10734:9:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 24611,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10755:1:93",
                                    "subdenomination": null,
                                    "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": 24610,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10747:7:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 24609,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10747:7:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 24612,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10747:10:93",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "10734:23:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 24614,
                                "name": "StaticATokenErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17328,
                                "src": "10759:18:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_StaticATokenErrors_$17328_$",
                                  "typeString": "type(library StaticATokenErrors)"
                                }
                              },
                              "id": 24615,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "INVALID_RECIPIENT",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17321,
                              "src": "10759:36:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 24607,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10726:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 24616,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10726:70:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24617,
                        "nodeType": "ExpressionStatement",
                        "src": "10726:70:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 24625,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 24621,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 24619,
                                  "name": "staticAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24596,
                                  "src": "10817:12:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 24620,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10833:1:93",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "10817:17:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 24624,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 24622,
                                  "name": "dynamicAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24598,
                                  "src": "10838:13:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 24623,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10855:1:93",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "10838:18:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "10817:39:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 24626,
                                "name": "StaticATokenErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17328,
                                "src": "10864:18:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_StaticATokenErrors_$17328_$",
                                  "typeString": "type(library StaticATokenErrors)"
                                }
                              },
                              "id": 24627,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "ONLY_ONE_AMOUNT_FORMAT_ALLOWED",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17327,
                              "src": "10864:49:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 24618,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10802:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 24628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10802:117:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24629,
                        "nodeType": "ExpressionStatement",
                        "src": "10802:117:93"
                      },
                      {
                        "assignments": [
                          24631
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24631,
                            "mutability": "mutable",
                            "name": "userBalance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 24725,
                            "src": "10926:19:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 24630,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10926:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24635,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 24633,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24592,
                              "src": "10958:5:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 24632,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3534,
                            "src": "10948:9:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 24634,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10948:16:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10926:38:93"
                      },
                      {
                        "assignments": [
                          24637
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24637,
                            "mutability": "mutable",
                            "name": "amountToWithdraw",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 24725,
                            "src": "10971:24:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 24636,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10971:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24638,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10971:24:93"
                      },
                      {
                        "assignments": [
                          24640
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24640,
                            "mutability": "mutable",
                            "name": "amountToBurn",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 24725,
                            "src": "11001:20:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 24639,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11001:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24641,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11001:20:93"
                      },
                      {
                        "assignments": [
                          24643
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24643,
                            "mutability": "mutable",
                            "name": "currentRate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 24725,
                            "src": "11028:19:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 24642,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11028:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24646,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 24644,
                            "name": "rate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24443,
                            "src": "11050:4:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 24645,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11050:6:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11028:28:93"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 24649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 24647,
                            "name": "staticAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24596,
                            "src": "11066:12:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 24648,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11081:1:93",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "11066:16:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 24692,
                          "nodeType": "Block",
                          "src": "11253:268:93",
                          "statements": [
                            {
                              "assignments": [
                                24669
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 24669,
                                  "mutability": "mutable",
                                  "name": "dynamicUserBalance",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 24692,
                                  "src": "11261:26:93",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 24668,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11261:7:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 24674,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 24671,
                                    "name": "userBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24631,
                                    "src": "11313:11:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 24672,
                                    "name": "currentRate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24643,
                                    "src": "11326:11:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 24670,
                                  "name": "_staticToDynamicAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24507,
                                  "src": "11290:22:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 24673,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11290:48:93",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "11261:77:93"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 24683,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 24675,
                                  "name": "amountToWithdraw",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "11346:16:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "condition": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 24678,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 24676,
                                          "name": "dynamicAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24598,
                                          "src": "11366:13:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 24677,
                                          "name": "dynamicUserBalance",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24669,
                                          "src": "11382:18:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "11366:34:93",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "id": 24679,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "11365:36:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseExpression": {
                                    "argumentTypes": null,
                                    "id": 24681,
                                    "name": "dynamicAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24598,
                                    "src": "11425:13:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 24682,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "Conditional",
                                  "src": "11365:73:93",
                                  "trueExpression": {
                                    "argumentTypes": null,
                                    "id": 24680,
                                    "name": "dynamicUserBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24669,
                                    "src": "11404:18:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11346:92:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 24684,
                              "nodeType": "ExpressionStatement",
                              "src": "11346:92:93"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 24690,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 24685,
                                  "name": "amountToBurn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24640,
                                  "src": "11446:12:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 24687,
                                      "name": "amountToWithdraw",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24637,
                                      "src": "11484:16:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 24688,
                                      "name": "currentRate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24643,
                                      "src": "11502:11:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 24686,
                                    "name": "_dynamicToStaticAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24492,
                                    "src": "11461:22:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 24689,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11461:53:93",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11446:68:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 24691,
                              "nodeType": "ExpressionStatement",
                              "src": "11446:68:93"
                            }
                          ]
                        },
                        "id": 24693,
                        "nodeType": "IfStatement",
                        "src": "11062:459:93",
                        "trueBody": {
                          "id": 24667,
                          "nodeType": "Block",
                          "src": "11084:163:93",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 24658,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 24650,
                                  "name": "amountToBurn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24640,
                                  "src": "11092:12:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "condition": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 24653,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 24651,
                                          "name": "staticAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24596,
                                          "src": "11108:12:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 24652,
                                          "name": "userBalance",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24631,
                                          "src": "11123:11:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "11108:26:93",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "id": 24654,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "11107:28:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseExpression": {
                                    "argumentTypes": null,
                                    "id": 24656,
                                    "name": "staticAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24596,
                                    "src": "11152:12:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 24657,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "Conditional",
                                  "src": "11107:57:93",
                                  "trueExpression": {
                                    "argumentTypes": null,
                                    "id": 24655,
                                    "name": "userBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24631,
                                    "src": "11138:11:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11092:72:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 24659,
                              "nodeType": "ExpressionStatement",
                              "src": "11092:72:93"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 24665,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 24660,
                                  "name": "amountToWithdraw",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24637,
                                  "src": "11172:16:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 24662,
                                      "name": "amountToBurn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24640,
                                      "src": "11214:12:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 24663,
                                      "name": "currentRate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24643,
                                      "src": "11228:11:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 24661,
                                    "name": "_staticToDynamicAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24507,
                                    "src": "11191:22:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 24664,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11191:49:93",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11172:68:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 24666,
                              "nodeType": "ExpressionStatement",
                              "src": "11172:68:93"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 24695,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24592,
                              "src": "11533:5:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 24696,
                              "name": "amountToBurn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24640,
                              "src": "11540:12:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 24694,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3866,
                            "src": "11527:5:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 24697,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11527:26:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24698,
                        "nodeType": "ExpressionStatement",
                        "src": "11527:26:93"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 24699,
                          "name": "toUnderlying",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24600,
                          "src": "11564:12:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 24719,
                          "nodeType": "Block",
                          "src": "11665:63:93",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 24715,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24594,
                                    "src": "11693:9:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 24716,
                                    "name": "amountToWithdraw",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24637,
                                    "src": "11704:16:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 24712,
                                    "name": "ATOKEN",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23846,
                                    "src": "11673:6:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$4012",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 24714,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4180,
                                  "src": "11673:19:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 24717,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11673:48:93",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 24718,
                              "nodeType": "ExpressionStatement",
                              "src": "11673:48:93"
                            }
                          ]
                        },
                        "id": 24720,
                        "nodeType": "IfStatement",
                        "src": "11560:168:93",
                        "trueBody": {
                          "id": 24711,
                          "nodeType": "Block",
                          "src": "11578:81:93",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 24705,
                                        "name": "ASSET",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23849,
                                        "src": "11616:5:93",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20_$4012",
                                          "typeString": "contract IERC20"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_IERC20_$4012",
                                          "typeString": "contract IERC20"
                                        }
                                      ],
                                      "id": 24704,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "11608:7:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 24703,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11608:7:93",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 24706,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11608:14:93",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 24707,
                                    "name": "amountToWithdraw",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24637,
                                    "src": "11624:16:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 24708,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24594,
                                    "src": "11642:9:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 24700,
                                    "name": "LENDING_POOL",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23840,
                                    "src": "11586:12:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                      "typeString": "contract ILendingPool"
                                    }
                                  },
                                  "id": 24702,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "withdraw",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6257,
                                  "src": "11586:21:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address,uint256,address) external returns (uint256)"
                                  }
                                },
                                "id": 24709,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11586:66:93",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 24710,
                              "nodeType": "ExpressionStatement",
                              "src": "11586:66:93"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 24721,
                              "name": "amountToBurn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24640,
                              "src": "11742:12:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 24722,
                              "name": "amountToWithdraw",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24637,
                              "src": "11756:16:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 24723,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "11741:32:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 24606,
                        "id": 24724,
                        "nodeType": "Return",
                        "src": "11734:39:93"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 24726,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_withdraw",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 24601,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24592,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24726,
                        "src": "10567:13:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24591,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10567:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24594,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24726,
                        "src": "10586:17:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24593,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10586:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24596,
                        "mutability": "mutable",
                        "name": "staticAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24726,
                        "src": "10609:20:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24595,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10609:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24598,
                        "mutability": "mutable",
                        "name": "dynamicAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24726,
                        "src": "10635:21:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24597,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10635:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24600,
                        "mutability": "mutable",
                        "name": "toUnderlying",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24726,
                        "src": "10662:17:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 24599,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "10662:4:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10561:122:93"
                  },
                  "returnParameters": {
                    "id": 24606,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24603,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24726,
                        "src": "10702:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24602,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10702:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24605,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24726,
                        "src": "10711:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24604,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10711:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10701:18:93"
                  },
                  "scope": 25399,
                  "src": "10543:1235:93",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    3933
                  ],
                  "body": {
                    "id": 24796,
                    "nodeType": "Block",
                    "src": "12171:383:93",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 24745,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 24739,
                                "name": "INCENTIVES_CONTROLLER",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23843,
                                "src": "12189:21:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                  "typeString": "contract IAaveIncentivesController"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                  "typeString": "contract IAaveIncentivesController"
                                }
                              ],
                              "id": 24738,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12181:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 24737,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12181:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 24740,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12181:30:93",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 24743,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12223:1:93",
                                "subdenomination": null,
                                "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": 24742,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12215:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 24741,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12215:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 24744,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12215:10:93",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "12181:44:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 24748,
                        "nodeType": "IfStatement",
                        "src": "12177:71:93",
                        "trueBody": {
                          "id": 24747,
                          "nodeType": "Block",
                          "src": "12227:21:93",
                          "statements": [
                            {
                              "expression": null,
                              "functionReturnParameters": 24736,
                              "id": 24746,
                              "nodeType": "Return",
                              "src": "12235:7:93"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          24750
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24750,
                            "mutability": "mutable",
                            "name": "rewardsIndex",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 24796,
                            "src": "12253:20:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 24749,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12253:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24753,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 24751,
                            "name": "getCurrentRewardsIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25279,
                            "src": "12276:22:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 24752,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12276:24:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12253:47:93"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 24759,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 24754,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24729,
                            "src": "12310:4:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 24757,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12326:1:93",
                                "subdenomination": null,
                                "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": 24756,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12318:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 24755,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12318:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 24758,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12318:10:93",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "12310:18:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 24766,
                        "nodeType": "IfStatement",
                        "src": "12306:70:93",
                        "trueBody": {
                          "id": 24765,
                          "nodeType": "Block",
                          "src": "12330:46:93",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 24761,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24729,
                                    "src": "12350:4:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 24762,
                                    "name": "rewardsIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24750,
                                    "src": "12356:12:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 24760,
                                  "name": "_updateUser",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25093,
                                  "src": "12338:11:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256)"
                                  }
                                },
                                "id": 24763,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12338:31:93",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 24764,
                              "nodeType": "ExpressionStatement",
                              "src": "12338:31:93"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 24776,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 24772,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 24767,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24731,
                              "src": "12385:2:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 24770,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12399:1:93",
                                  "subdenomination": null,
                                  "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": 24769,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "12391:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 24768,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12391:7:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 24771,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12391:10:93",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "12385:16:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 24775,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 24773,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24729,
                              "src": "12405:4:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 24774,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24731,
                              "src": "12413:2:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "12405:10:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "12385:30:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 24783,
                        "nodeType": "IfStatement",
                        "src": "12381:80:93",
                        "trueBody": {
                          "id": 24782,
                          "nodeType": "Block",
                          "src": "12417:44:93",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 24778,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24731,
                                    "src": "12437:2:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 24779,
                                    "name": "rewardsIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24750,
                                    "src": "12441:12:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 24777,
                                  "name": "_updateUser",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25093,
                                  "src": "12425:11:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256)"
                                  }
                                },
                                "id": 24780,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12425:29:93",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 24781,
                              "nodeType": "ExpressionStatement",
                              "src": "12425:29:93"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 24789,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 24784,
                            "name": "_l1TokenBridge",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23866,
                            "src": "12470:14:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "307830",
                                "id": 24787,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12496:3:93",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0x0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 24786,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12488:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 24785,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12488:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 24788,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12488:12:93",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "12470:30:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 24795,
                        "nodeType": "IfStatement",
                        "src": "12466:84:93",
                        "trueBody": {
                          "id": 24794,
                          "nodeType": "Block",
                          "src": "12502:48:93",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 24791,
                                    "name": "rewardsIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24750,
                                    "src": "12530:12:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 24790,
                                  "name": "_updateL2TokenState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25106,
                                  "src": "12510:19:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256)"
                                  }
                                },
                                "id": 24792,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12510:33:93",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 24793,
                              "nodeType": "ExpressionStatement",
                              "src": "12510:33:93"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 24727,
                    "nodeType": "StructuredDocumentation",
                    "src": "11782:280:93",
                    "text": " @notice Updates rewards for senders and receiver in a transfer (not updating rewards for address(0))\n @param from The address of the sender of tokens\n @param to The address of the receiver of tokens\n @param amount The amount of tokens to transfer in WAD"
                  },
                  "id": 24797,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_beforeTokenTransfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 24735,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "12162:8:93"
                  },
                  "parameters": {
                    "id": 24734,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24729,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24797,
                        "src": "12100:12:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24728,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12100:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24731,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24797,
                        "src": "12118:10:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24730,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12118:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24733,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24797,
                        "src": "12134:14:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24732,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12134:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12094:58:93"
                  },
                  "returnParameters": {
                    "id": 24736,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12171:0:93"
                  },
                  "scope": 25399,
                  "src": "12065:489:93",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    7299
                  ],
                  "body": {
                    "id": 24851,
                    "nodeType": "Block",
                    "src": "12690:255:93",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 24812,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 24806,
                                "name": "INCENTIVES_CONTROLLER",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23843,
                                "src": "12708:21:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                  "typeString": "contract IAaveIncentivesController"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                  "typeString": "contract IAaveIncentivesController"
                                }
                              ],
                              "id": 24805,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12700:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 24804,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12700:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 24807,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12700:30:93",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 24810,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12742:1:93",
                                "subdenomination": null,
                                "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": 24809,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12734:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 24808,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12734:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 24811,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12734:10:93",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "12700:44:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 24816,
                        "nodeType": "IfStatement",
                        "src": "12696:73:93",
                        "trueBody": {
                          "id": 24815,
                          "nodeType": "Block",
                          "src": "12746:23:93",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 24813,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12761:1:93",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 24803,
                              "id": 24814,
                              "nodeType": "Return",
                              "src": "12754:8:93"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          24821
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24821,
                            "mutability": "mutable",
                            "name": "assets",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 24851,
                            "src": "12775:23:93",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 24819,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12775:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 24820,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "12775:9:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24827,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 24825,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12815:1:93",
                              "subdenomination": null,
                              "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": 24824,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "12801:13:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 24822,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12805:7:93",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 24823,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "12805:9:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 24826,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12801:16:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12775:42:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 24835,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 24828,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24821,
                              "src": "12823:6:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 24830,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 24829,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12830:1:93",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "12823:9:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 24833,
                                "name": "ATOKEN",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23846,
                                "src": "12843:6:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$4012",
                                  "typeString": "contract IERC20"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC20_$4012",
                                  "typeString": "contract IERC20"
                                }
                              ],
                              "id": 24832,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12835:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 24831,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12835:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 24834,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12835:15:93",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "12823:27:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 24836,
                        "nodeType": "ExpressionStatement",
                        "src": "12823:27:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 24839,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24821,
                              "src": "12899:6:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 24842,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "12912:7:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 24841,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "12912:7:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    }
                                  ],
                                  "id": 24840,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "12907:4:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 24843,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12907:13:93",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_uint256",
                                  "typeString": "type(uint256)"
                                }
                              },
                              "id": 24844,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "max",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12907:17:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 24847,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "12934:4:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_StaticATokenLM_$25399",
                                    "typeString": "contract StaticATokenLM"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_StaticATokenLM_$25399",
                                    "typeString": "contract StaticATokenLM"
                                  }
                                ],
                                "id": 24846,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "12926:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 24845,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12926:7:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 24848,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12926:13:93",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 24837,
                              "name": "INCENTIVES_CONTROLLER",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23843,
                              "src": "12864:21:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                "typeString": "contract IAaveIncentivesController"
                              }
                            },
                            "id": 24838,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "claimRewards",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5776,
                            "src": "12864:34:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address[] memory,uint256,address) external returns (uint256)"
                            }
                          },
                          "id": 24849,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12864:76:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 24803,
                        "id": 24850,
                        "nodeType": "Return",
                        "src": "12857:83:93"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 24798,
                    "nodeType": "StructuredDocumentation",
                    "src": "12558:30:93",
                    "text": "@inheritdoc IStaticATokenLM"
                  },
                  "functionSelector": "3eb2eba6",
                  "id": 24852,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "collectAndUpdateRewards",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 24800,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "12663:8:93"
                  },
                  "parameters": {
                    "id": 24799,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12653:2:93"
                  },
                  "returnParameters": {
                    "id": 24803,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24802,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24852,
                        "src": "12681:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24801,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12681:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12680:9:93"
                  },
                  "scope": 25399,
                  "src": "12621:324:93",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 24941,
                    "nodeType": "Block",
                    "src": "13227:802:93",
                    "statements": [
                      {
                        "assignments": [
                          24861
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24861,
                            "mutability": "mutable",
                            "name": "currentRewardsIndex",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 24941,
                            "src": "13233:27:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 24860,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13233:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24864,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 24862,
                            "name": "getCurrentRewardsIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25279,
                            "src": "13263:22:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 24863,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13263:24:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13233:54:93"
                      },
                      {
                        "assignments": [
                          24866
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24866,
                            "mutability": "mutable",
                            "name": "balance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 24941,
                            "src": "13293:15:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 24865,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13293:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24870,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 24868,
                              "name": "onBehalfOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24855,
                              "src": "13321:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 24867,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3534,
                            "src": "13311:9:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 24869,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13311:21:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13293:39:93"
                      },
                      {
                        "assignments": [
                          24872
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24872,
                            "mutability": "mutable",
                            "name": "userReward",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 24941,
                            "src": "13338:18:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 24871,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13338:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24878,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 24874,
                              "name": "onBehalfOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24855,
                              "src": "13380:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 24875,
                              "name": "balance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24866,
                              "src": "13392:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 24876,
                              "name": "currentRewardsIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24861,
                              "src": "13401:19:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 24873,
                            "name": "_getClaimableRewards",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25183,
                            "src": "13359:20:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,uint256,uint256) view returns (uint256)"
                            }
                          },
                          "id": 24877,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13359:62:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13338:83:93"
                      },
                      {
                        "assignments": [
                          24880
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24880,
                            "mutability": "mutable",
                            "name": "totalRewardTokenBalance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 24941,
                            "src": "13427:31:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 24879,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13427:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24888,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 24885,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "13492:4:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_StaticATokenLM_$25399",
                                    "typeString": "contract StaticATokenLM"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_StaticATokenLM_$25399",
                                    "typeString": "contract StaticATokenLM"
                                  }
                                ],
                                "id": 24884,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "13484:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 24883,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "13484:7:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 24886,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13484:13:93",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 24881,
                              "name": "REWARD_TOKEN",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23852,
                              "src": "13461:12:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 24882,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3951,
                            "src": "13461:22:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 24887,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13461:37:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13427:71:93"
                      },
                      {
                        "assignments": [
                          24890
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24890,
                            "mutability": "mutable",
                            "name": "unclaimedReward",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 24941,
                            "src": "13504:23:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 24889,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13504:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 24892,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 24891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13530:1:93",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13504:27:93"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 24895,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 24893,
                            "name": "userReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24872,
                            "src": "13542:10:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 24894,
                            "name": "totalRewardTokenBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24880,
                            "src": "13555:23:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13542:36:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 24902,
                        "nodeType": "IfStatement",
                        "src": "13538:109:93",
                        "trueBody": {
                          "id": 24901,
                          "nodeType": "Block",
                          "src": "13580:67:93",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 24899,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 24896,
                                  "name": "totalRewardTokenBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24880,
                                  "src": "13588:23:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 24897,
                                    "name": "collectAndUpdateRewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24852,
                                    "src": "13615:23:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_uint256_$",
                                      "typeString": "function () returns (uint256)"
                                    }
                                  },
                                  "id": 24898,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13615:25:93",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13588:52:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 24900,
                              "nodeType": "ExpressionStatement",
                              "src": "13588:52:93"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 24905,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 24903,
                            "name": "userReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24872,
                            "src": "13657:10:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 24904,
                            "name": "totalRewardTokenBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24880,
                            "src": "13670:23:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13657:36:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 24917,
                        "nodeType": "IfStatement",
                        "src": "13653:155:93",
                        "trueBody": {
                          "id": 24916,
                          "nodeType": "Block",
                          "src": "13695:113:93",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 24910,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 24906,
                                  "name": "unclaimedReward",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24890,
                                  "src": "13703:15:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 24909,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 24907,
                                    "name": "userReward",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24872,
                                    "src": "13721:10:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 24908,
                                    "name": "totalRewardTokenBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24880,
                                    "src": "13734:23:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "13721:36:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13703:54:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 24911,
                              "nodeType": "ExpressionStatement",
                              "src": "13703:54:93"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 24914,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 24912,
                                  "name": "userReward",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24872,
                                  "src": "13765:10:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 24913,
                                  "name": "totalRewardTokenBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24880,
                                  "src": "13778:23:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13765:36:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 24915,
                              "nodeType": "ExpressionStatement",
                              "src": "13765:36:93"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 24920,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 24918,
                            "name": "userReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24872,
                            "src": "13817:10:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 24919,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13830:1:93",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13817:14:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 24940,
                        "nodeType": "IfStatement",
                        "src": "13813:212:93",
                        "trueBody": {
                          "id": 24939,
                          "nodeType": "Block",
                          "src": "13833:192:93",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 24925,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 24921,
                                    "name": "_unclaimedRewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23864,
                                    "src": "13841:17:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 24923,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 24922,
                                    "name": "onBehalfOf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24855,
                                    "src": "13859:10:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "13841:29:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 24924,
                                  "name": "unclaimedReward",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24890,
                                  "src": "13873:15:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13841:47:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 24926,
                              "nodeType": "ExpressionStatement",
                              "src": "13841:47:93"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 24928,
                                    "name": "onBehalfOf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24855,
                                    "src": "13931:10:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 24929,
                                    "name": "currentRewardsIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24861,
                                    "src": "13943:19:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 24927,
                                  "name": "_updateUserSnapshotRewardsPerToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25049,
                                  "src": "13896:34:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256)"
                                  }
                                },
                                "id": 24930,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13896:67:93",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 24931,
                              "nodeType": "ExpressionStatement",
                              "src": "13896:67:93"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 24935,
                                    "name": "receiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24857,
                                    "src": "13997:8:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 24936,
                                    "name": "userReward",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24872,
                                    "src": "14007:10:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 24932,
                                    "name": "REWARD_TOKEN",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23852,
                                    "src": "13971:12:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$4012",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 24934,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4180,
                                  "src": "13971:25:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4012_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$4012_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 24937,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13971:47:93",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 24938,
                              "nodeType": "ExpressionStatement",
                              "src": "13971:47:93"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 24853,
                    "nodeType": "StructuredDocumentation",
                    "src": "12949:197:93",
                    "text": " @notice Claim rewards on behalf of a user and send them to a receiver\n @param onBehalfOf The address to claim on behalf of\n @param receiver The address to receive the rewards"
                  },
                  "id": 24942,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_claimRewardsOnBehalf",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 24858,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24855,
                        "mutability": "mutable",
                        "name": "onBehalfOf",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24942,
                        "src": "13180:18:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24854,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13180:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24857,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24942,
                        "src": "13200:16:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24856,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13200:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13179:38:93"
                  },
                  "returnParameters": {
                    "id": 24859,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13227:0:93"
                  },
                  "scope": 25399,
                  "src": "13149:880:93",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    7307
                  ],
                  "body": {
                    "id": 24984,
                    "nodeType": "Block",
                    "src": "14119:286:93",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 24958,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 24952,
                                "name": "INCENTIVES_CONTROLLER",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23843,
                                "src": "14137:21:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                  "typeString": "contract IAaveIncentivesController"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                  "typeString": "contract IAaveIncentivesController"
                                }
                              ],
                              "id": 24951,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14129:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 24950,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "14129:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 24953,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14129:30:93",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 24956,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14171:1:93",
                                "subdenomination": null,
                                "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": 24955,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14163:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 24954,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "14163:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 24957,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14163:10:93",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "14129:44:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 24961,
                        "nodeType": "IfStatement",
                        "src": "14125:71:93",
                        "trueBody": {
                          "id": 24960,
                          "nodeType": "Block",
                          "src": "14175:21:93",
                          "statements": [
                            {
                              "expression": null,
                              "functionReturnParameters": 24949,
                              "id": 24959,
                              "nodeType": "Return",
                              "src": "14183:7:93"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 24974,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 24966,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 24963,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "14217:3:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 24964,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "14217:10:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 24965,
                                  "name": "onBehalfOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24944,
                                  "src": "14231:10:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "14217:24:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 24973,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 24967,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "14245:3:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 24968,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "14245:10:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 24971,
                                      "name": "onBehalfOf",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24944,
                                      "src": "14292:10:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 24969,
                                      "name": "INCENTIVES_CONTROLLER",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23843,
                                      "src": "14259:21:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                        "typeString": "contract IAaveIncentivesController"
                                      }
                                    },
                                    "id": 24970,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getClaimer",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5727,
                                    "src": "14259:32:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                      "typeString": "function (address) view external returns (address)"
                                    }
                                  },
                                  "id": 24972,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14259:44:93",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "14245:58:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "14217:86:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 24975,
                                "name": "StaticATokenErrors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17328,
                                "src": "14311:18:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_StaticATokenErrors_$17328_$",
                                  "typeString": "type(library StaticATokenErrors)"
                                }
                              },
                              "id": 24976,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "INVALID_CLAIMER",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17324,
                              "src": "14311:34:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 24962,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14202:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 24977,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14202:149:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24978,
                        "nodeType": "ExpressionStatement",
                        "src": "14202:149:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 24980,
                              "name": "onBehalfOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24944,
                              "src": "14379:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 24981,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24946,
                              "src": "14391:8:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 24979,
                            "name": "_claimRewardsOnBehalf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24942,
                            "src": "14357:21:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 24982,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14357:43:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24983,
                        "nodeType": "ExpressionStatement",
                        "src": "14357:43:93"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "8ba2855d",
                  "id": 24985,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "claimRewardsOnBehalf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 24948,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "14110:8:93"
                  },
                  "parameters": {
                    "id": 24947,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24944,
                        "mutability": "mutable",
                        "name": "onBehalfOf",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24985,
                        "src": "14063:18:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24943,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14063:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24946,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 24985,
                        "src": "14083:16:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24945,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14083:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14062:38:93"
                  },
                  "returnParameters": {
                    "id": 24949,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14119:0:93"
                  },
                  "scope": 25399,
                  "src": "14033:372:93",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7313
                  ],
                  "body": {
                    "id": 25009,
                    "nodeType": "Block",
                    "src": "14467:130:93",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 24999,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 24993,
                                "name": "INCENTIVES_CONTROLLER",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23843,
                                "src": "14485:21:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                  "typeString": "contract IAaveIncentivesController"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                  "typeString": "contract IAaveIncentivesController"
                                }
                              ],
                              "id": 24992,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14477:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 24991,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "14477:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 24994,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14477:30:93",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 24997,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14519:1:93",
                                "subdenomination": null,
                                "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": 24996,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14511:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 24995,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "14511:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 24998,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14511:10:93",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "14477:44:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 25002,
                        "nodeType": "IfStatement",
                        "src": "14473:71:93",
                        "trueBody": {
                          "id": 25001,
                          "nodeType": "Block",
                          "src": "14523:21:93",
                          "statements": [
                            {
                              "expression": null,
                              "functionReturnParameters": 24990,
                              "id": 25000,
                              "nodeType": "Return",
                              "src": "14531:7:93"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 25004,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "14571:3:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 25005,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "14571:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25006,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24987,
                              "src": "14583:8:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 25003,
                            "name": "_claimRewardsOnBehalf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24942,
                            "src": "14549:21:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 25007,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14549:43:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25008,
                        "nodeType": "ExpressionStatement",
                        "src": "14549:43:93"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "ef5cfb8c",
                  "id": 25010,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "claimRewards",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 24989,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "14458:8:93"
                  },
                  "parameters": {
                    "id": 24988,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24987,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25010,
                        "src": "14431:16:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24986,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14431:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14430:18:93"
                  },
                  "returnParameters": {
                    "id": 24990,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14467:0:93"
                  },
                  "scope": 25399,
                  "src": "14409:188:93",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7317
                  ],
                  "body": {
                    "id": 25033,
                    "nodeType": "Block",
                    "src": "14649:132:93",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 25022,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 25016,
                                "name": "INCENTIVES_CONTROLLER",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23843,
                                "src": "14667:21:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                  "typeString": "contract IAaveIncentivesController"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                  "typeString": "contract IAaveIncentivesController"
                                }
                              ],
                              "id": 25015,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14659:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 25014,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "14659:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 25017,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14659:30:93",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 25020,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14701:1:93",
                                "subdenomination": null,
                                "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": 25019,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14693:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 25018,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "14693:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 25021,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14693:10:93",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "14659:44:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 25025,
                        "nodeType": "IfStatement",
                        "src": "14655:71:93",
                        "trueBody": {
                          "id": 25024,
                          "nodeType": "Block",
                          "src": "14705:21:93",
                          "statements": [
                            {
                              "expression": null,
                              "functionReturnParameters": 25013,
                              "id": 25023,
                              "nodeType": "Return",
                              "src": "14713:7:93"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 25027,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "14753:3:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 25028,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "14753:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 25029,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "14765:3:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 25030,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "14765:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 25026,
                            "name": "_claimRewardsOnBehalf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24942,
                            "src": "14731:21:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 25031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14731:45:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25032,
                        "nodeType": "ExpressionStatement",
                        "src": "14731:45:93"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "a868dd5d",
                  "id": 25034,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "claimRewardsToSelf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25012,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "14640:8:93"
                  },
                  "parameters": {
                    "id": 25011,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14628:2:93"
                  },
                  "returnParameters": {
                    "id": 25013,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14649:0:93"
                  },
                  "scope": 25399,
                  "src": "14601:180:93",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 25048,
                    "nodeType": "Block",
                    "src": "15003:67:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25046,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 25042,
                              "name": "_userSnapshotRewardsPerToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23860,
                              "src": "15009:28:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 25044,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 25043,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25037,
                              "src": "15038:4:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "15009:34:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 25045,
                            "name": "currentRewardsIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25039,
                            "src": "15046:19:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15009:56:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 25047,
                        "nodeType": "ExpressionStatement",
                        "src": "15009:56:93"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 25035,
                    "nodeType": "StructuredDocumentation",
                    "src": "14785:119:93",
                    "text": " @notice Update the rewardDebt for a user with balance as his balance\n @param user The user to update"
                  },
                  "id": 25049,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_updateUserSnapshotRewardsPerToken",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 25040,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25037,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25049,
                        "src": "14951:12:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25036,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14951:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25039,
                        "mutability": "mutable",
                        "name": "currentRewardsIndex",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25049,
                        "src": "14965:27:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25038,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14965:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14950:43:93"
                  },
                  "returnParameters": {
                    "id": 25041,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15003:0:93"
                  },
                  "scope": 25399,
                  "src": "14907:163:93",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25092,
                    "nodeType": "Block",
                    "src": "15309:290:93",
                    "statements": [
                      {
                        "assignments": [
                          25058
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 25058,
                            "mutability": "mutable",
                            "name": "balance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 25092,
                            "src": "15315:15:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 25057,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15315:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 25062,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25060,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25052,
                              "src": "15343:4:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 25059,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3534,
                            "src": "15333:9:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 25061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15333:15:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15315:33:93"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 25065,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 25063,
                            "name": "balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25058,
                            "src": "15358:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 25064,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15368:1:93",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "15358:11:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 25086,
                        "nodeType": "IfStatement",
                        "src": "15354:174:93",
                        "trueBody": {
                          "id": 25085,
                          "nodeType": "Block",
                          "src": "15371:157:93",
                          "statements": [
                            {
                              "assignments": [
                                25067
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 25067,
                                  "mutability": "mutable",
                                  "name": "pending",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 25085,
                                  "src": "15379:15:93",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 25066,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15379:7:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 25073,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 25069,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25052,
                                    "src": "15416:4:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25070,
                                    "name": "balance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25058,
                                    "src": "15422:7:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25071,
                                    "name": "currentRewardsIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25054,
                                    "src": "15431:19:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 25068,
                                  "name": "_getPendingRewards",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25155,
                                  "src": "15397:18:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (address,uint256,uint256) view returns (uint256)"
                                  }
                                },
                                "id": 25072,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15397:54:93",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15379:72:93"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 25083,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 25074,
                                    "name": "_unclaimedRewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23864,
                                    "src": "15459:17:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 25076,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 25075,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25052,
                                    "src": "15477:4:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "15459:23:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 25081,
                                      "name": "pending",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 25067,
                                      "src": "15513:7:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 25077,
                                        "name": "_unclaimedRewards",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23864,
                                        "src": "15485:17:93",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                          "typeString": "mapping(address => uint256)"
                                        }
                                      },
                                      "id": 25079,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 25078,
                                        "name": "user",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 25052,
                                        "src": "15503:4:93",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "15485:23:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 25080,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4329,
                                    "src": "15485:27:93",
                                    "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": 25082,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15485:36:93",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15459:62:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 25084,
                              "nodeType": "ExpressionStatement",
                              "src": "15459:62:93"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25088,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25052,
                              "src": "15568:4:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25089,
                              "name": "currentRewardsIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25054,
                              "src": "15574:19:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 25087,
                            "name": "_updateUserSnapshotRewardsPerToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25049,
                            "src": "15533:34:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 25090,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15533:61:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25091,
                        "nodeType": "ExpressionStatement",
                        "src": "15533:61:93"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 25050,
                    "nodeType": "StructuredDocumentation",
                    "src": "15074:159:93",
                    "text": " @notice Adding the pending rewards to the unclaimed for specific user and updating user index\n @param user The address of the user to update"
                  },
                  "id": 25093,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_updateUser",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 25055,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25052,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25093,
                        "src": "15257:12:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25051,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15257:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25054,
                        "mutability": "mutable",
                        "name": "currentRewardsIndex",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25093,
                        "src": "15271:27:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25053,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15271:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15256:43:93"
                  },
                  "returnParameters": {
                    "id": 25056,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15309:0:93"
                  },
                  "scope": 25399,
                  "src": "15236:363:93",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25105,
                    "nodeType": "Block",
                    "src": "15670:84:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25102,
                              "name": "currentRewardsIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25095,
                              "src": "15729:19:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 25099,
                                  "name": "_l1TokenBridge",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23866,
                                  "src": "15689:14:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 25098,
                                "name": "ITokenBridge",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23787,
                                "src": "15676:12:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ITokenBridge_$23787_$",
                                  "typeString": "type(contract ITokenBridge)"
                                }
                              },
                              "id": 25100,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15676:28:93",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ITokenBridge_$23787",
                                "typeString": "contract ITokenBridge"
                              }
                            },
                            "id": 25101,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sendMessageStaticAToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 23786,
                            "src": "15676:52:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) external"
                            }
                          },
                          "id": 25103,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15676:73:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25104,
                        "nodeType": "ExpressionStatement",
                        "src": "15676:73:93"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 25106,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_updateL2TokenState",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 25096,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25095,
                        "mutability": "mutable",
                        "name": "currentRewardsIndex",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25106,
                        "src": "15632:27:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25094,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15632:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15631:29:93"
                  },
                  "returnParameters": {
                    "id": 25097,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15670:0:93"
                  },
                  "scope": 25399,
                  "src": "15603:151:93",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25154,
                    "nodeType": "Block",
                    "src": "16177:317:93",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 25126,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 25120,
                                "name": "INCENTIVES_CONTROLLER",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23843,
                                "src": "16195:21:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                  "typeString": "contract IAaveIncentivesController"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                  "typeString": "contract IAaveIncentivesController"
                                }
                              ],
                              "id": 25119,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "16187:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 25118,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "16187:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 25121,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16187:30:93",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 25124,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16229:1:93",
                                "subdenomination": null,
                                "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": 25123,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "16221:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 25122,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "16221:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 25125,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16221:10:93",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "16187:44:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 25130,
                        "nodeType": "IfStatement",
                        "src": "16183:113:93",
                        "trueBody": {
                          "id": 25129,
                          "nodeType": "Block",
                          "src": "16233:63:93",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 25127,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16288:1:93",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 25117,
                              "id": 25128,
                              "nodeType": "Return",
                              "src": "16281:8:93"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 25133,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 25131,
                            "name": "balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25111,
                            "src": "16306:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 25132,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16317:1:93",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "16306:12:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 25137,
                        "nodeType": "IfStatement",
                        "src": "16302:41:93",
                        "trueBody": {
                          "id": 25136,
                          "nodeType": "Block",
                          "src": "16320:23:93",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 25134,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16335:1:93",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 25117,
                              "id": 25135,
                              "nodeType": "Return",
                              "src": "16328:8:93"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          25139
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 25139,
                            "mutability": "mutable",
                            "name": "rayBalance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 25154,
                            "src": "16349:18:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 25138,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16349:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 25143,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 25140,
                              "name": "balance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25111,
                              "src": "16370:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 25141,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "wadToRay",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20492,
                            "src": "16370:16:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 25142,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16370:18:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16349:39:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 25148,
                                    "name": "_userSnapshotRewardsPerToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23860,
                                    "src": "16453:28:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 25150,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 25149,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25109,
                                    "src": "16482:4:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "16453:34:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25146,
                                  "name": "currentRewardsIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25113,
                                  "src": "16429:19:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 25147,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4346,
                                "src": "16429:23:93",
                                "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": 25151,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16429:59:93",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 25144,
                              "name": "rayBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25139,
                              "src": "16401:10:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 25145,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayMulNoRounding",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20121,
                            "src": "16401:27:93",
                            "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": 25152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16401:88:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 25117,
                        "id": 25153,
                        "nodeType": "Return",
                        "src": "16394:95:93"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 25107,
                    "nodeType": "StructuredDocumentation",
                    "src": "15758:280:93",
                    "text": " @notice Compute the pending in RAY (rounded down). Pending is the amount to add (not yet unclaimed) rewards in RAY (rounded down).\n @param user The user to compute for\n @param balance The balance of the user\n @return The amound of pending rewards in RAY"
                  },
                  "id": 25155,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getPendingRewards",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 25114,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25109,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25155,
                        "src": "16074:12:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25108,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16074:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25111,
                        "mutability": "mutable",
                        "name": "balance",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25155,
                        "src": "16092:15:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25110,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16092:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25113,
                        "mutability": "mutable",
                        "name": "currentRewardsIndex",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25155,
                        "src": "16113:27:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25112,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16113:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16068:76:93"
                  },
                  "returnParameters": {
                    "id": 25117,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25116,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25155,
                        "src": "16168:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25115,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16168:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16167:9:93"
                  },
                  "scope": 25399,
                  "src": "16041:453:93",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25182,
                    "nodeType": "Block",
                    "src": "16904:136:93",
                    "statements": [
                      {
                        "assignments": [
                          25168
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 25168,
                            "mutability": "mutable",
                            "name": "reward",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 25182,
                            "src": "16910:14:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 25167,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16910:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 25179,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 25174,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25158,
                                  "src": "16980:4:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 25175,
                                  "name": "balance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25160,
                                  "src": "16986:7:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 25176,
                                  "name": "currentRewardsIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25162,
                                  "src": "16995:19:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 25173,
                                "name": "_getPendingRewards",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25155,
                                "src": "16961:18:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (address,uint256,uint256) view returns (uint256)"
                                }
                              },
                              "id": 25177,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16961:54:93",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 25169,
                                "name": "_unclaimedRewards",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23864,
                                "src": "16933:17:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 25171,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 25170,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25158,
                                "src": "16951:4:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "16933:23:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 25172,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4329,
                            "src": "16933:27:93",
                            "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": 25178,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16933:83:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16910:106:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25180,
                          "name": "reward",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25168,
                          "src": "17029:6:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 25166,
                        "id": 25181,
                        "nodeType": "Return",
                        "src": "17022:13:93"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 25156,
                    "nodeType": "StructuredDocumentation",
                    "src": "16498:265:93",
                    "text": " @notice Compute the claimable rewards for a user\n @param user The address of the user\n @param balance The balance of the user in WAD\n @return The total rewards that can be claimed by the user (if `fresh` flag true, after updating rewards)"
                  },
                  "id": 25183,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getClaimableRewards",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 25163,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25158,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25183,
                        "src": "16801:12:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25157,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16801:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25160,
                        "mutability": "mutable",
                        "name": "balance",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25183,
                        "src": "16819:15:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25159,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16819:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25162,
                        "mutability": "mutable",
                        "name": "currentRewardsIndex",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25183,
                        "src": "16840:27:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25161,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16840:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16795:76:93"
                  },
                  "returnParameters": {
                    "id": 25166,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25165,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25183,
                        "src": "16895:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25164,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16895:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16894:9:93"
                  },
                  "scope": 25399,
                  "src": "16766:274:93",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    7345
                  ],
                  "body": {
                    "id": 25278,
                    "nodeType": "Block",
                    "src": "17150:798:93",
                    "statements": [
                      {
                        "assignments": [
                          25191,
                          25193,
                          25195
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 25191,
                            "mutability": "mutable",
                            "name": "index",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 25278,
                            "src": "17157:13:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 25190,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17157:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 25193,
                            "mutability": "mutable",
                            "name": "emissionPerSecond",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 25278,
                            "src": "17172:25:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 25192,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17172:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 25195,
                            "mutability": "mutable",
                            "name": "lastUpdateTimestamp",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 25278,
                            "src": "17199:27:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 25194,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17199:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 25203,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 25200,
                                  "name": "ATOKEN",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23846,
                                  "src": "17279:6:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$4012",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$4012",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 25199,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "17271:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 25198,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "17271:7:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 25201,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17271:15:93",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 25196,
                              "name": "INCENTIVES_CONTROLLER",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23843,
                              "src": "17236:21:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                "typeString": "contract IAaveIncentivesController"
                              }
                            },
                            "id": 25197,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAssetData",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5711,
                            "src": "17236:34:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint128_$_t_uint128_$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint128,uint128,uint256)"
                            }
                          },
                          "id": 25202,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17236:51:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$_t_uint256_$",
                            "typeString": "tuple(uint128,uint128,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17156:131:93"
                      },
                      {
                        "assignments": [
                          25205
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 25205,
                            "mutability": "mutable",
                            "name": "distributionEnd",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 25278,
                            "src": "17293:23:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 25204,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17293:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 25209,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 25206,
                              "name": "INCENTIVES_CONTROLLER",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23843,
                              "src": "17319:21:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                "typeString": "contract IAaveIncentivesController"
                              }
                            },
                            "id": 25207,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "DISTRIBUTION_END",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5763,
                            "src": "17319:38:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                              "typeString": "function () view external returns (uint256)"
                            }
                          },
                          "id": 25208,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17319:40:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17293:66:93"
                      },
                      {
                        "assignments": [
                          25211
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 25211,
                            "mutability": "mutable",
                            "name": "totalSupply",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 25278,
                            "src": "17365:19:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 25210,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17365:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 25220,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 25215,
                                      "name": "ATOKEN",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23846,
                                      "src": "17415:6:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$4012",
                                        "typeString": "contract IERC20"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IERC20_$4012",
                                        "typeString": "contract IERC20"
                                      }
                                    ],
                                    "id": 25214,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "17407:7:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 25213,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "17407:7:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 25216,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17407:15:93",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 25212,
                                "name": "IScaledBalanceToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7005,
                                "src": "17387:19:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IScaledBalanceToken_$7005_$",
                                  "typeString": "type(contract IScaledBalanceToken)"
                                }
                              },
                              "id": 25217,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17387:36:93",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IScaledBalanceToken_$7005",
                                "typeString": "contract IScaledBalanceToken"
                              }
                            },
                            "id": 25218,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "scaledTotalSupply",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7004,
                            "src": "17387:54:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                              "typeString": "function () view external returns (uint256)"
                            }
                          },
                          "id": 25219,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17387:56:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17365:78:93"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 25236,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 25232,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 25227,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 25223,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 25221,
                                  "name": "emissionPerSecond",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25193,
                                  "src": "17461:17:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 25222,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17482:1:93",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "17461:22:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 25226,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 25224,
                                  "name": "totalSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25211,
                                  "src": "17493:11:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 25225,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17508:1:93",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "17493:16:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "17461:48:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 25231,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 25228,
                                "name": "lastUpdateTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25195,
                                "src": "17519:19:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25229,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "17542:5:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 25230,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "17542:15:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "17519:38:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "17461:96:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 25235,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 25233,
                              "name": "lastUpdateTimestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25195,
                              "src": "17567:19:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 25234,
                              "name": "distributionEnd",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25205,
                              "src": "17590:15:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "17567:38:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "17461:144:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 25240,
                        "nodeType": "IfStatement",
                        "src": "17450:189:93",
                        "trueBody": {
                          "id": 25239,
                          "nodeType": "Block",
                          "src": "17612:27:93",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 25237,
                                "name": "index",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25191,
                                "src": "17627:5:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 25189,
                              "id": 25238,
                              "nodeType": "Return",
                              "src": "17620:12:93"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          25242
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 25242,
                            "mutability": "mutable",
                            "name": "currentTimestamp",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 25278,
                            "src": "17645:24:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 25241,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17645:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 25251,
                        "initialValue": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 25246,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 25243,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "17678:5:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 25244,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "17678:15:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 25245,
                              "name": "distributionEnd",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25205,
                              "src": "17696:15:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "17678:33:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 25248,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "17732:5:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 25249,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "17732:15:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 25250,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "17678:69:93",
                          "trueExpression": {
                            "argumentTypes": null,
                            "id": 25247,
                            "name": "distributionEnd",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25205,
                            "src": "17714:15:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17645:102:93"
                      },
                      {
                        "assignments": [
                          25253
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 25253,
                            "mutability": "mutable",
                            "name": "timeDelta",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 25278,
                            "src": "17753:17:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 25252,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17753:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 25258,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25256,
                              "name": "lastUpdateTimestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25195,
                              "src": "17794:19:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 25254,
                              "name": "currentTimestamp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25242,
                              "src": "17773:16:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 25255,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4346,
                            "src": "17773:20:93",
                            "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": 25257,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17773:41:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17753:61:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25275,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25191,
                              "src": "17902:5:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 25272,
                                  "name": "totalSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25211,
                                  "src": "17885:11:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 25269,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "3130",
                                        "id": 25264,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "17864:2:93",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "3138",
                                            "id": 25267,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "17876:2:93",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_18_by_1",
                                              "typeString": "int_const 18"
                                            },
                                            "value": "18"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_18_by_1",
                                              "typeString": "int_const 18"
                                            }
                                          ],
                                          "id": 25266,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "17868:7:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": {
                                            "id": 25265,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "17868:7:93",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 25268,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "17868:11:93",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "17864:15:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 25261,
                                          "name": "timeDelta",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25253,
                                          "src": "17849:9:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 25259,
                                          "name": "emissionPerSecond",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 25193,
                                          "src": "17827:17:93",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 25260,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4409,
                                        "src": "17827:21:93",
                                        "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": 25262,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17827:32:93",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 25263,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4409,
                                    "src": "17827:36:93",
                                    "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": 25270,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17827:53:93",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 25271,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "div",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4426,
                                "src": "17827:57:93",
                                "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": 25273,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17827:70:93",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 25274,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4329,
                            "src": "17827:74:93",
                            "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": 25276,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17827:81:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 25189,
                        "id": 25277,
                        "nodeType": "Return",
                        "src": "17820:88:93"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 25184,
                    "nodeType": "StructuredDocumentation",
                    "src": "17044:30:93",
                    "text": "@inheritdoc IStaticATokenLM"
                  },
                  "functionSelector": "189956a2",
                  "id": 25279,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getCurrentRewardsIndex",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25186,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "17123:8:93"
                  },
                  "parameters": {
                    "id": 25185,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17108:2:93"
                  },
                  "returnParameters": {
                    "id": 25189,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25188,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25279,
                        "src": "17141:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25187,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17141:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17140:9:93"
                  },
                  "scope": 25399,
                  "src": "17077:871:93",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7323
                  ],
                  "body": {
                    "id": 25341,
                    "nodeType": "Block",
                    "src": "18062:324:93",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 25294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 25288,
                                "name": "INCENTIVES_CONTROLLER",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23843,
                                "src": "18080:21:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                  "typeString": "contract IAaveIncentivesController"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                  "typeString": "contract IAaveIncentivesController"
                                }
                              ],
                              "id": 25287,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "18072:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 25286,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "18072:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 25289,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18072:30:93",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 25292,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "18114:1:93",
                                "subdenomination": null,
                                "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": 25291,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "18106:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 25290,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "18106:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 25293,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18106:10:93",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "18072:44:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 25298,
                        "nodeType": "IfStatement",
                        "src": "18068:73:93",
                        "trueBody": {
                          "id": 25297,
                          "nodeType": "Block",
                          "src": "18118:23:93",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 25295,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "18133:1:93",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 25285,
                              "id": 25296,
                              "nodeType": "Return",
                              "src": "18126:8:93"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          25303
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 25303,
                            "mutability": "mutable",
                            "name": "assets",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 25341,
                            "src": "18147:23:93",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 25301,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "18147:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 25302,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "18147:9:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 25309,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 25307,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18187:1:93",
                              "subdenomination": null,
                              "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": 25306,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "18173:13:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 25304,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "18177:7:93",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 25305,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "18177:9:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 25308,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18173:16:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18147:42:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25317,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 25310,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25303,
                              "src": "18195:6:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 25312,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 25311,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18202:1:93",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "18195:9:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 25315,
                                "name": "ATOKEN",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23846,
                                "src": "18215:6:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$4012",
                                  "typeString": "contract IERC20"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC20_$4012",
                                  "typeString": "contract IERC20"
                                }
                              ],
                              "id": 25314,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "18207:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 25313,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "18207:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 25316,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18207:15:93",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "18195:27:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 25318,
                        "nodeType": "ExpressionStatement",
                        "src": "18195:27:93"
                      },
                      {
                        "assignments": [
                          25320
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 25320,
                            "mutability": "mutable",
                            "name": "freshRewards",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 25341,
                            "src": "18228:20:93",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 25319,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18228:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 25329,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25323,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25303,
                              "src": "18291:6:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 25326,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "18307:4:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_StaticATokenLM_$25399",
                                    "typeString": "contract StaticATokenLM"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_StaticATokenLM_$25399",
                                    "typeString": "contract StaticATokenLM"
                                  }
                                ],
                                "id": 25325,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "18299:7:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 25324,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "18299:7:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 25327,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18299:13:93",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 25321,
                              "name": "INCENTIVES_CONTROLLER",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23843,
                              "src": "18251:21:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                "typeString": "contract IAaveIncentivesController"
                              }
                            },
                            "id": 25322,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getRewardsBalance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5758,
                            "src": "18251:39:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address[] memory,address) view external returns (uint256)"
                            }
                          },
                          "id": 25328,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18251:62:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18228:85:93"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25338,
                              "name": "freshRewards",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25320,
                              "src": "18368:12:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 25334,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "18357:4:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_StaticATokenLM_$25399",
                                        "typeString": "contract StaticATokenLM"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_StaticATokenLM_$25399",
                                        "typeString": "contract StaticATokenLM"
                                      }
                                    ],
                                    "id": 25333,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "18349:7:93",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 25332,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "18349:7:93",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 25335,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "18349:13:93",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25330,
                                  "name": "REWARD_TOKEN",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23852,
                                  "src": "18326:12:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$4012",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 25331,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3951,
                                "src": "18326:22:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 25336,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18326:37:93",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 25337,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4329,
                            "src": "18326:41:93",
                            "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": 25339,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18326:55:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 25285,
                        "id": 25340,
                        "nodeType": "Return",
                        "src": "18319:62:93"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 25280,
                    "nodeType": "StructuredDocumentation",
                    "src": "17952:30:93",
                    "text": "@inheritdoc IStaticATokenLM"
                  },
                  "functionSelector": "7f372cff",
                  "id": 25342,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTotalClaimableRewards",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25282,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "18035:8:93"
                  },
                  "parameters": {
                    "id": 25281,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18018:2:93"
                  },
                  "returnParameters": {
                    "id": 25285,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25284,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25342,
                        "src": "18053:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25283,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18053:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18052:9:93"
                  },
                  "scope": 25399,
                  "src": "17985:401:93",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7331
                  ],
                  "body": {
                    "id": 25360,
                    "nodeType": "Block",
                    "src": "18507:87:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25352,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25345,
                              "src": "18541:4:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 25354,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25345,
                                  "src": "18557:4:93",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 25353,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3534,
                                "src": "18547:9:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view returns (uint256)"
                                }
                              },
                              "id": 25355,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18547:15:93",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 25356,
                                "name": "getCurrentRewardsIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25279,
                                "src": "18564:22:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view returns (uint256)"
                                }
                              },
                              "id": 25357,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18564:24:93",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 25351,
                            "name": "_getClaimableRewards",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25183,
                            "src": "18520:20:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,uint256,uint256) view returns (uint256)"
                            }
                          },
                          "id": 25358,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18520:69:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 25350,
                        "id": 25359,
                        "nodeType": "Return",
                        "src": "18513:76:93"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 25343,
                    "nodeType": "StructuredDocumentation",
                    "src": "18390:30:93",
                    "text": "@inheritdoc IStaticATokenLM"
                  },
                  "functionSelector": "308e401e",
                  "id": 25361,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getClaimableRewards",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25347,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "18480:8:93"
                  },
                  "parameters": {
                    "id": 25346,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25345,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25361,
                        "src": "18452:12:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25344,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18452:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18451:14:93"
                  },
                  "returnParameters": {
                    "id": 25350,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25349,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25361,
                        "src": "18498:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25348,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18498:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18497:9:93"
                  },
                  "scope": 25399,
                  "src": "18423:171:93",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7339
                  ],
                  "body": {
                    "id": 25376,
                    "nodeType": "Block",
                    "src": "18715:62:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 25370,
                                "name": "_unclaimedRewards",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23864,
                                "src": "18728:17:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 25372,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 25371,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25364,
                                "src": "18746:4:93",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "18728:23:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 25373,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayToWadNoRounding",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20173,
                            "src": "18728:42:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 25374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18728:44:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 25369,
                        "id": 25375,
                        "nodeType": "Return",
                        "src": "18721:51:93"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 25362,
                    "nodeType": "StructuredDocumentation",
                    "src": "18598:30:93",
                    "text": "@inheritdoc IStaticATokenLM"
                  },
                  "functionSelector": "69a69e29",
                  "id": 25377,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUnclaimedRewards",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25366,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "18688:8:93"
                  },
                  "parameters": {
                    "id": 25365,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25364,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25377,
                        "src": "18660:12:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25363,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18660:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18659:14:93"
                  },
                  "returnParameters": {
                    "id": 25369,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25368,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25377,
                        "src": "18706:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25367,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18706:7:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18705:9:93"
                  },
                  "scope": 25399,
                  "src": "18631:146:93",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7380
                  ],
                  "body": {
                    "id": 25385,
                    "nodeType": "Block",
                    "src": "18875:39:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25383,
                          "name": "INCENTIVES_CONTROLLER",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23843,
                          "src": "18888:21:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "functionReturnParameters": 25382,
                        "id": 25384,
                        "nodeType": "Return",
                        "src": "18881:28:93"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "75d26413",
                  "id": 25386,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getIncentivesController",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25379,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "18830:8:93"
                  },
                  "parameters": {
                    "id": 25378,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18813:2:93"
                  },
                  "returnParameters": {
                    "id": 25382,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25381,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25386,
                        "src": "18848:25:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                          "typeString": "contract IAaveIncentivesController"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 25380,
                          "name": "IAaveIncentivesController",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5822,
                          "src": "18848:25:93",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18847:27:93"
                  },
                  "scope": 25399,
                  "src": "18781:133:93",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7375
                  ],
                  "body": {
                    "id": 25397,
                    "nodeType": "Block",
                    "src": "18995:32:93",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25394,
                              "name": "ASSET",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23849,
                              "src": "19016:5:93",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$4012",
                                "typeString": "contract IERC20"
                              }
                            ],
                            "id": 25393,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "19008:7:93",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 25392,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "19008:7:93",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 25395,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19008:14:93",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 25391,
                        "id": 25396,
                        "nodeType": "Return",
                        "src": "19001:21:93"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "b16a19de",
                  "id": 25398,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "UNDERLYING_ASSET_ADDRESS",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25388,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "18968:8:93"
                  },
                  "parameters": {
                    "id": 25387,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18951:2:93"
                  },
                  "returnParameters": {
                    "id": 25391,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25390,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25398,
                        "src": "18986:7:93",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25389,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18986:7:93",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18985:9:93"
                  },
                  "scope": 25399,
                  "src": "18918:109:93",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 25400,
              "src": "1697:17332:93"
            }
          ],
          "src": "37:18993:93"
        },
        "id": 93
      },
      "contracts/protocol/tokenization/VariableDebtToken.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/tokenization/VariableDebtToken.sol",
          "exportedSymbols": {
            "VariableDebtToken": [
              25782
            ]
          },
          "id": 25783,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 25401,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:94"
            },
            {
              "absolutePath": "contracts/interfaces/IVariableDebtToken.sol",
              "file": "../../interfaces/IVariableDebtToken.sol",
              "id": 25403,
              "nodeType": "ImportDirective",
              "scope": 25783,
              "sourceUnit": 7505,
              "src": "62:75:94",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 25402,
                    "name": "IVariableDebtToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:18:94",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/math/WadRayMath.sol",
              "file": "../libraries/math/WadRayMath.sol",
              "id": 25405,
              "nodeType": "ImportDirective",
              "scope": 25783,
              "sourceUnit": 20494,
              "src": "138:60:94",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 25404,
                    "name": "WadRayMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "146:10:94",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/helpers/Errors.sol",
              "file": "../libraries/helpers/Errors.sol",
              "id": 25407,
              "nodeType": "ImportDirective",
              "scope": 25783,
              "sourceUnit": 17240,
              "src": "199:55:94",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 25406,
                    "name": "Errors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "207:6:94",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/tokenization/base/DebtTokenBase.sol",
              "file": "./base/DebtTokenBase.sol",
              "id": 25409,
              "nodeType": "ImportDirective",
              "scope": 25783,
              "sourceUnit": 26044,
              "src": "255:55:94",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 25408,
                    "name": "DebtTokenBase",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "263:13:94",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPool.sol",
              "file": "../../interfaces/ILendingPool.sol",
              "id": 25411,
              "nodeType": "ImportDirective",
              "scope": 25783,
              "sourceUnit": 6467,
              "src": "311:63:94",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 25410,
                    "name": "ILendingPool",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "319:12:94",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IAaveIncentivesController.sol",
              "file": "../../interfaces/IAaveIncentivesController.sol",
              "id": 25413,
              "nodeType": "ImportDirective",
              "scope": 25783,
              "sourceUnit": 5823,
              "src": "375:89:94",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 25412,
                    "name": "IAaveIncentivesController",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "383:25:94",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 25415,
                    "name": "DebtTokenBase",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 26043,
                    "src": "660:13:94",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DebtTokenBase_$26043",
                      "typeString": "contract DebtTokenBase"
                    }
                  },
                  "id": 25416,
                  "nodeType": "InheritanceSpecifier",
                  "src": "660:13:94"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 25417,
                    "name": "IVariableDebtToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7504,
                    "src": "675:18:94",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IVariableDebtToken_$7504",
                      "typeString": "contract IVariableDebtToken"
                    }
                  },
                  "id": 25418,
                  "nodeType": "InheritanceSpecifier",
                  "src": "675:18:94"
                }
              ],
              "contractDependencies": [
                3427,
                4012,
                4034,
                5899,
                6058,
                7005,
                7504,
                16019,
                21971,
                26043
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 25414,
                "nodeType": "StructuredDocumentation",
                "src": "466:163:94",
                "text": " @title VariableDebtToken\n @notice Implements a variable debt token to track the borrowing positions of users\n at variable rate mode\n @author Aave*"
              },
              "fullyImplemented": true,
              "id": 25782,
              "linearizedBaseContracts": [
                25782,
                7504,
                6058,
                7005,
                26043,
                5899,
                16019,
                21971,
                4034,
                4012,
                3427
              ],
              "name": "VariableDebtToken",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 25421,
                  "libraryName": {
                    "contractScope": null,
                    "id": 25419,
                    "name": "WadRayMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20493,
                    "src": "704:10:94",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_WadRayMath_$20493",
                      "typeString": "library WadRayMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "698:29:94",
                  "typeName": {
                    "id": 25420,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "719:7:94",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": true,
                  "functionSelector": "b9a7b622",
                  "id": 25424,
                  "mutability": "constant",
                  "name": "DEBT_TOKEN_REVISION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25782,
                  "src": "731:49:94",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 25422,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "731:7:94",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307831",
                    "id": 25423,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "777:3:94",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1_by_1",
                      "typeString": "int_const 1"
                    },
                    "value": "0x1"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 25426,
                  "mutability": "mutable",
                  "name": "_pool",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25782,
                  "src": "785:27:94",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                    "typeString": "contract ILendingPool"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25425,
                    "name": "ILendingPool",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6466,
                    "src": "785:12:94",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                      "typeString": "contract ILendingPool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25428,
                  "mutability": "mutable",
                  "name": "_underlyingAsset",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25782,
                  "src": "816:33:94",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 25427,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "816:7:94",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25430,
                  "mutability": "mutable",
                  "name": "_incentivesController",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 25782,
                  "src": "853:56:94",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                    "typeString": "contract IAaveIncentivesController"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 25429,
                    "name": "IAaveIncentivesController",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5822,
                    "src": "853:25:94",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                      "typeString": "contract IAaveIncentivesController"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    6057
                  ],
                  "body": {
                    "id": 25491,
                    "nodeType": "Block",
                    "src": "1712:406:94",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25452,
                              "name": "debtTokenName",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25441,
                              "src": "1727:13:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 25451,
                            "name": "_setName",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21940,
                            "src": "1718:8:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory)"
                            }
                          },
                          "id": 25453,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1718:23:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25454,
                        "nodeType": "ExpressionStatement",
                        "src": "1718:23:94"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25456,
                              "name": "debtTokenSymbol",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25443,
                              "src": "1758:15:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 25455,
                            "name": "_setSymbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21950,
                            "src": "1747:10:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory)"
                            }
                          },
                          "id": 25457,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1747:27:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25458,
                        "nodeType": "ExpressionStatement",
                        "src": "1747:27:94"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25460,
                              "name": "debtTokenDecimals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25439,
                              "src": "1793:17:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 25459,
                            "name": "_setDecimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21960,
                            "src": "1780:12:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$",
                              "typeString": "function (uint8)"
                            }
                          },
                          "id": 25461,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1780:31:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25462,
                        "nodeType": "ExpressionStatement",
                        "src": "1780:31:94"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 25463,
                            "name": "_pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25426,
                            "src": "1818:5:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPool_$6466",
                              "typeString": "contract ILendingPool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 25464,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25433,
                            "src": "1826:4:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILendingPool_$6466",
                              "typeString": "contract ILendingPool"
                            }
                          },
                          "src": "1818:12:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "id": 25466,
                        "nodeType": "ExpressionStatement",
                        "src": "1818:12:94"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25469,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 25467,
                            "name": "_underlyingAsset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25428,
                            "src": "1836:16:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 25468,
                            "name": "underlyingAsset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25435,
                            "src": "1855:15:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1836:34:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 25470,
                        "nodeType": "ExpressionStatement",
                        "src": "1836:34:94"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25473,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 25471,
                            "name": "_incentivesController",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25430,
                            "src": "1876:21:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                              "typeString": "contract IAaveIncentivesController"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 25472,
                            "name": "incentivesController",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25437,
                            "src": "1900:20:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                              "typeString": "contract IAaveIncentivesController"
                            }
                          },
                          "src": "1876:44:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "id": 25474,
                        "nodeType": "ExpressionStatement",
                        "src": "1876:44:94"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25476,
                              "name": "underlyingAsset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25435,
                              "src": "1951:15:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 25479,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25433,
                                  "src": "1982:4:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                ],
                                "id": 25478,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1974:7:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 25477,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1974:7:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 25480,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1974:13:94",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 25483,
                                  "name": "incentivesController",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25437,
                                  "src": "2003:20:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                    "typeString": "contract IAaveIncentivesController"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                                    "typeString": "contract IAaveIncentivesController"
                                  }
                                ],
                                "id": 25482,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1995:7:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 25481,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1995:7:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 25484,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1995:29:94",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25485,
                              "name": "debtTokenDecimals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25439,
                              "src": "2032:17:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25486,
                              "name": "debtTokenName",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25441,
                              "src": "2057:13:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25487,
                              "name": "debtTokenSymbol",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25443,
                              "src": "2078:15:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25488,
                              "name": "params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25445,
                              "src": "2101:6:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 25475,
                            "name": "Initialized",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6039,
                            "src": "1932:11:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint8_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint8,string memory,string memory,bytes memory)"
                            }
                          },
                          "id": 25489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1932:181:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25490,
                        "nodeType": "EmitStatement",
                        "src": "1927:186:94"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 25431,
                    "nodeType": "StructuredDocumentation",
                    "src": "914:515:94",
                    "text": " @dev Initializes the debt token.\n @param pool The address of the lending pool where this aToken will be used\n @param underlyingAsset The address of the underlying asset of this aToken (E.g. WETH for aWETH)\n @param incentivesController The smart contract managing potential incentives distribution\n @param debtTokenDecimals The decimals of the debtToken, same as the underlying asset's\n @param debtTokenName The name of the token\n @param debtTokenSymbol The symbol of the token"
                  },
                  "functionSelector": "c222ec8a",
                  "id": 25492,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 25449,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 25448,
                        "name": "initializer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15993,
                        "src": "1700:11:94",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1700:11:94"
                    }
                  ],
                  "name": "initialize",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25447,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1691:8:94"
                  },
                  "parameters": {
                    "id": 25446,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25433,
                        "mutability": "mutable",
                        "name": "pool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25492,
                        "src": "1457:17:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPool_$6466",
                          "typeString": "contract ILendingPool"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 25432,
                          "name": "ILendingPool",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6466,
                          "src": "1457:12:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25435,
                        "mutability": "mutable",
                        "name": "underlyingAsset",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25492,
                        "src": "1480:23:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25434,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1480:7:94",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25437,
                        "mutability": "mutable",
                        "name": "incentivesController",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25492,
                        "src": "1509:46:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                          "typeString": "contract IAaveIncentivesController"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 25436,
                          "name": "IAaveIncentivesController",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5822,
                          "src": "1509:25:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25439,
                        "mutability": "mutable",
                        "name": "debtTokenDecimals",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25492,
                        "src": "1561:23:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 25438,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "1561:5:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25441,
                        "mutability": "mutable",
                        "name": "debtTokenName",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25492,
                        "src": "1590:27:94",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25440,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1590:6:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25443,
                        "mutability": "mutable",
                        "name": "debtTokenSymbol",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25492,
                        "src": "1623:29:94",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25442,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1623:6:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25445,
                        "mutability": "mutable",
                        "name": "params",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25492,
                        "src": "1658:21:94",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 25444,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1658:5:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1451:232:94"
                  },
                  "returnParameters": {
                    "id": 25450,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1712:0:94"
                  },
                  "scope": 25782,
                  "src": "1432:686:94",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    15999
                  ],
                  "body": {
                    "id": 25501,
                    "nodeType": "Block",
                    "src": "2327:37:94",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25499,
                          "name": "DEBT_TOKEN_REVISION",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25424,
                          "src": "2340:19:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 25498,
                        "id": 25500,
                        "nodeType": "Return",
                        "src": "2333:26:94"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 25493,
                    "nodeType": "StructuredDocumentation",
                    "src": "2122:130:94",
                    "text": " @dev Gets the revision of the stable debt token implementation\n @return The debt token implementation revision*"
                  },
                  "id": 25502,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRevision",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25495,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2300:8:94"
                  },
                  "parameters": {
                    "id": 25494,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2275:2:94"
                  },
                  "returnParameters": {
                    "id": 25498,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25497,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25502,
                        "src": "2318:7:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25496,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2318:7:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2317:9:94"
                  },
                  "scope": 25782,
                  "src": "2255:109:94",
                  "stateMutability": "pure",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    21459
                  ],
                  "body": {
                    "id": 25533,
                    "nodeType": "Block",
                    "src": "2565:201:94",
                    "statements": [
                      {
                        "assignments": [
                          25512
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 25512,
                            "mutability": "mutable",
                            "name": "scaledBalance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 25533,
                            "src": "2571:21:94",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 25511,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2571:7:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 25517,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25515,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25505,
                              "src": "2611:4:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 25513,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "2595:5:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_VariableDebtToken_$25782",
                                "typeString": "contract super VariableDebtToken"
                              }
                            },
                            "id": 25514,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21459,
                            "src": "2595:15:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 25516,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2595:21:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2571:45:94"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 25520,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 25518,
                            "name": "scaledBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25512,
                            "src": "2627:13:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 25519,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2644:1:94",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2627:18:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 25524,
                        "nodeType": "IfStatement",
                        "src": "2623:47:94",
                        "trueBody": {
                          "id": 25523,
                          "nodeType": "Block",
                          "src": "2647:23:94",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 25521,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2662:1:94",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 25510,
                              "id": 25522,
                              "nodeType": "Return",
                              "src": "2655:8:94"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 25529,
                                  "name": "_underlyingAsset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25428,
                                  "src": "2743:16:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25527,
                                  "name": "_pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25426,
                                  "src": "2704:5:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                },
                                "id": 25528,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getReserveNormalizedVariableDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6421,
                                "src": "2704:38:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 25530,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2704:56:94",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 25525,
                              "name": "scaledBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25512,
                              "src": "2683:13:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 25526,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayMul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20381,
                            "src": "2683:20:94",
                            "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": 25531,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2683:78:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 25510,
                        "id": 25532,
                        "nodeType": "Return",
                        "src": "2676:85:94"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 25503,
                    "nodeType": "StructuredDocumentation",
                    "src": "2368:114:94",
                    "text": " @dev Calculates the accumulated debt balance of the user\n @return The debt balance of the user*"
                  },
                  "functionSelector": "70a08231",
                  "id": 25534,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25507,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2538:8:94"
                  },
                  "parameters": {
                    "id": 25506,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25505,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25534,
                        "src": "2504:12:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25504,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2504:7:94",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2503:14:94"
                  },
                  "returnParameters": {
                    "id": 25510,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25509,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25534,
                        "src": "2556:7:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25508,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2556:7:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2555:9:94"
                  },
                  "scope": 25782,
                  "src": "2485:281:94",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7478
                  ],
                  "body": {
                    "id": 25609,
                    "nodeType": "Block",
                    "src": "3412:443:94",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 25553,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 25551,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25537,
                            "src": "3422:4:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 25552,
                            "name": "onBehalfOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25539,
                            "src": "3430:10:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3422:18:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 25561,
                        "nodeType": "IfStatement",
                        "src": "3418:89:94",
                        "trueBody": {
                          "id": 25560,
                          "nodeType": "Block",
                          "src": "3442:65:94",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 25555,
                                    "name": "onBehalfOf",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25539,
                                    "src": "3475:10:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25556,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25537,
                                    "src": "3487:4:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 25557,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 25541,
                                    "src": "3493:6:94",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 25554,
                                  "name": "_decreaseBorrowAllowance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26032,
                                  "src": "3450:24:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 25558,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3450:50:94",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 25559,
                              "nodeType": "ExpressionStatement",
                              "src": "3450:50:94"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          25563
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 25563,
                            "mutability": "mutable",
                            "name": "previousBalance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 25609,
                            "src": "3513:23:94",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 25562,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3513:7:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 25568,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25566,
                              "name": "onBehalfOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25539,
                              "src": "3555:10:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 25564,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "3539:5:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_VariableDebtToken_$25782",
                                "typeString": "contract super VariableDebtToken"
                              }
                            },
                            "id": 25565,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21459,
                            "src": "3539:15:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 25567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3539:27:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3513:53:94"
                      },
                      {
                        "assignments": [
                          25570
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 25570,
                            "mutability": "mutable",
                            "name": "amountScaled",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 25609,
                            "src": "3572:20:94",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 25569,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3572:7:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 25575,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25573,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25543,
                              "src": "3609:5:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 25571,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25541,
                              "src": "3595:6:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 25572,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayDiv",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20432,
                            "src": "3595:13:94",
                            "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": 25574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3595:20:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3572:43:94"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 25579,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 25577,
                                "name": "amountScaled",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25570,
                                "src": "3629:12:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 25578,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3645:1:94",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3629:17:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 25580,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "3648:6:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 25581,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "CT_INVALID_MINT_AMOUNT",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17164,
                              "src": "3648:29:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 25576,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3621:7:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 25582,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3621:57:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25583,
                        "nodeType": "ExpressionStatement",
                        "src": "3621:57:94"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25585,
                              "name": "onBehalfOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25539,
                              "src": "3691:10:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25586,
                              "name": "amountScaled",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25570,
                              "src": "3703:12:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 25584,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21812,
                            "src": "3685:5:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 25587,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3685:31:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25588,
                        "nodeType": "ExpressionStatement",
                        "src": "3685:31:94"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 25592,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3745:1:94",
                                  "subdenomination": null,
                                  "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": 25591,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3737:7:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 25590,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3737:7:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 25593,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3737:10:94",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25594,
                              "name": "onBehalfOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25539,
                              "src": "3749:10:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25595,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25541,
                              "src": "3761:6:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 25589,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4002,
                            "src": "3728:8:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 25596,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3728:40:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25597,
                        "nodeType": "EmitStatement",
                        "src": "3723:45:94"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25599,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25537,
                              "src": "3784:4:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25600,
                              "name": "onBehalfOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25539,
                              "src": "3790:10:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25601,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25541,
                              "src": "3802:6:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25602,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25543,
                              "src": "3810:5:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 25598,
                            "name": "Mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7464,
                            "src": "3779:4:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256)"
                            }
                          },
                          "id": 25603,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3779:37:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25604,
                        "nodeType": "EmitStatement",
                        "src": "3774:42:94"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 25607,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 25605,
                            "name": "previousBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25563,
                            "src": "3830:15:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 25606,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3849:1:94",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3830:20:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 25550,
                        "id": 25608,
                        "nodeType": "Return",
                        "src": "3823:27:94"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 25535,
                    "nodeType": "StructuredDocumentation",
                    "src": "2770:491:94",
                    "text": " @dev Mints debt token to the `onBehalfOf` address\n -  Only callable by the LendingPool\n @param user The address receiving the borrowed underlying, being the delegatee in case\n of credit delegate, or same as `onBehalfOf` otherwise\n @param onBehalfOf The address receiving the debt tokens\n @param amount The amount of debt being minted\n @param index The variable debt index of the reserve\n @return `true` if the the previous balance of the user is 0*"
                  },
                  "functionSelector": "b3f1c93d",
                  "id": 25610,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 25547,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 25546,
                        "name": "onlyLendingPool",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25828,
                        "src": "3381:15:94",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3381:15:94"
                    }
                  ],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25545,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3372:8:94"
                  },
                  "parameters": {
                    "id": 25544,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25537,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25610,
                        "src": "3283:12:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25536,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3283:7:94",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25539,
                        "mutability": "mutable",
                        "name": "onBehalfOf",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25610,
                        "src": "3301:18:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25538,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3301:7:94",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25541,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25610,
                        "src": "3325:14:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25540,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3325:7:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25543,
                        "mutability": "mutable",
                        "name": "index",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25610,
                        "src": "3345:13:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25542,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3345:7:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3277:85:94"
                  },
                  "returnParameters": {
                    "id": 25550,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25549,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25610,
                        "src": "3406:4:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25548,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3406:4:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3405:6:94"
                  },
                  "scope": 25782,
                  "src": "3264:591:94",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    7497
                  ],
                  "body": {
                    "id": 25658,
                    "nodeType": "Block",
                    "src": "4213:231:94",
                    "statements": [
                      {
                        "assignments": [
                          25624
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 25624,
                            "mutability": "mutable",
                            "name": "amountScaled",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 25658,
                            "src": "4219:20:94",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 25623,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4219:7:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 25629,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25627,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25617,
                              "src": "4256:5:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 25625,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25615,
                              "src": "4242:6:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 25626,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayDiv",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20432,
                            "src": "4242:13:94",
                            "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": 25628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4242:20:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4219:43:94"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 25633,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 25631,
                                "name": "amountScaled",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25624,
                                "src": "4276:12:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 25632,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4292:1:94",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4276:17:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 25634,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "4295:6:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 25635,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "CT_INVALID_BURN_AMOUNT",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17170,
                              "src": "4295:29:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 25630,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4268:7:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 25636,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4268:57:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25637,
                        "nodeType": "ExpressionStatement",
                        "src": "4268:57:94"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25639,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25613,
                              "src": "4338:4:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25640,
                              "name": "amountScaled",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25624,
                              "src": "4344:12:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 25638,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21886,
                            "src": "4332:5:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 25641,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4332:25:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25642,
                        "nodeType": "ExpressionStatement",
                        "src": "4332:25:94"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25644,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25613,
                              "src": "4378:4:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 25647,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4392:1:94",
                                  "subdenomination": null,
                                  "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": 25646,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4384:7:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 25645,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4384:7:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 25648,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4384:10:94",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25649,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25615,
                              "src": "4396:6:94",
                              "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": 25643,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4002,
                            "src": "4369:8:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 25650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4369:34:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25651,
                        "nodeType": "EmitStatement",
                        "src": "4364:39:94"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25653,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25613,
                              "src": "4419:4:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25654,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25615,
                              "src": "4425:6:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25655,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25617,
                              "src": "4433:5:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 25652,
                            "name": "Burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7487,
                            "src": "4414:4:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 25656,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4414:25:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25657,
                        "nodeType": "EmitStatement",
                        "src": "4409:30:94"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 25611,
                    "nodeType": "StructuredDocumentation",
                    "src": "3859:242:94",
                    "text": " @dev Burns user variable debt\n - Only callable by the LendingPool\n @param user The user whose debt is getting burned\n @param amount The amount getting burned\n @param index The variable debt index of the reserve*"
                  },
                  "functionSelector": "f5298aca",
                  "id": 25659,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 25621,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 25620,
                        "name": "onlyLendingPool",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25828,
                        "src": "4197:15:94",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4197:15:94"
                    }
                  ],
                  "name": "burn",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25619,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4188:8:94"
                  },
                  "parameters": {
                    "id": 25618,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25613,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25659,
                        "src": "4123:12:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25612,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4123:7:94",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25615,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25659,
                        "src": "4141:14:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25614,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4141:7:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25617,
                        "mutability": "mutable",
                        "name": "index",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25659,
                        "src": "4161:13:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25616,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4161:7:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4117:61:94"
                  },
                  "returnParameters": {
                    "id": 25622,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4213:0:94"
                  },
                  "scope": 25782,
                  "src": "4104:340:94",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    6988
                  ],
                  "body": {
                    "id": 25673,
                    "nodeType": "Block",
                    "src": "4683:39:94",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 25670,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25662,
                              "src": "4712:4:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 25668,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "4696:5:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_VariableDebtToken_$25782",
                                "typeString": "contract super VariableDebtToken"
                              }
                            },
                            "id": 25669,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21459,
                            "src": "4696:15:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 25671,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4696:21:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 25667,
                        "id": 25672,
                        "nodeType": "Return",
                        "src": "4689:28:94"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 25660,
                    "nodeType": "StructuredDocumentation",
                    "src": "4448:146:94",
                    "text": " @dev Returns the principal debt balance of the user from\n @return The debt balance of the user since the last burn/mint action*"
                  },
                  "functionSelector": "1da24f3e",
                  "id": 25674,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "scaledBalanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25664,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4656:8:94"
                  },
                  "parameters": {
                    "id": 25663,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25662,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25674,
                        "src": "4622:12:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25661,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4622:7:94",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4621:14:94"
                  },
                  "returnParameters": {
                    "id": 25667,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25666,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25674,
                        "src": "4674:7:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25665,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4674:7:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4673:9:94"
                  },
                  "scope": 25782,
                  "src": "4597:125:94",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    21445
                  ],
                  "body": {
                    "id": 25691,
                    "nodeType": "Block",
                    "src": "4949:102:94",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 25687,
                                  "name": "_underlyingAsset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25428,
                                  "src": "5028:16:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25685,
                                  "name": "_pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25426,
                                  "src": "4989:5:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                    "typeString": "contract ILendingPool"
                                  }
                                },
                                "id": 25686,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getReserveNormalizedVariableDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6421,
                                "src": "4989:38:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 25688,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4989:56:94",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25681,
                                  "name": "super",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -25,
                                  "src": "4962:5:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_super$_VariableDebtToken_$25782",
                                    "typeString": "contract super VariableDebtToken"
                                  }
                                },
                                "id": 25682,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalSupply",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21445,
                                "src": "4962:17:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view returns (uint256)"
                                }
                              },
                              "id": 25683,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4962:19:94",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 25684,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "rayMul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 20381,
                            "src": "4962:26:94",
                            "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": 25689,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4962:84:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 25680,
                        "id": 25690,
                        "nodeType": "Return",
                        "src": "4955:91:94"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 25675,
                    "nodeType": "StructuredDocumentation",
                    "src": "4726:150:94",
                    "text": " @dev Returns the total supply of the variable debt token. Represents the total debt accrued by the users\n @return The total supply*"
                  },
                  "functionSelector": "18160ddd",
                  "id": 25692,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25677,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4922:8:94"
                  },
                  "parameters": {
                    "id": 25676,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4899:2:94"
                  },
                  "returnParameters": {
                    "id": 25680,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25679,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25692,
                        "src": "4940:7:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25678,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4940:7:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4939:9:94"
                  },
                  "scope": 25782,
                  "src": "4879:172:94",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7004
                  ],
                  "body": {
                    "id": 25703,
                    "nodeType": "Block",
                    "src": "5278:37:94",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 25699,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "5291:5:94",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_VariableDebtToken_$25782",
                                "typeString": "contract super VariableDebtToken"
                              }
                            },
                            "id": 25700,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "totalSupply",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21445,
                            "src": "5291:17:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 25701,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5291:19:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 25698,
                        "id": 25702,
                        "nodeType": "Return",
                        "src": "5284:26:94"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 25693,
                    "nodeType": "StructuredDocumentation",
                    "src": "5055:144:94",
                    "text": " @dev Returns the scaled total supply of the variable debt token. Represents sum(debt/index)\n @return the scaled total supply*"
                  },
                  "functionSelector": "b1bf962d",
                  "id": 25704,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "scaledTotalSupply",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25695,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5251:8:94"
                  },
                  "parameters": {
                    "id": 25694,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5228:2:94"
                  },
                  "returnParameters": {
                    "id": 25698,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25697,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25704,
                        "src": "5269:7:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25696,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5269:7:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5268:9:94"
                  },
                  "scope": 25782,
                  "src": "5202:113:94",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    6998
                  ],
                  "body": {
                    "id": 25724,
                    "nodeType": "Block",
                    "src": "5661:62:94",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 25717,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25707,
                                  "src": "5691:4:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25715,
                                  "name": "super",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -25,
                                  "src": "5675:5:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_super$_VariableDebtToken_$25782",
                                    "typeString": "contract super VariableDebtToken"
                                  }
                                },
                                "id": 25716,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21459,
                                "src": "5675:15:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view returns (uint256)"
                                }
                              },
                              "id": 25718,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5675:21:94",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 25719,
                                  "name": "super",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -25,
                                  "src": "5698:5:94",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_super$_VariableDebtToken_$25782",
                                    "typeString": "contract super VariableDebtToken"
                                  }
                                },
                                "id": 25720,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalSupply",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21445,
                                "src": "5698:17:94",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view returns (uint256)"
                                }
                              },
                              "id": 25721,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5698:19:94",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 25722,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "5674:44:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 25714,
                        "id": 25723,
                        "nodeType": "Return",
                        "src": "5667:51:94"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 25705,
                    "nodeType": "StructuredDocumentation",
                    "src": "5319:218:94",
                    "text": " @dev Returns the principal balance of the user and principal total supply.\n @param user The address of the user\n @return The principal balance of the user\n @return The principal total supply*"
                  },
                  "functionSelector": "0afbcdc9",
                  "id": 25725,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getScaledUserBalanceAndSupply",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25709,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5619:8:94"
                  },
                  "parameters": {
                    "id": 25708,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25707,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25725,
                        "src": "5579:12:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25706,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5579:7:94",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5578:14:94"
                  },
                  "returnParameters": {
                    "id": 25714,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25711,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25725,
                        "src": "5641:7:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25710,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5641:7:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25713,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25725,
                        "src": "5650:7:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25712,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5650:7:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5640:18:94"
                  },
                  "scope": 25782,
                  "src": "5540:183:94",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 25733,
                    "nodeType": "Block",
                    "src": "5897:34:94",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25731,
                          "name": "_underlyingAsset",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25428,
                          "src": "5910:16:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 25730,
                        "id": 25732,
                        "nodeType": "Return",
                        "src": "5903:23:94"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 25726,
                    "nodeType": "StructuredDocumentation",
                    "src": "5727:101:94",
                    "text": " @dev Returns the address of the underlying asset of this aToken (E.g. WETH for aWETH)*"
                  },
                  "functionSelector": "b16a19de",
                  "id": 25734,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "UNDERLYING_ASSET_ADDRESS",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 25727,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5864:2:94"
                  },
                  "returnParameters": {
                    "id": 25730,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25729,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25734,
                        "src": "5888:7:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25728,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5888:7:94",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5887:9:94"
                  },
                  "scope": 25782,
                  "src": "5831:100:94",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7503
                  ],
                  "body": {
                    "id": 25744,
                    "nodeType": "Block",
                    "src": "6110:44:94",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 25741,
                            "name": "_getIncentivesController",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              25763
                            ],
                            "referencedDeclaration": 25763,
                            "src": "6123:24:94",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IAaveIncentivesController_$5822_$",
                              "typeString": "function () view returns (contract IAaveIncentivesController)"
                            }
                          },
                          "id": 25742,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6123:26:94",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "functionReturnParameters": 25740,
                        "id": 25743,
                        "nodeType": "Return",
                        "src": "6116:33:94"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 25735,
                    "nodeType": "StructuredDocumentation",
                    "src": "5935:78:94",
                    "text": " @dev Returns the address of the incentives controller contract*"
                  },
                  "functionSelector": "75d26413",
                  "id": 25745,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getIncentivesController",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25737,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6065:8:94"
                  },
                  "parameters": {
                    "id": 25736,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6048:2:94"
                  },
                  "returnParameters": {
                    "id": 25740,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25739,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25745,
                        "src": "6083:25:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                          "typeString": "contract IAaveIncentivesController"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 25738,
                          "name": "IAaveIncentivesController",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5822,
                          "src": "6083:25:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6082:27:94"
                  },
                  "scope": 25782,
                  "src": "6016:138:94",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 25753,
                    "nodeType": "Block",
                    "src": "6298:23:94",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25751,
                          "name": "_pool",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25426,
                          "src": "6311:5:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "functionReturnParameters": 25750,
                        "id": 25752,
                        "nodeType": "Return",
                        "src": "6304:12:94"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 25746,
                    "nodeType": "StructuredDocumentation",
                    "src": "6158:86:94",
                    "text": " @dev Returns the address of the lending pool where this aToken is used*"
                  },
                  "functionSelector": "7535d246",
                  "id": 25754,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "POOL",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 25747,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6260:2:94"
                  },
                  "returnParameters": {
                    "id": 25750,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25749,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25754,
                        "src": "6284:12:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPool_$6466",
                          "typeString": "contract ILendingPool"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 25748,
                          "name": "ILendingPool",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6466,
                          "src": "6284:12:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6283:14:94"
                  },
                  "scope": 25782,
                  "src": "6247:74:94",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    21465
                  ],
                  "body": {
                    "id": 25762,
                    "nodeType": "Block",
                    "src": "6420:39:94",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25760,
                          "name": "_incentivesController",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25430,
                          "src": "6433:21:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "functionReturnParameters": 25759,
                        "id": 25761,
                        "nodeType": "Return",
                        "src": "6426:28:94"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 25763,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getIncentivesController",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25756,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6375:8:94"
                  },
                  "parameters": {
                    "id": 25755,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6358:2:94"
                  },
                  "returnParameters": {
                    "id": 25759,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25758,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25763,
                        "src": "6393:25:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                          "typeString": "contract IAaveIncentivesController"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 25757,
                          "name": "IAaveIncentivesController",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5822,
                          "src": "6393:25:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IAaveIncentivesController_$5822",
                            "typeString": "contract IAaveIncentivesController"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6392:27:94"
                  },
                  "scope": 25782,
                  "src": "6325:134:94",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    26037
                  ],
                  "body": {
                    "id": 25771,
                    "nodeType": "Block",
                    "src": "6542:34:94",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25769,
                          "name": "_underlyingAsset",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25428,
                          "src": "6555:16:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 25768,
                        "id": 25770,
                        "nodeType": "Return",
                        "src": "6548:23:94"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 25772,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getUnderlyingAssetAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25765,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6515:8:94"
                  },
                  "parameters": {
                    "id": 25764,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6498:2:94"
                  },
                  "returnParameters": {
                    "id": 25768,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25767,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25772,
                        "src": "6533:7:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25766,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6533:7:94",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6532:9:94"
                  },
                  "scope": 25782,
                  "src": "6463:113:94",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    26042
                  ],
                  "body": {
                    "id": 25780,
                    "nodeType": "Block",
                    "src": "6653:23:94",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25778,
                          "name": "_pool",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25426,
                          "src": "6666:5:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "functionReturnParameters": 25777,
                        "id": 25779,
                        "nodeType": "Return",
                        "src": "6659:12:94"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 25781,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getLendingPool",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25774,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6621:8:94"
                  },
                  "parameters": {
                    "id": 25773,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6604:2:94"
                  },
                  "returnParameters": {
                    "id": 25777,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25776,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25781,
                        "src": "6639:12:94",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPool_$6466",
                          "typeString": "contract ILendingPool"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 25775,
                          "name": "ILendingPool",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6466,
                          "src": "6639:12:94",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6638:14:94"
                  },
                  "scope": 25782,
                  "src": "6580:96:94",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 25783,
              "src": "630:6048:94"
            }
          ],
          "src": "37:6642:94"
        },
        "id": 94
      },
      "contracts/protocol/tokenization/base/DebtTokenBase.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/tokenization/base/DebtTokenBase.sol",
          "exportedSymbols": {
            "DebtTokenBase": [
              26043
            ]
          },
          "id": 26044,
          "license": "agpl-3.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 25784,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:23:95"
            },
            {
              "absolutePath": "contracts/interfaces/ILendingPool.sol",
              "file": "../../../interfaces/ILendingPool.sol",
              "id": 25786,
              "nodeType": "ImportDirective",
              "scope": 26044,
              "sourceUnit": 6467,
              "src": "62:66:95",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 25785,
                    "name": "ILendingPool",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "70:12:95",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ICreditDelegationToken.sol",
              "file": "../../../interfaces/ICreditDelegationToken.sol",
              "id": 25788,
              "nodeType": "ImportDirective",
              "scope": 26044,
              "sourceUnit": 5900,
              "src": "129:86:95",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 25787,
                    "name": "ICreditDelegationToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "137:22:95",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/aave-upgradeability/VersionedInitializable.sol",
              "file": "../../libraries/aave-upgradeability/VersionedInitializable.sol",
              "id": 25790,
              "nodeType": "ImportDirective",
              "scope": 26044,
              "sourceUnit": 16020,
              "src": "216:106:95",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 25789,
                    "name": "VersionedInitializable",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "227:22:95",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/tokenization/IncentivizedERC20.sol",
              "file": "../IncentivizedERC20.sol",
              "id": 25792,
              "nodeType": "ImportDirective",
              "scope": 26044,
              "sourceUnit": 21972,
              "src": "323:59:95",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 25791,
                    "name": "IncentivizedERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "331:17:95",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/protocol/libraries/helpers/Errors.sol",
              "file": "../../libraries/helpers/Errors.sol",
              "id": 25794,
              "nodeType": "ImportDirective",
              "scope": 26044,
              "sourceUnit": 17240,
              "src": "383:58:95",
              "symbolAliases": [
                {
                  "foreign": {
                    "argumentTypes": null,
                    "id": 25793,
                    "name": "Errors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": null,
                    "src": "391:6:95",
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    }
                  },
                  "local": null
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "arguments": [
                    {
                      "argumentTypes": null,
                      "hexValue": "44454254544f4b454e5f494d504c",
                      "id": 25797,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "650:16:95",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_36a9761d46bfaf71bf43090ee7ab256560837f846fea007c88494b2bc6d07916",
                        "typeString": "literal_string \"DEBTTOKEN_IMPL\""
                      },
                      "value": "DEBTTOKEN_IMPL"
                    },
                    {
                      "argumentTypes": null,
                      "hexValue": "44454254544f4b454e5f494d504c",
                      "id": 25798,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "668:16:95",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_36a9761d46bfaf71bf43090ee7ab256560837f846fea007c88494b2bc6d07916",
                        "typeString": "literal_string \"DEBTTOKEN_IMPL\""
                      },
                      "value": "DEBTTOKEN_IMPL"
                    },
                    {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 25799,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "686:1:95",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    }
                  ],
                  "baseName": {
                    "contractScope": null,
                    "id": 25796,
                    "name": "IncentivizedERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21971,
                    "src": "632:17:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IncentivizedERC20_$21971",
                      "typeString": "contract IncentivizedERC20"
                    }
                  },
                  "id": 25800,
                  "nodeType": "InheritanceSpecifier",
                  "src": "632:56:95"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 25801,
                    "name": "VersionedInitializable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16019,
                    "src": "692:22:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_VersionedInitializable_$16019",
                      "typeString": "contract VersionedInitializable"
                    }
                  },
                  "id": 25802,
                  "nodeType": "InheritanceSpecifier",
                  "src": "692:22:95"
                },
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 25803,
                    "name": "ICreditDelegationToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5899,
                    "src": "718:22:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ICreditDelegationToken_$5899",
                      "typeString": "contract ICreditDelegationToken"
                    }
                  },
                  "id": 25804,
                  "nodeType": "InheritanceSpecifier",
                  "src": "718:22:95"
                }
              ],
              "contractDependencies": [
                3427,
                4012,
                4034,
                5899,
                16019,
                21971
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 25795,
                "nodeType": "StructuredDocumentation",
                "src": "443:150:95",
                "text": " @title DebtTokenBase\n @notice Base contract for different types of debt tokens, like StableDebtToken or VariableDebtToken\n @author Aave"
              },
              "fullyImplemented": false,
              "id": 26043,
              "linearizedBaseContracts": [
                26043,
                5899,
                16019,
                21971,
                4034,
                4012,
                3427
              ],
              "name": "DebtTokenBase",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 25810,
                  "mutability": "mutable",
                  "name": "_borrowAllowances",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26043,
                  "src": "745:74:95",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "typeName": {
                    "id": 25809,
                    "keyType": {
                      "id": 25805,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "753:7:95",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "745:47:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                      "typeString": "mapping(address => mapping(address => uint256))"
                    },
                    "valueType": {
                      "id": 25808,
                      "keyType": {
                        "id": 25806,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "772:7:95",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "764:27:95",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "valueType": {
                        "id": 25807,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "783:7:95",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25827,
                    "nodeType": "Block",
                    "src": "933:108:95",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 25821,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 25814,
                                  "name": "_msgSender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3415,
                                  "src": "947:10:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                    "typeString": "function () view returns (address payable)"
                                  }
                                },
                                "id": 25815,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "947:12:95",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 25818,
                                      "name": "_getLendingPool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 26042,
                                      "src": "971:15:95",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_ILendingPool_$6466_$",
                                        "typeString": "function () view returns (contract ILendingPool)"
                                      }
                                    },
                                    "id": 25819,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "971:17:95",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                      "typeString": "contract ILendingPool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ILendingPool_$6466",
                                      "typeString": "contract ILendingPool"
                                    }
                                  ],
                                  "id": 25817,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "963:7:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 25816,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "963:7:95",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 25820,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "963:26:95",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "947:42:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 25822,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "991:6:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 25823,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "CT_CALLER_MUST_BE_LENDING_POOL",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17080,
                              "src": "991:37:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 25813,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "939:7:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 25824,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "939:90:95",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25825,
                        "nodeType": "ExpressionStatement",
                        "src": "939:90:95"
                      },
                      {
                        "id": 25826,
                        "nodeType": "PlaceholderStatement",
                        "src": "1035:1:95"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 25811,
                    "nodeType": "StructuredDocumentation",
                    "src": "824:81:95",
                    "text": " @dev Only lending pool can call functions marked by this modifier*"
                  },
                  "id": 25828,
                  "name": "onlyLendingPool",
                  "nodeType": "ModifierDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 25812,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "933:0:95"
                  },
                  "src": "908:133:95",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    5888
                  ],
                  "body": {
                    "id": 25855,
                    "nodeType": "Block",
                    "src": "1483:160:95",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25844,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 25837,
                                "name": "_borrowAllowances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25810,
                                "src": "1489:17:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 25841,
                              "indexExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 25838,
                                  "name": "_msgSender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3415,
                                  "src": "1507:10:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                    "typeString": "function () view returns (address payable)"
                                  }
                                },
                                "id": 25839,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1507:12:95",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1489:31:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 25842,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 25840,
                              "name": "delegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25831,
                              "src": "1521:9:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1489:42:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 25843,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25833,
                            "src": "1534:6:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1489:51:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 25845,
                        "nodeType": "ExpressionStatement",
                        "src": "1489:51:95"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 25847,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3415,
                                "src": "1576:10:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 25848,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1576:12:95",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25849,
                              "name": "delegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25831,
                              "src": "1590:9:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 25850,
                                "name": "_getUnderlyingAssetAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26037,
                                "src": "1601:26:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 25851,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1601:28:95",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 25852,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25833,
                              "src": "1631:6:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 25846,
                            "name": "BorrowAllowanceDelegated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5880,
                            "src": "1551:24:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 25853,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1551:87:95",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25854,
                        "nodeType": "EmitStatement",
                        "src": "1546:92:95"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 25829,
                    "nodeType": "StructuredDocumentation",
                    "src": "1045:355:95",
                    "text": " @dev delegates borrowing power to a user on the specific debt token\n @param delegatee the address receiving the delegated borrowing power\n @param amount the maximum amount being delegated. Delegation will still\n respect the liquidation constraints (even if delegated, a delegatee cannot\n force a delegator HF to go below 1)*"
                  },
                  "functionSelector": "c04a8a10",
                  "id": 25856,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approveDelegation",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25835,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1474:8:95"
                  },
                  "parameters": {
                    "id": 25834,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25831,
                        "mutability": "mutable",
                        "name": "delegatee",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25856,
                        "src": "1430:17:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25830,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1430:7:95",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25833,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25856,
                        "src": "1449:14:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25832,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1449:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1429:35:95"
                  },
                  "returnParameters": {
                    "id": 25836,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1483:0:95"
                  },
                  "scope": 26043,
                  "src": "1403:240:95",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    5898
                  ],
                  "body": {
                    "id": 25873,
                    "nodeType": "Block",
                    "src": "1973:53:95",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 25867,
                              "name": "_borrowAllowances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25810,
                              "src": "1986:17:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 25869,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 25868,
                              "name": "fromUser",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25859,
                              "src": "2004:8:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1986:27:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 25871,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 25870,
                            "name": "toUser",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25861,
                            "src": "2014:6:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1986:35:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 25866,
                        "id": 25872,
                        "nodeType": "Return",
                        "src": "1979:42:95"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 25857,
                    "nodeType": "StructuredDocumentation",
                    "src": "1647:205:95",
                    "text": " @dev returns the borrow allowance of the user\n @param fromUser The user to giving allowance\n @param toUser The user to give allowance to\n @return the current allowance of toUser*"
                  },
                  "functionSelector": "6bd76d24",
                  "id": 25874,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "borrowAllowance",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25863,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1940:8:95"
                  },
                  "parameters": {
                    "id": 25862,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25859,
                        "mutability": "mutable",
                        "name": "fromUser",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25874,
                        "src": "1880:16:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25858,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1880:7:95",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25861,
                        "mutability": "mutable",
                        "name": "toUser",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25874,
                        "src": "1898:14:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25860,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1898:7:95",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1879:34:95"
                  },
                  "returnParameters": {
                    "id": 25866,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25865,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25874,
                        "src": "1962:7:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25864,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1962:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1961:9:95"
                  },
                  "scope": 26043,
                  "src": "1855:171:95",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    21493
                  ],
                  "body": {
                    "id": 25893,
                    "nodeType": "Block",
                    "src": "2273:70:95",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25885,
                          "name": "recipient",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25877,
                          "src": "2279:9:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 25886,
                        "nodeType": "ExpressionStatement",
                        "src": "2279:9:95"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25887,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25879,
                          "src": "2294:6:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 25888,
                        "nodeType": "ExpressionStatement",
                        "src": "2294:6:95"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "5452414e534645525f4e4f545f535550504f52544544",
                              "id": 25890,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2313:24:95",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_42beb1d6e9eb38e1654c3da1490a732ef557a64bfe29dd2814eaae2891c45602",
                                "typeString": "literal_string \"TRANSFER_NOT_SUPPORTED\""
                              },
                              "value": "TRANSFER_NOT_SUPPORTED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_42beb1d6e9eb38e1654c3da1490a732ef557a64bfe29dd2814eaae2891c45602",
                                "typeString": "literal_string \"TRANSFER_NOT_SUPPORTED\""
                              }
                            ],
                            "id": 25889,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "2306:6:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 25891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2306:32:95",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25892,
                        "nodeType": "ExpressionStatement",
                        "src": "2306:32:95"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 25875,
                    "nodeType": "StructuredDocumentation",
                    "src": "2030:148:95",
                    "text": " @dev Being non transferrable, the debt token does not implement any of the\n standard ERC20 functions for transfer and allowance.*"
                  },
                  "functionSelector": "a9059cbb",
                  "id": 25894,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25881,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2249:8:95"
                  },
                  "parameters": {
                    "id": 25880,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25877,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25894,
                        "src": "2199:17:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25876,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2199:7:95",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25879,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25894,
                        "src": "2218:14:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25878,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2218:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2198:35:95"
                  },
                  "returnParameters": {
                    "id": 25884,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25883,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25894,
                        "src": "2267:4:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25882,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2267:4:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2266:6:95"
                  },
                  "scope": 26043,
                  "src": "2181:162:95",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    21511
                  ],
                  "body": {
                    "id": 25912,
                    "nodeType": "Block",
                    "src": "2467:68:95",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25904,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25896,
                          "src": "2473:5:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 25905,
                        "nodeType": "ExpressionStatement",
                        "src": "2473:5:95"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25906,
                          "name": "spender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25898,
                          "src": "2484:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 25907,
                        "nodeType": "ExpressionStatement",
                        "src": "2484:7:95"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "414c4c4f57414e43455f4e4f545f535550504f52544544",
                              "id": 25909,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2504:25:95",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8230fb8b8b0a2f01477eee8e95d8490a405b6812a109ed57e8bfcbb25943eb3c",
                                "typeString": "literal_string \"ALLOWANCE_NOT_SUPPORTED\""
                              },
                              "value": "ALLOWANCE_NOT_SUPPORTED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_8230fb8b8b0a2f01477eee8e95d8490a405b6812a109ed57e8bfcbb25943eb3c",
                                "typeString": "literal_string \"ALLOWANCE_NOT_SUPPORTED\""
                              }
                            ],
                            "id": 25908,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "2497:6:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 25910,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2497:33:95",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25911,
                        "nodeType": "ExpressionStatement",
                        "src": "2497:33:95"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "dd62ed3e",
                  "id": 25913,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25900,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2434:8:95"
                  },
                  "parameters": {
                    "id": 25899,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25896,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25913,
                        "src": "2366:13:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25895,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2366:7:95",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25898,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25913,
                        "src": "2381:15:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25897,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2381:7:95",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2365:32:95"
                  },
                  "returnParameters": {
                    "id": 25903,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25902,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25913,
                        "src": "2456:7:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25901,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2456:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2455:9:95"
                  },
                  "scope": 26043,
                  "src": "2347:188:95",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    21532
                  ],
                  "body": {
                    "id": 25931,
                    "nodeType": "Block",
                    "src": "2628:68:95",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25923,
                          "name": "spender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25915,
                          "src": "2634:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 25924,
                        "nodeType": "ExpressionStatement",
                        "src": "2634:7:95"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25925,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25917,
                          "src": "2647:6:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 25926,
                        "nodeType": "ExpressionStatement",
                        "src": "2647:6:95"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "415050524f56414c5f4e4f545f535550504f52544544",
                              "id": 25928,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2666:24:95",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d9c282dbc5822244af0a8885969a30a8c384e94407755b7f0a72ffae06f99596",
                                "typeString": "literal_string \"APPROVAL_NOT_SUPPORTED\""
                              },
                              "value": "APPROVAL_NOT_SUPPORTED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_d9c282dbc5822244af0a8885969a30a8c384e94407755b7f0a72ffae06f99596",
                                "typeString": "literal_string \"APPROVAL_NOT_SUPPORTED\""
                              }
                            ],
                            "id": 25927,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "2659:6:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 25929,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2659:32:95",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25930,
                        "nodeType": "ExpressionStatement",
                        "src": "2659:32:95"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "095ea7b3",
                  "id": 25932,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25919,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2604:8:95"
                  },
                  "parameters": {
                    "id": 25918,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25915,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25932,
                        "src": "2556:15:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25914,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2556:7:95",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25917,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25932,
                        "src": "2573:14:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25916,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2573:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2555:33:95"
                  },
                  "returnParameters": {
                    "id": 25922,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25921,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25932,
                        "src": "2622:4:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25920,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2622:4:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2621:6:95"
                  },
                  "scope": 26043,
                  "src": "2539:157:95",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    21576
                  ],
                  "body": {
                    "id": 25954,
                    "nodeType": "Block",
                    "src": "2828:82:95",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25944,
                          "name": "sender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25934,
                          "src": "2834:6:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 25945,
                        "nodeType": "ExpressionStatement",
                        "src": "2834:6:95"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25946,
                          "name": "recipient",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25936,
                          "src": "2846:9:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 25947,
                        "nodeType": "ExpressionStatement",
                        "src": "2846:9:95"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25948,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25938,
                          "src": "2861:6:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 25949,
                        "nodeType": "ExpressionStatement",
                        "src": "2861:6:95"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "5452414e534645525f4e4f545f535550504f52544544",
                              "id": 25951,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2880:24:95",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_42beb1d6e9eb38e1654c3da1490a732ef557a64bfe29dd2814eaae2891c45602",
                                "typeString": "literal_string \"TRANSFER_NOT_SUPPORTED\""
                              },
                              "value": "TRANSFER_NOT_SUPPORTED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_42beb1d6e9eb38e1654c3da1490a732ef557a64bfe29dd2814eaae2891c45602",
                                "typeString": "literal_string \"TRANSFER_NOT_SUPPORTED\""
                              }
                            ],
                            "id": 25950,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "2873:6:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 25952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2873:32:95",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25953,
                        "nodeType": "ExpressionStatement",
                        "src": "2873:32:95"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "23b872dd",
                  "id": 25955,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25940,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2804:8:95"
                  },
                  "parameters": {
                    "id": 25939,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25934,
                        "mutability": "mutable",
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25955,
                        "src": "2727:14:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25933,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2727:7:95",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25936,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25955,
                        "src": "2747:17:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25935,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2747:7:95",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25938,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25955,
                        "src": "2770:14:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25937,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2770:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2721:67:95"
                  },
                  "returnParameters": {
                    "id": 25943,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25942,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25955,
                        "src": "2822:4:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25941,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2822:4:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2821:6:95"
                  },
                  "scope": 26043,
                  "src": "2700:210:95",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    21604
                  ],
                  "body": {
                    "id": 25973,
                    "nodeType": "Block",
                    "src": "3035:73:95",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25965,
                          "name": "spender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25957,
                          "src": "3041:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 25966,
                        "nodeType": "ExpressionStatement",
                        "src": "3041:7:95"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25967,
                          "name": "addedValue",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25959,
                          "src": "3054:10:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 25968,
                        "nodeType": "ExpressionStatement",
                        "src": "3054:10:95"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "414c4c4f57414e43455f4e4f545f535550504f52544544",
                              "id": 25970,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3077:25:95",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8230fb8b8b0a2f01477eee8e95d8490a405b6812a109ed57e8bfcbb25943eb3c",
                                "typeString": "literal_string \"ALLOWANCE_NOT_SUPPORTED\""
                              },
                              "value": "ALLOWANCE_NOT_SUPPORTED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_8230fb8b8b0a2f01477eee8e95d8490a405b6812a109ed57e8bfcbb25943eb3c",
                                "typeString": "literal_string \"ALLOWANCE_NOT_SUPPORTED\""
                              }
                            ],
                            "id": 25969,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "3070:6:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 25971,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3070:33:95",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25972,
                        "nodeType": "ExpressionStatement",
                        "src": "3070:33:95"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "39509351",
                  "id": 25974,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "increaseAllowance",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25961,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3005:8:95"
                  },
                  "parameters": {
                    "id": 25960,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25957,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25974,
                        "src": "2941:15:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25956,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2941:7:95",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25959,
                        "mutability": "mutable",
                        "name": "addedValue",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25974,
                        "src": "2958:18:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25958,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2958:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2940:37:95"
                  },
                  "returnParameters": {
                    "id": 25964,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25963,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25974,
                        "src": "3027:4:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25962,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3027:4:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3026:6:95"
                  },
                  "scope": 26043,
                  "src": "2914:194:95",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    21633
                  ],
                  "body": {
                    "id": 25992,
                    "nodeType": "Block",
                    "src": "3238:78:95",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25984,
                          "name": "spender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25976,
                          "src": "3244:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 25985,
                        "nodeType": "ExpressionStatement",
                        "src": "3244:7:95"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 25986,
                          "name": "subtractedValue",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25978,
                          "src": "3257:15:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 25987,
                        "nodeType": "ExpressionStatement",
                        "src": "3257:15:95"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "414c4c4f57414e43455f4e4f545f535550504f52544544",
                              "id": 25989,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3285:25:95",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8230fb8b8b0a2f01477eee8e95d8490a405b6812a109ed57e8bfcbb25943eb3c",
                                "typeString": "literal_string \"ALLOWANCE_NOT_SUPPORTED\""
                              },
                              "value": "ALLOWANCE_NOT_SUPPORTED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_8230fb8b8b0a2f01477eee8e95d8490a405b6812a109ed57e8bfcbb25943eb3c",
                                "typeString": "literal_string \"ALLOWANCE_NOT_SUPPORTED\""
                              }
                            ],
                            "id": 25988,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "3278:6:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 25990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3278:33:95",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25991,
                        "nodeType": "ExpressionStatement",
                        "src": "3278:33:95"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "a457c2d7",
                  "id": 25993,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decreaseAllowance",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 25980,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3208:8:95"
                  },
                  "parameters": {
                    "id": 25979,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25976,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25993,
                        "src": "3139:15:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25975,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3139:7:95",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25978,
                        "mutability": "mutable",
                        "name": "subtractedValue",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25993,
                        "src": "3156:23:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25977,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3156:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3138:42:95"
                  },
                  "returnParameters": {
                    "id": 25983,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25982,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 25993,
                        "src": "3230:4:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25981,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3230:4:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3229:6:95"
                  },
                  "scope": 26043,
                  "src": "3112:204:95",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 26031,
                    "nodeType": "Block",
                    "src": "3433:290:95",
                    "statements": [
                      {
                        "assignments": [
                          26003
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 26003,
                            "mutability": "mutable",
                            "name": "newAllowance",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 26031,
                            "src": "3439:20:95",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 26002,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3439:7:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 26014,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 26010,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25999,
                              "src": "3512:6:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26011,
                                "name": "Errors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17239,
                                "src": "3520:6:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Errors_$17239_$",
                                  "typeString": "type(library Errors)"
                                }
                              },
                              "id": 26012,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "BORROW_ALLOWANCE_NOT_ENOUGH",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16993,
                              "src": "3520:34:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 26004,
                                  "name": "_borrowAllowances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25810,
                                  "src": "3468:17:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                    "typeString": "mapping(address => mapping(address => uint256))"
                                  }
                                },
                                "id": 26006,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 26005,
                                  "name": "delegator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25995,
                                  "src": "3486:9:95",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3468:28:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 26008,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 26007,
                                "name": "delegatee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25997,
                                "src": "3497:9:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3468:39:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 26009,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4374,
                            "src": "3468:43:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                            }
                          },
                          "id": 26013,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3468:87:95",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3439:116:95"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 26021,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 26015,
                                "name": "_borrowAllowances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25810,
                                "src": "3562:17:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 26018,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 26016,
                                "name": "delegator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 25995,
                                "src": "3580:9:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3562:28:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 26019,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 26017,
                              "name": "delegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25997,
                              "src": "3591:9:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3562:39:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 26020,
                            "name": "newAllowance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26003,
                            "src": "3604:12:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3562:54:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 26022,
                        "nodeType": "ExpressionStatement",
                        "src": "3562:54:95"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 26024,
                              "name": "delegator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25995,
                              "src": "3653:9:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 26025,
                              "name": "delegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25997,
                              "src": "3664:9:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 26026,
                                "name": "_getUnderlyingAssetAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26037,
                                "src": "3675:26:95",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 26027,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3675:28:95",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 26028,
                              "name": "newAllowance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26003,
                              "src": "3705:12:95",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 26023,
                            "name": "BorrowAllowanceDelegated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5880,
                            "src": "3628:24:95",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 26029,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3628:90:95",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26030,
                        "nodeType": "EmitStatement",
                        "src": "3623:95:95"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 26032,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_decreaseBorrowAllowance",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 26000,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25995,
                        "mutability": "mutable",
                        "name": "delegator",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 26032,
                        "src": "3359:17:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25994,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3359:7:95",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25997,
                        "mutability": "mutable",
                        "name": "delegatee",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 26032,
                        "src": "3382:17:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25996,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3382:7:95",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25999,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 26032,
                        "src": "3405:14:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25998,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3405:7:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3353:70:95"
                  },
                  "returnParameters": {
                    "id": 26001,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3433:0:95"
                  },
                  "scope": 26043,
                  "src": "3320:403:95",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 26037,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getUnderlyingAssetAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 26033,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3762:2:95"
                  },
                  "returnParameters": {
                    "id": 26036,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26035,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 26037,
                        "src": "3796:7:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26034,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3796:7:95",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3795:9:95"
                  },
                  "scope": 26043,
                  "src": "3727:78:95",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": null,
                  "documentation": null,
                  "id": 26042,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getLendingPool",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 26038,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3833:2:95"
                  },
                  "returnParameters": {
                    "id": 26041,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26040,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 26042,
                        "src": "3867:12:95",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILendingPool_$6466",
                          "typeString": "contract ILendingPool"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 26039,
                          "name": "ILendingPool",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6466,
                          "src": "3867:12:95",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILendingPool_$6466",
                            "typeString": "contract ILendingPool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3866:14:95"
                  },
                  "scope": 26043,
                  "src": "3809:72:95",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 26044,
              "src": "595:3288:95"
            }
          ],
          "src": "37:3847:95"
        },
        "id": 95
      }
    }
  }
}
